diff options
| -rw-r--r-- | .hgtags | 2 | ||||
| -rw-r--r-- | indra/newview/llflexibleobject.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llfloaterpathfindingconsole.h | 4 | ||||
| -rwxr-xr-x | indra/newview/llfloaterpreference.cpp | 19 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.h | 1 | 
6 files changed, 40 insertions, 11 deletions
| @@ -343,10 +343,12 @@ eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177  a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3  4281aa899fb2cedb7a9ca7ce91c5c29d4aa69594 DRTVWR-180  9cd174d3a54d93d409a7c346a15b8bfb40fc58f4 DRTVWR-184 +47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190  5c08e1d8edd871807153603b690e3ee9dbb548aa DRTVWR-183  6c75f220b103db1420919c8b635fe53e2177f318 3.3.4-beta4  ab2ffc547c8a8950ff187c4f6c95e5334fab597b 3.3.4-beta5  28e100d0379a2b0710c57647a28fc5239d3d7b99 3.3.4-release  a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182  1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1 +9ee9387789701d597130f879d9011a4958753862 DRTVWR-189  421126293dcbde918e0da027ca0ab9deb5b4fbf2 DRTVWR-192 diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index c4dca4cb79..9745bb6d64 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -368,10 +368,11 @@ void LLVolumeImplFlexible::doFlexibleUpdate()  	LLPath *path = &volume->getPath();  	if ((mSimulateRes == 0 || !mInitialized) && mVO->mDrawable->isVisible())   	{ -		//mVO->markForUpdate(TRUE); +		BOOL force_update = mSimulateRes == 0 ? TRUE : FALSE; +  		doIdleUpdate(gAgent, *LLWorld::getInstance(), 0.0); -		if (mSimulateRes == 0) +		if (!force_update || !gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE))  		{  			return;	// we did not get updated or initialized, proceeding without can be dangerous  		} diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h index 4b2f7672e4..e999e57741 100644 --- a/indra/newview/llfloaterpathfindingconsole.h +++ b/indra/newview/llfloaterpathfindingconsole.h @@ -93,7 +93,7 @@ public:  	LLPathingLib::LLPLCharacterType getRenderHeatmapType() const;  	void                            setRenderHeatmapType(LLPathingLib::LLPLCharacterType pRenderHeatmapType); - +	void onRegionBoundaryCross();  protected:  private: @@ -124,7 +124,7 @@ private:  	void onClearPathClicked();  	void handleNavMeshZoneStatus(LLPathfindingNavMeshZone::ENavMeshZoneRequestStatus pNavMeshZoneRequestStatus); -	void onRegionBoundaryCross(); +	  	void onPathEvent();  	void setDefaultInputs(); diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 60556147a9..5752f839ce 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -77,7 +77,7 @@  #include "llviewerthrottle.h"  #include "llvotree.h"  #include "llvosky.h" - +#include "llfloaterpathfindingconsole.h"  // linden library includes  #include "llavatarnamecache.h"  #include "llerror.h" @@ -632,6 +632,13 @@ void LLFloaterPreference::cancel()  	{  		advanced_proxy_settings->cancel();  	} +	//Need to reload the navmesh if the pathing console is up +	LLHandle<LLFloaterPathfindingConsole> pathfindingConsoleHandle = LLFloaterPathfindingConsole::getInstanceHandle(); +	if ( !pathfindingConsoleHandle.isDead() ) +	{ +		LLFloaterPathfindingConsole* pPathfindingConsole = pathfindingConsoleHandle.get(); +		pPathfindingConsole->onRegionBoundaryCross(); +	}  }  void LLFloaterPreference::onOpen(const LLSD& key) @@ -779,7 +786,15 @@ void LLFloaterPreference::onBtnOK()  		llinfos << "Can't close preferences!" << llendl;  	} -	LLPanelLogin::updateLocationSelectorsVisibility(); +	LLPanelLogin::updateLocationSelectorsVisibility();	 +	//Need to reload the navmesh if the pathing console is up +	LLHandle<LLFloaterPathfindingConsole> pathfindingConsoleHandle = LLFloaterPathfindingConsole::getInstanceHandle(); +	if ( !pathfindingConsoleHandle.isDead() ) +	{ +		LLFloaterPathfindingConsole* pPathfindingConsole = pathfindingConsoleHandle.get(); +		pPathfindingConsole->onRegionBoundaryCross(); +	} +	  }  // static  diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 31e4fd1ed5..fc8192f14b 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -236,6 +236,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe  	mNumFaces(0),  	mTimeDilation(1.f),  	mRotTime(0.f), +	mAngularVelocityRot(),  	mJointInfo(NULL),  	mState(0),  	mMedia(NULL), @@ -266,6 +267,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe  	{  		mPositionAgent = mRegionp->getOriginAgent();  	} +	resetRot();  	LLViewerObject::sNumObjects++;  } @@ -2071,14 +2073,14 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  	if (new_rot != getRotation()  		|| new_angv != old_angv)  	{ -		if (new_rot != getRotation()) +		if (new_angv != old_angv)  		{ -			setRotation(new_rot); +			resetRot();  		} -		 + +		// Set the rotation of the object followed by adjusting for the accumulated angular velocity (llSetTargetOmega) +		setRotation(new_rot * mAngularVelocityRot);  		setChanged(ROTATED | SILHOUETTE); -		 -		resetRot();  	} @@ -5533,8 +5535,13 @@ void LLViewerObject::applyAngularVelocity(F32 dt)  		ang_vel *= 1.f/omega; +		// calculate the delta increment based on the object's angular velocity  		dQ.setQuat(angle, ang_vel); + +		// accumulate the angular velocity rotations to re-apply in the case of an object update +		mAngularVelocityRot *= dQ; +		// Just apply the delta increment to the current rotation  		setRotation(getRotation()*dQ);  		setChanged(MOVED | SILHOUETTE);  	} @@ -5543,6 +5550,9 @@ void LLViewerObject::applyAngularVelocity(F32 dt)  void LLViewerObject::resetRot()  {  	mRotTime = 0.0f; + +	// Reset the accumulated angular velocity rotation +	mAngularVelocityRot.loadIdentity();   }  U32 LLViewerObject::getPartitionType() const diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index f8f6327750..530d6531f3 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -735,6 +735,7 @@ protected:  	F32				mTimeDilation;				// Time dilation sent with the object.  	F32				mRotTime;					// Amount (in seconds) that object has rotated according to angular velocity (llSetTargetOmega) +	LLQuaternion	mAngularVelocityRot;		// accumulated rotation from the angular velocity computations  	LLVOJointInfo*  mJointInfo;  	U8				mState;	// legacy | 
