aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llagent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/llagent.cpp')
-rw-r--r--linden/indra/newview/llagent.cpp101
1 files changed, 60 insertions, 41 deletions
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index a6ec948..ff16682 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -4,6 +4,7 @@
4 * 4 *
5 * Copyright (c) 2001-2007, Linden Research, Inc. 5 * Copyright (c) 2001-2007, Linden Research, Inc.
6 * 6 *
7 * Second Life Viewer Source Code
7 * The source code in this file ("Source Code") is provided by Linden Lab 8 * The source code in this file ("Source Code") is provided by Linden Lab
8 * to you under the terms of the GNU General Public License, version 2.0 9 * to you under the terms of the GNU General Public License, version 2.0
9 * ("GPL"), unless you have obtained a separate licensing agreement 10 * ("GPL"), unless you have obtained a separate licensing agreement
@@ -222,6 +223,9 @@ BOOL LLAgent::sDebugDisplayTarget = FALSE;
222 223
223const F32 LLAgent::TYPING_TIMEOUT_SECS = 5.f; 224const F32 LLAgent::TYPING_TIMEOUT_SECS = 5.f;
224 225
226std::map<LLString, LLString> LLAgent::sTeleportErrorMessages;
227std::map<LLString, LLString> LLAgent::sTeleportProgressMessages;
228
225class LLAgentFriendObserver : public LLFriendObserver 229class LLAgentFriendObserver : public LLFriendObserver
226{ 230{
227public: 231public:
@@ -328,9 +332,6 @@ LLAgent::LLAgent()
328 332
329 mbJump(FALSE), 333 mbJump(FALSE),
330 334
331 mWanderTimer(),
332 mWanderTargetGlobal( LLVector3d::zero ),
333
334 mAutoPilot(FALSE), 335 mAutoPilot(FALSE),
335 mAutoPilotFlyOnStop(FALSE), 336 mAutoPilotFlyOnStop(FALSE),
336 mAutoPilotTargetGlobal(), 337 mAutoPilotTargetGlobal(),
@@ -2116,36 +2117,6 @@ BOOL LLAgent::getBusy() const
2116 2117
2117 2118
2118//----------------------------------------------------------------------------- 2119//-----------------------------------------------------------------------------
2119// updateWanderTarget()
2120//-----------------------------------------------------------------------------
2121void LLAgent::updateWanderTarget()
2122{
2123 S32 num_regions;
2124 LLViewerRegion* rand_region;
2125 F32 rand_x;
2126 F32 rand_y;
2127
2128 if (mWanderTimer.checkExpirationAndReset(ll_frand(MAX_WANDER_TIME)))
2129 {
2130 // Pick a random spot to wander towards
2131 num_regions = gWorldPointer->mActiveRegionList.getLength();
2132 S32 region_num = llround(ll_frand() * num_regions);
2133 rand_region = gWorldPointer->mActiveRegionList.getFirstData();
2134 S32 i = 0;
2135 while (i < region_num)
2136 {
2137 rand_region = gWorldPointer->mActiveRegionList.getNextData();
2138 i++;
2139 }
2140 rand_x = ll_frand(rand_region->getWidth());
2141 rand_y = ll_frand(rand_region->getWidth());
2142
2143 stopAutoPilot();
2144 startAutoPilotGlobal(rand_region->getPosGlobalFromRegion(LLVector3(rand_x, rand_y, 0.f)));
2145 }
2146}
2147
2148//-----------------------------------------------------------------------------
2149// startAutoPilotGlobal() 2120// startAutoPilotGlobal()
2150//----------------------------------------------------------------------------- 2121//-----------------------------------------------------------------------------
2151void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::string& behavior_name, const LLQuaternion *target_rotation, void (*finish_callback)(BOOL, void *), void *callback_data, F32 stop_distance, F32 rot_threshold) 2122void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::string& behavior_name, const LLQuaternion *target_rotation, void (*finish_callback)(BOOL, void *), void *callback_data, F32 stop_distance, F32 rot_threshold)
@@ -4062,10 +4033,6 @@ void LLAgent::changeCameraToFollow(BOOL animate)
4062 mbFlagsDirty = TRUE; 4033 mbFlagsDirty = TRUE;
4063 } 4034 }
4064 4035
4065 //RN: this doesn't seem to be necessary and destroys the UE for script-driven cameras
4066 //gViewerWindow->setKeyboardFocus( NULL, NULL );
4067 //gViewerWindow->setMouseCapture( NULL, NULL );
4068
4069 if (animate) 4036 if (animate)
4070 { 4037 {
4071 startCameraAnimation(); 4038 startCameraAnimation();
@@ -4129,9 +4096,6 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
4129 mbFlagsDirty = TRUE; 4096 mbFlagsDirty = TRUE;
4130 } 4097 }
4131 4098
4132 //RN: this doesn't seem to be necessary and destroys the UE for script-driven cameras
4133 //gViewerWindow->setKeyboardFocus( NULL, NULL );
4134 //gViewerWindow->setMouseCapture( NULL, NULL );
4135 } 4099 }
4136 4100
4137 // Remove any pitch from the avatar 4101 // Remove any pitch from the avatar
@@ -4204,7 +4168,7 @@ void LLAgent::changeCameraToCustomizeAvatar(BOOL animate)
4204 } 4168 }
4205 4169
4206 gViewerWindow->setKeyboardFocus( NULL, NULL ); 4170 gViewerWindow->setKeyboardFocus( NULL, NULL );
4207 gViewerWindow->setMouseCapture( NULL, NULL ); 4171 gViewerWindow->setMouseCapture( NULL );
4208 4172
4209 LLVOAvatar::onCustomizeStart(); 4173 LLVOAvatar::onCustomizeStart();
4210 } 4174 }
@@ -5531,6 +5495,8 @@ bool LLAgent::teleportCore(bool is_local)
5531 LLFloaterWorldMap::hide(NULL); 5495 LLFloaterWorldMap::hide(NULL);
5532 LLFloaterDirectory::hide(NULL); 5496 LLFloaterDirectory::hide(NULL);
5533 5497
5498 gParcelMgr->deselectLand();
5499
5534 // Close all pie menus, deselect land, etc. 5500 // Close all pie menus, deselect land, etc.
5535 // Don't change the camera until we know teleport succeeded. JC 5501 // Don't change the camera until we know teleport succeeded. JC
5536 resetView(FALSE); 5502 resetView(FALSE);
@@ -7256,4 +7222,57 @@ void LLAgent::observeFriends()
7256 } 7222 }
7257} 7223}
7258 7224
7225void LLAgent::parseTeleportMessages(const LLString& xml_filename)
7226{
7227 LLXMLNodePtr root;
7228 BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
7229
7230 if (!success || !root || !root->hasName( "teleport_messages" ))
7231 {
7232 llerrs << "Problem reading teleport string XML file: "
7233 << xml_filename << llendl;
7234 return;
7235 }
7236
7237 for (LLXMLNode* message_set = root->getFirstChild();
7238 message_set != NULL;
7239 message_set = message_set->getNextSibling())
7240 {
7241 if ( !message_set->hasName("message_set") ) continue;
7242
7243 std::map<LLString, LLString> *teleport_msg_map = NULL;
7244 LLString message_set_name;
7245
7246 if ( message_set->getAttributeString("name", message_set_name) )
7247 {
7248 //now we loop over all the string in the set and add them
7249 //to the appropriate set
7250 if ( message_set_name == "errors" )
7251 {
7252 teleport_msg_map = &sTeleportErrorMessages;
7253 }
7254 else if ( message_set_name == "progress" )
7255 {
7256 teleport_msg_map = &sTeleportProgressMessages;
7257 }
7258 }
7259
7260 if ( !teleport_msg_map ) continue;
7261
7262 LLString message_name;
7263 for (LLXMLNode* message_node = message_set->getFirstChild();
7264 message_node != NULL;
7265 message_node = message_node->getNextSibling())
7266 {
7267 if ( message_node->hasName("message") &&
7268 message_node->getAttributeString("name", message_name) )
7269 {
7270 (*teleport_msg_map)[message_name] =
7271 message_node->getTextContents();
7272 } //end if ( message exists and has a name)
7273 } //end for (all message in set)
7274 }//end for (all message sets in xml file)
7275}
7276
7277
7259// EOF 7278// EOF