コード例 #1
0
        /// <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);
        }