Nez.ArcadeRigidbody.processCollision C# (CSharp) Method

processCollision() public method

handles the collision of two non-overlapping rigidbodies. New velocities will be assigned to each rigidbody as appropriate.
public processCollision ( ArcadeRigidbody other, Vector2 &minimumTranslationVector ) : void
other ArcadeRigidbody Other.
minimumTranslationVector Vector2
return void
		void processCollision( ArcadeRigidbody other, ref Vector2 minimumTranslationVector )
		{
			// we compute a response for the two colliding objects. The calculations are based on the relative velocity of the objects
			// which gets reflected along the collided surface normal. Then a part of the response gets added to each object based on mass.
			var relativeVelocity = velocity - other.velocity;

			calculateResponseVelocity( ref relativeVelocity, ref minimumTranslationVector, out relativeVelocity );

			// now we use the masses to linearly scale the response on both rigidbodies
			var totalInverseMass = _inverseMass + other._inverseMass;
			var ourResponseFraction = _inverseMass / totalInverseMass;
			var otherResponseFraction = other._inverseMass / totalInverseMass;

			velocity += relativeVelocity * ourResponseFraction;
			other.velocity -= relativeVelocity * otherResponseFraction;
		}