Revision: 2783 http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=2783&view=rev Author: ulteq Date: 2012-06-06 18:34:34 +0000 (Wed, 06 Jun 2012) Log Message: ----------- -Codechange: new interfaces for Manager / Behavior systems +CameraManager no longer singleton +CameraManager ported to the new interfaces
Modified Paths: -------------- trunk/source/main/GlobalEnvironment.h trunk/source/main/gameplay/Character.cpp trunk/source/main/gameplay/RoRFrameListener.cpp trunk/source/main/gameplay/SceneMouse.cpp trunk/source/main/gfx/PreviewRenderer.cpp trunk/source/main/gfx/camera/CameraBehaviorCharacter.cpp trunk/source/main/gfx/camera/CameraBehaviorCharacter.h trunk/source/main/gfx/camera/CameraBehaviorFixed.cpp trunk/source/main/gfx/camera/CameraBehaviorFixed.h trunk/source/main/gfx/camera/CameraBehaviorFree.cpp trunk/source/main/gfx/camera/CameraBehaviorFree.h trunk/source/main/gfx/camera/CameraBehaviorIsometric.cpp trunk/source/main/gfx/camera/CameraBehaviorIsometric.h trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp trunk/source/main/gfx/camera/CameraBehaviorOrbit.h trunk/source/main/gfx/camera/CameraBehaviorStatic.cpp trunk/source/main/gfx/camera/CameraBehaviorStatic.h trunk/source/main/gfx/camera/CameraBehaviorVehicle.cpp trunk/source/main/gfx/camera/CameraBehaviorVehicle.h trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.cpp trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.h trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.cpp trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.h trunk/source/main/gfx/camera/CameraManager.cpp trunk/source/main/gfx/camera/CameraManager.h trunk/source/main/gui/GUIMenu.cpp trunk/source/main/physics/Beam.cpp Added Paths: ----------- trunk/source/main/utils/IBehavior.h trunk/source/main/utils/IManager.h Removed Paths: ------------- trunk/source/main/gfx/camera/ICameraBehavior.h Modified: trunk/source/main/GlobalEnvironment.h =================================================================== --- trunk/source/main/GlobalEnvironment.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/GlobalEnvironment.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -20,34 +20,36 @@ #ifndef __GlobalEnvironment_H_ #define __GlobalEnvironment_H_ -class RoRFrameListener; -class TerrainManager; +class CameraManager; +class Character; class Collisions; class IHeightFinder; -class Water; +class MapControl; class Network; -class MapControl; -class Character; +class RoRFrameListener; class SkyManager; +class TerrainManager; +class Water; class GlobalEnvironment { public: GlobalEnvironment() : - collisions(0) + cameraManager(0) , embeddedMode(false) , frameListener(0) + , mainCamera(0) , network(0) - , mainCamera(0) + , ogreRoot(0) + , player(0) , renderWindow(0) , sceneManager(0) - , viewPort(0) - , player(0) , sky(0) , surveyMap(0) , terrainManager(0) - , ogreRoot(0) + , viewPort(0) + , collisions(0) { } @@ -57,6 +59,7 @@ Ogre::SceneManager *sceneManager; Ogre::Viewport *viewPort; + CameraManager *cameraManager; Character *player; Collisions *collisions; MapControl *surveyMap; Modified: trunk/source/main/gameplay/Character.cpp =================================================================== --- trunk/source/main/gameplay/Character.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gameplay/Character.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -276,7 +276,7 @@ { // disable character movement when using the free camera mode or when the menu is opened // TODO: check for menu being opened - if (CameraManager::singletonExists() && !CameraManager::getSingleton().gameControlsEnabled()) return; + if (gEnv->cameraManager && !gEnv->cameraManager->gameControlsEnabled()) return; // small hack: if not visible do not apply physics Vector3 position = mCharacterNode->getPosition(); Modified: trunk/source/main/gameplay/RoRFrameListener.cpp =================================================================== --- trunk/source/main/gameplay/RoRFrameListener.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gameplay/RoRFrameListener.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -1322,7 +1322,7 @@ as->addData("MP_ServerName", SSETTING("Server name", "")); as->addData("MP_ServerPort", SSETTING("Server port", "")); as->addData("MP_NetworkEnabled", SSETTING("Network enable", "No")); - as->addData("Camera_Mode", CameraManager::singletonExists() ? TOSTRING(CameraManager::getSingleton().getCameraBehavior()) : "None"); + as->addData("Camera_Mode", gEnv->cameraManager ? TOSTRING(gEnv->cameraManager->getCurrentBehavior()) : "None"); as->addData("Camera_Position", TOSTRING(gEnv->mainCamera->getPosition())); const RenderTarget::FrameStats& stats = gEnv->renderWindow->getStatistics(); @@ -1434,9 +1434,9 @@ #endif // USE_MYGUI // save the settings - if (CameraManager::singletonExists() && - CameraManager::getSingleton().hasActiveBehavior() && - CameraManager::getSingleton().getCameraBehavior() == CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM) + if (gEnv->cameraManager && + gEnv->cameraManager->hasActiveBehavior() && + gEnv->cameraManager->getCurrentBehavior() == CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM) { SETTINGS.setSetting("FOV Internal", TOSTRING(fov)); } else @@ -1477,7 +1477,7 @@ if (loading_state==ALL_LOADED || loading_state == TERRAIN_EDITOR) { - if (CameraManager::singletonExists() && CameraManager::getSingleton().gameControlsEnabled()) + if (gEnv->cameraManager && gEnv->cameraManager->gameControlsEnabled()) { if (!curr_truck) { @@ -2414,9 +2414,9 @@ surveyMapMode = (surveyMapMode + 1) % SURVEY_MAP_END; if (surveyMapMode == SURVEY_MAP_BIG && (velocity > 5.0f || - (CameraManager::singletonExists() && - CameraManager::getSingleton().hasActiveBehavior() && - CameraManager::getSingleton().getCameraBehavior() == CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM))) + (gEnv->cameraManager && + gEnv->cameraManager->hasActiveBehavior() && + gEnv->cameraManager->getCurrentBehavior() == CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM))) { surveyMapMode = (surveyMapMode + 1) % SURVEY_MAP_END; } @@ -2455,11 +2455,11 @@ } if (curr_truck && surveyMapMode == SURVEY_MAP_BIG && - CameraManager::singletonExists() && - CameraManager::getSingleton().hasActiveBehavior() && - CameraManager::getSingleton().gameControlsEnabled()) + gEnv->cameraManager && + gEnv->cameraManager->hasActiveBehavior() && + gEnv->cameraManager->gameControlsEnabled()) { - if (velocity > 7.5f || CameraManager::getSingleton().getCameraBehavior() == CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM) + if (velocity > 7.5f || gEnv->cameraManager->getCurrentBehavior() == CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM) { surveyMap->setPosition(-1, 1, 0.3f); surveyMap->setAlpha(alphaValue); @@ -3135,9 +3135,9 @@ #endif // USE_MUMBLE } - if (CameraManager::singletonExists() && (loading_state == ALL_LOADED || loading_state == TERRAIN_EDITOR)) + if (gEnv->cameraManager && (loading_state == ALL_LOADED || loading_state == TERRAIN_EDITOR)) { - CameraManager::getSingleton().update(dt); + gEnv->cameraManager->update(dt); } // update mirrors after moving the camera as we use the camera position in mirrors @@ -3456,9 +3456,9 @@ else { if (curr_truck - && CameraManager::singletonExists() - && CameraManager::getSingleton().hasActiveBehavior() - && CameraManager::getSingleton().getCameraBehavior() != CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM) + && gEnv->cameraManager + && gEnv->cameraManager->hasActiveBehavior() + && gEnv->cameraManager->getCurrentBehavior() != CameraManager::CAMERA_BEHAVIOR_VEHICLE_CINECAM) { if (ow) ow->showDashboardOverlays(true, curr_truck); //if (bigMap) bigMap->setVisibility(true); Modified: trunk/source/main/gameplay/SceneMouse.cpp =================================================================== --- trunk/source/main/gameplay/SceneMouse.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gameplay/SceneMouse.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -88,7 +88,7 @@ const OIS::MouseState ms = _arg.state; // check if handled by the camera - if (!CameraManager::singletonExists() || CameraManager::getSingleton().mouseMoved(_arg)) + if (!gEnv->cameraManager || gEnv->cameraManager->mouseMoved(_arg)) return true; // experimental mouse hack Modified: trunk/source/main/gfx/PreviewRenderer.cpp =================================================================== --- trunk/source/main/gfx/PreviewRenderer.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/PreviewRenderer.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -44,7 +44,7 @@ void PreviewRenderer::render() { - if (!CameraManager::singletonExists()) return; + if (!gEnv->cameraManager) return; LOG("starting previewRenderer..."); Beam *truck = BeamFactory::getSingleton().getCurrentTruck(); Modified: trunk/source/main/gfx/camera/CameraBehaviorCharacter.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorCharacter.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorCharacter.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -31,7 +31,7 @@ camPositionOffset = Vector3(0.0f, 1.1f, 0.0f); } -void CameraBehaviorCharacter::update(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorCharacter::update(const CameraManager::CameraContext &ctx) { if(!gEnv->player) return; targetDirection = -gEnv->player->getRotation() - Radian(Math::HALF_PI); @@ -40,7 +40,7 @@ CameraBehaviorOrbit::update(ctx); } -bool CameraBehaviorCharacter::mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) +bool CameraBehaviorCharacter::mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg) { if(!gEnv->player) return false; if ( camMode == CHARACTER_FIRST_PERSON ) @@ -66,11 +66,11 @@ return CameraBehaviorOrbit::mouseMoved(ctx, _arg); } -void CameraBehaviorCharacter::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorCharacter::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { if ( ctx.mCurrTruck ) { - CameraManager::getSingleton().switchToNextBehavior(); + gEnv->cameraManager->switchToNextBehavior(); return; } else if ( reset ) { @@ -78,7 +78,7 @@ } } -void CameraBehaviorCharacter::reset(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorCharacter::reset(const CameraManager::CameraContext &ctx) { CameraBehaviorOrbit::reset(ctx); @@ -97,7 +97,7 @@ } } -bool CameraBehaviorCharacter::switchBehavior(const CameraManager::cameraContext_t &ctx) +bool CameraBehaviorCharacter::switchBehavior(const CameraManager::CameraContext &ctx) { if (++camMode < CHARACTER_END) { Modified: trunk/source/main/gfx/camera/CameraBehaviorCharacter.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorCharacter.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorCharacter.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -30,14 +30,14 @@ CameraBehaviorCharacter(); - void update(const CameraManager::cameraContext_t &ctx); + void update(const CameraManager::CameraContext &ctx); - bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg); + bool mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg); - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void reset(const CameraManager::cameraContext_t &ctx); + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void reset(const CameraManager::CameraContext &ctx); - bool switchBehavior(const CameraManager::cameraContext_t &ctx); + bool switchBehavior(const CameraManager::CameraContext &ctx); protected: Modified: trunk/source/main/gfx/camera/CameraBehaviorFixed.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorFixed.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorFixed.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -24,7 +24,7 @@ using namespace Ogre; -void CameraBehaviorFixed::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorFixed::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { #ifdef USE_MYGUI Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, Console::CONSOLE_SYSTEM_NOTICE, _L("fixed free camera"), "camera_link.png", 3000); Modified: trunk/source/main/gfx/camera/CameraBehaviorFixed.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorFixed.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorFixed.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -22,23 +22,24 @@ #include "RoRPrerequisites.h" -#include "ICameraBehavior.h" +#include "CameraManager.h" +#include "IBehavior.h" -class CameraBehaviorFixed : public ICameraBehavior +class CameraBehaviorFixed : public IBehavior<CameraManager::CameraContext> { public: - void update(const CameraManager::cameraContext_t &ctx) {}; + void update(const CameraManager::CameraContext &ctx) {}; - bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) { return false; }; - bool mousePressed(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - bool mouseReleased(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg) { return false; }; + bool mousePressed(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseReleased(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void deactivate(const CameraManager::cameraContext_t &ctx) {}; - void reset(const CameraManager::cameraContext_t &ctx) {}; + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void deactivate(const CameraManager::CameraContext &ctx) {}; + void reset(const CameraManager::CameraContext &ctx) {}; - bool switchBehavior(const CameraManager::cameraContext_t &ctx) { return true; }; + bool switchBehavior(const CameraManager::CameraContext &ctx) { return true; }; }; #endif // __CAMERA_BEHAVIOR_FIXED_H_ Modified: trunk/source/main/gfx/camera/CameraBehaviorFree.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorFree.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorFree.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -29,7 +29,7 @@ using namespace Ogre; -void CameraBehaviorFree::update(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorFree::update(const CameraManager::CameraContext &ctx) { Degree mRotX(0.0f); Degree mRotY(0.0f); @@ -110,7 +110,7 @@ gEnv->mainCamera->setPosition(camPosition); } -bool CameraBehaviorFree::mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) +bool CameraBehaviorFree::mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg) { const OIS::MouseState ms = _arg.state; @@ -124,7 +124,7 @@ return true; } -void CameraBehaviorFree::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorFree::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { #ifdef USE_MYGUI Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, Console::CONSOLE_SYSTEM_NOTICE, _L("free camera"), "camera_go.png", 3000); Modified: trunk/source/main/gfx/camera/CameraBehaviorFree.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorFree.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorFree.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -22,23 +22,24 @@ #include "RoRPrerequisites.h" -#include "ICameraBehavior.h" +#include "CameraManager.h" +#include "IBehavior.h" -class CameraBehaviorFree : public ICameraBehavior +class CameraBehaviorFree : public IBehavior<CameraManager::CameraContext> { public: - void update(const CameraManager::cameraContext_t &ctx); + void update(const CameraManager::CameraContext &ctx); - bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg); - bool mousePressed(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - bool mouseReleased(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg); + bool mousePressed(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseReleased(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void deactivate(const CameraManager::cameraContext_t &ctx) {}; - void reset(const CameraManager::cameraContext_t &ctx) {}; + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void deactivate(const CameraManager::CameraContext &ctx) {}; + void reset(const CameraManager::CameraContext &ctx) {}; - bool switchBehavior(const CameraManager::cameraContext_t &ctx) { return true; }; + bool switchBehavior(const CameraManager::CameraContext &ctx) { return true; }; }; #endif // __CAMERA_BEHAVIOR_FREE_H_ Modified: trunk/source/main/gfx/camera/CameraBehaviorIsometric.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorIsometric.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorIsometric.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -24,7 +24,7 @@ using namespace Ogre; -void CameraBehaviorIsometric::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorIsometric::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { #ifdef USE_MYGUI Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, Console::CONSOLE_SYSTEM_NOTICE, _L("fixed free camera"), "camera_link.png", 3000); Modified: trunk/source/main/gfx/camera/CameraBehaviorIsometric.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorIsometric.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorIsometric.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -22,23 +22,24 @@ #include "RoRPrerequisites.h" -#include "ICameraBehavior.h" +#include "CameraManager.h" +#include "IBehavior.h" -class CameraBehaviorIsometric : public ICameraBehavior +class CameraBehaviorIsometric : public IBehavior<CameraManager::CameraContext> { public: - void update(const CameraManager::cameraContext_t &ctx) {}; + void update(const CameraManager::CameraContext &ctx) {}; - bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) { return false; }; - bool mousePressed(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - bool mouseReleased(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg) { return false; }; + bool mousePressed(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseReleased(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void deactivate(const CameraManager::cameraContext_t &ctx) {}; - void reset(const CameraManager::cameraContext_t &ctx) {}; + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void deactivate(const CameraManager::CameraContext &ctx) {}; + void reset(const CameraManager::CameraContext &ctx) {}; - bool switchBehavior(const CameraManager::cameraContext_t &ctx) { return true; }; + bool switchBehavior(const CameraManager::CameraContext &ctx) { return true; }; }; #endif // __CAMERA_BEHAVIOR_ISOMETRIC_H_ Modified: trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -41,7 +41,7 @@ { } -void CameraBehaviorOrbit::update(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorOrbit::update(const CameraManager::CameraContext &ctx) { if ( INPUTENGINE.getEventBoolValueBounce(EV_CAMERA_LOOKBACK) ) { @@ -136,7 +136,7 @@ gEnv->mainCamera->lookAt(camLookAt); } -bool CameraBehaviorOrbit::mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) +bool CameraBehaviorOrbit::mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg) { const OIS::MouseState ms = _arg.state; @@ -151,7 +151,7 @@ return false; } -void CameraBehaviorOrbit::reset(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorOrbit::reset(const CameraManager::CameraContext &ctx) { camRotX = 0.0f; camRotY = 0.3f; Modified: trunk/source/main/gfx/camera/CameraBehaviorOrbit.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorOrbit.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorOrbit.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -22,23 +22,24 @@ #include "RoRPrerequisites.h" -#include "ICameraBehavior.h" +#include "CameraManager.h" +#include "IBehavior.h" -class CameraBehaviorOrbit : public ICameraBehavior +class CameraBehaviorOrbit : public IBehavior<CameraManager::CameraContext> { public: CameraBehaviorOrbit(); - void update(const CameraManager::cameraContext_t &ctx); + void update(const CameraManager::CameraContext &ctx); - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true) {}; - void deactivate(const CameraManager::cameraContext_t &ctx) {}; - void reset(const CameraManager::cameraContext_t &ctx); + void activate(const CameraManager::CameraContext &ctx, bool reset = true) {}; + void deactivate(const CameraManager::CameraContext &ctx) {}; + void reset(const CameraManager::CameraContext &ctx); - bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg); - bool mousePressed(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - bool mouseReleased(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg); + bool mousePressed(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseReleased(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; protected: Modified: trunk/source/main/gfx/camera/CameraBehaviorStatic.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorStatic.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorStatic.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -28,7 +28,7 @@ using namespace Ogre; -void CameraBehaviorStatic::update(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorStatic::update(const CameraManager::CameraContext &ctx) { Vector3 lookAt(Vector3::ZERO); Vector3 camPosition(Vector3::ZERO); @@ -68,7 +68,7 @@ } } -void CameraBehaviorStatic::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorStatic::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { fovPreviously = gEnv->mainCamera->getFOVy(); @@ -78,7 +78,7 @@ } } -void CameraBehaviorStatic::deactivate(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorStatic::deactivate(const CameraManager::CameraContext &ctx) { gEnv->mainCamera->setFOVy(fovPreviously); Modified: trunk/source/main/gfx/camera/CameraBehaviorStatic.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorStatic.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorStatic.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -22,23 +22,24 @@ #include "RoRPrerequisites.h" -#include "ICameraBehavior.h" +#include "CameraManager.h" +#include "IBehavior.h" -class CameraBehaviorStatic : public ICameraBehavior +class CameraBehaviorStatic : public IBehavior<CameraManager::CameraContext> { public: - void update(const CameraManager::cameraContext_t &ctx); + void update(const CameraManager::CameraContext &ctx); - bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) { return false; }; - bool mousePressed(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - bool mouseReleased(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg) { return false; }; + bool mousePressed(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; + bool mouseReleased(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) { return false; }; - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void deactivate(const CameraManager::cameraContext_t &ctx); - void reset(const CameraManager::cameraContext_t &ctx) {}; + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void deactivate(const CameraManager::CameraContext &ctx); + void reset(const CameraManager::CameraContext &ctx) {}; - bool switchBehavior(const CameraManager::cameraContext_t &ctx) { return true; }; + bool switchBehavior(const CameraManager::CameraContext &ctx) { return true; }; protected: Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicle.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorVehicle.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorVehicle.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -34,7 +34,7 @@ } } -void CameraBehaviorVehicle::update(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicle::update(const CameraManager::CameraContext &ctx) { Vector3 dir = (ctx.mCurrTruck->nodes[ctx.mCurrTruck->cameranodepos[0]].smoothpos - ctx.mCurrTruck->nodes[ctx.mCurrTruck->cameranodedir[0]].smoothpos).normalisedCopy(); @@ -56,11 +56,11 @@ CameraBehaviorOrbit::update(ctx); } -void CameraBehaviorVehicle::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorVehicle::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { if ( !ctx.mCurrTruck ) { - CameraManager::getSingleton().switchToNextBehavior(); + gEnv->cameraManager->switchToNextBehavior(); return; } else if ( reset ) { @@ -68,7 +68,7 @@ } } -void CameraBehaviorVehicle::reset(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicle::reset(const CameraManager::CameraContext &ctx) { CameraBehaviorOrbit::reset(ctx); camRotY = 0.35f; Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicle.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorVehicle.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorVehicle.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -30,12 +30,12 @@ CameraBehaviorVehicle(); - void update(const CameraManager::cameraContext_t &ctx); + void update(const CameraManager::CameraContext &ctx); - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void reset(const CameraManager::cameraContext_t &ctx); + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void reset(const CameraManager::CameraContext &ctx); - bool switchBehavior(const CameraManager::cameraContext_t &ctx) { return true; }; + bool switchBehavior(const CameraManager::CameraContext &ctx) { return true; }; protected: Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -31,7 +31,7 @@ { } -void CameraBehaviorVehicleCineCam::update(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicleCineCam::update(const CameraManager::CameraContext &ctx) { CameraBehaviorOrbit::update(ctx); @@ -56,11 +56,11 @@ gEnv->mainCamera->setOrientation(orientation); } -void CameraBehaviorVehicleCineCam::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorVehicleCineCam::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { if ( !ctx.mCurrTruck || ctx.mCurrTruck->freecinecamera <= 0 ) { - CameraManager::getSingleton().switchToNextBehavior(); + gEnv->cameraManager->switchToNextBehavior(); return; } else if ( reset ) { @@ -86,7 +86,7 @@ ctx.mCurrTruck->changedCamera(); } -void CameraBehaviorVehicleCineCam::deactivate(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicleCineCam::deactivate(const CameraManager::CameraContext &ctx) { // Do not use ctx.mCurrTruck in here (could be null) if ( !currTruck ) @@ -110,14 +110,14 @@ currTruck = 0; } -void CameraBehaviorVehicleCineCam::reset(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicleCineCam::reset(const CameraManager::CameraContext &ctx) { CameraBehaviorOrbit::reset(ctx); camRotY = Degree(DEFAULT_INTERNAL_CAM_PITCH); gEnv->mainCamera->setFOVy(ctx.fovInternal); } -bool CameraBehaviorVehicleCineCam::switchBehavior(const CameraManager::cameraContext_t &ctx) +bool CameraBehaviorVehicleCineCam::switchBehavior(const CameraManager::CameraContext &ctx) { if ( ctx.mCurrTruck && ctx.mCurrTruck->currentcamera < ctx.mCurrTruck->freecinecamera-1 ) { Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorVehicleCineCam.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -23,6 +23,7 @@ #include "RoRPrerequisites.h" #include "CameraBehaviorVehicle.h" +#include "CameraManager.h" class CameraBehaviorVehicleCineCam : public CameraBehaviorVehicle { @@ -30,13 +31,13 @@ CameraBehaviorVehicleCineCam(); - void update(const CameraManager::cameraContext_t &ctx); + void update(const CameraManager::CameraContext &ctx); - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void deactivate(const CameraManager::cameraContext_t &ctx); - void reset(const CameraManager::cameraContext_t &ctx); + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void deactivate(const CameraManager::CameraContext &ctx); + void reset(const CameraManager::CameraContext &ctx); - bool switchBehavior(const CameraManager::cameraContext_t &ctx); + bool switchBehavior(const CameraManager::CameraContext &ctx); protected: Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -38,11 +38,11 @@ { } -void CameraBehaviorVehicleSpline::update(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicleSpline::update(const CameraManager::CameraContext &ctx) { if ( ctx.mCurrTruck->free_camerarail <= 0 ) { - CameraManager::getSingleton().switchToNextBehavior(); + gEnv->cameraManager->switchToNextBehavior(); return; } @@ -97,7 +97,7 @@ CameraBehaviorOrbit::update(ctx); } -bool CameraBehaviorVehicleSpline::mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) +bool CameraBehaviorVehicleSpline::mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg) { const OIS::MouseState ms = _arg.state; @@ -151,11 +151,11 @@ } } -void CameraBehaviorVehicleSpline::activate(const CameraManager::cameraContext_t &ctx, bool reset /* = true */) +void CameraBehaviorVehicleSpline::activate(const CameraManager::CameraContext &ctx, bool reset /* = true */) { if ( !ctx.mCurrTruck || ctx.mCurrTruck->free_camerarail <= 0 ) { - CameraManager::getSingleton().switchToNextBehavior(); + gEnv->cameraManager->switchToNextBehavior(); return; } else if ( reset ) { @@ -164,7 +164,7 @@ } } -void CameraBehaviorVehicleSpline::reset(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicleSpline::reset(const CameraManager::CameraContext &ctx) { CameraBehaviorOrbit::reset(ctx); @@ -173,7 +173,7 @@ splinePos = 0.5f; } -void CameraBehaviorVehicleSpline::createSpline(const CameraManager::cameraContext_t &ctx) +void CameraBehaviorVehicleSpline::createSpline(const CameraManager::CameraContext &ctx) { splineClosed = false; splineLength = 1.0f; Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.h =================================================================== --- trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraBehaviorVehicleSpline.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -30,14 +30,14 @@ CameraBehaviorVehicleSpline(); - void update(const CameraManager::cameraContext_t &ctx); + void update(const CameraManager::CameraContext &ctx); - bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg); + bool mouseMoved(const CameraManager::CameraContext &ctx, const OIS::MouseEvent& _arg); - void activate(const CameraManager::cameraContext_t &ctx, bool reset = true); - void reset(const CameraManager::cameraContext_t &ctx); + void activate(const CameraManager::CameraContext &ctx, bool reset = true); + void reset(const CameraManager::CameraContext &ctx); - void createSpline(const CameraManager::cameraContext_t &ctx); + void createSpline(const CameraManager::CameraContext &ctx); void updateSpline(); void updateSplineDisplay(); Modified: trunk/source/main/gfx/camera/CameraManager.cpp =================================================================== --- trunk/source/main/gfx/camera/CameraManager.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraManager.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -35,8 +35,6 @@ #include "CameraBehaviorVehicleSpline.h" #include "CameraBehaviorIsometric.h" -#include "ICameraBehavior.h" - #include <stack> using namespace Ogre; @@ -49,7 +47,7 @@ , mRotScale(0.1f) , mRotateSpeed(100.0f) { - setSingleton(this); + gEnv->cameraManager = this; createGlobalBehaviors(); @@ -65,10 +63,7 @@ CameraManager::~CameraManager() { - for (std::map <int , ICameraBehavior *>::iterator it = globalBehaviors.begin(); it != globalBehaviors.end(); ++it) - { - delete it->second; - } + std::for_each(globalBehaviors.begin(), globalBehaviors.end(), [&](std::pair <int, IBehavior<CameraContext> *> p) { delete p.second; }); globalBehaviors.clear(); } @@ -200,21 +195,21 @@ return dynamic_cast<CameraBehaviorVehicle*>(currentBehavior) != 0; } -int CameraManager::getCameraBehavior() +int CameraManager::getCurrentBehavior() { return currentBehaviorID; } void CameraManager::createGlobalBehaviors() { - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_CHARACTER, new CameraBehaviorCharacter())); - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_STATIC, new CameraBehaviorStatic())); - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_VEHICLE, new CameraBehaviorVehicle())); - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_VEHICLE_SPLINE, new CameraBehaviorVehicleSpline())); - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_VEHICLE_CINECAM, new CameraBehaviorVehicleCineCam())); - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_FREE, new CameraBehaviorFree())); - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_FIXED, new CameraBehaviorFixed())); - globalBehaviors.insert(std::pair<int, ICameraBehavior*>(CAMERA_BEHAVIOR_ISOMETRIC, new CameraBehaviorIsometric())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_CHARACTER, new CameraBehaviorCharacter())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_STATIC, new CameraBehaviorStatic())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_VEHICLE, new CameraBehaviorVehicle())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_VEHICLE_SPLINE, new CameraBehaviorVehicleSpline())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_VEHICLE_CINECAM, new CameraBehaviorVehicleCineCam())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_FREE, new CameraBehaviorFree())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_FIXED, new CameraBehaviorFixed())); + globalBehaviors.insert(std::pair<int, IBehavior<CameraContext>*>(CAMERA_BEHAVIOR_ISOMETRIC, new CameraBehaviorIsometric())); } bool CameraManager::mouseMoved(const OIS::MouseEvent& _arg) Modified: trunk/source/main/gfx/camera/CameraManager.h =================================================================== --- trunk/source/main/gfx/camera/CameraManager.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/CameraManager.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -22,10 +22,12 @@ #include "RoRPrerequisites.h" -#include "OIS.h" -#include "Singleton.h" +#include "IBehavior.h" +#include "IManager.h" -class CameraManager : public RoRSingletonNoCreation < CameraManager >, public ZeroedMemoryAllocator +#include <OIS.h> + +class CameraManager : public IManager { friend class SceneMouse; @@ -34,7 +36,10 @@ CameraManager(OverlayWrapper *ow, DOFManager *dof); ~CameraManager(); - typedef struct cameraContext { + class CameraContext + { + public: + Beam *mCurrTruck; DOFManager *mDof; Ogre::Degree mRotScale; @@ -43,7 +48,7 @@ Ogre::Real mTransScale; Ogre::Radian fovInternal; Ogre::Radian fovExternal; - } cameraContext_t; + }; enum CameraBehaviors { CAMERA_BEHAVIOR_CHARACTER=0, @@ -68,19 +73,19 @@ bool hasActiveCharacterBehavior(); bool hasActiveVehicleBehavior(); - int getCameraBehavior(); + int getCurrentBehavior(); protected: - cameraContext_t ctx; + CameraContext ctx; float mTransScale, mTransSpeed; float mRotScale, mRotateSpeed; int currentBehaviorID; - ICameraBehavior *currentBehavior; + IBehavior<CameraContext> *currentBehavior; - std::map <int , ICameraBehavior *> globalBehaviors; + std::map <int , IBehavior<CameraContext> *> globalBehaviors; void createGlobalBehaviors(); Deleted: trunk/source/main/gfx/camera/ICameraBehavior.h =================================================================== --- trunk/source/main/gfx/camera/ICameraBehavior.h 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gfx/camera/ICameraBehavior.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -1,47 +0,0 @@ -/* -This source file is part of Rigs of Rods -Copyright 2005-2012 Pierre-Michel Ricordel -Copyright 2007-2012 Thomas Fischer - -For more information, see http://www.rigsofrods.com/ - -Rigs of Rods is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License version 3, as -published by the Free Software Foundation. - -Rigs of Rods is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>. -*/ -#ifndef __I_CAMERA_BEHAVIOR_H_ -#define __I_CAMERA_BEHAVIOR_H_ - -#include "RoRPrerequisites.h" - -#include "CameraManager.h" -#include <OIS.h> - -class ICameraBehavior : public ZeroedMemoryAllocator -{ -public: - - virtual ~ICameraBehavior() {} - - virtual void update(const CameraManager::cameraContext_t &ctx) = 0; - - virtual bool mouseMoved(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg) = 0; - virtual bool mousePressed(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) = 0; - virtual bool mouseReleased(const CameraManager::cameraContext_t &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) = 0; - - virtual void activate(const CameraManager::cameraContext_t &ctx, bool reset = true) = 0; - virtual void deactivate(const CameraManager::cameraContext_t &ctx) = 0; - virtual void reset(const CameraManager::cameraContext_t &ctx) = 0; - - virtual bool switchBehavior(const CameraManager::cameraContext_t &ctx) = 0; -}; - -#endif // __I_CAMERA_BEHAVIOR_H_ Modified: trunk/source/main/gui/GUIMenu.cpp =================================================================== --- trunk/source/main/gui/GUIMenu.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/gui/GUIMenu.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -345,7 +345,7 @@ } else if (miname == _L("Terrain Editor Mode")) { gEnv->frameListener->loading_state = RoRFrameListener::TERRAIN_EDITOR; - CameraManager::getSingleton().switchBehavior(CameraManager::CAMERA_BEHAVIOR_ISOMETRIC, true); + gEnv->cameraManager->switchBehavior(CameraManager::CAMERA_BEHAVIOR_ISOMETRIC, true); } else if (miname == _L("remove current Vehicle")) Modified: trunk/source/main/physics/Beam.cpp =================================================================== --- trunk/source/main/physics/Beam.cpp 2012-06-05 22:23:57 UTC (rev 2782) +++ trunk/source/main/physics/Beam.cpp 2012-06-06 18:34:34 UTC (rev 2783) @@ -5667,9 +5667,9 @@ void Beam::updateAI(float dt) { if (driveable != TRUCK || - !CameraManager::singletonExists() || - !CameraManager::getSingleton().hasActiveBehavior() || - CameraManager::getSingleton().gameControlsEnabled()) + !gEnv->cameraManager || + !gEnv->cameraManager->hasActiveBehavior() || + gEnv->cameraManager->gameControlsEnabled()) { return; } Added: trunk/source/main/utils/IBehavior.h =================================================================== --- trunk/source/main/utils/IBehavior.h (rev 0) +++ trunk/source/main/utils/IBehavior.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -0,0 +1,47 @@ +/* +This source file is part of Rigs of Rods +Copyright 2005-2012 Pierre-Michel Ricordel +Copyright 2007-2012 Thomas Fischer + +For more information, see http://www.rigsofrods.com/ + +Rigs of Rods is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License version 3, as +published by the Free Software Foundation. + +Rigs of Rods is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>. +*/ +#ifndef __I_Behavior_H_ +#define __I_Behavior_H_ + +#include "RoRPrerequisites.h" + +#include <OIS.h> + +template<class context> +class IBehavior : public ZeroedMemoryAllocator +{ +public: + + virtual ~IBehavior() {} + + virtual void update(const context &ctx) = 0; + + virtual bool mouseMoved(const context &ctx, const OIS::MouseEvent& _arg) = 0; + virtual bool mousePressed(const context &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) = 0; + virtual bool mouseReleased(const context &ctx, const OIS::MouseEvent& _arg, OIS::MouseButtonID _id) = 0; + + virtual void activate(const context &ctx, bool reset = true) = 0; + virtual void deactivate(const context &ctx) = 0; + virtual void reset(const context &ctx) = 0; + + virtual bool switchBehavior(const context &ctx) = 0; +}; + +#endif // __I_Behavior_H_ Property changes on: trunk/source/main/utils/IBehavior.h ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/source/main/utils/IManager.h =================================================================== --- trunk/source/main/utils/IManager.h (rev 0) +++ trunk/source/main/utils/IManager.h 2012-06-06 18:34:34 UTC (rev 2783) @@ -0,0 +1,44 @@ +/* +This source file is part of Rigs of Rods +Copyright 2005-2012 Pierre-Michel Ricordel +Copyright 2007-2012 Thomas Fischer + +For more information, see http://www.rigsofrods.com/ + +Rigs of Rods is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License version 3, as +published by the Free Software Foundation. + +Rigs of Rods is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>. +*/ +#ifndef __I_Manager_H_ +#define __I_Manager_H_ + +#include "RoRPrerequisites.h" + +class IManager : public ZeroedMemoryAllocator +{ +public: + + virtual ~IManager() {} + + virtual void update(float dt) = 0; + + virtual void switchBehavior(int newBehavior, bool reset = true) = 0; + virtual void switchToNextBehavior(bool force = true) = 0; + virtual void toggleBehavior(int behavior) = 0; + + virtual bool hasActiveBehavior() = 0; + virtual bool hasActiveCharacterBehavior() = 0; + virtual bool hasActiveVehicleBehavior() = 0; + + virtual int getCurrentBehavior() = 0; +}; + +#endif // __I_Manager_H_ Property changes on: trunk/source/main/utils/IManager.h ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Rigsofrods-devel mailing list Rigsofrods-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel