My Project
MissileObject.h
1 #pragma once
2 #include "TileObject.h"
3 #include "AnimInstanceBase.h"
4 
5 namespace ParaEngine
6 {
7  // forward declaration.
8  struct ParaXEntity;
9 
11  class CMissileObject : public CTileObject
12  {
13  public:
14  virtual CBaseObject::_SceneObjectType GetType(){ return CBaseObject::MissileObject; };
15  CMissileObject(void);
16  virtual ~CMissileObject(void);
17 
18  ATTRIBUTE_DEFINE_CLASS(CMissileObject);
19  ATTRIBUTE_SUPPORT_CREATE_FACTORY(CMissileObject);
20  private:
21 
23  float m_fSpeed;
24 
27  string m_sDestObjectName;
29  DVector3 m_vTargetPos;
31  DVector3 m_vCurrentPos;
33  bool m_bFired:1;
35  bool m_bExploded:1;
36 
37  //------------ for rendering the missile model --------------------//
39  ParaXEntity * m_pParaXModel;
40 
42  float m_fTime;
43 
45  float m_fExplotionTime;
46 
48  float m_fModelScale;
49 
50  // ------------- model animation information -----------------------//
54  AnimIndex m_CurrentAnim;
55 
59  float m_blendingFactor;
60 
61  public:
63  bool IsExploded(){return m_bExploded;}
65  void Explode();
67  bool IsFired(){return m_bFired;}
68 
73  HRESULT InitObject(ParaXEntity *model, const string& sDestObject, float fSpeed, float fModelScale=1.0f);
77  HRESULT InitObject(ParaXEntity *model, const Vector3& vTargetPos, float fSpeed, float fModelScale=1.0f);
78 
79 
80  //-- virtual function from baseObject
81  virtual HRESULT Draw( SceneState * sceneState);
82  virtual void Animate( double dTimeDelta, int nRenderNumber=0 );
84 
85  virtual void SetPosition(const DVector3 & v);
86 
88  virtual AssetEntity* GetPrimaryAsset(){return (AssetEntity*)m_pParaXModel;};
89  };
90 
91 }
92 
virtual IViewClippingObject * GetViewClippingObject()
return the view clipping object used for object-level clipping when rendering this object...
Definition: MissileObject.cpp:268
bool IsExploded()
whether it is exploded.
Definition: MissileObject.h:63
a flying missile in the global space.
Definition: MissileObject.h:11
3-dimensional vector with double precision.
Definition: ParaDVector3.h:17
It's used as parameter to Draw method of each scene object.
Definition: SceneState.h:284
Pure interface for CBaseObject (3D scene object) It defines basic shapes and collision detection...
Definition: IViewClippingObject.h:29
different physics engine has different winding order.
Definition: EventBinding.h:32
virtual HRESULT Draw(SceneState *sceneState)
only for drawable objects
Definition: MissileObject.cpp:74
HRESULT InitObject(ParaXEntity *model, const string &sDestObject, float fSpeed, float fModelScale=1.0f)
fire a missile at a target using the specified effect model and speed.
Definition: MissileObject.cpp:32
Standard 3-dimensional vector.
Definition: ParaVector3.h:16
virtual AssetEntity * GetPrimaryAsset()
used as KEY for batch rendering
Definition: MissileObject.h:88
Definition: ParaXEntity.h:9
it presents a given in bone animation providers or parax local model bone animation pools ...
Definition: AnimInstanceBase.h:13
virtual void SetPosition(const DVector3 &v)
always bottom center of the bounding shape
Definition: MissileObject.cpp:273
Tile Object have position and bounding rect and can usually be attached to quad-tree terrain tile...
Definition: TileObject.h:10
void Explode()
to explode the missile object.
Definition: MissileObject.cpp:249
bool IsFired()
whether the missile is fired from the source object.
Definition: MissileObject.h:67
virtual void Animate(double dTimeDelta, int nRenderNumber=0)
animate the model by a given delta time.
Definition: MissileObject.cpp:117
Base class for managed asset entity in ParaEngine.
Definition: AssetEntity.h:25