mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 07:37:20 +02:00
close issue #1602 (particles overlap during collisions)
This commit is contained in:
parent
c40d93ddce
commit
82f212bc19
1 changed files with 5 additions and 3 deletions
|
@ -120,16 +120,18 @@ void ParticleCollisionSystem::updateCollisionWithParticles(Particle* particleA)
|
||||||
particleA->setVelocity(particleA->getVelocity() - axialVelocity * (2.0f * massB / totalMass));
|
particleA->setVelocity(particleA->getVelocity() - axialVelocity * (2.0f * massB / totalMass));
|
||||||
|
|
||||||
ParticleEditHandle particleEditHandle(_packetSender, _particles, particleA->getID());
|
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());
|
particleA->getGravity(), particleA->getDamping(), particleA->getInHand(), particleA->getScript());
|
||||||
|
|
||||||
particleB->setVelocity(particleB->getVelocity() + axialVelocity * (2.0f * massA / totalMass));
|
particleB->setVelocity(particleB->getVelocity() + axialVelocity * (2.0f * massA / totalMass));
|
||||||
|
|
||||||
ParticleEditHandle penetratedparticleEditHandle(_packetSender, _particles, particleB->getID());
|
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());
|
particleB->getGravity(), particleB->getDamping(), particleB->getInHand(), particleB->getScript());
|
||||||
|
|
||||||
penetration /= (float)(TREE_SCALE);
|
|
||||||
updateCollisionSound(particleA, penetration, COLLISION_FREQUENCY);
|
updateCollisionSound(particleA, penetration, COLLISION_FREQUENCY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue