From 001d37b257b126dd6ef1dced70f94ff3d2806d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Dziwi=C5=84ski?= Date: Sat, 16 Feb 2013 22:37:43 +0100 Subject: CInstanceManager refactoring * removed classes managed by CInstanceManager except for CObject, CPyro, CBrain and CPhysics because of dependencies * refactored instance searching to use existing singleton instances of CApplication, CEngine and CRobotMain and calling their getter functions --- src/graphics/engine/camera.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'src/graphics/engine/camera.cpp') diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp index 8026302..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 ( m_iMan->SearchInstance(CLASS_ENGINE) ); - m_terrain = static_cast( m_iMan->SearchInstance(CLASS_TERRAIN) ); - m_water = static_cast ( 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( m_iMan->SearchInstance(CLASS_OBJECT, i) ); + CObject* obj = static_cast( iMan->SearchInstance(CLASS_OBJECT, i) ); if (obj == NULL) break; @@ -881,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( m_iMan->SearchInstance(CLASS_OBJECT, i) ); + CObject *obj = static_cast( iMan->SearchInstance(CLASS_OBJECT, i) ); if (obj == NULL) break; if (obj->GetTruck()) continue; // battery or cargo? @@ -958,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( m_iMan->SearchInstance(CLASS_OBJECT, i) ); + CObject *obj = static_cast( iMan->SearchInstance(CLASS_OBJECT, i) ); if (obj == NULL) break; if (obj == m_cameraObj) continue; @@ -1650,7 +1656,7 @@ Math::Vector CCamera::ExcludeObject(Math::Vector eye, Math::Vector lookat, /* for (int i = 0; i < 1000000; i++) { - CObject* obj = static_cast( m_iMan->SearchInstance(CLASS_OBJECT, i) ); + CObject* obj = static_cast( iMan->SearchInstance(CLASS_OBJECT, i) ); if (obj == NULL) break; -- cgit v1.2.3-1-g7c22