From 3c39e6709db6fa2da55c0ac79f4babb9affd7d3d Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 25 Jan 2024 21:53:28 +0300 Subject: [PATCH] fix: Collision Detector CircleCircle Depth Calculation Fixed --- Engine.Physics2D/CollisionDetector.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Engine.Physics2D/CollisionDetector.cs b/Engine.Physics2D/CollisionDetector.cs index 648f9e9..8829d57 100644 --- a/Engine.Physics2D/CollisionDetector.cs +++ b/Engine.Physics2D/CollisionDetector.cs @@ -50,15 +50,15 @@ public class CollisionDetector : ICollisionDetector collisionInformation = default; Vector2D leftToRightCenter = left.CircleWorld.Center.FromTo(right.CircleWorld.Center); - float distanceCircleCenterSquared = leftToRightCenter.MagnitudeSquared; - float radiusSumSquared = left.CircleWorld.RadiusSquared + right.CircleWorld.RadiusSquared; + float distanceCircleCenter = leftToRightCenter.Magnitude; + float radiusSum = left.CircleWorld.Radius + right.CircleWorld.Radius; - float circleSurfaceDistanceSquared = distanceCircleCenterSquared - radiusSumSquared; + float circleSurfaceDistance = distanceCircleCenter - radiusSum; - bool collision = circleSurfaceDistanceSquared <= 0f; + bool collision = circleSurfaceDistance <= 0f; if (collision) - collisionInformation = new(left, right, leftToRightCenter.Normalized, Math.Sqrt(circleSurfaceDistanceSquared)); + collisionInformation = new(left, right, leftToRightCenter.Normalized, -circleSurfaceDistance); return collision; }