00001 #ifndef __VECTRACER_TRACK_CONTROL_OBJECT_H 00002 #define __VECTRACER_TRACK_CONTROL_OBJECT_H 00003 00004 /* 00005 ----------------------------------------------------------------------------- 00006 Filename: TrackControlObject.h 00007 Description: Essentially, a wrapper to allow easy manipulation of the control points of a track. 00008 ----------------------------------------------------------------------------- 00009 */ 00010 00011 #include "Common.h" 00012 #include "SelectableObject.h" 00013 #include "Track.h" 00014 00015 class Track; 00016 00020 class TrackControlObject : public SelectableObject 00021 { 00022 public: 00023 TrackControlObject(int _val, Ogre::Vector3 _pos, Track* _track); 00024 00025 ~TrackControlObject() {} 00026 00027 bool move(Ogre::Real _time); 00028 00029 int getPointID() const; 00030 void setPointID(const int &_val); 00031 00032 TrackControlObject* getLink() const; 00033 void setLink(TrackControlObject* _val); 00034 00035 Track* getTrack() const; 00036 void setTrack(Track* _val); 00037 00038 Ogre::Vector3 getInitialPosition() const; 00039 void setInitialPosition(Ogre::Vector3& _val); 00040 00041 Ogre::Real getControlRadius() const; 00042 Ogre::Real getControlRadiusSquared() const; 00043 void setControlRadius(Ogre::Real& _val); 00044 00045 00046 00047 protected: 00048 00049 // set ID 00050 void setID(); 00051 static int s_nextID; 00052 00053 int m_pointID; 00054 00055 TrackControlObject* m_link; 00056 00057 Track* m_track; 00058 00059 Ogre::Vector3 m_initialPosition; 00060 Ogre::Real m_controlRadius; 00061 }; 00062 00063 #endif