From d233d3f81bdae9873cc93be0c5024398eb76e094 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 24 Sep 2015 19:17:02 -0700 Subject: [PATCH] Fix particle emitter corner cases --- libraries/entities/src/ParticleEffectEntityItem.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index 3f3bde7077..9d11dff55a 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -682,9 +682,9 @@ void ParticleEffectEntityItem::stepSimulation(float deltaTime) { } updateRadius(i, 0.0f); - // Velocity and acceleration - if (_polarStart == 0.0f && _polarFinish == 0.0f) { - // Emit along z-axis + // Position, velocity, and acceleration + if (_polarStart == 0.0f && _polarFinish == 0.0f && _emitDimensions.z == 0.0f) { + // Emit along z-axis from position _particlePositions[i] = getPosition(); _particleVelocities[i] = (_emitSpeed + (2.0f * randFloat() - 1.0f) * _speedSpread) * (_emitOrientation * Z_AXIS); @@ -730,9 +730,9 @@ void ParticleEffectEntityItem::stepSimulation(float deltaTime) { float z = radiuses.z * glm::sin(elevation); glm::vec3 emitPosition = glm::vec3(x, y, z); emitDirection = glm::normalize(glm::vec3( - x / (radiuses.x * radiuses.x), - y / (radiuses.y * radiuses.y), - z / (radiuses.z * radiuses.z) + radiuses.x > 0.0f ? x / (radiuses.x * radiuses.x) : 0.0f, + radiuses.y > 0.0f ? y / (radiuses.y * radiuses.y) : 0.0f, + radiuses.z > 0.0f ? z / (radiuses.z * radiuses.z) : 0.0f )); _particlePositions[i] = getPosition() + _emitOrientation * emitPosition;