From d413799644b8e7fa943fa86c7798634a28ce335d Mon Sep 17 00:00:00 2001 From: Dave SIMmONs Date: Fri, 25 Feb 2011 11:33:20 -0800 Subject: ER-350: Viewer / sim camera positioning not working well on login. Viewer now sets the camera before calling send_agent_update(). Reviewed by Kelly. --- indra/newview/llviewermessage.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 103989ee80..4203ba74b2 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3761,10 +3761,22 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) } else { - // This is likely just the initial logging in phase. + // This is initial log-in or a region crossing gAgent.setTeleportState( LLAgent::TELEPORT_NONE ); + + if(LLStartUp::getStartupState() < STATE_STARTED) + { // This is initial log-in, not a region crossing: + // Set the camera looking ahead of the AV so send_agent_update() below + // will report the correct location to the server. + LLVector3 look_at_point = look_at; + look_at_point = agent_pos + look_at_point.rotVec(gAgent.getQuat()); + + static LLVector3 up_direction(0.0f, 0.0f, 1.0f); + LLViewerCamera::getInstance()->lookAt(agent_pos, look_at_point, up_direction); + } } + if ( LLTracker::isTracking(NULL) ) { // Check distance to beacon, if < 5m, remove beacon -- cgit v1.2.3