void CEnemyInstance::InitInstance(CXMLTreeNode& _XMLParams) { m_vPosition = _XMLParams.GetVect3fProperty("pos",Vect3f(0.0f)); m_vRotate = _XMLParams.GetVect3fProperty("rot",Vect3f(0.0f)); SetOk(true); }
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; }
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(); }
//---------------------------------------------- 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; }
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; }
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; }