From 82f212bc19a37f294117d74276f591164e41797d Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 22 Jan 2014 13:29:43 -0800 Subject: [PATCH] close issue #1602 (particles overlap during collisions) --- libraries/particles/src/ParticleCollisionSystem.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/particles/src/ParticleCollisionSystem.cpp b/libraries/particles/src/ParticleCollisionSystem.cpp index dee0259eb7..e5bdc43cf3 100644 --- a/libraries/particles/src/ParticleCollisionSystem.cpp +++ b/libraries/particles/src/ParticleCollisionSystem.cpp @@ -120,16 +120,18 @@ void ParticleCollisionSystem::updateCollisionWithParticles(Particle* particleA) particleA->setVelocity(particleA->getVelocity() - axialVelocity * (2.0f * massB / totalMass)); ParticleEditHandle particleEditHandle(_packetSender, _particles, particleA->getID()); - particleEditHandle.updateParticle(particleA->getPosition(), particleA->getRadius(), particleA->getXColor(), particleA->getVelocity(), + penetration /= (float)(TREE_SCALE); + glm::vec3 position = particleA->getPosition() - 0.5f * penetration; + particleEditHandle.updateParticle(position, particleA->getRadius(), particleA->getXColor(), particleA->getVelocity(), particleA->getGravity(), particleA->getDamping(), particleA->getInHand(), particleA->getScript()); particleB->setVelocity(particleB->getVelocity() + axialVelocity * (2.0f * massA / totalMass)); ParticleEditHandle penetratedparticleEditHandle(_packetSender, _particles, particleB->getID()); - penetratedparticleEditHandle.updateParticle(particleB->getPosition(), particleB->getRadius(), particleB->getXColor(), particleB->getVelocity(), + position = particleB->getPosition() + 0.5f * penetration; + penetratedparticleEditHandle.updateParticle(position, particleB->getRadius(), particleB->getXColor(), particleB->getVelocity(), particleB->getGravity(), particleB->getDamping(), particleB->getInHand(), particleB->getScript()); - penetration /= (float)(TREE_SCALE); updateCollisionSound(particleA, penetration, COLLISION_FREQUENCY); } }