Пример #1
0
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;
}
Пример #2
0
void CPhysxSkeleton::SetRagdollActive(bool _bRagdollActive)
{
    m_bRagdollActive = _bRagdollActive;

    if(m_bRagdollActive)
    {
        //SleepPhysxBones();
        WakeUpPhysxBones();
    }
    else
    {
        SleepPhysxBones();
    }
};
Пример #3
0
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;
}