00001 00002 #ifndef __CW_CAMERA_H_ 00003 #define __CW_CAMERA_H_ 00004 00005 #include "CarWorldClasses.h" 00006 #include "CWVehicle.h" 00007 00008 //camera classes 00009 00010 class CWCamera : public CWFeature 00011 { 00012 public: 00013 virtual ~CWCamera(); 00014 virtual Ref GetRef() = 0; 00015 virtual void DrawOnScreen(); 00016 protected: 00017 static const Point3D X,Y,Z,Up; 00018 }; 00019 00020 class FixCam : public CWCamera 00021 { 00022 public: 00023 FixCam(CWVehicle *Vehicle = NULL, const Point3D &Position = Point3D(0,0,50)); 00024 virtual ~FixCam(); 00025 Ref GetRef(); 00026 private: 00027 Point3D m_Position; 00028 CWVehicle *m_Vehicle; 00029 }; 00030 00031 class FollowCam : public CWCamera 00032 { 00033 public: 00034 FollowCam(CWVehicle *Vehicle); 00035 virtual ~FollowCam(); 00036 Ref GetRef(); 00037 private: 00038 CWVehicle *m_Vehicle; 00039 }; 00040 00041 class InCarCam : public CWCamera 00042 { 00043 public: 00044 InCarCam(CWVehicle *Vehicle); 00045 virtual ~InCarCam(); 00046 Ref GetRef(); 00047 virtual void DrawOnScreen(); 00048 public: 00049 CWVehicle *m_Vehicle; 00050 }; 00051 00052 class SateliteCam : public CWCamera 00053 { 00054 public: 00055 SateliteCam(CWVehicle *Vehicle, REAL height = 10.f); 00056 virtual ~SateliteCam(); 00057 Ref GetRef(); 00058 private: 00059 CWVehicle *m_Vehicle; 00060 REAL m_height; 00061 }; 00062 00063 #endif //__CW_CAMERA_H_