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/camera.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/camera.cpp')
-rw-r--r-- | src/graphics/engine/camera.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp index d85194e..f65a59a 100644 --- a/src/graphics/engine/camera.cpp +++ b/src/graphics/engine/camera.cpp @@ -30,6 +30,7 @@ #include "math/geometry.h" #include "object/object.h" +#include "object/robotmain.h" #include "physics/physics.h" @@ -54,14 +55,13 @@ void SetTransparency(CObject* obj, float value) -CCamera::CCamera(CInstanceManager* iMan) +CCamera::CCamera() { - m_iMan = iMan; - m_iMan->AddInstance(CLASS_CAMERA, this); + m_engine = CEngine::GetInstancePointer(); + m_water = m_engine->GetWater(); - m_engine = static_cast<CEngine*> ( m_iMan->SearchInstance(CLASS_ENGINE) ); - m_terrain = static_cast<CTerrain*>( m_iMan->SearchInstance(CLASS_TERRAIN) ); - m_water = static_cast<CWater*> ( m_iMan->SearchInstance(CLASS_WATER) ); + m_main = CRobotMain::GetInstancePointer(); + m_terrain = m_main->GetTerrain(); m_type = CAM_TYPE_FREE; m_smooth = CAM_SMOOTH_NORM; @@ -227,11 +227,13 @@ void CCamera::SetType(CameraType type) m_remotePan = 0.0f; m_remoteZoom = 0.0f; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + if ( (m_type == CAM_TYPE_BACK) && m_transparency ) { 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 == NULL) break; @@ -315,6 +317,7 @@ void CCamera::SetType(CameraType type) if ( oType == OBJECT_PARA ) m_backDist = 180.0f; if ( oType == OBJECT_SAFE ) m_backDist = 50.0f; if ( oType == OBJECT_HUSTON ) m_backDist = 120.0f; + if ( oType == OBJECT_MOTHER ) m_backDist = 55.0f; m_backMin = m_backDist/3.0f; if ( oType == OBJECT_HUMAN ) m_backMin = 10.0f; @@ -327,8 +330,8 @@ void CCamera::SetType(CameraType type) if ( oType == OBJECT_HUSTON ) m_backMin = 80.0f; } - if ( type != CAM_TYPE_ONBOARD && m_cameraObj != 0 ) - m_cameraObj->SetGunGoalH(0.0f); // puts the cannon right + //if ( type != CAM_TYPE_ONBOARD && m_cameraObj != 0 ) + // m_cameraObj->SetGunGoalH(0.0f); // puts the cannon right if ( type == CAM_TYPE_ONBOARD ) m_focus = 1.50f; // Wide @@ -880,9 +883,11 @@ bool CCamera::IsCollisionBack(Math::Vector &eye, Math::Vector lookat) m_transparency = false; + 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 == NULL) break; if (obj->GetTruck()) continue; // battery or cargo? @@ -957,9 +962,11 @@ bool CCamera::IsCollisionBack(Math::Vector &eye, Math::Vector lookat) bool CCamera::IsCollisionFix(Math::Vector &eye, Math::Vector lookat) { + 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 == NULL) break; if (obj == m_cameraObj) continue; @@ -1649,7 +1656,7 @@ Math::Vector CCamera::ExcludeObject(Math::Vector eye, Math::Vector lookat, /* 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 == NULL) break; |