SL-704 - more cleanup, including releaseMeshData() for control avatars, which don't need mesh data.
parent
2f1b75f03e
commit
64e5cfc054
|
|
@ -52,7 +52,8 @@ LLControlAvatar::~LLControlAvatar()
|
|||
// virtual
|
||||
void LLControlAvatar::initInstance()
|
||||
{
|
||||
// AXON - potential optimizations here - avoid creating system avatar mesh since it's not used.
|
||||
// AXON - potential optimizations here - avoid creating system
|
||||
// avatar mesh since it's not used.
|
||||
LLVOAvatar::initInstance();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -691,7 +691,7 @@ bool LLSelectMgr::enableLinkObjects()
|
|||
new_value = LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, firstonly);
|
||||
}
|
||||
}
|
||||
if (!LLSelectMgr::getInstance()->getSelection()->checkAnimatedObjectEstTris())
|
||||
if (!LLSelectMgr::getInstance()->getSelection()->checkAnimatedObjectLinkable())
|
||||
{
|
||||
new_value = false;
|
||||
}
|
||||
|
|
@ -7451,17 +7451,7 @@ bool LLObjectSelection::checkAnimatedObjectEstTris()
|
|||
|
||||
bool LLObjectSelection::checkAnimatedObjectLinkable()
|
||||
{
|
||||
LL_ERRS() << "Not using this restriction" << LL_ENDL;
|
||||
// Can't link if any of the roots is currently an animated object
|
||||
for (root_iterator iter = root_begin(); iter != root_end(); ++iter)
|
||||
{
|
||||
LLViewerObject* objectp = (*iter)->getObject();
|
||||
if (objectp && objectp->isAnimatedObject())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return checkAnimatedObjectEstTris();
|
||||
}
|
||||
|
||||
bool LLObjectSelection::applyToRootObjects(LLSelectedObjectFunctor* func, bool firstonly)
|
||||
|
|
|
|||
|
|
@ -339,7 +339,6 @@ public:
|
|||
// returns TRUE is any node is currenly worn as an attachment
|
||||
BOOL isAttachment();
|
||||
|
||||
// AXON validate a potential link against limits
|
||||
bool checkAnimatedObjectEstTris();
|
||||
bool checkAnimatedObjectLinkable();
|
||||
|
||||
|
|
|
|||
|
|
@ -5126,8 +5126,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data)
|
|||
avatarp->mRootVolp->recursiveMarkForUpdate(TRUE);
|
||||
}
|
||||
}
|
||||
#else
|
||||
// AXON REMOVE BEFORE RELEASE?
|
||||
#else// AXON REMOVE BEFORE RELEASE?
|
||||
// In this block we switch back into static mode when no animations are
|
||||
// playing. This is mostly useful for debugging.
|
||||
if (num_blocks > 0 && !avatarp->mPlaying)
|
||||
|
|
|
|||
|
|
@ -3609,8 +3609,7 @@ F32 LLViewerObject::recursiveGetEstTrianglesMax() const
|
|||
S32 LLViewerObject::getAnimatedObjectMaxTris() const
|
||||
{
|
||||
S32 max_tris = 0;
|
||||
// AXON REMOVE AFTER SERVER TESTING DONE
|
||||
if (gSavedSettings.getBOOL("AnimatedObjectsIgnoreLimits"))
|
||||
if (gSavedSettings.getBOOL("AnimatedObjectsIgnoreLimits")) // AXON REMOVE AFTER SERVER TESTING DONE
|
||||
{
|
||||
max_tris = S32_MAX;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1976,9 +1976,8 @@ void LLVOAvatar::resetSkeleton(bool reset_animations)
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLVOAvatar::releaseMeshData()
|
||||
{
|
||||
// AXON what should we be doing here for control avs? Why are
|
||||
// dummies treated differently in the first place?
|
||||
if (sInstances.size() < AVATAR_RELEASE_THRESHOLD || mIsDummy)
|
||||
if (sInstances.size() < AVATAR_RELEASE_THRESHOLD ||
|
||||
(mIsDummy && !isControlAvatar()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -2781,8 +2780,8 @@ void LLVOAvatar::idleUpdateLoadingEffect()
|
|||
LLPartData::LL_PART_EMISSIVE_MASK | // LLPartData::LL_PART_FOLLOW_SRC_MASK |
|
||||
LLPartData::LL_PART_TARGET_POS_MASK );
|
||||
|
||||
// AXON skip cloud effects for dummy avs as well
|
||||
if (!mIsDummy && !isTooComplex()) // do not generate particles for overly-complex avatars
|
||||
// do not generate particles for dummy or overly-complex avatars
|
||||
if (!mIsDummy && !isTooComplex())
|
||||
{
|
||||
setParticleSource(particle_parameters, getID());
|
||||
}
|
||||
|
|
@ -4393,7 +4392,8 @@ void LLVOAvatar::updateVisibility()
|
|||
}
|
||||
else
|
||||
{
|
||||
if (mMeshValid && mMeshInvisibleTime.getElapsedTimeF32() > TIME_BEFORE_MESH_CLEANUP)
|
||||
if (mMeshValid &&
|
||||
(isControlAvatar() || mMeshInvisibleTime.getElapsedTimeF32() > TIME_BEFORE_MESH_CLEANUP))
|
||||
{
|
||||
releaseMeshData();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue