From 3efde1d31be48cc65b7277791aabf02941ece382 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Fri, 10 Jun 2011 19:44:34 +0000 Subject: [PATCH] - added will's patch for splash particle animation support --- source/shared_lib/include/graphics/particle.h | 8 ++++++-- source/shared_lib/sources/graphics/particle.cpp | 12 ++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/source/shared_lib/include/graphics/particle.h b/source/shared_lib/include/graphics/particle.h index 6f788c422..01ed8b273 100644 --- a/source/shared_lib/include/graphics/particle.h +++ b/source/shared_lib/include/graphics/particle.h @@ -350,7 +350,6 @@ protected: Vec3f offset; float sizeNoEnergy; float gravity; - float tween; Vec3f direction; @@ -369,8 +368,9 @@ public: void setSizeNoEnergy(float sizeNoEnergy) {this->sizeNoEnergy= sizeNoEnergy;} void setGravity(float gravity) {this->gravity= gravity;} void setPrimitive(Primitive primitive) {this->primitive= primitive;} - + float getTween() { return tween; } // 0.0 -> 1.0 for animation of model + virtual void initParticleSystem() {} // opportunity to do any initialisation when the system has been created and all settings set static Primitive strToPrimitive(const string &str); }; @@ -445,6 +445,8 @@ private: float verticalSpreadB; float horizontalSpreadA; float horizontalSpreadB; + + float startEmissionRate; public: SplashParticleSystem(int particleCount= 1000); @@ -453,6 +455,8 @@ public: virtual void update(); virtual void initParticle(Particle *p, int particleIndex); virtual void updateParticle(Particle *p); + + virtual void initParticleSystem(); void setEmissionRateFade(float emissionRateFade) {this->emissionRateFade= emissionRateFade;} void setVerticalSpreadA(float verticalSpreadA) {this->verticalSpreadA= verticalSpreadA;} diff --git a/source/shared_lib/sources/graphics/particle.cpp b/source/shared_lib/sources/graphics/particle.cpp index a185438cb..eac0e079c 100644 --- a/source/shared_lib/sources/graphics/particle.cpp +++ b/source/shared_lib/sources/graphics/particle.cpp @@ -913,11 +913,19 @@ SplashParticleSystem::~SplashParticleSystem(){ } } +void SplashParticleSystem::initParticleSystem() { + startEmissionRate = emissionRate; +} + void SplashParticleSystem::update(){ ParticleSystem::update(); - if(state != sPause){ + if(state != sPause) { emissionRate-= emissionRateFade; - if(emissionRate < 0.0f){//otherwise this system lives forever! + + tween= 1.0f - ((emissionRate + startEmissionRate) / (startEmissionRate * 2.0f)); + tween= clamp(tween, 0.0f, 1.0f); + + if(emissionRate < 0.0f) {//otherwise this system lives forever! fade(); } }