internal void AddCollisionPair(PhysicsObject obj1, PhysicsObject obj2, VectorPair[] points, Vector2 normal, float penetration, bool isSecond) { Collision col = null; for (int i = 0; i < collisions.Count; i++) { if (collisions[i].Object1 == obj1 && collisions[i].Object2 == obj2) { col = collisions[i]; break; } } if (col == null) { col = new Collision(); col.SetCollision(obj1, obj2); collisions.Add(col); } for (int i = 0; i < points.Length; i++) { if (isSecond) col.Points.Add(new CollisionPoint(normal, points[i].ContactB, penetration)); else col.Points.Add(new CollisionPoint(normal, points[i].ContactA, penetration)); } }
internal void SetCollision(PhysicsObject obj1, PhysicsObject obj2) { points.Clear(); Object1 = obj1; Object2 = obj2; }
public bool IntersectsWith(PhysicsObject second, out Vector2 mtv) { mtv = default(Vector2); if ((this.Center - second.Center).Length < this.radius + second.radius) return this.Polygon.IntersectsWith(second.Polygon, out mtv); else return false; }