diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2013-03-30 15:01:00 +0100 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2013-03-30 15:23:05 +0100 |
commit | e218dcfdf2c58f8841e7ebd220527d08e870a6d5 (patch) | |
tree | a567db04a8a51e2db87f80e259faf222a7d4becd /src/graphics/engine/particle.cpp | |
parent | bfc701e286259d9a7aa2ff8240704eab2ba3a237 (diff) | |
parent | e607fed265070be8c518d4302d8b76f738421fb3 (diff) | |
download | colobot-e218dcfdf2c58f8841e7ebd220527d08e870a6d5.tar.gz colobot-e218dcfdf2c58f8841e7ebd220527d08e870a6d5.tar.bz2 colobot-e218dcfdf2c58f8841e7ebd220527d08e870a6d5.zip |
Merge branch 'dev'
Merging content from dev
Diffstat (limited to 'src/graphics/engine/particle.cpp')
-rw-r--r-- | src/graphics/engine/particle.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/graphics/engine/particle.cpp b/src/graphics/engine/particle.cpp index acc40df..d15ee3b 100644 --- a/src/graphics/engine/particle.cpp +++ b/src/graphics/engine/particle.cpp @@ -18,6 +18,9 @@ #include "graphics/engine/particle.h" +#include "app/app.h" + +#include "common/iman.h" #include "common/logger.h" #include "graphics/core/device.h" @@ -117,11 +120,8 @@ float GetDecay(ObjectType type) -CParticle::CParticle(CInstanceManager *iMan, CEngine* engine) +CParticle::CParticle(CEngine* engine) { - m_iMan = iMan; - m_iMan->AddInstance(CLASS_PARTICULE, this); - m_device = nullptr; m_engine = engine; m_main = nullptr; @@ -138,7 +138,6 @@ CParticle::CParticle(CInstanceManager *iMan, CEngine* engine) CParticle::~CParticle() { - m_iMan->DeleteInstance(CLASS_PARTICULE, this); } void CParticle::SetDevice(CDevice* device) @@ -213,7 +212,7 @@ int CParticle::CreateParticle(Math::Vector pos, Math::Vector speed, Math::Point float windSensitivity, int sheet) { if (m_main == nullptr) - m_main = static_cast<CRobotMain*>(m_iMan->SearchInstance(CLASS_MAIN)); + m_main = CRobotMain::GetInstancePointer(); int t = -1; if ( type == PARTIEXPLOT || @@ -649,7 +648,7 @@ void CParticle::CreateWheelTrace(const Math::Vector &p1, const Math::Vector &p2, m_wheelTrace[i].startTime = m_absTime; if (m_terrain == nullptr) - m_terrain = static_cast<CTerrain*>(m_iMan->SearchInstance(CLASS_TERRAIN)); + m_terrain = m_main->GetTerrain(); m_terrain->AdjustToFloor(m_wheelTrace[i].pos[0]); m_wheelTrace[i].pos[0].y += 0.2f; // just above the ground @@ -808,15 +807,15 @@ void CParticle::SetFrameUpdate(int sheet, bool update) void CParticle::FrameParticle(float rTime) { if (m_main == nullptr) - m_main = static_cast<CRobotMain*>(m_iMan->SearchInstance(CLASS_MAIN)); + m_main = CRobotMain::GetInstancePointer(); bool pause = (m_engine->GetPause() && !m_main->GetInfoLock()); if (m_terrain == nullptr) - m_terrain = static_cast<CTerrain*>(m_iMan->SearchInstance(CLASS_TERRAIN)); + m_terrain = m_main->GetTerrain(); if (m_water == nullptr) - m_water = static_cast<CWater*>(m_iMan->SearchInstance(CLASS_WATER)); + m_water = m_engine->GetWater(); if (!pause) { @@ -3214,7 +3213,7 @@ void CParticle::DrawParticleSphere(int i) angle.z = m_particle[i].angle*0.7f; Math::Matrix rot; Math::LoadRotationZXYMatrix(rot, angle); - mat = Math::MultiplyMatrices(rot, mat); + mat = Math::MultiplyMatrices(mat, rot); } m_device->SetTransform(TRANSFORM_WORLD, mat); @@ -3654,11 +3653,13 @@ CObject* CParticle::SearchObjectGun(Math::Vector old, Math::Vector pos, box2.y += min; box2.z += min; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + CObject* best = 0; bool shield = false; for (int i = 0; i < 1000000; i++) { - CObject* obj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + CObject* obj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if (obj == 0) break; if (!obj->GetActif()) continue; // inactive? @@ -3782,9 +3783,11 @@ CObject* CParticle::SearchObjectRay(Math::Vector pos, Math::Vector goal, box2.y += min; box2.z += min; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for (int i = 0; i < 1000000; i++) { - CObject* obj = static_cast<CObject*>( m_iMan->SearchInstance(CLASS_OBJECT, i) ); + CObject* obj = static_cast<CObject*>( iMan->SearchInstance(CLASS_OBJECT, i) ); if (obj == nullptr) break; if (!obj->GetActif()) continue; // inactive? @@ -3822,7 +3825,7 @@ CObject* CParticle::SearchObjectRay(Math::Vector pos, Math::Vector goal, void CParticle::Play(Sound sound, Math::Vector pos, float amplitude) { if (m_sound == nullptr) - m_sound = static_cast<CSoundInterface*>(m_iMan->SearchInstance(CLASS_SOUND)); + m_sound = CApplication::GetInstancePointer()->GetSound(); m_sound->Play(sound, pos, amplitude); } |