- added will's patch for splash particle animation support

This commit is contained in:
Mark Vejvoda
2011-06-10 19:44:34 +00:00
parent 7c43628643
commit 3efde1d31b
2 changed files with 16 additions and 4 deletions

View File

@@ -350,7 +350,6 @@ protected:
Vec3f offset;
float sizeNoEnergy;
float gravity;
float tween;
Vec3f direction;
@@ -371,6 +370,7 @@ public:
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);
};
@@ -446,6 +446,8 @@ private:
float horizontalSpreadA;
float horizontalSpreadB;
float startEmissionRate;
public:
SplashParticleSystem(int particleCount= 1000);
virtual ~SplashParticleSystem();
@@ -454,6 +456,8 @@ public:
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;}
void setVerticalSpreadB(float verticalSpreadB) {this->verticalSpreadB= verticalSpreadB;}

View File

@@ -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();
}
}