SL-704 - more cleanup, including releaseMeshData() for control avatars, which don't need mesh data.

meow-7.2.2
Brad Payne (Vir Linden) 2017-11-16 20:00:38 +00:00
parent 2f1b75f03e
commit 64e5cfc054
6 changed files with 12 additions and 24 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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