NodeObject.h
资源名称:g.rar [点击查看]
上传用户:laitongbao
上传日期:2021-02-20
资源大小:8176k
文件大小:3k
源码类别:

射击游戏

开发平台:

Visual C++

  1. #pragma once
  2. #include "CGLApplication.h"
  3. #include "VECTOR.h"
  4. #include "CGLDEF.h"
  5. /*********************************************************************************
  6. 节点类,所有网格物体的基础类,包含很多共有的基本函数
  7. *********************************************************************************/
  8. class NodeObject
  9. {
  10. friend class TransitionController;
  11. friend class ShaderController;
  12. friend class FileController;
  13. friend class SceneTree;
  14. friend class AnimationController;
  15. friend class Force;
  16. friend class P_Force;
  17. friend class Resistance;
  18. friend class P_Resistance;
  19. friend class CollisionDetector;
  20. public:
  21. NodeObject(NodeObject &obj);
  22. NodeObject(TCHAR* name, VECTOR3 pos);
  23. virtual ~NodeObject() ;
  24. void                 SetName(TCHAR* name);
  25.     TCHAR*               GetName()const;
  26. void                 SetVisible(bool visible){m_visible=visible;};
  27. void                 SetMass(float mass){this->mass = mass;};
  28. float                GetMass(){return mass;};
  29. void                 SetVelocity(VECTOR3 vel);
  30. VECTOR3       GetVelocity();
  31. void                 SetRotateVelocity(VECTOR3 vel);
  32. VECTOR3       GetRotateVelocity();
  33.     virtual void         CleanUp(){};
  34. OBJ_TYPE             GetType()const{return m_type;}
  35.     inline NodeObject*   GetParent()const{return m_pParent;} 
  36.     inline NodeObject*   GetChild()const{return m_pChild;}
  37.     inline NodeObject*   GetNext()const{return m_pNext;}
  38.     inline NodeObject*   GetPrev()const{return m_pPrev;}
  39. virtual  void  DrawObject(){}; //用于绘制虚拟物体线框(如摄像机,灯光,离子发射器)
  40. virtual  void  PreDraw(){};    //用于设置网格以外物体的渲染状态(网格及其贴图的渲染状态由ShaderController设置)
  41. VECTOR3              GetWorldPos(){return gpos;}
  42. VECTOR3              GetWorldVel(){return gvel;}
  43.     
  44. protected:
  45. NodeObject*          FindObject( TCHAR* strName);
  46. TCHAR*               m_strName;      //物体名字
  47.     OBJ_TYPE             m_type;         //物体种类
  48. NodeObject           *m_pChild;      //子物体
  49. NodeObject           *m_pParent;     //父物体
  50. NodeObject           *m_pNext;       //下一个物体
  51. NodeObject           *m_pPrev;       //上一个物体
  52.     bool                 m_visible;      //物体可见性
  53. VECTOR3            pos;         //局部位置
  54. VECTOR3            gpos;        //全局位置
  55. VECTOR3            rot;         //局部旋转
  56. VECTOR3            scale;       //局部缩放
  57. VECTOR3            vel;          //物体速度
  58. VECTOR3            gvel;         //全局速度
  59. VECTOR3            rot_vel;      //物体旋转速度
  60. D3DXMATRIX         matrix;      //转换矩阵
  61. float              mass;         //质量
  62. public:
  63. float              angle;//旋转时用到的角度
  64. };