/// <summary> /// Gets the objects that get to have a force applied to them. /// </summary> /// <returns>The object's id's and appliable forces.</returns> public Dictionary <string, Vector2> GetForces() { if (collisionIds.Count > 0) { Dictionary <string, Vector2> forces = new Dictionary <string, Vector2>(); List <CollisionObject> collisions = BroadPhase.GetCollisionObjects(); for (int i = 0; i < collisionIds.Count; i++) { for (int j = 0; j < collisions.Count; j++) { if (collisions[j].ID == collisionIds[i]) { Vector2 center = Vector2.Zero; switch (collisions[j].Shape) { case CollisionShapes.Circle: { center = ((BoundingCircle)collisions[j].Bounds).Center; } break; case CollisionShapes.Rectangle: { Rectangle rect = (Rectangle)collisions[j].Bounds; center = new Vector2(rect.Center.X, rect.Center.Y); } break; } forces.Add(collisionIds[i], CalculateForce(center)); collisions.Remove(collisions[j]); collisionIds.Remove(collisionIds[i]); } } } collisionIds.Clear(); return(forces); } return(null); }