From ba81917392bbdf54a021daef04a9df604367ec5f Mon Sep 17 00:00:00 2001 From: DavidWyand-GG Date: Fri, 15 Nov 2013 18:35:39 -0500 Subject: [PATCH] Fix for ballistic projectiles not bouncing Ballistic projectiles are no longer bouncing when they collide, assuming they have the correct properties set. These changes move the point that a projectile's velocity is zeroed during a collision to fix this. --- Engine/source/T3D/projectile.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Engine/source/T3D/projectile.cpp b/Engine/source/T3D/projectile.cpp index ddff494c7..86886c2b5 100644 --- a/Engine/source/T3D/projectile.cpp +++ b/Engine/source/T3D/projectile.cpp @@ -1110,7 +1110,6 @@ void Projectile::simulate( F32 dt ) xform.setColumn( 3, rInfo.point ); setTransform( xform ); mCurrPosition = rInfo.point; - mCurrVelocity = Point3F::Zero; // Get the object type before the onCollision call, in case // the object is destroyed. @@ -1141,7 +1140,10 @@ void Projectile::simulate( F32 dt ) onCollision( rInfo.point, rInfo.normal, rInfo.object ); // Next order of business: do we explode on this hit? if ( mCurrTick > mDataBlock->armingDelay || mDataBlock->armingDelay == 0 ) + { + mCurrVelocity = Point3F::Zero; explode( rInfo.point, rInfo.normal, objectType ); + } if ( mDataBlock->isBallistic ) { @@ -1162,6 +1164,10 @@ void Projectile::simulate( F32 dt ) //F32 timeLeft = 1.0f - rInfo.t; newPosition = oldPosition = rInfo.point + rInfo.normal * 0.05f; } + else + { + mCurrVelocity = Point3F::Zero; + } } // re-enable the collision response on the source object now