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;

}