bool CRenderObjectsPostSceneRendererStep::Init(CXMLTreeNode& _treePostSceneRenderer, const string& _szDefaultRenderTarget)
{
  LOGGER->AddNewLog(ELL_INFORMATION,"CRenderObjectsPostSceneRendererStep::Init");
  //bool l_bOk = CPostSceneRendererStep::Init(_treePostSceneRenderer,_szDefaultRenderTarget, false);
  //if(!l_bOk)
  //  return false;
  SetOk(true);

  m_pSceneRendererStep = new CSceneRendererStep();
  if(!m_pSceneRendererStep->Init(_treePostSceneRenderer,_szDefaultRenderTarget))
  {
    delete m_pSceneRendererStep;
    SetOk(false);
  }
  else
  {
    SetName(m_pSceneRendererStep->GetName());
    
    m_iSize.x = RENDER_MANAGER->GetScreenWidth();
    m_iSize.y = RENDER_MANAGER->GetScreenHeight();

    m_szRenderTarget = m_pSceneRendererStep->GetRenderTarget();
  }

  return IsOk();
}
Пример #2
0
bool CPhysxSkeleton::Init(const string& _szFileName, CalModel* _pCalModel, Mat44f _vMat, int _iColisionGroup, CGameEntity *_pEntity)
{
  m_pEntity = _pEntity;
  m_mTransform = _vMat;
  _pCalModel->getSkeleton()->calculateState();
  SetSkeleton(_pCalModel->getSkeleton());
  vector<CalBone*> l_vLlistaBones = m_pCalSkeleton->getVectorBone();

  //Inicialitzem l'estructura del PhysXSkeleton i creem les instancies dels PhysXBones.
  //Tindrem ja tota la info relativa de bones, pares i fills.
  for (size_t i=0;i<l_vLlistaBones.size();++i)
  {
    CalBone* l_pBone = l_vLlistaBones[i];
    CPhysxBone* l_pPhysXBone = new CPhysxBone(l_pBone->getCoreBone()->getName());
    l_pPhysXBone->Init(l_pBone,_vMat,_iColisionGroup);
    m_vBones.push_back(l_pPhysXBone);

  }


  //Load la info del XML I POSA ELS ACTORS!!!!
  Load(_szFileName);


  InitParents();
  InitPhysXJoints(_szFileName);

  SetOk(true);
  return IsOk();
}
Пример #3
0
bool CComponentPhysXController::Init(CGameEntity *_pEntity,
            float radius, float height, float slope, float skinwidth, 
		        float stepOffset, uint32 _iCollisionGroup 
            )
{
  CPhysicsManager *l_pPM = CORE->GetPhysicsManager();

  m_pObject3D = _pEntity->GetComponent<CComponentObject3D>(ECT_OBJECT_3D);
  assert(m_pObject3D); //TODO fer missatges d'error més elavorats

  m_pMovement = _pEntity->GetComponent<CComponentMovement>(ECT_MOVEMENT);
  assert(m_pMovement); //TODO fer missatges d'error més elavorats

  m_pPhysXData = new CPhysicUserData(_pEntity->GetName().c_str());
  m_pPhysXData->SetPaint(true);
  m_pPhysXData->SetColor(colGREEN);
  m_pPhysXData->SetEntity(_pEntity);

  m_pPhysXController = new CPhysicController(
                                  radius, height, slope, skinwidth, stepOffset, 
                                  l_pPM->GetCollisionMask( (ECollisionGroup) _iCollisionGroup ),
                                  m_pPhysXData,
                                  m_pObject3D->GetPosition());
  
  m_pPhysXController->SetPitch(m_pObject3D->GetPitch());
  m_pPhysXController->SetYaw  (m_pObject3D->GetYaw()  );
  m_pPhysXController->SetRoll (m_pObject3D->GetRoll() );

  l_pPM->AddPhysicController(m_pPhysXController);

  m_pPhysXController->SetGroup(_iCollisionGroup);

  SetOk(true);
  return IsOk();
}
Пример #4
0
bool CComponentPlayerController::Init(CGameEntity *_pEntity)
{
  m_pMovement = _pEntity->GetComponent<CComponentMovement>(ECT_MOVEMENT);
  assert(m_pMovement); //TODO fer missatges d'error més elavorats

  m_pObject3D = _pEntity->GetComponent<CComponentObject3D>(ECT_OBJECT_3D);
  assert(m_pObject3D); //TODO fer missatges d'error més elavorats

  CComponentRenderableObject *l_pComponentRO = _pEntity->GetComponent<CComponentRenderableObject>(ECT_RENDERABLE_OBJECT);
  assert(l_pComponentRO); //TODO fer missatges d'error més elavorats
  m_pAnimatedModel = dynamic_cast<CRenderableAnimatedInstanceModel*>(l_pComponentRO->GetRenderableObject());
  assert(m_pAnimatedModel); //TODO fer missatges d'error més elavorats

  m_bGodMode     =
  m_bSemigodMode =
  m_bShootActive   = 
  m_bGrenadeActive =
  m_bForceActive   = false;

  m_vPickUps.clear();

  m_pForceEmiter1 = ENTITY_MANAGER->InitParticles("electric_small", Vect3f( 1,0,0), Vect3f(.15f));
  m_pForceEmiter2 = ENTITY_MANAGER->InitParticles("electric_small", Vect3f(-1,0,0), Vect3f(.15f));

  SetOk(true);
  return IsOk();
}
Пример #5
0
bool CEngine::Init(const SInitParams& _InitParams,  HWND hWnd)
{
  LOGGER->AddNewLog(ELL_INFORMATION,"Engine::Init");

  m_pCore = new CCore();

  bool result = m_pCore->Init(hWnd, _InitParams);

  if(!result)
  {
    LOGGER->SaveLogsInFile();
  }

  assert(result);
  
  if(m_pActiveProcess) //TODO: Comprovar excepcio m_pProcess == NULL i logejar
  {
    m_pActiveProcess->Init(); 
    m_pActiveProcess->RegisterLuaFunctions();
  }

  m_pCore->GetActionManager()->SetProcess(m_pActiveProcess);

  SetOk(true);

  return IsOk();
}
Пример #6
0
bool CComponentTrigger::Init(
            CGameEntity* _pEntity,
            const Vect3f& _vSize,
            const string& _szOnEnter, const string& _szOnExit,
            int _iCollisionGroup)
{
  m_pObject3D = _pEntity->GetComponent<CComponentObject3D>(ECT_OBJECT_3D);
  assert(m_pObject3D); //TODO fer missatges d'error més elavorats

  m_pPhysXData = new CPhysicUserData(_pEntity->GetName().c_str());
  m_pPhysXData->SetPaint(true);
  m_pPhysXData->SetColor(colYELLOW);
  m_pPhysXData->SetEntity(_pEntity);

  m_pPhysXActor = new CPhysicActor(m_pPhysXData);

  m_pPhysXActor->CreateBoxTrigger(m_pObject3D->GetMat44().GetPos(), _vSize * .5f, _iCollisionGroup);

  CORE->GetPhysicsManager()->AddPhysicActor(m_pPhysXActor);
  m_pPhysXActor->SetMat44( m_pObject3D->GetMat44() );

  m_szOnEnter = _szOnEnter;
  m_szOnExit  = _szOnExit;

  m_sEntered.clear();

  SetOk(true);
  return IsOk();
}
Пример #7
0
void CEnemyInstance::InitInstance(CXMLTreeNode& _XMLParams)
{
    m_vPosition = _XMLParams.GetVect3fProperty("pos",Vect3f(0.0f));
    m_vRotate = _XMLParams.GetVect3fProperty("rot",Vect3f(0.0f));

    SetOk(true);
}
Пример #8
0
bool CEffect::Init(const CXMLTreeNode& _xmlEffect, LPD3DXEFFECTPOOL _pEffectPool)
{
  SetOk(true);

  string l_szName = _xmlEffect.GetPszISOProperty("name","");

  if(l_szName.compare("") == 0)
  {
    LOGGER->AddNewLog(ELL_ERROR,"CEffect::Init Empty name");
    SetOk(false);
    return false;
  }

  SetName(l_szName); 

  m_iTextureMask = _xmlEffect.GetIntProperty("texture_mask",0,false);

  m_szFileName = _xmlEffect.GetPszISOProperty("file","");

  if(m_szFileName.compare("") == 0)
  {
    LOGGER->AddNewLog(ELL_ERROR,"CEffect::Init Empty effect path");
    SetOk(false);
    return false;
  }

  m_szTechniqueName = _xmlEffect.GetPszISOProperty("technique","");

  if(m_szTechniqueName.compare("") == 0)
  {
    LOGGER->AddNewLog(ELL_ERROR,"CEffect::Init Empty technique name");
    SetOk(false);
    return false;
  }

  m_szInstancedTechniqueName = _xmlEffect.GetPszISOProperty("instanced_technique","", false);

  m_szD3DAlphaTechniqueName  = _xmlEffect.GetPszISOProperty("alpha_technique","", false);

  SetOk(LoadEffect(_pEffectPool));
  return IsOk();
}
Пример #9
0
bool CComponentStateMachine::Init(CGameEntity* _pEntity, const string& _pEstatInicial)
{
  m_pStateMachine = new CScriptedStateMachine(_pEntity,_pEstatInicial,"");

  m_pStateMachine->SetCurrentState(_pEstatInicial);

  m_bUpdatePause = false;

  SetOk(true);
  return IsOk();
}
Пример #10
0
bool CComponentEnergy::Init(CGameEntity* _pEntity, float _fInitialEnergy, float _fMaxEnergy, float _fRegenAmount, float _fTimeForRegen)
{
  m_fEnergy = _fInitialEnergy;
  m_fMaxEnergy = _fMaxEnergy;
  m_fRegenAmount = _fRegenAmount;
  m_fTimeForRegen = _fTimeForRegen;
  m_fTimeSinceUsed = 0.0f;

  SetOk(true);
  return IsOk();
}
Пример #11
0
//yaw pitch roll
bool CComponentRotative::Init(CGameEntity* _pEntity, float _fYawRotation, float _fPitchRotation, float _fRollRotation)
{
  m_fYawRotation   = _fYawRotation;
  m_fPitchRotation = _fPitchRotation;
  m_fRollRotation  = _fRollRotation;

  m_pCRO = _pEntity->GetComponent<CComponentRenderableObject>();

  if(m_pCRO)
  {
    SetOk(true);
  }
  else
  {
    LOGGER->AddNewLog(ELL_ERROR, "CComponentRotative::Init No s'ha trobat cap component renderable object.");
    SetOk(false);
  }

  return IsOk();
}
Пример #12
0
bool CTextureManager::Init ()
{
  m_pDefaultTexture = new CTexture();
  SetOk(false);
  if(m_pDefaultTexture->Create("DefaultTexture",
      32,
      32,
      0,
      CTexture::DYNAMIC,
      CTexture::DEFAULT,
      CTexture::A8R8G8B8))
  {
    if(m_pDefaultTexture->FillDefaultTexture())
    {
      SetOk( true );
    }
  }

  if(IsOk())
  {
    m_pDefaultCubeTexture = new CTexture();
    if(!m_pDefaultCubeTexture->CreateDefaultCube(m_pDefaultTexture))
    {
      SetOk(false);
    }
  }

  if(!IsOk())
  {
		std::string msg_error = "CTextureManager::Init-> Error al intentar crear la defualtTexture en la inicialización de CTextureManager";
		LOGGER->AddNewLog(ELL_ERROR, msg_error.c_str());
    Release();
    //throw CException(__FILE__, __LINE__, msg_error);
  }
  else
  {
    AddResource("default", m_pDefaultTexture);
    AddResource("default cube", m_pDefaultCubeTexture);
  }
  return IsOk();
}
Пример #13
0
bool CBiotestProcess::Init()
{
  LOGGER->AddNewLog(ELL_INFORMATION,"CBiotestProcess::Init");

  
  // ------------------------- noves partícules ----------------------------------------

  //m_pCoreEmiterManager = new CCoreEmiterManager();
  //m_pCoreEmiterManager->Load("Data/XML/CoreEmiters.xml");

  m_pEmiter  = new CEmiterInstance();
  m_pEmiter->Init("bubble", CObject3D(Vect3f(-14.6275f, 0.833153f, -4.08485f),0,0), Vect3f(0.391403f, 0.702762f, 0.194437f));


  // -----------------------------------------------------------------------------------


  //m_pSceneEffectManager = CORE->GetSceneEffectManager();
  CORE->GetLightManager()->SetLightsEnabled(true);

  
  CORE->GetEntityManager()->LoadEntitiesFromXML("Data/Levels/Level -2/XML/GameEntities - Laboratori.xml");
  CORE->GetEntityManager()->LoadEntitiesFromXML("Data/Levels/Level -2/XML/GameEntities - Menjador.xml");
  CORE->GetEntityManager()->LoadEntitiesFromXML("Data/Levels/Level -2/XML/GameEntities - Passadis.xml");
  CORE->GetEntityManager()->LoadEntitiesFromXML("Data/Levels/Level -2/XML/GameEntities - video.xml");
  CORE->GetEntityManager()->CreateLevelControllerEntity(false);
  
  CGameEntity* l_pPlayerEntity = CORE->GetEntityManager()->GetEntity("Player");
  m_pCamera = l_pPlayerEntity->GetComponent<CComponent3rdPSCamera>()->GetCamera();
  
  /*Vect3f l_vOmniColor = Vect3f(.5f,.5f,.5f);
  m_pOmniLight = CORE->GetLightManager()->CreateOmniLight("OmniViewerLight",Vect3f(0.0f),CColor(l_vOmniColor),0.1f,17.0f);
  m_pOmniLight->SetActive(true);*/

  
  CORE->GetIAManager()->CompleteGraph();

  m_pSpotLight = CORE->GetLightManager()->CreateSpotLight("FreeModeLight",
                                                          Vect3f(0.0f,15.0f,0.0f),
                                                          Vect3f(0.3f,-1.0f,0.0f),
                                                          CColor(Vect3f(1.0f,1.0f,1.0f)),
                                                          20.0f,
                                                          80.0f,
                                                          10.0f,
                                                          45.0f,
                                                          false );

  m_pSpotLight->SetActive(true);

  SetOk(true);
  return IsOk();
}
Пример #14
0
bool CComponentDestroyable::Init(CGameEntity* _pEntity, const string& _szAction, const string& _szResource)
{
  //és necessari un component de vida
  assert(_pEntity->GetComponent<CComponentVida>(ECT_VIDA));

  m_szAction = _szAction;
  m_szResource = _szResource;

  m_bDestroyed = false;

  SetOk(true);
  return IsOk();
}
Пример #15
0
bool CComponentShield::Init(CGameEntity* _pEntity, float _fHP, float _fMaxHP, float _fRegenAmount, float _fCooldown)
{
  m_fHP = _fHP;
  m_fMaxHP = _fMaxHP;
  m_fRegenAmount = _fRegenAmount;
  m_fCooldown = _fCooldown;
  m_fTime = m_fCooldown;

  //m_bActive = false;

  SetOk(true);
  return IsOk();
}
Пример #16
0
bool CComponentLifetime::Init(CGameEntity *_pEntity, float _fTime, const string& _szScript)
{
  assert(_fTime >= 0);

  m_fTargetTime = _fTime;

  m_szScript = _szScript;

  m_bTriggered  = false;

  SetOk(true);
  return IsOk();
}
Пример #17
0
void CAnimatedInstanceModel::Initialize(CAnimatedCoreModel *_pAnimatedCoreModel)
{
  if(_pAnimatedCoreModel != NULL)
  {
    LOGGER->AddNewLog(ELL_INFORMATION,"CAnimatedInstanceModel::Initialize Inicialitzant un AnimatedCoreModel.");

    m_pAnimatedCoreModel = _pAnimatedCoreModel;
    CalCoreModel* l_pCoreModel = m_pAnimatedCoreModel->GetCoreModel();
    m_pCalModel = new CalModel(l_pCoreModel);

    //m_iNumVtxs = 0;
    //m_iNumFaces = 0;

    int l_iMeshCount = l_pCoreModel->getCoreMeshCount();
    for(int l_iMeshId = 0; l_iMeshId < l_iMeshCount; l_iMeshId++)
    {
      LOGGER->AddNewLog(ELL_INFORMATION,"CAnimatedInstanceModel::Initialize Afegint mesh %d.", l_iMeshId);
      m_pCalModel->attachMesh(l_iMeshId);
      //CalCoreMesh* l_pCoreMesh = l_pCoreModel->getCoreMesh(l_iMeshId);
      //int l_iSubmeshCount = l_pCoreMesh->getCoreSubmeshCount();
      //for(int l_iSubMeshId = 0; l_iSubMeshId < l_iSubmeshCount; l_iSubMeshId++)
      //{
      //  m_iNumVtxs += l_pCoreMesh->getCoreSubmesh(l_iSubMeshId)->getVertexCount();
      //  m_iNumFaces += l_pCoreMesh->getCoreSubmesh(l_iSubMeshId)->getFaceCount();
      //}
    }

    InitD3D(RENDER_MANAGER);

    //animated vertex technique
    //string l_szTechniqueName = RENDER_MANAGER->GetEffectManager()->GetTechniqueEffectNameByVertexDefault(TCAL3D_HW_VERTEX::GetVertexType());
    //m_pEffectTechnique = RENDER_MANAGER->GetEffectManager()->GetEffectTechnique(l_szTechniqueName);

    SetOk(true);


    m_szAnimationState = _pAnimatedCoreModel->m_szDefaultAnimationState;
    if(m_szAnimationState != "")
    {
      map<string, SAnimationState>::iterator l_it = _pAnimatedCoreModel->m_AnimationStates.find(m_szAnimationState);
      if(l_it != _pAnimatedCoreModel->m_AnimationStates.end())
      {
        foreach(const SCycle& cycle, l_it->second.Cycles)
        {
          float l_fWeight = (cycle.bFromParameter)? m_fAnimationParameter : ((cycle.bFromComplementaryParameter)? 1 - m_fAnimationParameter : 1);
          l_fWeight *= cycle.fWeight;
          m_pCalModel->getMixer()->blendCycle(cycle.iId,l_fWeight,0.f);
        }

      } else {
Пример #18
0
bool CComponentDelayedScript::Reset(float _fTime, const string& _szScript)
{
  assert(_fTime >= 0);

  m_fTargetTime = _fTime;

  m_szScript = _szScript;

  m_bTriggered  = false;

  m_fTime = 0;

  SetOk(true);
  return IsOk();
}
Пример #19
0
bool CSceneRendererStep::Init(CXMLTreeNode& _treeSceneRenderer, const string& _szDefaultRenderTarget)
{
  //string l_szName = _treeSceneRenderer.GetPszISOProperty("name","",false);
  //string l_szRenderTarget = _treeSceneRenderer.GetPszISOProperty("render_target","",false);

  if(!CRendererStep::Init(_treeSceneRenderer,_szDefaultRenderTarget))
  {
    LOGGER->AddNewLog(ELL_ERROR,"CSceneRendererStep::Init SceneRenderer sense nom");
    SetOk(false);
  }else{
    
    LOGGER->AddNewLog(ELL_INFORMATION,"CSceneRendererStep::Init iniciant %s",GetName().c_str());

    //CRendererStep::Init(l_szRenderTarget);

    CXMLTreeNode l_treeSamplers = _treeSceneRenderer.GetChild("input_samplers");
    CXMLTreeNode l_treeMaterialEffects = _treeSceneRenderer.GetChild("material_effects");

    if(!InitInputSamplers(l_treeSamplers))
    {
      LOGGER->AddNewLog(ELL_ERROR,"CSceneRendererStep::Init error inicialitzant input_samplers");
      SetOk(false);
    }else if(!InitMaterialEffects(l_treeMaterialEffects))
    {
      LOGGER->AddNewLog(ELL_ERROR,"CSceneRendererStep::Init error inicialitzant els material_effects");
      SetOk(false);
    }else{

      //SetName(l_szName);

      SetOk(true);
    }
  }

  return IsOk();
}
Пример #20
0
bool CComponentVida::Init(CGameEntity* _pEntity, float _fVidaInicial, float _fVidaMaxima, bool _bRegen, float _fRegenAmount, float _fTimeForRegen)
{
  m_fVida = _fVidaInicial;
  m_fVidaMaxima = _fVidaMaxima;
  m_bRegen = _bRegen;
  m_fRegenAmount = _fRegenAmount;
  m_fTimeForRegen = _fTimeForRegen;
  m_fTimeSinceHit = 0.0f;

  m_fDoTTime = 0.0f;
  m_fHoTTime = 0.0f;

  m_pShield = _pEntity->GetComponent<CComponentShield>(ECT_SHIELD);

  SetOk(true);
  return IsOk();
}
Пример #21
0
bool CParticleProcess::Init()
{
  m_pObject = new CObject3D();
  m_fVelocity = 1;
  angle=0;
  m_pObject->SetPosition(Vect3f(-6,1.7f,0));

  m_pObjectBot = CORE->GetRenderableObjectsManager()->GetResource("bot");

  m_iState = 0;

  m_bStateChanged = false;

  

  m_pObjectCamera = new CThPSCamera(
    0.1f,
    100.0f,
    35.0f * FLOAT_PI_VALUE/180.0f,
    ((float)RENDER_MANAGER->GetScreenWidth())/((float)RENDER_MANAGER->GetScreenHeight()),
    m_pObject,
    4.5f);

  

  m_pCamera = m_pObjectCamera;

  ((CThPSCamera*)m_pObjectCamera)->SetZoom(10.0f);
  //m_pSceneEffectManager = CORE->GetSceneEffectManager();

  CSpotLight* l_Spot = (CSpotLight*)CORE->GetLightManager()->GetResource("Spot01");
  
  if(l_Spot)
  {
    //l_Spot->SetDirection(m_pObjectBot->GetPosition());
    l_Spot->SetActive(true);
  }
  m_bRenderLights = false;

 

  SetOk(true);
  return IsOk();
}
Пример #22
0
bool CComponentPhysXSphere::Init(CGameEntity *_pEntity, float _fRadius, 
            float _fPosX , float _fPosY , float _fPosZ,
            float _fDensity, int _iCollisionGroup
            )
{
  m_fDensity = _fDensity;
  m_iCollisionGroup = _iCollisionGroup;

  m_pObject3D = _pEntity->GetComponent<CComponentObject3D>(ECT_OBJECT_3D);
  assert(m_pObject3D); //TODO fer missatges d'error més elaborats

  m_pPhysXData = new CPhysicUserData(_pEntity->GetName().c_str());
  m_pPhysXData->SetPaint(true);
  m_pPhysXData->SetColor(colBLUE);
  m_pPhysXData->SetEntity(_pEntity);

  m_pPhysXActor = new CPhysicActor(m_pPhysXData);
  if(_fDensity > 0)
  {
    m_pPhysXActor->CreateBody(_fDensity);
  }else{
    m_pPhysXActor->CreateBody(100.0f);
  }


  m_pPhysXActor->AddSphereShape(_fRadius,v3fZERO,Vect3f( _fPosX , _fPosY , _fPosZ ), NULL, _iCollisionGroup);


  CORE->GetPhysicsManager()->AddPhysicActor(m_pPhysXActor);

  if(_fDensity == 0)
  {
    m_pPhysXActor->SetKinematic(true);
  }

  m_pPhysXActor->SetMat44( m_pObject3D->GetMat44() );

  //m_vSize = Vect3f(_fSizeX, _fSizeY, _fSizeZ);

  SetOk(true);
  return IsOk();
}
Пример #23
0
bool CAnimatedModelManager::Load(const string &_szFileName)
{
  LOGGER->AddNewLog(ELL_INFORMATION, "CAnimatedModelManager::Load Carregant el fitxer \"%s\"", _szFileName.c_str());
  m_vXMLFiles.insert(_szFileName);

  CXMLTreeNode l_treeAnimatedModels;
  if(l_treeAnimatedModels.LoadFile(_szFileName.c_str()))
  {
    int l_iNumChildren = l_treeAnimatedModels.GetNumChildren();
    for(int i = 0; i < l_iNumChildren; i++)
    {
      CXMLTreeNode l_treeAnimatedModel = l_treeAnimatedModels(i);
      if(strcmp(l_treeAnimatedModel.GetName(),"animatedModel") == 0)
      {
        const char* l_pcPath = l_treeAnimatedModel.GetPszProperty("path",0);
        const char* l_pcName = l_treeAnimatedModel.GetPszProperty("name",0);

        if(l_pcPath == 0)
        {
          LOGGER->AddNewLog(ELL_WARNING, "CAnimatedModelManager::Load No s'ha trobat la propietat \"path\" a una animatedModel.");
        } else if(l_pcName == 0)
        {
          LOGGER->AddNewLog(ELL_WARNING, "CAnimatedModelManager::Load No s'ha trobat la propietat \"name\" a una animatedModel.");
        } else {
          GetCore(l_pcName, l_pcPath);
        }
      } else if(!l_treeAnimatedModel.IsComment())
      {
        LOGGER->AddNewLog(ELL_WARNING, "CAnimatedModelManager::Load S'ha trobat un element desconegut \"%s\"", l_treeAnimatedModel.GetName());
      }
    }
  } else {
    LOGGER->AddNewLog(ELL_WARNING, "CAnimatedModelManager::Load No s'ha trobat el fitxer");
  }
  SetOk(true);
  return IsOk();
}
Пример #24
0
bool CMultipleRenderTarget::Init(const string& _szName)
{
  SetName(_szName);
  SetOk(true);
  return IsOk();
}
Пример #25
0
bool CComponentMirilla::Init(CGameEntity* _pEntity)
{
  SetOk(true);
  return IsOk();
}
Пример #26
0
bool CPostSceneRendererStep::Init(CXMLTreeNode& _treePostSceneRenderer, const string& _szDefaultRenderTarget, bool _bNeedsEffect)
{
    string l_szEffect = _treePostSceneRenderer.GetPszISOProperty("effect","",!_bNeedsEffect);

    if(!CRendererStep::Init(_treePostSceneRenderer, _szDefaultRenderTarget))
    {
        LOGGER->AddNewLog(ELL_ERROR,"CPostSceneRendererStep::Init PostSceneRenderer sense nom");
        SetOk(false);
    } else if(l_szEffect == "" && _bNeedsEffect)
    {
        LOGGER->AddNewLog(ELL_ERROR,"CPostSceneRendererStep::Init PostSceneRenderer sense effect");
        SetOk(false);
    } else {

        LOGGER->AddNewLog(ELL_INFORMATION,"CPostSceneRendererStep::Init iniciant %s",GetName().c_str());

        CRendererStep::Init(_treePostSceneRenderer, _szDefaultRenderTarget);

        CXMLTreeNode l_treeSamplers = _treePostSceneRenderer.GetChild("input_samplers");
        CXMLTreeNode l_treeRenderTargets = _treePostSceneRenderer.GetChild("render_targets");

        if(!InitInputSamplers(l_treeSamplers))
        {
            LOGGER->AddNewLog(ELL_ERROR,"CPostSceneRendererStep::Init error inicialitzant input_samplers");
            SetOk(false);
        } else {

            m_szEffect = l_szEffect;

            m_bUseTime = _treePostSceneRenderer.GetBoolProperty("use_time",false,false);

            if(m_bUseTime)
            {
                m_bUseDeltaTime = _treePostSceneRenderer.GetBoolProperty("use_delta_time",false,false);
            }
            else
            {
                m_bUseDeltaTime = false;
            }

            m_bUseCenter = _treePostSceneRenderer.GetBoolProperty("use_center",false,false);

            string l_szAlignment = _treePostSceneRenderer.GetPszISOProperty("alignment","",false);
            if(l_szAlignment == "center")
            {
                m_Alignment = CENTER;
            }

            Vect2f l_fPos = _treePostSceneRenderer.GetVect2fProperty("position",Vect2f(0),false);

            m_iPos.x = (int) (l_fPos.x * RENDER_MANAGER->GetScreenWidth());
            m_iPos.y = (int) (l_fPos.y * RENDER_MANAGER->GetScreenHeight());

            if(_treePostSceneRenderer.ExistsProperty("size"))
            {
                float l_fSizeX = _treePostSceneRenderer.GetFloatProperty("size",1.0,false);

                if(_treePostSceneRenderer.GetBoolProperty("absolute_size",false,false))
                {
                    m_iSize.x = (int) l_fSizeX;
                    m_iSize.y = m_iSize.x;
                }
                else
                {
                    m_iSize.x = (int) (l_fSizeX * RENDER_MANAGER->GetScreenWidth());
                    m_iSize.y = m_iSize.x;
                }

                if(_treePostSceneRenderer.ExistsProperty("aspect_ratio"))
                {
                    bool l_bAspectRatio = _treePostSceneRenderer.GetBoolProperty("aspect_ratio",true,false);

                    if(l_bAspectRatio)
                    {
                        m_iSize.y = (int)(m_iSize.x * RENDER_MANAGER->GetScreenHeight()/(float)RENDER_MANAGER->GetScreenWidth());
                    }
                }

            } else if(_treePostSceneRenderer.ExistsProperty("size_x"))
            {
                float l_fSizeX = _treePostSceneRenderer.GetFloatProperty("size_x",1.0,false);
                float l_fSizeY = _treePostSceneRenderer.GetFloatProperty("size_y",1.0,false);

                if(_treePostSceneRenderer.GetBoolProperty("absolute_size",false,false))
                {
                    m_iSize.x = (int) l_fSizeX;
                    m_iSize.y = (int) l_fSizeY;
                }
                else
                {
                    m_iSize.x = (int) (l_fSizeX * RENDER_MANAGER->GetScreenWidth());
                    m_iSize.y = (int) (l_fSizeY * RENDER_MANAGER->GetScreenHeight());
                }

            } else
            {
                m_iSize.x = RENDER_MANAGER->GetScreenWidth();
                m_iSize.y = RENDER_MANAGER->GetScreenHeight();
            }

            SetOk(true);
        }
    }

    return IsOk();
}
Пример #27
0
bool CPhysXProcess::Init()
{
  LOGGER->AddNewLog(ELL_INFORMATION,"CPhysXProcess::Init");

  CPhysicsManager* l_pPhysManager = CORE->GetPhysicsManager();
  
  m_pObject = new CObject3D();
  m_fVelocity = 2;
  
  m_pObject->SetPosition(Vect3f(-6,1.7f,0));

  m_pObjectBot = CORE->GetRenderableObjectsManager()->GetResource("bot");

  m_iState = 0;

  m_bStateChanged = false;


  /*m_pObjectCamera = new CShoulderCamera(
      0.1f,
      100.0f,
      55.0f * FLOAT_PI_VALUE/180.0f,
      ((float)RENDER_MANAGER->GetScreenWidth())/((float)RENDER_MANAGER->GetScreenHeight()),
      m_pObject,
      2.0f,0.6f,1.5f);*/
  m_pObjectCamera = new CThPSCamera(
    0.1f,
    100.0f,
    35.0f * FLOAT_PI_VALUE/180.0f,
    ((float)RENDER_MANAGER->GetScreenWidth())/((float)RENDER_MANAGER->GetScreenHeight()),
    m_pObject,
    4.5f);

  m_pCamera = m_pObjectCamera;

  ((CThPSCamera*)m_pObjectCamera)->SetZoom(5.0f);
  //m_pSceneEffectManager = CORE->GetSceneEffectManager();

  //CSpotLight* l_Spot = (CSpotLight*)CORE->GetLightManager()->GetResource("Spot01");

  /*m_pSpotlight = CORE->GetLightManager()->CreateSpotLight("FreeModeLight",
	                                                          Vect3f(-2.15715f,0.0f,-7.32758f),
	                                                          Vect3f(-5.4188f,0.0f,3.75613f),
	                                                          CColor(Vect3f(1.0f,1.0f,1.0f)),
	                                                          20.0f,
	                                                          80.0f,
	                                                          10.0f,
	                                                          45.0f,
	                                                          false );
	
	 m_pSpotlight->SetActive(false);*/
 
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////CODI PER MOSTRAR LES ESFERES ALS BONES
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //CRenderableAnimatedInstanceModel* l_pAnim = (CRenderableAnimatedInstanceModel*)CORE->GetRenderableObjectsManager()->GetResource("ariggle");
  //CalCoreSkeleton* l_pSkeleton = l_pAnim->GetAnimatedInstanceModel()->GetAnimatedCoreModel()->GetCoreModel()->getCoreSkeleton();
  //vector<CalCoreBone*> l_vBones = l_pSkeleton->getVectorCoreBone();
  //CalVector l_vBonePos;

  //for (size_t i=0;i<l_vBones.size();++i)
  //{
  //  //l_vBones[0]->getBoundingData(plane,l_vBonePos);
  //  l_vBonePos = l_vBones[i]->getTranslationAbsolute();
  //  Vect3f l_vVector = Vect3f(l_vBonePos.x,l_vBonePos.y,l_vBonePos.z);
  //  SCollisionInfo l_cInfo;
  //  l_cInfo.m_CollisionPoint = l_vVector;
  //  l_cInfo.m_Normal = v3fZERO;
  //  g_vCollisions.push_back(l_cInfo);
  //}
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////


  g_pUserDataJoint1 = new CPhysicUserData("Objecte Joint 1");
  g_pUserDataJoint2 = new CPhysicUserData("Objecte Joint 2");
  g_pUserDataJoint3 = new CPhysicUserData("Objecte Joint 3");
  g_pUserDataJoint1->SetPaint(true);
  g_pUserDataJoint1->SetColor(colYELLOW);
  g_pUserDataJoint2->SetPaint(true);
  g_pUserDataJoint2->SetColor(colRED);
  g_pUserDataJoint3->SetPaint(true);
  g_pUserDataJoint3->SetColor(colGREEN);

  g_pUserData = new CPhysicUserData("Plane");
  g_pUserData->SetPaint(true);
  g_pUserData->SetColor(colWHITE);


  g_pJointActor1 = new CPhysicActor(g_pUserDataJoint1);
  g_pJointActor2 = new CPhysicActor(g_pUserDataJoint2);
  g_pJointActor3 = new CPhysicActor(g_pUserDataJoint3);


  g_pJointActor1->AddBoxSphape(Vect3f(0.5f,0.5f,0.5f),v3fZERO,v3fZERO,NULL,GROUP_COLLIDABLE_PUSHABLE);
  g_pJointActor2->AddSphereShape(0.4f,v3fZERO,v3fZERO,NULL,GROUP_COLLIDABLE_PUSHABLE);
  g_pJointActor3->AddBoxSphape(Vect3f(0.3f,0.3f,0.3f),v3fZERO,v3fZERO,NULL,GROUP_COLLIDABLE_PUSHABLE);
  g_pJointActor1->SetGlobalPosition(Vect3f(-9.0f,1.0f,-3.0f));
  g_pJointActor2->SetGlobalPosition(Vect3f(-9.0f,3.0f,-3.0f));
  g_pJointActor3->SetGlobalPosition(Vect3f(-9.0f,5.0f,-3.0f));

  g_pJointActor1->CreateBody(1.0f);
  g_pJointActor2->CreateBody(5.0f);
  g_pJointActor3->CreateBody(10.0f);
  
  g_pFixedJoint = new CPhysicFixedJoint();
  g_pFixedJoint2 = new CPhysicFixedJoint();
  g_pRevoluteJoint = new CPhysicRevoluteJoint();
  g_pSphericalJoint = new CPhysicSphericalJoint();
  g_pSphericalJoint2 = new CPhysicSphericalJoint();
  //g_pSphericalJoint->GetPhXDescJoint()->

  l_pPhysManager->AddPhysicActor(g_pJointActor1);
  l_pPhysManager->AddPhysicActor(g_pJointActor2);
  l_pPhysManager->AddPhysicActor(g_pJointActor3);

  g_pJointActor3->GetPhXActor()->raiseBodyFlag(NX_BF_KINEMATIC);
  g_pJointActor3->GetPhXActor()->setLinearDamping(0.5);

  //g_pFixedJoint->SetInfo(g_pJointActor1,g_pJointActor2);
  g_pSphericalJoint->SetInfoComplete(Vect3f(-9.0f,5.0f,-3.0f),Vect3f(0.0f,-1.0f,0.0f),g_pJointActor2,g_pJointActor3);
  g_pSphericalJoint2->SetInfoComplete(Vect3f(-9.0f,3.0f,-3.0f),Vect3f(0.0f,-1.0f,0.0f),g_pJointActor1,g_pJointActor2);
  //g_pSphericalJoint2->SetInfo(Vect3f(-9.0f,2.0f,-3.0f),g_pJointActor1,g_pJointActor2);
  //g_pSphericalJoint->SetInfo(Vect3f(-9.0f,3.0f,-3.0f),g_pJointActor2,g_pJointActor3);
  
  
  
  //g_pFixedJoint2->SetInfo(g_pJointActor2,g_pJointActor3);
  //g_pRevoluteJoint->SetInfo(v3fZERO,Vect3f(0.1f,0.1f,0.1f),g_pJointActor1,g_pJointActor2);
  //g_pSphericalJoint->SetInfo(Vect3f(-6.0f,2.0f,-3.0f),g_pJointActor2);
  //g_pRevoluteJoint->SetMotor(1.0f,1.0f);

  //g_pFixedJoint->CreateJoint(NULL);

  //l_pPhysManager->AddPhysicFixedJoint(g_pFixedJoint);
  //l_pPhysManager->AddPhysicFixedJoint(g_pFixedJoint2);
  //l_pPhysManager->AddPhysicRevoluteJoint(g_pRevoluteJoint);
  l_pPhysManager->AddPhysicSphericalJoint(g_pSphericalJoint);
  l_pPhysManager->AddPhysicSphericalJoint(g_pSphericalJoint2);




  g_pObjectManager = new CGameObjectManager();
  g_pObjectManager->Load("Data/Levels/NivellProves/XML/GameObjects.xml",false);

  //CPhysicActor* l_pLampada = g_pObjectManager->GetResource("Lampada")->GetPhysXActor();
  //CPhysicActor* l_pCable = g_pObjectManager->GetResource("Cable_Lampada")->GetPhysXActor();
  //Vect3f l_vMax = g_pObjectManager->GetResource("Cable_Lampada")->GetRenderableObject()->GetBoundingBox()->GetDimension();
  //Vect3f l_vPos = g_pObjectManager->GetResource("Lampada")->GetRenderableObject()->GetPosition();
  //Vect3f l_vPos2 = g_pObjectManager->GetResource("Cable_Lampada")->GetRenderableObject()->GetPosition();
  //Vect3f l_vPos3 = l_vPos2;

  //l_vPos2.y = l_vPos2.y - (l_vMax.y*0.5f); 
  //l_vPos3.y = l_vPos3.y + (l_vMax.y*0.5f); 


  //SCollisionInfo l_SInfo;
  //l_SInfo.m_CollisionPoint = l_vPos2;
  //l_SInfo.m_Normal = Vect3f(0.0f,-1.0f,0.0f);
  //g_vCollisions.push_back(l_SInfo);

  //l_SInfo.m_CollisionPoint = l_vPos3;
  //g_vCollisions.push_back(l_SInfo);


  //g_pSphericalJoint->SetInfo(l_vPos2,l_pLampada,l_pCable);
  //g_pSphericalJoint2->SetInfo(l_vPos3,l_pCable);

  //l_pPhysManager->AddPhysicSphericalJoint(g_pSphericalJoint);
  //l_pPhysManager->AddPhysicSphericalJoint(g_pSphericalJoint2);
 
  
 


  //CHARACTER CONTROLLER
  g_pUserDataController = new CPhysicUserData("PhysX Controller");
  g_pUserDataController->SetPaint(true);
  g_pUserDataController->SetColor(colBLACK);

  g_pPhysXController = new CPhysicController(RADIUS_CONTROLLER,ALTURA_CONTROLLER,10.0,0.05f,0.01f,COLISIONABLE_MASK,g_pUserDataController,Vect3f(-7.0f,2.2f,-4.0f));
  g_pPhysXController->SetYaw(-90);
  l_pPhysManager->AddPhysicController(g_pPhysXController);

  m_pObject->SetPosition(g_pPhysXController->GetPosition());

  //g_pObjectManager = new CGameObjectManager();
  //g_pObjectManager->Load("Data/Levels/PhysX/XML/GameObjects.xml",false);


  //Init del character de Riggle
  g_pCharacter = (CRenderableAnimatedInstanceModel*)CORE->GetRenderableObjectsManager()->GetResource("ariggle");

  if (g_pCharacter != 0)
  {
    Vect3f l_vPos = g_pPhysXController->GetPosition();
    l_vPos.y = 0.0f;
    g_pCharacter->SetPosition(l_vPos);
    g_pCharacter->GetAnimatedInstanceModel()->BlendCycle("idle",0);
  }

  Vect3f l_ControllerPos = g_pPhysXController->GetPosition();
  m_pObject->SetPosition(Vect3f(l_ControllerPos.x,l_ControllerPos.y,l_ControllerPos.z));

  
  /*if(l_Spot)
  {
    l_Spot->SetDirection(l_ControllerPos);
    l_Spot->SetActive(true);
  }*/
  m_bRenderLights = false;


  CORE->GetLightManager()->SetLightsEnabled(true);
  l_pPhysManager->SetDebugRenderMode(true);

  
  /////////////////////////////////////////////////////////////////////////////////
  //// RAGDOLL PROVES
  /////////////////////////////////////////////////////////////////////////////////

  //CRenderableAnimatedInstanceModel* l_pAnim = (CRenderableAnimatedInstanceModel*)CORE->GetRenderableObjectsManager()->GetResource("rigglebot");
  //CalSkeleton* l_pSkeleton = l_pAnim->GetAnimatedInstanceModel()->GetAnimatedCalModel()->getSkeleton();
  //l_pSkeleton->getCoreSkeleton()->calculateBoundingBoxes(l_pAnim->GetAnimatedInstanceModel()->GetAnimatedCalModel()->getCoreModel());
  //l_pSkeleton->calculateBoundingBoxes();
  //if (g_pRagdoll == 0)
  //{
  //  g_pRagdoll = new CPhysxSkeleton();
  //  CalModel* l_pCalModel = l_pAnim->GetAnimatedInstanceModel()->GetAnimatedCalModel();
  //  g_pRagdoll->Init("Data/Animated Models/Riggle/Skeleton.xml",l_pCalModel,l_pAnim->GetMat44());
  //}

  /////////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////////

  CORE->GetRenderableObjectsManager()->AddMeshInstance("laser_pilota", "Mirilla");
  
  SetOk(true);
  return IsOk();




}
Пример #28
0
bool CTextureRenderTarget::Init(CXMLTreeNode& _treeRenderTarget)
{
  string l_szName =  _treeRenderTarget.GetPszISOProperty("name","",false);
  string l_szTextureName = _treeRenderTarget.GetPszISOProperty("texture","",false);
  string l_szFormat = _treeRenderTarget.GetPszISOProperty("format","A8R8G8B8");

  int l_iWidth = (int)CORE->GetRenderManager()->GetScreenWidth();

  float l_fSize = _treeRenderTarget.GetFloatProperty("size",1.f,false);

  m_iWidth  = _treeRenderTarget.GetIntProperty("width" ,(int)(RENDER_MANAGER->GetScreenWidth()  * l_fSize),false);
  m_iHeight = _treeRenderTarget.GetIntProperty("height",(int)(RENDER_MANAGER->GetScreenHeight() * l_fSize),false);

  CRenderTarget::Init(m_iWidth, m_iHeight);

  SetOk(true);

  if(l_szName != "")
  {
    SetName(l_szName);

    if(l_szTextureName != "")
    {
      m_szTextureName = l_szTextureName;

      CTexture* l_pTexture = new CTexture();

      if(l_pTexture->Create(l_szTextureName,
                            m_iWidth,
                            m_iHeight,
                            1,
                            CTexture::RENDERTARGET,
                            CTexture::DEFAULT,
                            CTexture::GetFormatTypeFromString(l_szFormat)))
      {
        m_pSurface = l_pTexture->GetSurface();
        m_pSurface->AddRef();
      } else
      {
        m_pSurface = 0;
      }

      if(l_pTexture->IsOk() && m_pSurface)
      {
        SetOk(true);
        CORE->GetTextureManager()->AddResource(l_szTextureName, l_pTexture);
      } else
      {
        if(!l_pTexture->IsOk())
          LOGGER->AddNewLog(ELL_ERROR, "CTextureRenderTarget::Init  Texture is not Ok.");
        if(!m_pSurface)
          LOGGER->AddNewLog(ELL_ERROR, "CTextureRenderTarget::Init  Surface is not Ok.");
        SetOk(false);
        CHECKED_DELETE(l_pTexture);
      }

    }else{
      LOGGER->AddNewLog(ELL_WARNING,"CTextureRenderTarget::Init render_target sense textura");
      SetOk(false);
    }
  }else{
    LOGGER->AddNewLog(ELL_WARNING,"CTextureRenderTarget::Init render_target sense nom");
    SetOk(false);
  }
          
  return IsOk();
}
Пример #29
0
bool CEmiterInstance::Init(const string& _szCoreName, const CObject3D& _Position, const Vect3f& _vVolume, int _iMaxParticles, bool _bBillboardMode )
{
  assert(!IsOk());
  SetOk(true);
  SetMat44( _Position.GetMat44() );

  m_szCoreName     = _szCoreName;
  m_vVolume        = _vVolume;
  m_vMaxVolume     = m_vVolume * .5f;
  m_vMinVolume     = -m_vMaxVolume;
  m_fVolume        = _vVolume.x * _vVolume.y * _vVolume.z;
  m_pEmiterCore    = CORE->GetEmiterCoreManager()->GetEmiterCore(m_szCoreName);
  m_bBillboardMode = _bBillboardMode;
  m_iMaxParticles  = _iMaxParticles;

  m_RecyclingParticles.Reset(m_iMaxParticles);
  m_iaParticles    = new int[m_iMaxParticles];

  GetBoundingBox()->Init(_vVolume);

  if(m_bBillboardMode)
  {
    if(m_pEmiterCore->IsSimpleEmiter())
    {
      m_Billboard.Init(dynamic_cast<const CSimpleEmiterCore*>(m_pEmiterCore), Vect3f(0,0,0),true);
    }
    else
    {
      LOGGER->AddNewLog(ELL_WARNING, "Trying to initialize billboard with aggregate emiter.");
      m_pEmiterCore = CORE->GetEmiterCoreManager()->GetNullEmiter();
      m_Billboard.Init(CORE->GetEmiterCoreManager()->GetNullEmiter(), Vect3f(0,0,0),true);
    }
  } else if(m_pEmiterCore->IsSimpleEmiter())
  {
    m_bIsSimple = true;
    const CSimpleEmiterCore *l_pEmiterCore = dynamic_cast<const CSimpleEmiterCore*>(m_pEmiterCore);
    
    float l_fMultiplier = l_pEmiterCore->GetEmitAbsolute()? 1 : m_fVolume;
    m_fTimeToNextParticle = 1.f / (l_pEmiterCore->GetEmitRate() * l_fMultiplier);
    m_iActiveParticles = 0;
    memset(m_iaParticles, 0, sizeof(int) * m_iMaxParticles);

    m_bAwake = true;
    m_fTimeToAwakeOrSleep = l_pEmiterCore->GetAwakeTime();

    m_pObjectReference = 0;
    m_bActive = true;
  }
  else
  {
    m_bIsSimple = false;
    const CAggregateEmiterCore *l_pEmiterCore = dynamic_cast<const CAggregateEmiterCore*>(m_pEmiterCore);

    vector<CAggregateEmiterCore::SEmiters>::const_iterator l_it  = l_pEmiterCore->GetChilds().begin();
    vector<CAggregateEmiterCore::SEmiters>::const_iterator l_end = l_pEmiterCore->GetChilds().end();


    for(; l_it != l_end; ++l_it)
    {
      CEmiterInstance *l_pChild = new CEmiterInstance();
      Vect3f l_vChildBox = l_it->volume.GetScaled(_vVolume);
      //Mat44f l_mChildTransform = Mat44f(_vVolume.x, 0, 0, 0,
      //                                  0, _vVolume.y, 0, 0,
      //                                  0, 0, _vVolume.z, 0,
      //                                  0, 0, 0,          1)
      //                           * l_it->movement.GetMat44();
      //CObject3D l_O3D;
      //l_O3D.SetMat44(l_mChildTransform);
      Mat44f l_mChildTransform = l_it->movement.GetMat44();
      Vect3f l_vChildTranslation = l_mChildTransform.GetTranslationVector();
      l_vChildTranslation.Scale(_vVolume);
      l_mChildTransform.Translate(l_vChildTranslation);
      CObject3D l_O3D;
      l_O3D.SetMat44(l_mChildTransform);

      bool l_bIsOk = l_pChild->Init(l_it->emiter, l_O3D, l_vChildBox);
      if(l_bIsOk)
      {
        m_ChildEmiters.push_back(l_pChild);
        GetBoundingBox()->Adjust(*l_pChild->GetBoundingBox());
      }
      else
      {
        delete l_pChild;
        SetOk(false);
        break;
      }
    }
  }

  if(!IsOk())
  {
    Release();
  }
  else if(!m_InstancedData.IsOk())
  {
    bool l_bIsOk = m_InstancedData.Init(CORE->GetRenderManager(), m_iMaxParticles);
    SetOk(l_bIsOk);
  }

  GetBoundingSphere()->Init(*GetBoundingBox());
  if(IsOk())
    CORE->GetPortalManager()->InsertEmiter(this);
  return IsOk();
}
Пример #30
0
bool CComponentPhysXSphere::Init(CGameEntity *_pEntity, float _fDensity, float _fRadius, float _fSkeletonSize, int _iCollisionGroup)
{
  m_fDensity = _fDensity;
  m_iCollisionGroup = _iCollisionGroup;
  m_fRadius = _fRadius;
  m_fSkeletonSize = _fSkeletonSize;

  m_pObject3D = _pEntity->GetComponent<CComponentObject3D>(ECT_OBJECT_3D);
  if(!m_pObject3D)
  {
    LOGGER->AddNewLog(ELL_WARNING,"CComponentPhysXSphere::Init  L'objecte no té el component CComponentObject3D.");
    return false;
  }

  CComponentRenderableObject* l_pComponentRenderableObject = _pEntity->GetComponent<CComponentRenderableObject>(ECT_RENDERABLE_OBJECT);
  if(!l_pComponentRenderableObject)
  {
    LOGGER->AddNewLog(ELL_WARNING,"CComponentPhysXSphere::Init  L'objecte no té el component CComponentRenderableObject.");
    return false;
  }

  CRenderableObject* l_pRenderableObject = l_pComponentRenderableObject->GetRenderableObject();
  CBoundingBox* l_pBB = l_pRenderableObject->GetBoundingBox();
  CBoundingSphere* l_pBS = l_pRenderableObject->GetBoundingSphere();

  m_pPhysXData = new CPhysicUserData(_pEntity->GetName().c_str());
  m_pPhysXData->SetPaint(true);
  m_pPhysXData->SetColor(colBLUE);
  m_pPhysXData->SetEntity(_pEntity);

  m_pPhysXActor = new CPhysicActor(m_pPhysXData);
  
  if (_fSkeletonSize > 0)
  {
    m_pPhysXActor->AddSphereShape(_fRadius,m_pObject3D->GetPosition(), v3fZERO, CORE->GetPhysicsManager()->CreateCCDSkeleton(_fSkeletonSize), _iCollisionGroup);
  }
  else
  {
    m_pPhysXActor->AddSphereShape(_fRadius,m_pObject3D->GetPosition(), v3fZERO, NULL, _iCollisionGroup);
  }

  //m_pPhysXActor->SetGlobalPosition(m_pObject3D->GetPosition());

  if(_fDensity > 0)
  {
    m_pPhysXActor->CreateBody(_fDensity);
  }else{
    m_pPhysXActor->CreateBody(100.0f);
  }

  //m_pPhysXActor->CreateBody(1);
  
  CORE->GetPhysicsManager()->AddPhysicActor(m_pPhysXActor);


  /*if(_fDensity == 0)
  {
    m_pPhysXActor->SetKinematic(true);
  }*/

  /*Mat44f l_vMat = m_pObject3D->GetMat44();
  m_pPhysXActor->SetMat44(l_vMat);*/

  
  
  SetOk(true);
  return IsOk();
}