mod_sim_craft.hh

Go to the documentation of this file.
00001 /*
00008  * LEGAL:   COPYRIGHT (C) 2004 JIM E. BROOKS
00009  *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
00010  *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
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;  // glove vanes
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 // Dyna/Craft:
00066     virtual void    Rotate( uint axis, Radian rad );
00067 
00068 // Aircraft-specific:
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 // Functions:
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 } // namespace mod_sim
00132 
00133 #endif // MOD_SIM_CRAFT_HH
00134 #endif // COMPILING_MODULE_SIM
Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:12 2007