Refactor LLDAELoader

- Many instances of null-checking if statements include both variable declaration and initialization (for scoping)
- Modern(ish) C++ conventions (e.g. range-based for loops, auto keyword)
- Local variable caching for array/iterator elements
- const keyword for variables that should not be mutated (optimization possible)
- const keyword for instance methods that should not mutate (affects LLModelLoader in one case)
- Consistent usage of un/signed types for array indexing
- Better readability/simplicity of branching
- Consolidated extractTranslation/ViaElement logic (reusability)
- Formatting
- Changes based on code review
This commit is contained in:
Tarocco
2020-10-09 15:31:01 -07:00
committed by Liru Færs
parent c1aa88c720
commit d49c38bf18
3 changed files with 743 additions and 862 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -60,7 +60,7 @@ public:
U32 maxJointsPerMesh, U32 maxJointsPerMesh,
U32 modelLimit, U32 modelLimit,
bool preprocess); bool preprocess);
virtual ~LLDAELoader() ; virtual ~LLDAELoader();
virtual bool OpenFile(const std::string& filename); virtual bool OpenFile(const std::string& filename);
@@ -69,28 +69,27 @@ protected:
void processElement(daeElement* element, bool& badElement, DAE* dae, daeElement* domRoot); void processElement(daeElement* element, bool& badElement, DAE* dae, daeElement* domRoot);
void processDomModel(LLModel* model, DAE* dae, daeElement* pRoot, domMesh* mesh, domSkin* skin); void processDomModel(LLModel* model, DAE* dae, daeElement* pRoot, domMesh* mesh, domSkin* skin);
material_map getMaterials(LLModel* model, domInstance_geometry* instance_geo, DAE* dae); material_map getMaterials(LLModel* model, domInstance_geometry* instance_geo, DAE* dae) const;
LLImportMaterial profileToMaterial(domProfile_COMMON* material, DAE* dae); LLImportMaterial profileToMaterial(domProfile_COMMON* material, DAE* dae) const;
LLColor4 getDaeColor(daeElement* element); LLColor4 getDaeColor(daeElement* element) const;
daeElement* getChildFromElement( daeElement* pElement, std::string const & name ); daeElement* getChildFromElement(daeElement* pElement, std::string const& name);
bool isNodeAJoint( domNode* pNode ); bool isNodeAJoint(const domNode* pNode) const;
void processJointNode( domNode* pNode, std::map<std::string,LLMatrix4>& jointTransforms ); void processJointNode(domNode* pNode, JointTransformMap& jointTransforms);
void extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ); void extractTranslation(const domTranslate* pTranslate, LLMatrix4& transform) const;
void extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ); void extractTranslationViaSID(daeElement* pElement, LLMatrix4& transform) const;
void extractTranslationViaSID( daeElement* pElement, LLMatrix4& transform ); void buildJointToNodeMappingFromScene(daeElement* pRoot);
void buildJointToNodeMappingFromScene( daeElement* pRoot ); void processJointToNodeMapping(domNode* pNode);
void processJointToNodeMapping( domNode* pNode ); void processChildJoints(domNode* pParentNode);
void processChildJoints( domNode* pParentNode );
bool verifyCount( int expected, int result ); bool verifyCount(const size_t expected, const size_t result) const;
//Verify that a controller matches vertex counts //Verify that a controller matches vertex counts
bool verifyController( domController* pController ); bool verifyController(const domController* pController) const;
static bool addVolumeFacesFromDomMesh(LLModel* model, domMesh* mesh); static bool addVolumeFacesFromDomMesh(LLModel* model, domMesh* mesh);
static bool createVolumeFacesFromDomMesh(LLModel* model, domMesh *mesh); static bool createVolumeFacesFromDomMesh(LLModel* model, domMesh* mesh);
static LLModel* loadModelFromDomMesh(domMesh* mesh); static LLModel* loadModelFromDomMesh(domMesh* mesh);
@@ -99,11 +98,11 @@ protected:
// //
bool loadModelsFromDomMesh(domMesh* mesh, std::vector<LLModel*>& models_out, U32 submodel_limit); bool loadModelsFromDomMesh(domMesh* mesh, std::vector<LLModel*>& models_out, U32 submodel_limit);
static std::string getElementLabel(daeElement *element); static std::string getElementLabel(daeElement* element);
static size_t getSuffixPosition(std::string label); static size_t getSuffixPosition(const std::string label);
static std::string getLodlessLabel(daeElement *element); static std::string getLodlessLabel(daeElement* element);
static std::string preprocessDAE(std::string filename); static std::string preprocessDAE(const std::string filename);
private: private:
U32 mGeneratedModelLimit; // Attempt to limit amount of generated submodels U32 mGeneratedModelLimit; // Attempt to limit amount of generated submodels

View File

@@ -180,7 +180,7 @@ public:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// isNodeAJoint() // isNodeAJoint()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool isNodeAJoint(const char* name) bool isNodeAJoint(const char* name) const
{ {
return name != NULL && mJointMap.find(name) != mJointMap.end(); return name != NULL && mJointMap.find(name) != mJointMap.end();
} }