summaryrefslogtreecommitdiff
path: root/indra/llcharacter/llcharacter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcharacter/llcharacter.cpp')
-rwxr-xr-x[-rw-r--r--]indra/llcharacter/llcharacter.cpp86
1 files changed, 52 insertions, 34 deletions
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
index 5f84be2c5d..4df975ecc5 100644..100755
--- a/indra/llcharacter/llcharacter.cpp
+++ b/indra/llcharacter/llcharacter.cpp
@@ -32,13 +32,14 @@
#include "llcharacter.h"
#include "llstring.h"
+#include "llfasttimer.h"
#define SKEL_HEADER "Linden Skeleton 1.0"
LLStringTable LLCharacter::sVisualParamNames(1024);
std::vector< LLCharacter* > LLCharacter::sInstances;
-
+BOOL LLCharacter::sAllowInstancesChange = TRUE ;
//-----------------------------------------------------------------------------
// LLCharacter()
@@ -51,8 +52,10 @@ LLCharacter::LLCharacter()
mAppearanceSerialNum( 0 ),
mSkeletonSerialNum( 0 )
{
- mMotionController.setCharacter( this );
+ llassert_always(sAllowInstancesChange) ;
sInstances.push_back(this);
+
+ mMotionController.setCharacter( this );
mPauseRequest = new LLPauseRequestHandle();
}
@@ -62,18 +65,29 @@ LLCharacter::LLCharacter()
// Class Destructor
//-----------------------------------------------------------------------------
LLCharacter::~LLCharacter()
-{
+{
for (LLVisualParam *param = getFirstVisualParam();
param;
param = getNextVisualParam())
{
delete param;
}
- std::vector<LLCharacter*>::iterator iter = std::find(sInstances.begin(), sInstances.end(), this);
- if (iter != sInstances.end())
+
+ U32 i ;
+ U32 size = sInstances.size() ;
+ for(i = 0 ; i < size ; i++)
{
- sInstances.erase(iter);
+ if(sInstances[i] == this)
+ {
+ break ;
+ }
}
+
+ llassert_always(i < size) ;
+
+ llassert_always(sAllowInstancesChange) ;
+ sInstances[i] = sInstances[size - 1] ;
+ sInstances.pop_back() ;
}
@@ -92,7 +106,7 @@ LLJoint *LLCharacter::getJoint( const std::string &name )
if (!joint)
{
- llwarns << "Failed to find joint." << llendl;
+ LL_WARNS() << "Failed to find joint." << LL_ENDL;
}
return joint;
}
@@ -167,33 +181,37 @@ BOOL LLCharacter::isMotionActive(const LLUUID& id)
//-----------------------------------------------------------------------------
void LLCharacter::requestStopMotion( LLMotion* motion)
{
-// llinfos << "DEBUG: Char::onDeactivateMotion( " << motionName << " )" << llendl;
+// LL_INFOS() << "DEBUG: Char::onDeactivateMotion( " << motionName << " )" << LL_ENDL;
}
//-----------------------------------------------------------------------------
// updateMotions()
//-----------------------------------------------------------------------------
-static LLFastTimer::DeclareTimer FTM_UPDATE_ANIMATION("Update Animation");
-static LLFastTimer::DeclareTimer FTM_UPDATE_HIDDEN_ANIMATION("Update Hidden Anim");
+static LLTrace::BlockTimerStatHandle FTM_UPDATE_ANIMATION("Update Animation");
+static LLTrace::BlockTimerStatHandle FTM_UPDATE_HIDDEN_ANIMATION("Update Hidden Anim");
+static LLTrace::BlockTimerStatHandle FTM_UPDATE_MOTIONS("Update Motions");
void LLCharacter::updateMotions(e_update_t update_type)
{
if (update_type == HIDDEN_UPDATE)
{
- LLFastTimer t(FTM_UPDATE_HIDDEN_ANIMATION);
+ LL_RECORD_BLOCK_TIME(FTM_UPDATE_HIDDEN_ANIMATION);
mMotionController.updateMotionsMinimal();
}
else
{
- LLFastTimer t(FTM_UPDATE_ANIMATION);
+ LL_RECORD_BLOCK_TIME(FTM_UPDATE_ANIMATION);
// unpause if the number of outstanding pause requests has dropped to the initial one
if (mMotionController.isPaused() && mPauseRequest->getNumRefs() == 1)
{
mMotionController.unpauseAllMotions();
}
bool force_update = (update_type == FORCE_UPDATE);
- mMotionController.updateMotions(force_update);
+ {
+ LL_RECORD_BLOCK_TIME(FTM_UPDATE_MOTIONS);
+ mMotionController.updateMotions(force_update);
+ }
}
}
@@ -224,14 +242,14 @@ void LLCharacter::dumpCharacter( LLJoint* joint )
// handle top level entry into recursion
if (joint == NULL)
{
- llinfos << "DEBUG: Dumping Character @" << this << llendl;
+ LL_INFOS() << "DEBUG: Dumping Character @" << this << LL_ENDL;
dumpCharacter( getRootJoint() );
- llinfos << "DEBUG: Done." << llendl;
+ LL_INFOS() << "DEBUG: Done." << LL_ENDL;
return;
}
// print joint info
- llinfos << "DEBUG: " << joint->getName() << " (" << (joint->getParent()?joint->getParent()->getName():std::string("ROOT")) << ")" << llendl;
+ LL_INFOS() << "DEBUG: " << joint->getName() << " (" << (joint->getParent()?joint->getParent()->getName():std::string("ROOT")) << ")" << LL_ENDL;
// recurse
for (LLJoint::child_list_t::iterator iter = joint->mChildren.begin();
@@ -269,13 +287,13 @@ void LLCharacter::removeAnimationData(std::string name)
//-----------------------------------------------------------------------------
// setVisualParamWeight()
//-----------------------------------------------------------------------------
-BOOL LLCharacter::setVisualParamWeight(LLVisualParam* which_param, F32 weight, BOOL upload_bake)
+BOOL LLCharacter::setVisualParamWeight(const LLVisualParam* which_param, F32 weight)
{
S32 index = which_param->getID();
visual_param_index_map_t::iterator index_iter = mVisualParamIndexMap.find(index);
if (index_iter != mVisualParamIndexMap.end())
{
- index_iter->second->setWeight(weight, upload_bake);
+ index_iter->second->setWeight(weight);
return TRUE;
}
return FALSE;
@@ -284,7 +302,7 @@ BOOL LLCharacter::setVisualParamWeight(LLVisualParam* which_param, F32 weight, B
//-----------------------------------------------------------------------------
// setVisualParamWeight()
//-----------------------------------------------------------------------------
-BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake)
+BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight)
{
std::string tname(param_name);
LLStringUtil::toLower(tname);
@@ -292,25 +310,25 @@ BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL
visual_param_name_map_t::iterator name_iter = mVisualParamNameMap.find(tableptr);
if (name_iter != mVisualParamNameMap.end())
{
- name_iter->second->setWeight(weight, upload_bake);
+ name_iter->second->setWeight(weight);
return TRUE;
}
- llwarns << "LLCharacter::setVisualParamWeight() Invalid visual parameter: " << param_name << llendl;
+ LL_WARNS() << "LLCharacter::setVisualParamWeight() Invalid visual parameter: " << param_name << LL_ENDL;
return FALSE;
}
//-----------------------------------------------------------------------------
// setVisualParamWeight()
//-----------------------------------------------------------------------------
-BOOL LLCharacter::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake)
+BOOL LLCharacter::setVisualParamWeight(S32 index, F32 weight)
{
visual_param_index_map_t::iterator index_iter = mVisualParamIndexMap.find(index);
if (index_iter != mVisualParamIndexMap.end())
{
- index_iter->second->setWeight(weight, upload_bake);
+ index_iter->second->setWeight(weight);
return TRUE;
}
- llwarns << "LLCharacter::setVisualParamWeight() Invalid visual parameter index: " << index << llendl;
+ LL_WARNS() << "LLCharacter::setVisualParamWeight() Invalid visual parameter index: " << index << LL_ENDL;
return FALSE;
}
@@ -327,7 +345,7 @@ F32 LLCharacter::getVisualParamWeight(LLVisualParam *which_param)
}
else
{
- llwarns << "LLCharacter::getVisualParamWeight() Invalid visual parameter*, index= " << index << llendl;
+ LL_WARNS() << "LLCharacter::getVisualParamWeight() Invalid visual parameter*, index= " << index << LL_ENDL;
return 0.f;
}
}
@@ -345,7 +363,7 @@ F32 LLCharacter::getVisualParamWeight(const char* param_name)
{
return name_iter->second->getWeight();
}
- llwarns << "LLCharacter::getVisualParamWeight() Invalid visual parameter: " << param_name << llendl;
+ LL_WARNS() << "LLCharacter::getVisualParamWeight() Invalid visual parameter: " << param_name << LL_ENDL;
return 0.f;
}
@@ -361,7 +379,7 @@ F32 LLCharacter::getVisualParamWeight(S32 index)
}
else
{
- llwarns << "LLCharacter::getVisualParamWeight() Invalid visual parameter index: " << index << llendl;
+ LL_WARNS() << "LLCharacter::getVisualParamWeight() Invalid visual parameter index: " << index << LL_ENDL;
return 0.f;
}
}
@@ -377,7 +395,7 @@ void LLCharacter::clearVisualParamWeights()
{
if (param->isTweakable())
{
- param->setWeight( param->getDefaultWeight(), FALSE );
+ param->setWeight( param->getDefaultWeight());
}
}
}
@@ -395,7 +413,7 @@ LLVisualParam* LLCharacter::getVisualParam(const char *param_name)
{
return name_iter->second;
}
- llwarns << "LLCharacter::getVisualParam() Invalid visual parameter: " << param_name << llendl;
+ LL_WARNS() << "LLCharacter::getVisualParam() Invalid visual parameter: " << param_name << LL_ENDL;
return NULL;
}
@@ -420,8 +438,8 @@ void LLCharacter::addSharedVisualParam(LLVisualParam *param)
}
else
{
- llwarns << "Shared visual parameter " << param->getName() << " does not already exist with ID " <<
- param->getID() << llendl;
+ LL_WARNS() << "Shared visual parameter " << param->getName() << " does not already exist with ID " <<
+ param->getID() << LL_ENDL;
}
}
@@ -436,8 +454,8 @@ void LLCharacter::addVisualParam(LLVisualParam *param)
idxres = mVisualParamIndexMap.insert(visual_param_index_map_t::value_type(index, param));
if (!idxres.second)
{
- llwarns << "Visual parameter " << param->getName() << " already exists with same ID as " <<
- param->getName() << llendl;
+ LL_WARNS() << "Visual parameter " << param->getName() << " already exists with same ID as " <<
+ param->getName() << LL_ENDL;
visual_param_index_map_t::iterator index_iter = idxres.first;
index_iter->second = param;
}
@@ -457,7 +475,7 @@ void LLCharacter::addVisualParam(LLVisualParam *param)
name_iter->second = param;
}
}
- //llinfos << "Adding Visual Param '" << param->getName() << "' ( " << index << " )" << llendl;
+ //LL_INFOS() << "Adding Visual Param '" << param->getName() << "' ( " << index << " )" << LL_ENDL;
}
//-----------------------------------------------------------------------------