示例#1
0
void CEnemyInstance::InitInstance(CXMLTreeNode& _XMLParams)
{
    m_vPosition = _XMLParams.GetVect3fProperty("pos",Vect3f(0.0f));
    m_vRotate = _XMLParams.GetVect3fProperty("rot",Vect3f(0.0f));

    SetOk(true);
}
示例#2
0
CDirectionalLight::CDirectionalLight(CXMLTreeNode &TreeNode)
:CLight(TreeNode)
,m_Direction(TreeNode.GetVect3fProperty("dir", v3fZERO))
,m_OrthoShadowMapSize(TreeNode.GetVect2fProperty("ortho_shadow_map_size", v2fZERO))
,m_PlayerOffset(TreeNode.GetVect3fProperty("player_offset", v3fZERO))
{
	m_Type = DIRECTIONAL;
}
示例#3
0
CLight::CLight(CXMLTreeNode &TreeNode) : CNamed(TreeNode)
{
	m_Type = GetLightTypeByName(TreeNode.GetPszProperty("type"));
	m_Position = TreeNode.GetVect3fProperty("pos", Vect3f(0.0f, 0.0f, 0.0f), true);
	m_Color = CColor(TreeNode.GetVect4fProperty("color", Vect4f(255.0f, 255.0f, 255.0f, 0.0f), true));
	m_StartRangeAttenuation = TreeNode.GetFloatProperty("att_start_range");
	m_EndRangeAttenuation = TreeNode.GetFloatProperty("att_end_range");
	m_Intensity = TreeNode.GetFloatProperty("intensity");
}
CFreeCameraComponent::CFreeCameraComponent(CXMLTreeNode& node, CElement* Owner)
	: CComponent(node, Owner)
{
	SetNameFromParentName( Owner->getName() );

	m_camController = new CFreeCameraController();

	Vect3f fwd = node.GetVect3fProperty("forward", Vect3f( 1, 0, 0), false);
	Vect3f off = node.GetVect3fProperty( "offset", Vect3f( 0, 0, 0 ), false );
	float fov = node.GetFloatProperty( "fov", -1, false );

	m_camController->SetForward( fwd );
	m_camController->SetOffset( off );

	if ( fov > 0 )
	{
		m_camController->SetFOV( mathUtils::Deg2Rad(fov)/2 );
	}
}
// --------------------------------------------
//			CONSTRUCTOR/DESTRUCTOR
// --------------------------------------------
CLensFlareSceneRemdererCommand::CLensFlareSceneRemdererCommand( CXMLTreeNode &_Node )
	: CSceneRendererCommand ( _Node )
{	
	m_LightIndex = _Node.GetIntProperty("light_index", 0, true);
	Vect3f glowColor = _Node.GetVect3fProperty("glow_color", v3fZERO, true);


	m_LensFlare = new CLensFlarePostProcess();
	m_LensFlare->SetGlowColor(CColor(Vect4f(glowColor / 255.0f, 1.0f)));
	m_LensFlare->Init();
}
示例#6
0
//----------------------------------------------
void CBoxTrigger::ReadData( CXMLTreeNode &_Node )
{
	m_bIsActive		= _Node.GetBoolProperty("active", false);
	m_Name			= _Node.GetPszProperty("name", "");
	m_Position		= _Node.GetVect3fProperty("position", v3fZERO);
	m_Size			= _Node.GetVect3fProperty("size", v3fZERO);
	m_fYaw			= _Node.GetFloatProperty("yaw", 0.f);
	m_RenderColor	= CColor( _Node.GetVect4fProperty("color", Vect4f(1.f, 1.f, 1.f, 1.f)) );

	std::string l_ROName = _Node.GetPszProperty("renderable_object", "", false);
	std::string l_Layer = _Node.GetPszProperty("layer", "", false);

	CRenderableObjectsManager *l_pROM = CORE->GetRenderableObjectsLayersManager()->GetRenderableObjectManager(l_Layer);
	if( l_pROM != NULL )
	{
		m_pTriggerObject = l_pROM->GetInstance(l_ROName);
		if( m_pTriggerObject == NULL )
		{
			LOGGER->AddNewLog(ELL_WARNING, "CBoxTrigger::ReadData->No se ha podido obtener el objeto: %s de la capa Solid.", l_ROName.c_str());
		}
	}

	m_fYaw = mathUtils::Deg2Rad(m_fYaw);
}
CBillboardAnimation::CBillboardAnimation(CXMLTreeNode &parser){
	SetColor(CColor(parser.GetVect3fProperty("color",Vect3f(1.0f))));
	float size=parser.GetFloatProperty("size",2.0f);
	SetHeight(size);
	SetWidth(size);
	m_TimePerImage=parser.GetFloatProperty("time",0.2f);
	m_Loop=parser.GetBoolProperty("loop",false);
	CXMLTreeNode l_Node = parser["Textures"];
	for(int i=0;i<l_Node.GetNumChildren();i++){
		
		std::string l_TexturePath=l_Node(i).GetPszProperty("tex","");
		CTexture *l_Texture = CORE->GetTextureManager()->GetTexture(l_TexturePath);
		m_Textures.push_back(l_Texture);
	}
	m_Index=0;
	m_fTime=0.0f;
	SetTexture(m_Textures[m_Index]);
	SetPos(Vect3f(0.0f,0.0f,0.0f));
	
}
//----------------------------------------------------------------------------
// Init data
//----------------------------------------------------------------------------
bool CZombieOlfateador::Init(const CXMLTreeNode &m){
  SetDummyStart(m.GetPszProperty("dummy_start"));
  m_sNodoActual = GetDummyStart();
  m_sNodoSiguiente = "";

  m_AgentIA = new C_IA();
  m_AgentIA->Init();
  std::map<std::string,SNodo*> miApuntadorGrafo = m_AgentIA->GetGrafo();
  std::map<std::string,SNodo*>::iterator l_iterGrafo =  miApuntadorGrafo.find(GetDummyStart());
  GetInstance()->SetPosition(l_iterGrafo->second->posicion);

  this->SetAgent(m_AgentIA);
  m_V3RotIni			= m.GetVect3fProperty("rot",NULL);
  GetInstance()->SetYaw(m_V3RotIni.x);
  GetInstance()->SetPitch(m_V3RotIni.y);
  GetInstance()->SetRoll(m_V3RotIni.z);

  GetInstance()->SetName( m.GetPszProperty("name"));
  SetSiguiendoRuta(false);

  return true;
}
示例#9
0
bool CEnemyManager::Init(const char* _pcFile)
{
  CXMLTreeNode FileXML;

  FileXML.LoadFile(_pcFile);

  //CXMLTreeNode Enemies = fileXML(0);
  {
    CXMLTreeNode Templates = FileXML["templates"];

    int iNumChildren = Templates.GetNumChildren();
    for(int i = 0; i < iNumChildren; i++) {
      CXMLTreeNode EnemyTemplate = Templates(i);

      const char* pcId   = EnemyTemplate.GetPszProperty("id");
      const char* pcMesh = EnemyTemplate.GetPszProperty("mesh");

      CEnemyResource* pResource = new CEnemyResource();
      std::string szId = pcId;

      //TODO comprovar errors
      pResource->Init(pcId,pcMesh);

      m_Resources[szId] = pResource;
    
    }
  }
  {
    Vect3f Default(0,0,0);


    CXMLTreeNode Instances = FileXML["instances"];

    int iNumChildren = Instances.GetNumChildren();
    for(int i = 0; i < iNumChildren; i++) {
      CXMLTreeNode EnemyInstance = Instances(i);

      const char* pcType = EnemyInstance.GetPszProperty("type");
      const Vect3f vPos = EnemyInstance.GetVect3fProperty("pos",Default);
      const Vect3f vRot = EnemyInstance.GetVect3fProperty("rot",Default);
      const float fMoveSpeed = EnemyInstance.GetFloatProperty("move_speed");
      const float fRotateSpeed = EnemyInstance.GetFloatProperty("rotate_speed");
      const float fHealth = EnemyInstance.GetFloatProperty("health");

      if(strcmp(pcType,"PATROLLER") == 0)
      {
        const char* pcPaths = EnemyInstance.GetPszProperty("paths");

        CPatroller* pPatroller = new CPatroller();
        pPatroller->Init(vPos,vRot,fMoveSpeed,fRotateSpeed,fHealth,pcPaths);

        m_Instances.push_back(pPatroller);
      } else if(strcmp(pcType,"SNIPER") == 0)
      {
		    float fAimDistance = EnemyInstance.GetFloatProperty("aim_distance");

        CSniper* pSniper = new CSniper();
        pSniper->Init(vPos,vRot,fMoveSpeed,fRotateSpeed,fHealth,fAimDistance);

        m_Instances.push_back(pSniper);
      } else if(strcmp(pcType,"TURRET") == 0)
      {
        Vect3f vMaxAngle = EnemyInstance.GetVect3fProperty("max_angle",Default);
        Vect3f vMinAngle = EnemyInstance.GetVect3fProperty("min_angle",Default);

        CTurret* pTurret = new CTurret();
        pTurret->Init(vPos,vRot,fMoveSpeed,fRotateSpeed,fHealth,vMaxAngle,vMinAngle);

        m_Instances.push_back(pTurret);
      } else if(strcmp(pcType,"CAMERA") == 0)
      {
        Vect3f vMaxAngle = EnemyInstance.GetVect3fProperty("max_angle",Default);
        Vect3f vMinAngle = EnemyInstance.GetVect3fProperty("min_angle",Default);

        CCamera* pCamera = new CCamera();
        pCamera->Init(vPos,vRot,fMoveSpeed,fRotateSpeed,fHealth,vMaxAngle,vMinAngle);

        m_Instances.push_back(pCamera);
      } else {
        //TODO errors
      }
    
    }
  }

  return true;
}
示例#10
0
bool CSpirit::LoadXML(std::string fileName)
{
  m_pFileName = fileName;
  CXMLTreeNode header;

  if(!header.LoadFile(fileName.c_str()))
  {
		//Guardar el mensaje de error en el LOGGER
		std::string msg_error = " CSpirit::Load->Error al intentar abrir el archivo: ";
		msg_error.append(fileName.c_str());
		LOGGER->AddNewLog(ELL_ERROR, msg_error.c_str());
		//throw CException(__FILE__, __LINE__, msg_error);
		return false;
  }
  else
  {
    //<spirit>
  //<parameters posini="3 2 -3" apertura="0.2" speedup="3.3" speeddown="0.5" heightflymax="3.0" heightflymin="1.9" 
  //speedslow="1.0" speedfast="1.5" distnear="4.0" distfar="6.0" 
  //timeidle="5.0" timechase="5.0"
  //numlaps="2" speedcontento="4.0" 
  ///>
    //</spirit>

    //solo un spirit****
    CXMLTreeNode tag = header["spirit"];
    if(tag.Exists())
    {
   		if (!tag.IsComment())
			{
        CXMLTreeNode params = tag(0)["parameters"];
				if (params.Exists())
				{
				  m_V3PosIni = params.GetVect3fProperty("posini", Vect3f(3.0f, 1.5f, -3.8f));
 //         m_V3Pos = params.GetVect3fProperty("posini", Vect3f(3.0f, 1.5f, -3.8f));  //quitado para dejar estatico el espiritu
          m_fSpeed_YUp = params.GetFloatProperty("speedup",3.3f);
          m_fSpeed_YDown = params.GetFloatProperty("speeddown",0.5f);
          m_fPosYMax = params.GetFloatProperty("heightflymax",3.f);
          m_fPosYMin = params.GetFloatProperty("heightflymin",1.9f);
          m_fAperturaEmisor = params.GetFloatProperty("apertura",0.2f); 
          m_fSpeedMax = params.GetFloatProperty("speedfast",1.5f);
          m_fSpeedMin = params.GetFloatProperty("speedslow",1.f);
          m_fDistFar = params.GetFloatProperty("distfar",6.f);
          m_fDistNear = params.GetFloatProperty("distnear",10.f);
          m_fDelayTimeIdle = params.GetFloatProperty("timeidle",5.f);
          m_fDelayTimeChase = params.GetFloatProperty("timechase",5.f);
          m_uiNumeroVueltasContento = params.GetIntProperty("numlaps",1);
          m_fSpeedRotationContento = params.GetFloatProperty("speedcontento",3.f);
          m_pLight = CORE->GetLigthManager()->GetResource(params.GetPszProperty("light", ""));
        }
      }
    }
    else
    {
		  //Guardar el mensaje de error en el LOGGER
		  std::string msg_error = " CSpirit::Load->Parametros mal configurados ";
		  msg_error.append(fileName.c_str());
		  LOGGER->AddNewLog(ELL_ERROR, msg_error.c_str());
		  //throw CException(__FILE__, __LINE__, msg_error);
		  return false;
    }
  }

  return true;
}