 
 	float pitch_;
 	float yaw_;
-	Node@ cameraMount_;
+	Quaternion modelRotation_;
+	Node@ cameraMountNode_;
+	Node@ modelNode_;
 
 	Vector3 debugDirection_;
 


	void DelayedStart()
	{
		cameraMount_ = node.GetChild("CameraMount", true);
	}

	void Update(float timestep)
	{
		const float MOVEMENT_STRENGTH = 20.0f;
		const float MOUSE_SENSITIVITY = 0.1f;

		IntVector2 mouseMove = input.mouseMove;
		yaw_ += MOUSE_SENSITIVITY * mouseMove.x;
		pitch_ += MOUSE_SENSITIVITY * mouseMove.y;
		pitch_ = Clamp(pitch_, -15.0f, 15.0f);
		cameraMount_.rotation = Quaternion(pitch_, yaw_, 0.0f);

		Vector3 direction = Vector3::ZERO;
		if (input.keyDown[KEY_W] || input.keyDown[KEY_UP])

			rigidBody.friction = RestingFriction;
		}

		if (rigidBody.linearVelocity.lengthSquared > MOVEMENT_MARGIN)
		{
			Vector3 lateralVelocity = Vector3(rigidBody.linearVelocity.x, 0, rigidBody.linearVelocity.z);
			Quaternion lateralRotation;
			lateralRotation.FromLookRotation(lateralVelocity, Vector3::UP);
			lateralRotation = lateralRotation * modelRotation_;
			modelNode_.rotation = modelNode_.rotation.Nlerp(lateralRotation, 0.3, true);
		}
	}

	void Save(Serializer& serializer)
