From 473470054a4f67c67fb3f40a0438e87aff68703c Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Wed, 18 May 2016 00:00:11 +0800 Subject: Fix bugs in the particle system. Add particle look at option. --- visualization/extrasmeltutils.hpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'visualization/extrasmeltutils.hpp') diff --git a/visualization/extrasmeltutils.hpp b/visualization/extrasmeltutils.hpp index bd103b0..08868a7 100644 --- a/visualization/extrasmeltutils.hpp +++ b/visualization/extrasmeltutils.hpp @@ -1,5 +1,6 @@ #ifndef EXTRASMELTUTILS_H #define EXTRASMELTUTILS_H +#include #include #include #include @@ -33,7 +34,16 @@ class smEntity3DBuffer class smPSEmissionPositionGenerator { public: - virtual smvec3d genPos(); + virtual smvec3d genPos(){return smvec3d(0,0,0);} +}; +class smXLinePSGenerator:public smPSEmissionPositionGenerator +{ + private: + smRandomEngine re; + double var; + public: + smXLinePSGenerator(double _var){re.setSeed(time(NULL));var=_var;} + smvec3d genPos(){return smvec3d(re.nextDouble(-var,var),0,0);} }; class smParticleSystemInfo { @@ -54,13 +64,13 @@ class smParticle friend class smParticleSystem; private: static SMELT* sm; - smvec3d pos,rot; + smvec3d pos,rot,lookatpos; smvec3d vel,accel,rotv,rota; double lifespan,clifespan; double initsize,finalsize,size; DWORD color,initcolor,finalcolor; smQuad q; - bool dead; + bool dead,lookat; public: smParticle(); ~smParticle(); @@ -73,10 +83,10 @@ class smParticleSystem static SMELT* sm; std::vector particles; smParticleSystemInfo psinfo; - smvec3d pos; + smvec3d pos,lookatpos; smRandomEngine re; smPSEmissionPositionGenerator* posGenerator; - bool active; + bool active,lookat; double cemdelay,nemdelay; public: smParticleSystem(); @@ -84,6 +94,8 @@ class smParticleSystem void setParticleSystemInfo(smParticleSystemInfo _psinfo); void setPos(smvec3d _pos); void setPSEmissionPosGen(smPSEmissionPositionGenerator* _gen); + void setPSLookAt(smvec3d at); + void unsetPSLookAt(); void startPS(); void stopPS(); void updatePS(); -- cgit v1.2.3