public CollisionData Test(SatBodyData body1, SatBodyData body2) { bool bodiesSet = body1.Vertices.Length > 0 && body1.Normals.Length > 0 && body2.Vertices.Length > 0 && body2.Normals.Length > 0; if (!bodiesSet) { Logger.Error("Bodies for SAT test not set correctly"); return(new CollisionData()); } Projection1 = new SatProjectionData(); Projection2 = new SatProjectionData(); CollisionData c1 = ProjectNormals(body1, body2); if (!c1.Intersecting) { return(c1); } CollisionData c2 = ProjectNormals(body2, body1); if (!c2.Intersecting) { return(c2); } CollisionData result = c1; if (c1.Depth < c2.Depth) { result = c2; result.Normal = -1.0f * result.Normal; } return(result); }
public float GetMaxOverlap(SatProjectionData projectionData) { return(System.Math.Max(Max - projectionData.Min, projectionData.Max - Min)); }
public bool Overlaps(SatProjectionData projectionData) { return(projectionData.Max > Min && projectionData.Min < Max); }