merge changes for DRTVWR-189

meow-7.2.2
Oz Linden 2012-08-08 07:27:59 -07:00
commit 3379760965
5 changed files with 36 additions and 9 deletions

View File

@ -352,3 +352,4 @@ a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182
1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1
81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186
cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181
9ee9387789701d597130f879d9011a4958753862 DRTVWR-189

View File

@ -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();

View File

@ -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

View File

@ -236,6 +236,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe
mNumFaces(0),
mTimeDilation(1.f),
mRotTime(0.f),
mAngularVelocityRot(),
mState(0),
mMedia(NULL),
mClickAction(0),
@ -265,6 +266,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe
{
mPositionAgent = mRegionp->getOriginAgent();
}
resetRot();
LLViewerObject::sNumObjects++;
}
@ -2039,14 +2041,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();
}
@ -5425,8 +5427,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);
}
@ -5435,6 +5442,9 @@ void LLViewerObject::applyAngularVelocity(F32 dt)
void LLViewerObject::resetRot()
{
mRotTime = 0.0f;
// Reset the accumulated angular velocity rotation
mAngularVelocityRot.loadIdentity();
}
U32 LLViewerObject::getPartitionType() const

View File

@ -721,6 +721,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
U8 mState; // legacy
LLViewerObjectMedia* mMedia; // NULL if no media associated