00001
00008
00009
00010
00011
00012
00013 #if COMPILING_MODULE_SIM
00014 #ifndef MOD_SIM_CRAFT_HH
00015 #define MOD_SIM_CRAFT_HH 1
00016
00017 namespace mod_sim {
00018
00019 enum eCraftModel
00020 {
00021 eCraftModel_F14_TOMCAT
00022 };
00023
00024 const fp F14_MAX_SWEEP_DEG = 45.0;
00025 const fp F14_MAX_VANE_DEG = 30.0;
00026
00030 class JetFlame
00031 {
00032 public:
00033 JetFlame( SharedPtr<Graph> graph, const string& partitionNameFlame, const string& partitionNameExhaust, bool alien );
00034 void Animate( void );
00035 void SetThrottle( const fp throttle );
00036
00037 private:
00038 fp mThrottle;
00039 SharedPtr<Graph> mGraph;
00040 TransformNode::Ptr mTransformNodeFlame;
00041 TransformNode::Ptr mTransformNodeExhaust;
00042 TextureNode::Ptr mTextureNode;
00043 const bool mAlien;
00044 };
00045
00053 class Aircraft : public Craft
00054 {
00055
00056 typedef Craft Parent;
00057 friend class ProxyCraft;
00058 public:
00059 Aircraft( SharedPtr<Graph> graph, const WorldVertex& position, const bool alien );
00060 ~Aircraft();
00061 void SelfDestruct( void );
00062 const string GetName( void ) { return "Aircraft"; }
00063 void Draw( void );
00064
00065
00066 virtual void Rotate( uint axis, Radian rad );
00067
00068
00069 public:
00070 void SetVisible( bool visible ) { mVisible = visible; }
00071 virtual void RotateWings( const Degree deg, const bool set = false ) { }
00072 virtual void RotateTailplanes( const Degree deg, const bool set = false ) { }
00073 virtual void RotateGloveVanes( const Degree deg, const bool set = false ) { }
00074 virtual void RotateGears( const Degree deg, const bool set = false ) { }
00075
00076 protected:
00077 void RotatePart( Part& part, const Degree deg, const uint axis, const bool set = false );
00078
00079 protected:
00080 bool mVisible;
00081 bool mHit;
00082 int mAxisDir[3];
00083 bool mAlien;
00084 Degree mAlienTextureShimmerDegree;
00085 };
00086
00090 class F14Tomcat : public Aircraft
00091 {
00092
00093 typedef Aircraft Parent;
00094 friend class ProxyCraft;
00095 public:
00096 F14Tomcat( SharedPtr<Graph> graph, const WorldVertex& position, const bool alien );
00097 const string GetName( void ) { return "F14Tomcat"; }
00098 void Animate( void );
00099 void SetThrottle( const fp throttle );
00100 void IncThrottle( const fp inc );
00101 void RotateWings( const Degree deg, const bool set = false );
00102 void RotateGloveVanes( const Degree deg, const bool set = false );
00103 void RotateTailplanes( const Degree deg, const bool set = false );
00104 void RotateGears( const Degree deg, const bool set = false );
00105
00106 private:
00107 Part mLeftWing;
00108 Part mRightWing;
00109 Part mLeftGloveVane;
00110 Part mRightGloveVane;
00111 Part mLeftTailplane;
00112 Part mRightTailplane;
00113 Part mFrontGear;
00114 Part mLeftGear;
00115 Part mRightGear;
00116 JetFlame mLeftJetFlame;
00117 JetFlame mRightJetFlame;
00118 };
00119
00120
00121
00122 SharedPtr<F14Tomcat>
00123 MakeF14Tomcat( const WorldVertex& pos, const string& modelName, const bool visible );
00124
00125 const list<string>&
00126 GetF14TomcatModelNames( void );
00127
00128 void
00129 ConfigureF14Physics( Physics& physics );
00130
00131 }
00132
00133 #endif // MOD_SIM_CRAFT_HH
00134 #endif // COMPILING_MODULE_SIM