Index: /code/branches/main_reto/include/OrxonoxShip.h
===================================================================
--- /code/branches/main_reto/include/OrxonoxShip.h	(revision 129)
+++ /code/branches/main_reto/include/OrxonoxShip.h	(revision 130)
@@ -9,4 +9,7 @@
 {
 public:
+	Vector3 speed;
+	float thrust, sideThrust, baseThrust;
+
 	OrxonoxShip(SceneManager*, SceneNode*);
 	virtual ~OrxonoxShip();
@@ -20,4 +23,6 @@
 	void setRoll(const Radian);
 
+	Real getThrust();
+
 	bool tick(unsigned long, float);
 
@@ -27,6 +32,4 @@
 	Entity *mShip;
 
-	Vector3 speed;
-	float thrust, sideThrust, baseThrust;
 };
 
Index: /code/branches/main_reto/include/RunManager.h
===================================================================
--- /code/branches/main_reto/include/RunManager.h	(revision 129)
+++ /code/branches/main_reto/include/RunManager.h	(revision 130)
@@ -41,5 +41,4 @@
 	OrxonoxShip *mShip;
 
-	Vector3 mTranslateVector;
 	bool mStatsOn;
 
@@ -47,15 +46,10 @@
 
 	unsigned int mNumScreenShots;
-	float mMoveScale;
-	Degree mRotScale;
 	// just to stop toggles flipping too fast
 	Real mTimeUntilNextToggle ;
-	Radian mRotX, mRotY;
 	TextureFilterOptions mFiltering;
 	int mAniso;
 
 	int mSceneDetailIndex ;
-	Real mMoveSpeed;
-	Degree mRotateSpeed;
 	Overlay* mDebugOverlay;
 
@@ -93,6 +87,4 @@
 	virtual void updateStats(void);
 
-	virtual void moveCamera();
-
 	virtual void showDebugOverlay(bool);
 
Index: /code/branches/main_reto/src/OrxonoxShip.cpp
===================================================================
--- /code/branches/main_reto/src/OrxonoxShip.cpp	(revision 129)
+++ /code/branches/main_reto/src/OrxonoxShip.cpp	(revision 130)
@@ -3,5 +3,5 @@
 
 OrxonoxShip::OrxonoxShip(SceneManager *mSceneMgr, SceneNode *mNode)
-	: mSceneMgr(mSceneMgr), mRootNode(mNode), speed(Vector3(0, 0, 0)), baseThrust(100)
+	: mSceneMgr(mSceneMgr), mRootNode(mNode), speed(Vector3(0, 0, 0)), baseThrust(100), thrust(0), sideThrust(0)
 {
 }
@@ -36,5 +36,5 @@
 void OrxonoxShip::setSideThrust(const Real value)
 {
-	sideThrust = value;
+	sideThrust = value * baseThrust;
 }
 
@@ -54,8 +54,14 @@
 }
 
+Real OrxonoxShip::getThrust()
+{
+	return thrust;
+}
+
 
 bool OrxonoxShip::tick(unsigned long time, float deltaTime)
 {
-	speed += (mRootNode->getLocalAxes() * Vector3(0, 0, 1)).normalisedCopy() * thrust * deltaTime;
+	speed += (mRootNode->getLocalAxes() * Vector3(0, 0, -1)).normalisedCopy() * thrust * deltaTime;
+	speed += (mRootNode->getLocalAxes() * Vector3(1, 0,  0)).normalisedCopy() * sideThrust * deltaTime;
 
 	mRootNode->translate(speed * deltaTime);
Index: /code/branches/main_reto/src/RunManager.cpp
===================================================================
--- /code/branches/main_reto/src/RunManager.cpp	(revision 129)
+++ /code/branches/main_reto/src/RunManager.cpp	(revision 130)
@@ -6,7 +6,7 @@
 					   bool bufferedJoy ) :
 mOgre(mOgre), mWindow(mOgre->getRenderWindow()),
-mTranslateVector(Vector3::ZERO), mStatsOn(true), mNumScreenShots(0),
-mMoveScale(0.0f), mRotScale(0.0f), mTimeUntilNextToggle(0), mFiltering(TFO_BILINEAR),
-mAniso(1), mSceneDetailIndex(0), mMoveSpeed(300), mRotateSpeed(36), mDebugOverlay(0),
+mStatsOn(true), mNumScreenShots(0),
+mTimeUntilNextToggle(0), mFiltering(TFO_BILINEAR),
+mAniso(1), mSceneDetailIndex(0), mDebugOverlay(0),
 mInputManager(0), mMouse(0), mKeyboard(0), mJoy(0)
 {
@@ -90,4 +90,5 @@
 	
 	mScene->tick(time, deltaTime);
+	mShip->tick(time, deltaTime);
 
 	using namespace OIS;
@@ -108,22 +109,4 @@
 		if (mTimeUntilNextToggle >= 0)
 			mTimeUntilNextToggle -= deltaTime;
-
-		// If this is the first frame, pick a speed
-		if (deltaTime == 0)
-		{
-			mMoveScale = 1;
-			mRotScale = 0.1;
-		}
-		// Otherwise scale movement units by time passed since last frame
-		else
-		{
-			// Move about 100 units per second,
-			mMoveScale = mMoveSpeed * deltaTime;
-			// Take about 10 seconds for full rotation
-			mRotScale = mRotateSpeed * deltaTime;
-		}
-		mRotX = 0;
-		mRotY = 0;
-		mTranslateVector = Ogre::Vector3::ZERO;
 	}
 
@@ -136,7 +119,4 @@
 			return false;
 
-	if( !mMouse->buffered() || !mKeyboard->buffered() || !buffJ )
-		moveCamera();
-
 	return true;
 }
@@ -179,27 +159,17 @@
 	using namespace OIS;
 
-	if(mKeyboard->isKeyDown(KC_A))
-		mTranslateVector.x = -mMoveScale;	// Move camera left
-
-	if(mKeyboard->isKeyDown(KC_D))
-		mTranslateVector.x = mMoveScale;	// Move camera RIGHT
+	if(mKeyboard->isKeyDown(KC_A) || mKeyboard->isKeyDown(KC_LEFT))
+		mShip->setSideThrust(1);
+	else if(mKeyboard->isKeyDown(KC_D) || mKeyboard->isKeyDown(KC_RIGHT))
+		mShip->setSideThrust(-1);
+	else
+		mShip->setSideThrust(0);
 
 	if(mKeyboard->isKeyDown(KC_UP) || mKeyboard->isKeyDown(KC_W) )
-		mTranslateVector.z = -mMoveScale;	// Move camera forward
-
-	if(mKeyboard->isKeyDown(KC_DOWN) || mKeyboard->isKeyDown(KC_S) )
-		mTranslateVector.z = mMoveScale;	// Move camera backward
-
-	if(mKeyboard->isKeyDown(KC_PGUP))
-		mTranslateVector.y = mMoveScale;	// Move camera up
-
-	if(mKeyboard->isKeyDown(KC_PGDOWN))
-		mTranslateVector.y = -mMoveScale;	// Move camera down
-
-	if(mKeyboard->isKeyDown(KC_RIGHT))
-		mCamera->yaw(-mRotScale);
-
-	if(mKeyboard->isKeyDown(KC_LEFT))
-		mCamera->yaw(mRotScale);
+		mShip->setThrust(1);
+	else if(mKeyboard->isKeyDown(KC_DOWN) || mKeyboard->isKeyDown(KC_S) )
+		mShip->setThrust(-1);
+	else
+		mShip->setThrust(0);
 
 	if( mKeyboard->isKeyDown(KC_ESCAPE) || mKeyboard->isKeyDown(KC_Q) )
@@ -269,6 +239,8 @@
 	// Print camera details
 	if(displayCameraDetails)
-		mDebugText = "P: " + StringConverter::toString(mCamera->getDerivedPosition()) +
-		" " + "O: " + StringConverter::toString(mCamera->getDerivedOrientation());
+		mDebugText = StringConverter::toString(mShip->getThrust())
+		+ " | Speed = " + StringConverter::toString(mShip->speed);
+		// mDebugText = "P: " + StringConverter::toString(mCamera->getDerivedPosition()) +
+		// " " + "O: " + StringConverter::toString(mCamera->getDerivedOrientation());
 
 	// Return true to continue rendering
@@ -284,24 +256,9 @@
 	// 2nd mouse button - slide, otherwise rotate
 	const MouseState &ms = mMouse->getMouseState();
-	mRotX = Degree(-ms.X.rel * 0.13);
-	mRotY = Degree(-ms.Y.rel * 0.13);
-
-	mShip->setYaw(mRotX);
-	mShip->setPitch(mRotY);
+
+	mShip->setYaw(Degree(-ms.X.rel * 0.13));
+	mShip->setPitch(Degree(-ms.Y.rel * 0.13));
 
 	return true;
-}
-
-
-void RunManager::moveCamera()
-{
-	// Make all the changes to the camera
-	// Note that YAW direction is around a fixed axis (freelook style) rather than a natural YAW
-	//(e.g. airplane)
-	//mCamera->yaw(mRotX);
-	//mCamera->pitch(mRotY);
-	//mCamera->moveRelative(mTranslateVector);
-
-	mShipNode->translate(mShipNode->getLocalAxes() * mTranslateVector);
 }
 
