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

射击游戏

开发平台:

Visual C++

  1. // Particle.h: interface for the Particle class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "NodeObject.h"
  5. #include "Time.h"
  6. #include "RandGenerator.h"
  7. #include "VECTOR.h"
  8. #include "P_Force.h"
  9. #include "P_Resistance.h"
  10. #include "utility.h"
  11. #if !defined(AFX_PARTICLE_H__94E2789A_CDD3_41C3_9BA4_7230C0AA98A9__INCLUDED_)
  12. #define AFX_PARTICLE_H__94E2789A_CDD3_41C3_9BA4_7230C0AA98A9__INCLUDED_
  13. #if _MSC_VER > 1000
  14. #pragma once
  15. #endif // _MSC_VER > 1000
  16. struct PARTICLE//离子结构
  17. {
  18. VECTOR3 pos;//当前离子位置
  19. VECTOR3 vel;//当前离子速度
  20. VECTOR3 pos0;//离子的初始位置
  21. VECTOR3 vel0;//离子的初始速度
  22. float lifeTime;//离子剩余时间
  23. float time0;//离子建立的时间
  24. float size;//离子大小
  25. PARTICLE* next;//下一个离子对象
  26. };
  27. class Particle_Emit:public NodeObject
  28. {
  29. friend class P_Force;
  30. friend class P_Resistance;
  31. friend class CollisionDetector;
  32. public:
  33. Particle_Emit(Particle_Emit& pe);
  34. Particle_Emit(TCHAR* name ,float particle_size ,float life_time ,TCHAR* texture = NULL,
  35. DWORD diffuse = 0xffffffff,DWORD fade_color = 0xffffffff,VECTOR3 pos = VECTOR3(),
  36. float blur_length = 0.02f);
  37. ~Particle_Emit();
  38. void Emit(VECTOR3 vel0, int num_particle_to_emit = 1,bool explode = false,float distrube =0);
  39. void DrawObject();
  40. void FrameMove();
  41. void PreDraw();           
  42. void CleanUp();
  43. void SetSize(float size);
  44. void SetBlurLength(float len);
  45. void SetLifeTime(float len);
  46. float GetSize();
  47. private:
  48. void(CALLBACK*processForceFunc)(PARTICLE* p);//用于动力系统的接口
  49. float                   particle_size;//大小
  50. float                   blur_length;//拖尾长度
  51. int                     numParticles;//当前离子数
  52. int                     max_numParticles;//最多同时显示离子数
  53. float                   life_time;//生命时间
  54. DWORD                   diffuse;//离子颜色
  55. DWORD                   fade_color;//离子渐隐颜色
  56. RandGenerator*          rand;//随机数产生器
  57. Timer*                  timer;//时钟
  58. PARTICLE *              particles;//可见离子
  59. PARTICLE *              freeParticles;//释放的离子,用于循环利用
  60.     IDirect3DVertexBuffer9* localVertex;
  61. LPDIRECT3DTEXTURE9      particle_texture;// 点贴图
  62. };
  63. #endif // !defined(AFX_PARTICLE_H__94E2789A_CDD3_41C3_9BA4_7230C0AA98A9__INCLUDED_)