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));
            }
        }
Example #2
0
 internal void SetCollision(PhysicsObject obj1, PhysicsObject obj2)
 {
     points.Clear();
     Object1 = obj1;
     Object2 = obj2;
 }
Example #3
0
 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;
 }