summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/particle.cpp8
-rw-r--r--src/particleemitter.cpp12
2 files changed, 11 insertions, 9 deletions
diff --git a/src/particle.cpp b/src/particle.cpp
index 509c20ee..805da102 100644
--- a/src/particle.cpp
+++ b/src/particle.cpp
@@ -39,6 +39,8 @@
#include "utils/fastsqrt.h"
#include "utils/xml.h"
+#define SIN45 0.707106781f
+
class Graphics;
class Image;
@@ -122,7 +124,7 @@ Particle::update()
if (mTarget && mAcceleration != 0.0f)
{
- float distX = mPosX - mTarget->getPosX();
+ float distX = (mPosX - mTarget->getPosX()) * SIN45;
float distY = mPosY - mTarget->getPosY();
float distZ = mPosZ - mTarget->getPosZ();
float invHypotenuse;
@@ -167,8 +169,8 @@ Particle::update()
// Update position
mPosX += mVectorX;
- mPosY += mVectorY;
- mPosZ += mVectorZ;
+ mPosY += mVectorY * SIN45;
+ mPosZ += mVectorZ * SIN45;
// Update other stuff
if (mLifetimeLeft > 0)
diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp
index 2387c652..5b5e86b9 100644
--- a/src/particleemitter.cpp
+++ b/src/particleemitter.cpp
@@ -76,10 +76,14 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map *
{
mParticlePosY = readMinMax(propertyNode, 0.0f);
+ mParticlePosY.minVal *= SIN45;
+ mParticlePosY.maxVal *= SIN45;
}
else if (name == "position-z")
{
mParticlePosZ = readMinMax(propertyNode, 0.0f);
+ mParticlePosZ.minVal *= SIN45;
+ mParticlePosZ.maxVal *= SIN45;
}
else if (name == "image")
{
@@ -236,10 +240,6 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map *
ParticleEmitter::~ParticleEmitter()
{
- if (mParticleImage)
- {
- mParticleImage->decRef();
- }
}
@@ -294,8 +294,8 @@ ParticleEmitter::createParticles()
float power = mParticlePower.value();
newParticle->setVector(
cos(angleH) * cos(angleV) * power,
- sin(angleH) * cos(angleV) * SIN45 * power,
- sin(angleV) * SIN45 * power
+ sin(angleH) * cos(angleV) * power,
+ sin(angleV) * power
);
newParticle->setRandomnes(mParticleRandomnes.value());