Revision: 2485
          http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=2485&view=rev
Author:   ulteq
Date:     2012-04-28 19:52:33 +0000 (Sat, 28 Apr 2012)
Log Message:
-----------
-Codechange: CameraSystem WIP

Modified Paths:
--------------
    trunk/source/main/gameplay/BeamEngine.h
    trunk/source/main/gameplay/RoRFrameListener.cpp
    trunk/source/main/gfx/camera/CameraBehavior.h
    trunk/source/main/gfx/camera/CameraBehaviorCharacterOrbit.cpp
    trunk/source/main/gfx/camera/CameraBehaviorFree.cpp
    trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp
    trunk/source/main/gfx/camera/CameraBehaviorOrbit.h
    trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.cpp
    trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.h
    trunk/source/main/gfx/camera/CameraManager.cpp
    trunk/source/main/gfx/camera/CameraManager.h
    trunk/source/main/physics/Beam.cpp
    trunk/source/main/physics/BeamData.h
    trunk/source/main/physics/input_output/SerializedRig.cpp

Modified: trunk/source/main/gameplay/BeamEngine.h
===================================================================
--- trunk/source/main/gameplay/BeamEngine.h     2012-04-28 18:47:43 UTC (rev 
2484)
+++ trunk/source/main/gameplay/BeamEngine.h     2012-04-28 19:52:33 UTC (rev 
2485)
@@ -17,62 +17,18 @@
 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 __Engine_H__
-#define __Engine_H__
+#ifndef _Engine_H__
+#define _Engine_H__
 
 #include "RoRPrerequisites.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <vector>
-
-
-#define AUTOMATIC 0
-#define SEMIAUTO 1
-#define MANUAL 2
-#define MANUAL_STICK 3
-#define MANUAL_RANGES 4
-
-enum autoswitch {REAR=0, NEUTRAL=1, DRIVE=2, TWO=3, ONE=4, MANUALMODE=5};
-
 class BeamEngine
 {
-protected:
-       float clutch_time;
-       float shift_time;
-       float post_shift_time;
+public:
 
-       int numGears;
-       std::vector<float> gearsRatio;
-       float inertia;
-       float clutchForce;
+       enum shiftmodes {AUTOMATIC, SEMIAUTO, MANUAL, MANUAL_STICK, 
MANUAL_RANGES};
+       enum autoswitch {REAR, NEUTRAL, DRIVE, TWO, ONE, MANUALMODE};
 
-       int curGear;
-       int curGearRange;
-       float curEngineRPM;
-       float curGearboxRPM;
-       float curClutch;
-       float curAcc;
-       float curClutchTorque;
-       //shifting
-       int shifting;
-       int shiftval;
-       float shiftclock;
-       int postshifting;
-       float postshiftclock;
-       //auto
-       float autocurAcc;
-       int starter;
-       autoswitch autoselect;
-       //turbo
-       float curTurboRPM;
-       //air pressure
-       float apressure;
-       int automode;
-       int trucknum;
-       TorqueCurve *torqueCurve;
-
-public:
        float iddleRPM;
        float maxRPM;
        float stallRPM;
@@ -89,6 +45,7 @@
        int prime;
 
        BeamEngine(float iddle, float max, float torque, std::vector<float> 
gears, float diff, int trucknum);
+       ~BeamEngine();
        void setOptions(float einertia, char etype, float eclutch, float ctime, 
float stime, float pstime);
        void update(float dt, int doUpdate);
        void updateAudio(int doUpdate);
@@ -140,8 +97,42 @@
        char getType() { return type; };
        TorqueCurve *getTorqueCurve() { return torqueCurve; };
        float getEngineTorque() { return engineTorque; };
-       ~BeamEngine();
-};
 
+protected:
 
-#endif
+       float clutch_time;
+       float shift_time;
+       float post_shift_time;
+
+       int numGears;
+       std::vector<float> gearsRatio;
+       float inertia;
+       float clutchForce;
+
+       int curGear;
+       int curGearRange;
+       float curEngineRPM;
+       float curGearboxRPM;
+       float curClutch;
+       float curAcc;
+       float curClutchTorque;
+       //shifting
+       int shifting;
+       int shiftval;
+       float shiftclock;
+       int postshifting;
+       float postshiftclock;
+       //auto
+       float autocurAcc;
+       int starter;
+       autoswitch autoselect;
+       //turbo
+       float curTurboRPM;
+       //air pressure
+       float apressure;
+       int automode;
+       int trucknum;
+       TorqueCurve *torqueCurve;
+};
+
+#endif // _Engine_H__

Modified: trunk/source/main/gameplay/RoRFrameListener.cpp
===================================================================
--- trunk/source/main/gameplay/RoRFrameListener.cpp     2012-04-28 18:47:43 UTC 
(rev 2484)
+++ trunk/source/main/gameplay/RoRFrameListener.cpp     2012-04-28 19:52:33 UTC 
(rev 2485)
@@ -2106,7 +2106,7 @@
        {
 
                bool enablegrab = true;
-               if (CAMERA_MODE != CAMERA_FREE)
+               if (CAMERA_MODE != CameraManager::CAMERA_FREE)
                {
                        if (!curr_truck)
                        {
@@ -2364,17 +2364,17 @@
 
                                                        // when in automatic 
mode: shift as well
                                                        // only when the truck 
really is not moving anymore
-                                                       if 
(fabs(curr_truck->WheelSpeed) <= 0.1f && curr_truck->nodes[0].Velocity.length() 
< 0.2f && curr_truck->engine && curr_truck->engine->getAutoMode() == AUTOMATIC)
+                                                       if 
(fabs(curr_truck->WheelSpeed) <= 0.1f && curr_truck->nodes[0].Velocity.length() 
< 0.2f && curr_truck->engine && curr_truck->engine->getAutoMode() == 
BeamEngine::AUTOMATIC)
                                                        {
                                                                // switching 
point, does the user want to drive forward from backward or the other way 
round? change gears?
                                                                if(brake > 0.5f 
&& accval < 0.5f && curr_truck->engine->getGear() > 0)
                                                                {
                                                                        // we 
are on the brake, jump to reverse gear
-                                                                       
curr_truck->engine->autoShiftSet(REAR);
+                                                                       
curr_truck->engine->autoShiftSet(BeamEngine::REAR);
                                                                } else if(brake 
< 0.5f && accval > 0.5f && curr_truck->engine->getGear() < 0)
                                                                {
                                                                        // we 
are on the gas pedal, jump to first gear when we were in rear gear
-                                                                       
curr_truck->engine->autoShiftSet(DRIVE);
+                                                                       
curr_truck->engine->autoShiftSet(BeamEngine::DRIVE);
                                                                }
                                                        }
                                                }
@@ -2417,19 +2417,19 @@
 #ifdef USE_MYGUI
                                                                                
switch(curr_truck->engine->getAutoMode())
                                                                                
{
-                                                                               
        case AUTOMATIC:
+                                                                               
        case BeamEngine::AUTOMATIC:
                                                                                
                
Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, 
Console::CONSOLE_SYSTEM_NOTICE, _L("Automatic shift"), "cog.png", 3000);
                                                                                
                break;
-                                                                               
        case SEMIAUTO:
+                                                                               
        case BeamEngine::SEMIAUTO:
                                                                                
                
Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, 
Console::CONSOLE_SYSTEM_NOTICE, _L("Manual shift - Auto clutch"), "cog.png", 
3000);
                                                                                
                break;
-                                                                               
        case MANUAL:
+                                                                               
        case BeamEngine::MANUAL:
                                                                                
                
Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, 
Console::CONSOLE_SYSTEM_NOTICE, _L("Fully Manual: sequential shift"), 
"cog.png", 3000);
                                                                                
                break;
-                                                                               
        case MANUAL_STICK:
+                                                                               
        case BeamEngine::MANUAL_STICK:
                                                                                
                
Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, 
Console::CONSOLE_SYSTEM_NOTICE, _L("Fully manual: stick shift"), "cog.png", 
3000);
                                                                                
                break;
-                                                                               
        case MANUAL_RANGES:
+                                                                               
        case BeamEngine::MANUAL_RANGES:
                                                                                
                
Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, 
Console::CONSOLE_SYSTEM_NOTICE, _L("Fully Manual: stick shift with ranges"), 
"cog.png", 3000);
                                                                                
                break;
                                                                                
}
@@ -2444,7 +2444,7 @@
                                                                int shiftmode = 
curr_truck->engine->getAutoMode();
 
 //                                                             if 
(shiftmode==SEMIAUTO || shiftmode==MANUAL) // manual sequencial shifting
-                                                               if 
(shiftmode<=MANUAL) // manual sequencial shifting, semi auto shifting, auto 
shifting
+                                                               if 
(shiftmode<=BeamEngine::MANUAL) // manual sequencial shifting, semi auto 
shifting, auto shifting
                                                                        {
                                                                                
if (INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_SHIFT_UP))
                                                                                
        {
@@ -2470,7 +2470,7 @@
                                                                                
int gearoffset  = curgear-curgearrange*6;
                                                                                
if (gearoffset<0) gearoffset = 0;
                                                                                
// one can select range only if in natural
-                                                                               
if(shiftmode==MANUAL_RANGES && curgear == 0)
+                                                                               
if(shiftmode==BeamEngine::MANUAL_RANGES && curgear == 0)
                                                                                
        {
                                                                                
                //  maybe this should not be here, but should experiment
                                                                                
                if               
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_SHIFT_LOWRANGE) && 
curgearrange!=0)
@@ -2506,7 +2506,7 @@
                                                                                
        }
                                                                                
else if(curgear > 0 && curgear < 19)
                                                                                
        {
-                                                                               
                if (shiftmode==MANUAL)  gear_changed = 
!INPUTENGINE.getEventBoolValue(EV_TRUCK_SHIFT_GEAR1 + curgear -1);
+                                                                               
                if (shiftmode==BeamEngine::MANUAL)      gear_changed = 
!INPUTENGINE.getEventBoolValue(EV_TRUCK_SHIFT_GEAR1 + curgear -1);
                                                                                
                else                                    gear_changed = 
!INPUTENGINE.getEventBoolValue(EV_TRUCK_SHIFT_GEAR1 + gearoffset-1); // range 
mode
                                                                                
        }
 
@@ -2524,7 +2524,7 @@
                                                                                
                        }
                                                                                
                else
                                                                                
                        {
-                                                                               
                                if (shiftmode==MANUAL_STICK)
+                                                                               
                                if (shiftmode==BeamEngine::MANUAL_STICK)
                                                                                
                                        {
                                                                                
                                                for (int i=1;i<19 && !found;i++)
                                                                                
                                                        {
@@ -3004,7 +3004,7 @@
                                if(mapMode==0)
                                {
                                        bigMap->setVisibility(true);
-                                       if(CAMERA_MODE != CAMERA_INT)
+                                       if(CAMERA_MODE != 
CameraManager::CAMERA_VEHICLE_INTERNAL)
                                        {
                                                //make it small again
                                                
bigMap->updateRenderMetrics(mWindow);
@@ -4981,7 +4981,7 @@
                        b = BeamFactory::getSingleton().createLocal(spawnpos, 
spawnrot, selectedchr, 0, false, flaresMode, truckconfig, skin);
                        if (b && enterTruck)
                        {
-                                       //cameramode = CAMERA_INT;
+                                       //cameramode = CAMERA_VEHICLE_INTERNAL;
                                        
BeamFactory::getSingleton().setCurrentTruck(b->trucknum);
                        } else if(!b && enterTruck)
                                BeamFactory::getSingleton().setCurrentTruck(-1);
@@ -5050,7 +5050,7 @@
        if (persostart!=Vector3(0,0,0)) person->setPosition(persostart);
        //bigMap->getEntityByName("person")->onTop();
 
-       /*cameramode=CAMERA_INT;
+       /*cameramode=CAMERA_VEHICLE_INTERNAL;
        pushcamRotX=camRotX;
        pushcamRotY=camRotY;
        camRotX=0;
@@ -5084,7 +5084,7 @@
 
 void RoRFrameListener::changedCurrentTruck(Beam *previousTruck, Beam 
*currentTruck)
 {
-       if (CAMERA_MODE == CAMERA_FREE) return;
+       if (CAMERA_MODE == CameraManager::CAMERA_FREE) return;
 
        CameraManager::getSingleton().triggerFOVUpdate();
 
@@ -5249,7 +5249,7 @@
                camRotX=0;
                camRotY=Degree(12);
                camDist=20;
-               if (cameramode==CAMERA_INT)
+               if (cameramode==CAMERA_VEHICLE_INTERNAL)
                {
                        currentTruck->prepareInside(true);
                        if(ow) ow->showDashboardOverlays(false, currentTruck);
@@ -5636,7 +5636,7 @@
        }
        else
        {
-               if(curr_truck && CAMERA_MODE != CAMERA_INT)
+               if(curr_truck && CAMERA_MODE != 
CameraManager::CAMERA_VEHICLE_INTERNAL)
                {
                        if(ow) ow->showDashboardOverlays(true, curr_truck);
                        //if(bigMap) bigMap->setVisibility(true);

Modified: trunk/source/main/gfx/camera/CameraBehavior.h
===================================================================
--- trunk/source/main/gfx/camera/CameraBehavior.h       2012-04-28 18:47:43 UTC 
(rev 2484)
+++ trunk/source/main/gfx/camera/CameraBehavior.h       2012-04-28 19:52:33 UTC 
(rev 2485)
@@ -35,7 +35,7 @@
 {
 protected:
        float mMoveScale, mRotScale, mMoveSpeed, mRotateSpeed;
-;
+
 public:
        virtual ~CameraBehavior() {};
 

Modified: trunk/source/main/gfx/camera/CameraBehaviorCharacterOrbit.cpp
===================================================================
--- trunk/source/main/gfx/camera/CameraBehaviorCharacterOrbit.cpp       
2012-04-28 18:47:43 UTC (rev 2484)
+++ trunk/source/main/gfx/camera/CameraBehaviorCharacterOrbit.cpp       
2012-04-28 19:52:33 UTC (rev 2485)
@@ -19,24 +19,14 @@
 */
 #include "CameraBehaviorCharacterOrbit.h"
 
-#include <Ogre.h>
-#include "CameraManager.h"
-#include "Console.h"
-#include "InputEngine.h"
-#include "language.h"
-#include "Settings.h"
-
-#include "Character.h"
 #include "RoRFrameListener.h"
 
-using namespace Ogre;
-
 void CameraBehaviorCharacterOrbit::update(cameraContext_t &ctx)
 {
        Character *person = RoRFrameListener::eflsingleton->person;
 
        targetDirection = -person->getAngle() - Math::HALF_PI;
-       camCenterPoint  =  person->getPosition() + Vector3(0, 1.1f, 0);
+       camCenterPoint  =  person->getPosition() + Vector3(0.0f, 1.1f, 0.0f);
 
        CameraBehaviorOrbit::update(ctx);
 }

Modified: trunk/source/main/gfx/camera/CameraBehaviorFree.cpp
===================================================================
--- trunk/source/main/gfx/camera/CameraBehaviorFree.cpp 2012-04-28 18:47:43 UTC 
(rev 2484)
+++ trunk/source/main/gfx/camera/CameraBehaviorFree.cpp 2012-04-28 19:52:33 UTC 
(rev 2485)
@@ -19,15 +19,14 @@
 */
 #include "CameraBehaviorFree.h"
 
-#include <Ogre.h>
 #include "CameraManager.h"
 #include "Console.h"
 #include "InputEngine.h"
 #include "language.h"
+#include <Ogre.h>
 
 using namespace Ogre;
 
-
 void CameraBehaviorFree::activate(cameraContext_t &ctx)
 {
        // enter free camera mode
@@ -62,12 +61,10 @@
 
 void CameraBehaviorFree::update(cameraContext_t &ctx)
 {
-       Ogre::Degree mRotX(0);
-       Ogre::Degree mRotY(0);
+       Degree mRotX(0.0f);
+       Degree mRotY(0.0f);
        Vector3 mTranslateVector = Vector3::ZERO;
 
-
-
        if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_SIDESTEP_LEFT))
                mTranslateVector.x -= ctx.translationScale;     // Move camera 
left
 

Modified: trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp
===================================================================
--- trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp        2012-04-28 
18:47:43 UTC (rev 2484)
+++ trunk/source/main/gfx/camera/CameraBehaviorOrbit.cpp        2012-04-28 
19:52:33 UTC (rev 2485)
@@ -19,29 +19,27 @@
 */
 #include "CameraBehaviorOrbit.h"
 
-#include <Ogre.h>
 #include "CameraManager.h"
 #include "Console.h"
 #include "InputEngine.h"
-#include "language.h"
 #include "Settings.h"
+#include "language.h"
+#include <Ogre.h>
 
 using namespace Ogre;
 
 CameraBehaviorOrbit::CameraBehaviorOrbit() :
-         camRotX(0)
-       , camRotY(0)
-       , camDist(5)
-       , minCamDist(3)
-       , camRatio(11)
+         camRotX(0.0f)
+       , camRotY(0.35f)
+       , camDist(5.0f)
+       , minCamDist(3.0f)
+       , camRatio(11.0f)
        , camIdealPosition(Vector3::ZERO)
        , camCenterPoint(Vector3::ZERO)
        , camTranslation(Vector3::ZERO)
-       , targetDirection(0)
-       , targetPitch(0)
+       , targetDirection(0.0f)
+       , targetPitch(0.0f)
 {
-
-
 }
 
 void CameraBehaviorOrbit::activate(cameraContext_t &ctx)
@@ -69,44 +67,12 @@
 {
        Camera *cam = CameraManager::getSingleton().getCamera();
 
-       /*
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_SIDESTEP_LEFT))
-               camTranslation.x -= mMoveScale; // Move camera left
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_SIDESTEP_RIGHT))
-               camTranslation.x += mMoveScale; // Move camera RIGHT
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_FORWARD))
-               camTranslation.z -= mMoveScale; // Move camera forward
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_BACKWARDS))
-               camTranslation.z += mMoveScale; // Move camera backward
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_UP))
-               camTranslation.y += mMoveScale; // Move camera up
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_DOWN))
-               camTranslation.y -= mMoveScale; // Move camera down
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_ROT_UP))
-               camRotY += mRotScale;
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_ROT_DOWN))
-               camRotY -= mRotScale;
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_RIGHT))
-               camRotX -= mRotScale;
-
-       if(INPUTENGINE.getEventBoolValue(EV_CHARACTER_LEFT))
-               camRotX += mRotScale;
-*/
-
        if (INPUTENGINE.getEventBoolValueBounce(EV_CAMERA_LOOKBACK))
        {
                if(camRotX > Degree(0))
-                       camRotX=Degree(0);
+                       camRotX = Degree(0);
                else
-                       camRotX=Degree(180);
+                       camRotX = Degree(180);
        }
        if (INPUTENGINE.getEventBoolValue(EV_CAMERA_ROTATE_LEFT))
        {
@@ -153,19 +119,14 @@
        }
        if (INPUTENGINE.getEventBoolValue(EV_CAMERA_RESET))
        {
-               camRotX=0;
-               //if (cameramode!=CAMERA_INT)
-               //      camRotY=Degree(12);
-               //else
-                       camRotY = DEFAULT_INTERNAL_CAM_PITCH;
-               camDist=20;
+               camRotX = 0;
+               camRotY = DEFAULT_INTERNAL_CAM_PITCH;
+               camDist = 20;
        }
 
-
-
-       // set Minimal Cam distance
-       if(camDist < minCamDist) camDist = minCamDist;
-
+       // set minimum distance
+       camDist = std::max(camDist, minCamDist);
+       
        camIdealPosition = camDist * 0.5f * Vector3( \
                          sin(targetDirection + camRotX.valueRadians()) * 
cos(targetPitch + camRotY.valueRadians()) \
                        , sin(targetPitch     + camRotY.valueRadians()) \
@@ -175,7 +136,7 @@
        float real_camdist = camIdealPosition.length();
 
        camIdealPosition = camIdealPosition + camCenterPoint + camTranslation;
-       Vector3 newposition = ( camIdealPosition + camRatio * 
cam->getPosition() ) / (camRatio+1.0f);
+       Vector3 newPosition = ( camIdealPosition + camRatio * 
cam->getPosition() ) / (camRatio+1.0f);
 
        /*
        Real h=hfinder->getHeightAt(newposition.x,newposition.z);
@@ -187,11 +148,9 @@
        if (newposition.y<h) newposition.y=h;
        */
 
-       cam->setPosition(newposition);
+       cam->setPosition(newPosition);
        cam->lookAt(camCenterPoint);
 
-       lastPosition = camCenterPoint;
-
        DOFManager *dof = CameraManager::getSingleton().getDOFManager();
        if(dof)
        {

Modified: trunk/source/main/gfx/camera/CameraBehaviorOrbit.h
===================================================================
--- trunk/source/main/gfx/camera/CameraBehaviorOrbit.h  2012-04-28 18:47:43 UTC 
(rev 2484)
+++ trunk/source/main/gfx/camera/CameraBehaviorOrbit.h  2012-04-28 19:52:33 UTC 
(rev 2485)
@@ -28,7 +28,7 @@
 protected:
        Ogre::Radian camRotX, camRotY;
        float camDist, minCamDist, camRatio;
-       Ogre::Vector3 camIdealPosition, camCenterPoint, lastPosition, 
camTranslation;
+       Ogre::Vector3 camIdealPosition, camCenterPoint, camTranslation;
        float targetDirection, targetPitch;
 
 public:

Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.cpp
===================================================================
--- trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.cpp 2012-04-28 
18:47:43 UTC (rev 2484)
+++ trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.cpp 2012-04-28 
19:52:33 UTC (rev 2485)
@@ -19,21 +19,16 @@
 */
 #include "CameraBehaviorVehicleOrbit.h"
 
-#include <Ogre.h>
-#include "CameraManager.h"
-#include "Console.h"
-#include "InputEngine.h"
-#include "language.h"
+#include "BeamFactory.h"
 #include "Settings.h"
 
-#include "BeamFactory.h"
-
-using namespace Ogre;
-
 CameraBehaviorVehicleOrbit::CameraBehaviorVehicleOrbit() :
-         externalCameraMode(0)
+         externalCameraMode(false)
 {
-       externalCameraMode = (SSETTING("External Camera Mode", "Pitching") == 
"Static")? 1 : 0;
+       minCamDist = 8.0f;
+
+       if (SSETTING("External Camera Mode", "Pitching") == "Static")
+               externalCameraMode = true;
 }
 
 void CameraBehaviorVehicleOrbit::update(cameraContext_t &ctx)
@@ -41,15 +36,16 @@
        Beam *curr_truck = BeamFactory::getSingleton().getCurrentTruck();
        if(!curr_truck) return;
 
-       // Make all the changes to the camera
        Vector3 dir = curr_truck->nodes[curr_truck->cameranodepos[0]].smoothpos 
- curr_truck->nodes[curr_truck->cameranodedir[0]].smoothpos;
        dir.normalise();
+
        targetDirection = -atan2(dir.dotProduct(Vector3::UNIT_X), 
dir.dotProduct(-Vector3::UNIT_Z));
+       targetPitch     = 0.0f;
 
        if(!externalCameraMode)
+       {
                targetPitch = -asin(dir.dotProduct(Vector3::UNIT_Y));
-       else
-               targetPitch = 0;
+       }
 
        camRatio = 1.0f / (curr_truck->tdt * 4.0f);
 

Modified: trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.h
===================================================================
--- trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.h   2012-04-28 
18:47:43 UTC (rev 2484)
+++ trunk/source/main/gfx/camera/CameraBehaviorVehicleOrbit.h   2012-04-28 
19:52:33 UTC (rev 2485)
@@ -26,7 +26,7 @@
 class CameraBehaviorVehicleOrbit : public CameraBehaviorOrbit
 {
 protected:
-       int externalCameraMode;
+       bool externalCameraMode;
 public:
        CameraBehaviorVehicleOrbit();
        void update(cameraContext_t &ctx);

Modified: trunk/source/main/gfx/camera/CameraManager.cpp
===================================================================
--- trunk/source/main/gfx/camera/CameraManager.cpp      2012-04-28 18:47:43 UTC 
(rev 2484)
+++ trunk/source/main/gfx/camera/CameraManager.cpp      2012-04-28 19:52:33 UTC 
(rev 2485)
@@ -19,13 +19,14 @@
 */
 
 #include "CameraManager.h"
-#include "Ogre.h"
 
+#include "BeamFactory.h"
+#include "Console.h"
 #include "InputEngine.h"
+#include "Ogre.h"
 #include "Settings.h"
-#include "Console.h"
+#include "SoundScriptManager.h"
 #include "language.h"
-#include "BeamFactory.h"
 
 #include "OverlayWrapper.h"
 #include "CameraBehaviorFree.h"
@@ -39,32 +40,21 @@
 
 using namespace Ogre;
 
-
 CameraManager::CameraManager(Ogre::SceneManager *scm, Ogre::Camera *cam) : 
-         mSceneMgr(scm)
-       , mCamera(cam)
-       , currentBehavior(0)
+         currentBehavior(0)
        , currentBehaviorID(-1)
-       // TODO: initialize other vars here
+       , mCamera(cam)
+       , mDOF(0)
+       , mLastPosition(Vector3::ZERO)
+       , mMoveScale(1.0f)
+       , mMoveSpeed(50)
+       , mRotScale(0.1f)
+       , mRotateSpeed(100)
+       , mSceneMgr(scm)
 {
        setSingleton(this);
 
-       lastcameramode=CAMERA_EXT;
-       cameramode=CAMERA_EXT;
-       mMoveScale = 1.0f;
-       mRotScale = 0.1f;
-       lastPosition = Vector3::ZERO;
-       camCollided=false;
-       camPosColl=Vector3::ZERO;
-       mSceneDetailIndex = 0;
-       mDOF=0;
-       mRotateSpeed = 100;
-       mMoveSpeed = 50;
-       enforceCameraFOVUpdate=true;
-
-       // DOF?
-       bool useDOF = (BSETTING("DOF", false));
-       if(useDOF)
+       if ( BSETTING("DOF", false) )
        {
                mDOF = new DOFManager(mSceneMgr, mCamera->getViewport(), 
Ogre::Root::getSingletonPtr(), mCamera);
                mDOF->setEnabled(true);
@@ -73,10 +63,10 @@
        createGlobalBehaviors();
        ctx.cam = mCamera;
        ctx.scm = mSceneMgr;
-
-
-       //switchBehavior(CAMBEHAVIOR_CHARACTER_ORBIT);
-       switchBehavior(CAMBEHAVIOR_VEHICLE_SPLINE);
+       
+       switchBehavior(CAMERA_CHARACTER_ORBIT);
+       switchBehavior(CAMERA_VEHICLE_ORBIT);
+       //switchBehavior(CAMERA_VEHICLE_SPLINE);
 }
 
 CameraManager::~CameraManager()
@@ -86,30 +76,37 @@
 
 void CameraManager::createGlobalBehaviors()
 {
-       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMBEHAVIOR_FREE, new CameraBehaviorFree()) );
-       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMBEHAVIOR_CHARACTER_ORBIT, new 
CameraBehaviorCharacterOrbit()) );
-       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMBEHAVIOR_VEHICLE_ORBIT, new CameraBehaviorVehicleOrbit()) );
-       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMBEHAVIOR_VEHICLE_WHEELCHASE, new 
CameraBehaviorWheelChase()) );
-       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMBEHAVIOR_VEHICLE_SPLINE, new CameraBehaviorVehicleSpline()) 
);
+       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMERA_CHARACTER_ORBIT, new CameraBehaviorCharacterOrbit()) );
+       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMERA_VEHICLE_ORBIT, new CameraBehaviorVehicleOrbit()) );
+       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMERA_VEHICLE_SPLINE, new CameraBehaviorVehicleSpline()) );
+       globalBehaviors.insert( std::pair<int, CameraBehavior*>(CAMERA_FREE, 
new CameraBehaviorFree()) );
 
+       // TODO: Create a CameraBehavior for internal camera perspectives (e.g. 
cockpit, rear seats, ...)
+       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMERA_VEHICLE_INTERNAL, new CameraBehaviorCharacterOrbit()) );
+
+       // TODO: Think about this. Do we really need this CameraBehavior? Or 
can it be part of the CAMERA_VEHICLE_INTERNAL behavior?
+       globalBehaviors.insert( std::pair<int, 
CameraBehavior*>(CAMERA_VEHICLE_WHEELCHASE, new CameraBehaviorWheelChase()) );
+       
+       // TODO: Create a CameraBehavior for a fixed camera perspective
+       globalBehaviors.insert( std::pair<int, CameraBehavior*>(CAMERA_FIX, new 
CameraBehaviorFree()) );
 }
 
+#if 0
 void CameraManager::updateInput()
 {
-#if 0
        Beam *curr_truck = BeamFactory::getSingleton().getCurrentTruck();
 
        //camera mode
        if (cameramode != CAMERA_FREE && 
INPUTENGINE.getEventBoolValueBounce(EV_CAMERA_CHANGE) && cameramode != 
CAMERA_FREE_FIXED)
        {
-               if (cameramode==CAMERA_INT)
+               if (cameramode==CAMERA_VEHICLE_INTERNAL)
                {
                        //end of internal cam
                        camRotX=pushcamRotX;
                        camRotY=pushcamRotY;
                }
                cameramode++;
-               if (cameramode==CAMERA_INT)
+               if (cameramode==CAMERA_VEHICLE_INTERNAL)
                {
                        //start of internal cam
                        pushcamRotX=camRotX;
@@ -122,7 +119,7 @@
        //camera mode
        if (curr_truck && INPUTENGINE.getEventBoolValueBounce(EV_CAMERA_CHANGE) 
&& cameramode != CAMERA_FREE && cameramode != CAMERA_FREE_FIXED)
        {
-               if (cameramode==CAMERA_INT && curr_truck->currentcamera < 
curr_truck->freecinecamera-1)
+               if (cameramode==CAMERA_VEHICLE_INTERNAL && 
curr_truck->currentcamera < curr_truck->freecinecamera-1)
                {
                        curr_truck->currentcamera++;
                        curr_truck->changedCamera();
@@ -130,7 +127,7 @@
                else
                {
                        OverlayWrapper *ow = 
OverlayWrapper::getSingletonPtrNoCreation();
-                       if (cameramode==CAMERA_INT)
+                       if (cameramode==CAMERA_VEHICLE_INTERNAL)
                        {
                                //end of internal cam
                                camRotX=pushcamRotX;
@@ -142,7 +139,7 @@
                                curr_truck->changedCamera();
                        }
                        cameramode++;
-                       if (cameramode==CAMERA_INT)
+                       if (cameramode==CAMERA_VEHICLE_INTERNAL)
                        {
                                //start of internal cam
                                pushcamRotX=camRotX;
@@ -177,7 +174,7 @@
                
Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, 
Console::CONSOLE_SYSTEM_NOTICE, _L("FOV: ") + TOSTRING(fov), "camera_edit.png", 
2000);
        #endif // USE_MYGUI
                // save the settings
-               if (cameramode == CAMERA_INT)
+               if (cameramode == CAMERA_VEHICLE_INTERNAL)
                        SETTINGS.setSetting("FOV Internal", TOSTRING(fov));
                else if (cameramode == CAMERA_EXT)
                        SETTINGS.setSetting("FOV External", TOSTRING(fov));
@@ -193,7 +190,7 @@
                
Console::getSingleton().putMessage(Console::CONSOLE_MSGTYPE_INFO, 
Console::CONSOLE_SYSTEM_NOTICE, _L("FOV: ") + TOSTRING(fov), "camera_edit.png", 
2000);
        #endif // USE_MYGUI
                // save the settings
-               if (cameramode == CAMERA_INT)
+               if (cameramode == CAMERA_VEHICLE_INTERNAL)
                        SETTINGS.setSetting("FOV Internal", TOSTRING(fov));
                else if (cameramode == CAMERA_EXT)
                        SETTINGS.setSetting("FOV External", TOSTRING(fov));
@@ -201,12 +198,7 @@
 
        if (INPUTENGINE.getEventBoolValueBounce(EV_COMMON_TOGGLE_RENDER_MODE, 
0.5f))
        {
-               mSceneDetailIndex = (mSceneDetailIndex+1)%3 ;
-               switch(mSceneDetailIndex) {
-               case 0 : mCamera->setPolygonMode(Ogre::PM_SOLID) ; break ;
-               case 1 : mCamera->setPolygonMode(Ogre::PM_WIREFRAME) ; break ;
-               case 2 : mCamera->setPolygonMode(Ogre::PM_POINTS) ; break ;
-               }
+               mCamera->setPolygonMode( (mCamera->getPolygonMode() + 1) % 3 );
        }
        if (INPUTENGINE.getEventBoolValueBounce(EV_CAMERA_FREE_MODE_FIX))
        {
@@ -232,16 +224,14 @@
 
        if (INPUTENGINE.getEventBoolValueBounce(EV_CAMERA_FREE_MODE))
        {
-               currentBehavior = globalBehaviors[CAMBEHAVIOR_FREE];
+               currentBehavior = globalBehaviors[CAMERA_FREE];
        }
-#endif // 0
 }
+#endif // 0
 
 void CameraManager::switchToNextBehavior()
 {
-       int i = currentBehaviorID + 1;
-       if(i >= CAMBEHAVIOR_END)
-               i=0;
+       int i = (currentBehaviorID + 1) % CAMERA_END;
        switchBehavior(i);
 }
 
@@ -273,7 +263,7 @@
                switchToNextBehavior();
        }
 #ifdef MYGUI
-       if (SceneMouse::getSingleton().isMouseGrabbed()) return; //freeze camera
+       if (SceneMouse::getSingleton().isMouseGrabbed()) return; // freeze 
camera
 #endif //MYGUI
 
        ctx.dt               = dt;
@@ -302,9 +292,18 @@
 
        // update current behavior
        if(currentBehavior)
+       {
                currentBehavior->update(ctx);
+       }
 
+#ifdef USE_OPENAL
+       // update audio listener position
+       Vector3 cameraSpeed = (mCamera->getPosition() - mLastPosition) / dt;
+       mLastPosition = mCamera->getPosition();
 
+       SoundScriptManager::getSingleton().setCamera(mCamera->getPosition(), 
mCamera->getDirection(), mCamera->getUp(), cameraSpeed);
+#endif //USE_OPENAL
+
 #if 0
        Beam *curr_truck = BeamFactory::getSingleton().getCurrentTruck();
 
@@ -358,7 +357,7 @@
                        }
 
                }
-               else if (cameramode==CAMERA_INT)
+               else if (cameramode==CAMERA_VEHICLE_INTERNAL)
                {
                        float fov = FSETTING("FOV Internal", 75);
                        if(changeCamMode)
@@ -460,7 +459,7 @@
                                }
                        }
                }
-               if (cameramode==CAMERA_INT)
+               if (cameramode==CAMERA_VEHICLE_INTERNAL)
                {
                        int currentcamera=curr_truck->currentcamera;
 
@@ -575,19 +574,6 @@
 #endif // USE_CAELUM
                }
        }
-
-       //position audio listener
-       Vector3 cpos=mCamera->getPosition();
-       Vector3 cdir=mCamera->getDirection();
-       Vector3 cup=mCamera->getUp();
-       Vector3 cspeed=(cpos-cdoppler)/dt;
-       cdoppler=cpos;
-       // XXX maybe thats the source of sound destorsion: runtime order???
-#ifdef USE_OPENAL
-       SoundScriptManager::getSingleton().setCamera(cpos, cdir, cup, cspeed);
-#endif // OPENAL
-       //if (cspeed.length()>50.0) {cspeed.normalise(); cspeed=50.0*cspeed;};
-       //if (audioManager) audioManager->setListenerPosition(cpos.x, cpos.y, 
cpos.z, cspeed.x, cspeed.y, cspeed.z, cdir.x, cdir.y, cdir.z, cup.x, cup.y, 
cup.z);
        //water
        if (w)
        {
@@ -599,14 +585,6 @@
 #endif // 0
 }
 
-
-bool CameraManager::setCameraPositionWithCollision(Vector3 newPos)
-{
-       // no collision of camera, normal mode
-       mCamera->setPosition(newPos);
-       return true;
-}
-
 bool CameraManager::mouseMoved(const OIS::MouseEvent& _arg)
 {
        if(!currentBehavior) return false;
@@ -625,11 +603,6 @@
        return currentBehavior->mouseReleased(_arg, _id);
 }
 
-void CameraManager::triggerFOVUpdate()
-{
-       enforceCameraFOVUpdate = true;
-}
-
 bool CameraManager::allowInteraction()
 {
        if(!currentBehavior) return false;

Modified: trunk/source/main/gfx/camera/CameraManager.h
===================================================================
--- trunk/source/main/gfx/camera/CameraManager.h        2012-04-28 18:47:43 UTC 
(rev 2484)
+++ trunk/source/main/gfx/camera/CameraManager.h        2012-04-28 19:52:33 UTC 
(rev 2485)
@@ -24,87 +24,68 @@
 
 #include "DepthOfFieldEffect.h"
 #include "OIS.h"
+#include "Ogre.h"
 #include "Singleton.h"
 
-#include <map>
-
 #include "CameraBehavior.h"
 
 #define MAIN_CAMERA CameraManager::getSingleton().getCamera()
 #define CAMERA_MODE CameraManager::getSingleton().getCameraMode()
-#define DEFAULT_INTERNAL_CAM_PITCH Degree(-15)
+#define DEFAULT_INTERNAL_CAM_PITCH Ogre::Degree(-15)
 
 class CameraManager : public RoRSingletonNoCreation < CameraManager >
 {
        friend class SceneMouse;
+
 protected:
-       Ogre::SceneManager *mSceneMgr;
+
+       DOFManager *mDOF;
        Ogre::Camera *mCamera;
-       int cameramode, lastcameramode;
-       bool camCollided;
-       Ogre::Vector3 camPosColl;
        Ogre::Radian pushcamRotX, pushcamRotY;
+       Ogre::SceneManager *mSceneMgr;
+       Ogre::Vector3 mLastPosition;
+       cameraContext_t ctx;
        float mMoveScale, mRotScale;
-       Ogre::Vector3 lastPosition;
-       int mSceneDetailIndex;
-       //    Real dirSpeed;
        float mMoveSpeed, mRotateSpeed;
-       DOFManager *mDOF;
-       bool enforceCameraFOVUpdate;
-       Ogre::Vector3 cdoppler;
-       cameraContext_t ctx;
 
        CameraBehavior *currentBehavior;
        int currentBehaviorID;
 
-       enum {   CAMBEHAVIOR_FREE
-                  , CAMBEHAVIOR_CHARACTER_ORBIT
-                  , CAMBEHAVIOR_VEHICLE_ORBIT
-                  , CAMBEHAVIOR_VEHICLE_WHEELCHASE
-                  , CAMBEHAVIOR_VEHICLE_SPLINE
-                  , CAMBEHAVIOR_END
-       };
-
        std::map <int , CameraBehavior *> globalBehaviors;
 
+       void switchBehavior(int newBehavior);
+       void switchToNextBehavior();
+       void createGlobalBehaviors();
+
        bool mouseMoved(const OIS::MouseEvent& _arg);
        bool mousePressed(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id);
        bool mouseReleased(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id);
 
 public:
+
        CameraManager(Ogre::SceneManager *scm, Ogre::Camera *cam);
        ~CameraManager();
 
-       void updateInput();
-       void switchBehavior(int newBehavior);
-       void switchToNextBehavior();
-
-       enum { CAMERA_EXT=0,
-               CAMERA_FIX,
-               CAMERA_INT,
-               CAMERA_END,
-               CAMERA_FREE,
-               CAMERA_FREE_FIXED,
-               CAMERA_EXTERNALCONTROL=9999
+       enum
+       {
+               CAMERA_CHARACTER_ORBIT=0
+         , CAMERA_VEHICLE_INTERNAL
+         , CAMERA_VEHICLE_ORBIT
+         , CAMERA_VEHICLE_WHEELCHASE
+         , CAMERA_VEHICLE_SPLINE
+         , CAMERA_END
+         , CAMERA_FREE
+         , CAMERA_FIX
        };
+       
+       void triggerFOVUpdate() { /*TODO: Think about this*/ };
+       void update(float dt);
 
-       //void setCameraRotation(Ogre::Radian x, Ogre::Radian y, Ogre::Real 
distance) { camRotX=x; camRotY=y; camDist=distance;};
-       //Ogre::Radian getCameraRotationX() { return camRotX; };
+       bool allowInteraction();
 
-       void update(float dt);
-       bool setCameraPositionWithCollision(Ogre::Vector3 newPos);
        Ogre::Camera *getCamera() { return mCamera; };
-       int getCameraMode() { return cameramode; };
+       int getCameraMode() { return mCamera->getPolygonMode(); };
        inline DOFManager *getDOFManager() { return mDOF; }
-
-
-
-       void createGlobalBehaviors();
-       void triggerFOVUpdate();
-
-       bool allowInteraction();
 };
 
 #endif // CAMERAMANAGER_H__
-
-

Modified: trunk/source/main/physics/Beam.cpp
===================================================================
--- trunk/source/main/physics/Beam.cpp  2012-04-28 18:47:43 UTC (rev 2484)
+++ trunk/source/main/physics/Beam.cpp  2012-04-28 19:52:33 UTC (rev 2485)
@@ -1099,11 +1099,11 @@
        if (engine)
        {
                int automode = -1;
-               if ((flagmask&NETMASK_ENGINE_MODE_AUTOMATIC)!=0)          
automode = AUTOMATIC;
-               else if ((flagmask&NETMASK_ENGINE_MODE_SEMIAUTO)!=0)      
automode = SEMIAUTO;
-               else if ((flagmask&NETMASK_ENGINE_MODE_MANUAL)!=0)        
automode = MANUAL;
-               else if ((flagmask&NETMASK_ENGINE_MODE_MANUAL_STICK)!=0)  
automode = MANUAL_STICK;
-               else if ((flagmask&NETMASK_ENGINE_MODE_MANUAL_RANGES)!=0) 
automode = MANUAL_RANGES;
+               if ((flagmask&NETMASK_ENGINE_MODE_AUTOMATIC)!=0)          
automode = BeamEngine::AUTOMATIC;
+               else if ((flagmask&NETMASK_ENGINE_MODE_SEMIAUTO)!=0)      
automode = BeamEngine::SEMIAUTO;
+               else if ((flagmask&NETMASK_ENGINE_MODE_MANUAL)!=0)        
automode = BeamEngine::MANUAL;
+               else if ((flagmask&NETMASK_ENGINE_MODE_MANUAL_STICK)!=0)  
automode = BeamEngine::MANUAL_STICK;
+               else if ((flagmask&NETMASK_ENGINE_MODE_MANUAL_RANGES)!=0) 
automode = BeamEngine::MANUAL_RANGES;
 
                bool contact = ((flagmask&NETMASK_ENGINE_CONT) != 0);
                bool running = ((flagmask&NETMASK_ENGINE_RUN)  != 0);
@@ -2229,11 +2229,11 @@
                        if (engine->contact) send_oob->flagmask += 
NETMASK_ENGINE_CONT;
                        if (engine->running) send_oob->flagmask += 
NETMASK_ENGINE_RUN;
 
-                       if      (engine->getAutoMode() == AUTOMATIC)     
send_oob->flagmask += NETMASK_ENGINE_MODE_AUTOMATIC;
-                       else if (engine->getAutoMode() == SEMIAUTO)      
send_oob->flagmask += NETMASK_ENGINE_MODE_SEMIAUTO;
-                       else if (engine->getAutoMode() == MANUAL)        
send_oob->flagmask += NETMASK_ENGINE_MODE_MANUAL;
-                       else if (engine->getAutoMode() == MANUAL_STICK)  
send_oob->flagmask += NETMASK_ENGINE_MODE_MANUAL_STICK;
-                       else if (engine->getAutoMode() == MANUAL_RANGES) 
send_oob->flagmask += NETMASK_ENGINE_MODE_MANUAL_RANGES;
+                       if      (engine->getAutoMode() == 
BeamEngine::AUTOMATIC)     send_oob->flagmask += NETMASK_ENGINE_MODE_AUTOMATIC;
+                       else if (engine->getAutoMode() == BeamEngine::SEMIAUTO) 
     send_oob->flagmask += NETMASK_ENGINE_MODE_SEMIAUTO;
+                       else if (engine->getAutoMode() == BeamEngine::MANUAL)   
     send_oob->flagmask += NETMASK_ENGINE_MODE_MANUAL;
+                       else if (engine->getAutoMode() == 
BeamEngine::MANUAL_STICK)  send_oob->flagmask += 
NETMASK_ENGINE_MODE_MANUAL_STICK;
+                       else if (engine->getAutoMode() == 
BeamEngine::MANUAL_RANGES) send_oob->flagmask += 
NETMASK_ENGINE_MODE_MANUAL_RANGES;
 
                }
                if(free_aeroengine>0)
@@ -5453,7 +5453,7 @@
 
 void Beam::updateAI(float dt)
 {
-       if(driveable != TRUCK || CAMERA_MODE != CAMERA_FREE)
+       if(driveable != TRUCK || CAMERA_MODE != CameraManager::CAMERA_FREE)
                return;
 
        // start engine if not running

Modified: trunk/source/main/physics/BeamData.h
===================================================================
--- trunk/source/main/physics/BeamData.h        2012-04-28 18:47:43 UTC (rev 
2484)
+++ trunk/source/main/physics/BeamData.h        2012-04-28 19:52:33 UTC (rev 
2485)
@@ -170,16 +170,6 @@
        EVENT_DELETE
 };
 
-enum camera_modes {
-       CAMERA_EXT=0,
-       CAMERA_FIX,
-       CAMERA_INT,
-       CAMERA_END,
-       // the free modes are on purpose behind end, so they require a special 
key to be triggered
-       CAMERA_FREE,
-       CAMERA_FREE_FIXED
-};
-
 enum game_states {
        NONE_LOADED=0,
        TERRAIN_LOADED,

Modified: trunk/source/main/physics/input_output/SerializedRig.cpp
===================================================================
--- trunk/source/main/physics/input_output/SerializedRig.cpp    2012-04-28 
18:47:43 UTC (rev 2484)
+++ trunk/source/main/physics/input_output/SerializedRig.cpp    2012-04-28 
19:52:33 UTC (rev 2485)
@@ -2731,13 +2731,13 @@
                                // are there any startup shifter settings?
                                Ogre::String gearboxMode = 
SSETTING("GearboxMode", "Automatic shift");
                                if (gearboxMode == "Manual shift - Auto clutch")
-                                       engine->setAutoMode(SEMIAUTO);
+                                       
engine->setAutoMode(BeamEngine::SEMIAUTO);
                                else if (gearboxMode == "Fully Manual: 
sequential shift")
-                                       engine->setAutoMode(MANUAL);
+                                       engine->setAutoMode(BeamEngine::MANUAL);
                                else if (gearboxMode == "Fully Manual: stick 
shift")
-                                       engine->setAutoMode(MANUAL_STICK);
+                                       
engine->setAutoMode(BeamEngine::MANUAL_STICK);
                                else if (gearboxMode == "Fully Manual: stick 
shift with ranges")
-                                       engine->setAutoMode(MANUAL_RANGES);
+                                       
engine->setAutoMode(BeamEngine::MANUAL_RANGES);
 
                                //engine->start();
                                continue;

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

Reply via email to