summaryrefslogtreecommitdiff
path: root/indra/llprimitive/llmodelloader.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2015-10-01 11:05:29 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2015-10-01 11:05:29 -0400
commitebad0c6868b924ba607a1b2256ae7621cab62bf4 (patch)
tree76da7036c250158a3907b613f7ef89c66c5d3366 /indra/llprimitive/llmodelloader.cpp
parentfc74e02cde9b7b31de157f23a8bd9bf27a756428 (diff)
DRTVWR-412 WIP - more work for importer merge from viewer-release
Diffstat (limited to 'indra/llprimitive/llmodelloader.cpp')
-rw-r--r--indra/llprimitive/llmodelloader.cpp63
1 files changed, 23 insertions, 40 deletions
diff --git a/indra/llprimitive/llmodelloader.cpp b/indra/llprimitive/llmodelloader.cpp
index 81d92d151b..9cf0f10a7e 100644
--- a/indra/llprimitive/llmodelloader.cpp
+++ b/indra/llprimitive/llmodelloader.cpp
@@ -102,16 +102,17 @@ void stretch_extents(LLModel* model, LLMatrix4& mat, LLVector3& min, LLVector3&
// LLModelLoader
//-----------------------------------------------------------------------------
LLModelLoader::LLModelLoader(
- std::string filename,
- S32 lod,
+ std::string filename,
+ S32 lod,
load_callback_t load_cb,
joint_lookup_func_t joint_lookup_func,
texture_load_func_t texture_load_func,
- state_callback_t state_cb,
- void* opaque_userdata,
- JointTransformMap& jointMap,
- JointSet& jointsFromNodes )
-: mJointList( jointMap )
+ state_callback_t state_cb,
+ void* opaque_userdata,
+ JointTransformMap& jointTransformMap,
+ JointNameSet& jointsFromNodes,
+ JointNameSet& legalJointNames)
+: mJointList( jointTransformMap )
, mJointsFromNode( jointsFromNodes )
, LLThread("Model Loader")
, mFilename(filename)
@@ -127,33 +128,15 @@ LLModelLoader::LLModelLoader(
, mNoOptimize(false)
, mCacheOnlyHitIfRigged(false)
{
- mJointMap["mPelvis"] = "mPelvis";
- mJointMap["mTorso"] = "mTorso";
- mJointMap["mChest"] = "mChest";
- mJointMap["mNeck"] = "mNeck";
- mJointMap["mHead"] = "mHead";
- mJointMap["mSkull"] = "mSkull";
- mJointMap["mEyeRight"] = "mEyeRight";
- mJointMap["mEyeLeft"] = "mEyeLeft";
- mJointMap["mCollarLeft"] = "mCollarLeft";
- mJointMap["mShoulderLeft"] = "mShoulderLeft";
- mJointMap["mElbowLeft"] = "mElbowLeft";
- mJointMap["mWristLeft"] = "mWristLeft";
- mJointMap["mCollarRight"] = "mCollarRight";
- mJointMap["mShoulderRight"] = "mShoulderRight";
- mJointMap["mElbowRight"] = "mElbowRight";
- mJointMap["mWristRight"] = "mWristRight";
- mJointMap["mHipRight"] = "mHipRight";
- mJointMap["mKneeRight"] = "mKneeRight";
- mJointMap["mAnkleRight"] = "mAnkleRight";
- mJointMap["mFootRight"] = "mFootRight";
- mJointMap["mToeRight"] = "mToeRight";
- mJointMap["mHipLeft"] = "mHipLeft";
- mJointMap["mKneeLeft"] = "mKneeLeft";
- mJointMap["mAnkleLeft"] = "mAnkleLeft";
- mJointMap["mFootLeft"] = "mFootLeft";
- mJointMap["mToeLeft"] = "mToeLeft";
-
+ // Recognize all names we've been told are legal.
+ for (JointNameSet::iterator joint_name_it = legalJointNames.begin();
+ joint_name_it != legalJointNames.end(); ++joint_name_it)
+ {
+ const std::string& name = *joint_name_it;
+ mJointMap[name] = name;
+ }
+
+ // Also support various legacy aliases for commonly used joints
mJointMap["avatar_mPelvis"] = "mPelvis";
mJointMap["avatar_mTorso"] = "mTorso";
mJointMap["avatar_mChest"] = "mChest";
@@ -501,8 +484,8 @@ void LLModelLoader::critiqueJointToNodeMappingFromScene( void )
//Do the actual nodes back the joint listing from the dae?
//if yes then this is a fully rigged asset, otherwise it's just a partial rig
- JointSet::iterator jointsFromNodeIt = mJointsFromNode.begin();
- JointSet::iterator jointsFromNodeEndIt = mJointsFromNode.end();
+ JointNameSet::iterator jointsFromNodeIt = mJointsFromNode.begin();
+ JointNameSet::iterator jointsFromNodeEndIt = mJointsFromNode.end();
bool result = true;
if ( !mJointsFromNode.empty() )
@@ -547,8 +530,8 @@ bool LLModelLoader::isRigLegacy( const std::vector<std::string> &jointListFromAs
bool result = false;
- JointSet :: const_iterator masterJointIt = mMasterLegacyJointList.begin();
- JointSet :: const_iterator masterJointEndIt = mMasterLegacyJointList.end();
+ JointNameSet :: const_iterator masterJointIt = mMasterLegacyJointList.begin();
+ JointNameSet :: const_iterator masterJointEndIt = mMasterLegacyJointList.end();
std::vector<std::string> :: const_iterator modelJointIt = jointListFromAsset.begin();
std::vector<std::string> :: const_iterator modelJointItEnd = jointListFromAsset.end();
@@ -581,8 +564,8 @@ bool LLModelLoader::isRigSuitableForJointPositionUpload( const std::vector<std::
{
bool result = false;
- JointSet :: const_iterator masterJointIt = mMasterJointList.begin();
- JointSet :: const_iterator masterJointEndIt = mMasterJointList.end();
+ JointNameSet :: const_iterator masterJointIt = mMasterJointList.begin();
+ JointNameSet :: const_iterator masterJointEndIt = mMasterJointList.end();
std::vector<std::string> :: const_iterator modelJointIt = jointListFromAsset.begin();
std::vector<std::string> :: const_iterator modelJointItEnd = jointListFromAsset.end();