00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef TEDDY__SPACE_GAME__SHIP_CAMERA_H
00026 #define TEDDY__SPACE_GAME__SHIP_CAMERA_H
00027
00028
00029 #include "Teddy/SpaceGame/Simulated.h"
00030 #include "Teddy/Scenes/Camera.h"
00031 namespace Teddy {
00032 namespace Models { class Mesh; };
00033 };
00034 using namespace Teddy::Scenes;
00035
00036
00037 namespace Teddy {
00038 namespace SpaceGame {
00039
00040
00041 class Ship;
00042
00043
00045 class ShipCamera : public Camera, public Simulated {
00046 public:
00047 ShipCamera( Ship *ship, Scene *scene, Mesh *cabin = NULL );
00048
00049 virtual void projectScene ( Projection *p );
00050
00051 void front ();
00052 void left ();
00053 void right ();
00054 void rear ();
00055 void top ();
00056 void bottom ();
00057 void setCabin ( Mesh *cabin_mesh );
00058 void setHeading ( float heading );
00059 void setPitch ( float pitch );
00060 void setRoll ( float roll );
00061 void setDistance( float distance );
00062 void setShip ( Ship *target );
00063 Ship *getShip ();
00064 Scene *getScene ();
00065 Mesh *getMesh ();
00066 float getDistance();
00067 float getHeading ();
00068 float getPitch ();
00069 float getRoll ();
00070
00071
00072 virtual void tick();
00073
00074 protected:
00075 Ship *ship;
00076 Mesh *cabin;
00077 float heading_v;
00078 float pitch_v;
00079 float roll_v;
00080 float range;
00081 };
00082
00083
00084 };
00085 };
00086
00087
00088 #endif // TEDDY__SPACE_GAME__SHIP_CAMERA_H
00089