コード例 #1
0
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 );
}
コード例 #2
0
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);
}
コード例 #3
0
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;
}