void CAStarProcess::Init() { //ScriptMInstance->RunCode( "init()" ); CPhysicsManager* l_PM = PhysXMInstance; m_pAStarScene = new CAStar(); m_pAStarScene->Init(); CPhysicUserData* userData = new CPhysicUserData( "CharacterController" ); userData->SetPaint( true ); userData->SetColor( colWHITE ); m_vPUD.push_back( userData ); Math::Vect3f l_Pos = CameraMInstance->GetCurrentCamera()->GetPosition(); m_PhysicController = new CPhysicController( 0.5f, 2, 0.2f, 0.5f, 0.5f, ECG_PLAYER, userData, l_Pos ); l_PM->AddPhysicController( m_PhysicController ); CPhysicUserData* l_PUD = new CPhysicUserData( "Plane" ); l_PUD->SetPaint( true ); l_PUD->SetColor( colWHITE ); m_vPUD.push_back( l_PUD ); CPhysicActor* l_pPhysicActor = new CPhysicActor( l_PUD ); l_pPhysicActor->AddBoxShape( Math::Vect3f( 1000, 0.0f, 1000 ), Math::Vect3f( 0, -0.5f, 0 ) ); m_vPA.push_back( l_pPhysicActor ); l_PM->AddPhysicActor( l_pPhysicActor ); m_PointInicial = Math::Vect3f( 6, 0, -6 ); m_PointFinal = Math::Vect3f( 6, 0, 6 ); m_Path = m_pAStarScene->GetPath( m_PointInicial, m_PointFinal ); }
void CZombie::InicializaController() { CPhysicUserData *userdata = new CPhysicUserData(GetInstance()->GetName()); userdata->SetColor(colGREEN); userdata->SetPaint(true); GetInstance()->SetPosition(Vect3f(GetInstance()->GetPosition().x,GetInstance()->GetPosition().y + 1.0f,GetInstance()->GetPosition().z)); // m_pPhysicController = new CPhysicController(0.5f,2.0f,2.0f,0.1f,2.0f,1,userdata,GetInstance()->GetPosition()); m_pPhysicController = new CPhysicController(0.5f, 1.3f, 40.0f, 0.01f, 0.3f, PX_MSK_ENEMY_CONTROLLER, userdata, GetInstance()->GetPosition()); CORE->GetPhysicsManager()->AddPhysicController(m_pPhysicController); }
CPhysicActor* CTriggerManager::GeneraTrigger(const std::string& _name, CTrigger* _trigger, bool _esPunyo = false) { //genera el PhysicActor CPhysicUserData *userdata = new CPhysicUserData(_name); if(!userdata) { std::string msg_error = "CTriggerManager::GeneraTrigger->Error al intentar generar un userdata para triggers: " + _name; LOGGER->AddNewLog(ELL_ERROR, msg_error.c_str()); throw CException(__FILE__, __LINE__, msg_error); return false; } userdata->Init(); userdata->SetName(_name); userdata->SetPaint(true); CPhysicActor* aTrigger = new CPhysicActor(userdata); ////guarda el userdata para luego borrarlo correctamente m_vUserDatas.push_back(userdata); //calculamos la matriz con la rotación _trigger->CalculateMatriz44f(); Mat44f l_RotationTrigger = _trigger->GetMatrizTrigger(); //se le asigna el rol de trigger y se posiciona aTrigger->CreateBoxTrigger(_trigger->GetDimensions(),PX_CG_TRIGGER); aTrigger->SetGlobalPosition(_trigger->GetPosition()); //se añade el trigger en el vector y en el mapa AddResource(_name, _trigger); //lo añadimos al manager if(!CORE->GetPhysicsManager()->AddPhysicActor(aTrigger)) { //Guardar el mensaje de error en el LOGGER std::string msg_error = "CTriggerManager::Load->Error al intentar generar un trigger en physics: " + _name; //msg_error.append(m_File_name.c_str()); LOGGER->AddNewLog(ELL_ERROR, msg_error.c_str()); throw CException(__FILE__, __LINE__, msg_error); return 0; } aTrigger->SetMat44(l_RotationTrigger); if(!_esPunyo) { m_vTriggerActors.push_back(aTrigger); } std::string msg_info = "CTriggerManager::Load->Se ha generado el trigger: " + _name; LOGGER->AddNewLog(ELL_INFORMATION, msg_info.c_str()); return aTrigger; }