bool CPhysxSkeleton::Load(const string& _szFileName) { CXMLTreeNode l_XML; CXMLTreeNode l_XMLObjects; if(!l_XML.LoadFile(_szFileName.c_str())) { LOGGER->AddNewLog(ELL_WARNING,"CPhysxRagdoll:: No s'ha trobat el XML \"%s\"", _szFileName.c_str()); return false; } l_XMLObjects = l_XML(0); int l_iNumObjects = l_XMLObjects.GetNumChildren(); for(int i = 0; i < l_iNumObjects; i++) { CXMLTreeNode l_XMLObject = l_XMLObjects(i); string l_szType,l_szName; if(l_XMLObject.IsComment()) { continue; } l_szName = l_XMLObject.GetPszISOProperty("name" ,""); l_szType = l_XMLObject.GetPszISOProperty("type" ,""); CPhysxBone* l_pBone = GetPhysxBoneByName(l_szName); if (l_pBone!=0) { if (l_szType=="box") { l_pBone->AddBoxActor(l_XMLObject, m_pEntity); } if (l_szType=="sphere") { l_pBone->AddSphereActor(l_XMLObject, m_pEntity); } if (l_szType=="capsule") { l_pBone->AddCapsuleActor(l_XMLObject, m_pEntity); } } } if (!m_bRagdollActive) { SleepPhysxBones(); } return true; }
bool CPhysxSkeleton::Load(const std::string& _szFileName) { ASSERT(false,"No deberia de hacer esto!!!!"); bool lOk = true; CXMLTreeNode l_XML; CXMLTreeNode l_XMLObjects; if(!l_XML.LoadAndFindNode(_szFileName.c_str(), "node" , l_XMLObjects)) { LOG_WARNING_APPLICATION( "Could not open file %s", _szFileName.c_str()); lOk = false; } else { for(uint32 i = 0, l_iNumObjects = l_XMLObjects.GetNumChildren(); i < l_iNumObjects; ++i) { const CXMLTreeNode& l_XMLObject = l_XMLObjects(i); const std::string& l_szName = l_XMLObject.GetAttribute<std::string>("name" , ""); CPhysxBone* l_pBone = GetPhysxBoneByName(l_szName); if (l_pBone ) { const std::string& l_szType = l_XMLObject.GetAttribute<std::string>("type" , ""); if (l_szType == "box") { l_pBone->AddBoxActor(l_XMLObject, m_pEntity); } else if (l_szType == "sphere") { l_pBone->AddSphereActor(l_XMLObject, m_pEntity); } else if (l_szType == "capsule") { l_pBone->AddCapsuleActor(l_XMLObject, m_pEntity); } } } if (!m_bRagdollActive) { SleepPhysxBones(); } } return lOk; }
//Main function pels Joints. bool CPhysxSkeleton::InitPhysXJoints(const string& _szFileName) { CXMLTreeNode l_XML; CXMLTreeNode l_XMLObjects; if(!l_XML.LoadFile(_szFileName.c_str())) { LOGGER->AddNewLog(ELL_WARNING,"CPhysxRagdoll:: No s'ha trobat el XML \"%s\"", _szFileName.c_str()); return false; } l_XMLObjects = l_XML(1); int l_iNumObjects = l_XMLObjects.GetNumChildren(); for(int i = 0; i < l_iNumObjects; i++) { string l_szType; CXMLTreeNode l_XMLObject = l_XMLObjects(i); if(l_XMLObject.IsComment()) { continue; } l_szType = l_XMLObject.GetPszISOProperty("type" ,""); if (l_szType=="spherical") { AddSphericalJoint(l_XMLObject); } if (l_szType=="fixed") { AddFixedJoint(l_XMLObject); } if (l_szType=="revolute") { AddRevoluteJoint(l_XMLObject); } } return true; }
//Main function pels Joints. bool CPhysxSkeleton::InitPhysXJoints(const std::string& _szFileName) { CXMLTreeNode l_XML; CXMLTreeNode l_XMLObjects; if(!l_XML.LoadFile(_szFileName.c_str())) { LOG_WARNING_APPLICATION( "CPhysxRagdoll:: No s'ha trobat el XML \"%s\"", _szFileName.c_str()); return false; } l_XMLObjects = l_XML(1); int l_iNumObjects = l_XMLObjects.GetNumChildren(); for(int i = 0; i < l_iNumObjects; i++) { string l_szType; CXMLTreeNode l_XMLObject = l_XMLObjects(i); l_szType = l_XMLObject.GetAttribute<std::string>("type" , ""); if (l_szType == "spherical") { AddSphericalJoint(l_XMLObject); } if (l_szType == "fixed") { AddFixedJoint(l_XMLObject); } if (l_szType == "revolute") { AddRevoluteJoint(l_XMLObject); } } return true; }