mod_sim_missile.hh

Go to the documentation of this file.
00001 /*
00008  * LEGAL:   COPYRIGHT (C) 2007 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_MISSILE_HH
00015 #define MOD_SIM_MISSILE_HH 1
00016 
00017 #include "mod_base_guidance.hh"
00018 #include "mod_base_partsys.hh"
00019 #include "mod_sim_game.hh"
00020 
00021 namespace mod_sim {
00022 
00023 void FireMissile( shptr<Craft> craftLauncher );  // interface
00024 
00031 class MissileActor : public game::Actor
00032 {
00033 
00034 
00035 private:
00039     class SmokeTrailParticle : public Particle
00040     {
00041     public:
00042                 SmokeTrailParticle( const WorldVertex& pos, const RGBA color, const fp widthFactor, const bool hitTarget );
00043         void    Animate( void );
00044         const bool  mHitTarget;
00045     };
00046 
00047 // Missile maintains its own container of Missiles, so ctor/dtor are private.
00048 // Missile is fire-and-forget to the client (pun intended).
00049 
00050 public:
00051     CLASS_METHOD void   MakeMissile( const WorldVertex& position,
00052                                      const Vector3& direction,
00053                                      SharedPtr<Craft> craftLauncher,
00054                                      SharedPtr<game::Actor> target );
00055 private:
00056                         MissileActor( const WorldVertex& position,
00057                                       const Vector3& direction,
00058                                       SharedPtr<Craft> craftLauncher,
00059                                       SharedPtr<game::Actor> target );
00060                         ~MissileActor();
00061 
00062 private:
00063     void            AddParticle( const WorldVertex& pos, const RGBA color );
00064     void            Action( const Milliseconds millisecElapsed );
00065     void            UpdateMissileView( const Vector3& step );
00066 
00067 private:
00068     CLASS_VAR RGBA      msLightColorAmbientDiffuse;
00069     CLASS_VAR SafePtr<MissileActor> msLightOwner;       
00070     CLASS_VAR SafePtr<MissileActor> msMissileViewOwner; 
00071     WorldVertex         mPosition;                  
00072     shptr<game::Actor>  mTarget;                    
00073     bool                mHitTarget;                 
00074     Guidance            mGuidance;                  
00075     Milliseconds        mTimeOfDeath;               
00076     bool                mZombie;                    
00077     ParticleSystem      mParticleSystem;            
00078     uint                mParticlesPerTick;          
00079 public:
00080     
00081 };
00082 
00083 } // namespace mod_sim
00084 
00085 #endif // MOD_SIM_MISSILE_HH
00086 #endif // COMPILING_MODULE_SIM
Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:13 2007