粒子系统简单框架实现
文件大小: 219k
源码售价: 10 个金币 积分规则     积分充值
资源说明:粒子系统的一个简单框架 class CParticleSystem; class CParticle { public: enum TYPE { VISTUAL, PARTICLE_SYSTEM }; public: CParticle(VOID); virtual ~CParticle(VOID); public: INT liveFrame; // 生存时间 INT indexFrame; // 贞索引 BOOL isKeepLocal; // 保持本地坐标 // 说明: 相对于发射他的发射器而言 VEC3 scale; // 缩放 VEC3 position; // 位置 QUAT orientation; // 朝向 VEC4 color; // 颜色 VEC2 uvOffset; // 纹理坐标偏移 VEC3 velocity; // 速度 public: CParticle *pNext; // 链接下一个粒子 public: CEmitterBase *pEmitter; // 发射器指针 CParticleSystem *pEmitParticleSystem; // 发射的粒子系统 }; class CParticleSystem { public: typedef std::vector EmitterSet; typedef std::vector AffectorSet; public: CParticleSystem(VOID); virtual ~CParticleSystem(VOID); public: VOID SetParticleQuota(INT quota, CParticle::TYPE type, const CHAR *szParticleSystem); // 设置粒子总量 INT GetParticleQuota(VOID) const; // 获得粒子总量 public: VOID SetGfx(CGfxBase::TYPE type); // 设置图形 CGfxBase* GetGfx(VOID) const; // 获得图形 public: CEmitterBase* AddEmitter(CEmitterBase::TYPE type); // 添加发射器 VOID RemoveEmitter(CEmitterBase *pEmitter); // 删除发射器 INT GetEmitterCount(VOID) const; // 获得发射器数量 CEmitterBase* GetEmitter(INT indexEmitter) const; // 获得发射器 public: CAffectorBase* AddAffector(CAffectorBase::TYPE type); // 添加影响器 VOID RemoveAffector(CAffectorBase *pAffector); // 删除影响器 INT GetAffectorCount(VOID) const; // 获得影响器数量 CAffectorBase* GetAffector(INT indexAffector) const; // 获得影响器 public: VOID SetPosition(const VEC3 *position); // 设置位置 const VEC3* GetPosition(VOID) const; // 获得位置 VOID SetDirection(const VEC3 *direction); // 设置朝向 VOID SetOrientation(const QUAT *orientation); // 设置朝向 const QUAT* GetOrientation(VOID) const; // 获得朝向 public: VOID Play(VOID); // 播放 VOID Stop(VOID); // 停止 VOID Pause(VOID); // 暂停 VOID Resume(VOID); // 继续 VOID Update(VOID); // 更新 VOID Render(VOID); // 渲染 protected: VOID UpdateParticles(VOID); // 更新粒子 VOID UpdateEmitter(VOID); // 更新发射器 VOID UpdateAffector(VOID); // 更新影响器 protected: BOOL m_isPlaying; // 播放状态 BOOL m_isPause; // 暂停播放状态 INT m_indexFrame; // 贞计数 INT m_beginFrame; // 开始贞 INT m_durationFrame; // 持续贞数 protected: CParticle::TYPE m_particleType; // 粒子类型 CGfxBase *m_pGfx; // 图形 INT m_particleQuota; // 粒子总数 CParticle *m_pParticles; // 粒子池 CParticle *m_pActiveParticleList; // 活动粒子链表 CParticle *m_pFreeParticleList; // 空闲粒子链表 EmitterSet m_emitters; // 发射器集合 AffectorSet m_affectors; // 影响器集合 CGfxFactory m_gfxFactory; // 图形工厂 CEmitterFactory m_emitterFactory; // 发射器工厂 CAffectorFactory m_affectorFactory; // 影响器工厂 protected: VEC3 m_position; // 位置 QUAT m_orientation; // 朝向 };
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。