void AddBlockContents()
        {
            List <CollisionObject> collisionObjs = BroadPhase.GetCollisionObjects();

            for (int i = 0; i < collisionObjs.Count; i++)
            {
                foreach (Block b in blocks)
                {
                    switch (collisionObjs[i].Shape)
                    {
                    case CollisionShapes.Rectangle:
                    {
                        Vector2 poc;

                        CollisionType collide = CollisionShapeHelper.Collides(
                            (Rectangle)collisionObjs[i].Bounds, b.Bounds, out poc);

                        if (collide != CollisionType.None)
                        {
                            b.AddID(collisionObjs[i].ID);
                        }
                    }
                    break;

                    case CollisionShapes.Circle:
                    {
                        Vector2 poc;

                        CollisionType collide = CollisionShapeHelper.Collides(
                            b.Bounds, (BoundingCircle)collisionObjs[i].Bounds, out poc);

                        if (collide != CollisionType.None)
                        {
                            b.AddID(collisionObjs[i].ID);
                        }
                    }
                    break;
                    }
                }
            }
        }
Exemple #2
0
        public void _Update()
        {
            int count = collisionComps.Count;

            for (int x = 0; x < count; x++)
            {
                for (int y = 0; y < count; y++)
                {
                    switch (collisionComps[x].Shape)
                    {
                    case CollisionShapes.Circle:
                    {
                        switch (collisionComps[y].Shape)
                        {
                        case CollisionShapes.Circle:
                        {
                            Vector2 poc = Vector2.Zero;

                            CollisionType collides = CollisionShapeHelper.Collides((BoundingCircle)(collisionComps[x].Bounds),
                                                                                   (BoundingCircle)(collisionComps[y].Bounds), out poc);

                            if (collides != CollisionType.None)
                            {
                                CollisionInfo info = new CollisionInfo()
                                {
                                    Instigator     = collisionComps[x],
                                    Collider       = collisionComps[y],
                                    PointOfContact = poc
                                };

                                collisionComps[x].Collided(info);
                            }
                        }
                        break;

                        case CollisionShapes.Rectangle:
                        {
                            Vector2 poc = Vector2.Zero;

                            CollisionType collides = CollisionShapeHelper.Collides((Rectangle)(collisionComps[y].Bounds),
                                                                                   (BoundingCircle)(collisionComps[x].Bounds), out poc);

                            if (collides != CollisionType.None)
                            {
                                CollisionInfo info = new CollisionInfo()
                                {
                                    Instigator     = collisionComps[x],
                                    Collider       = collisionComps[y],
                                    PointOfContact = poc
                                };

                                collisionComps[x].Collided(info);
                            }
                        }
                        break;
                        }
                    }
                    break;

                    case CollisionShapes.Rectangle:
                    {
                        switch (collisionComps[y].Shape)
                        {
                        case CollisionShapes.Circle:
                        {
                            Vector2 poc = Vector2.Zero;

                            CollisionType collides = CollisionShapeHelper.Collides((Rectangle)(collisionComps[x].Bounds),
                                                                                   (BoundingCircle)(collisionComps[y].Bounds), out poc);

                            if (collides != CollisionType.None)
                            {
                                CollisionInfo info = new CollisionInfo()
                                {
                                    Instigator     = collisionComps[x],
                                    Collider       = collisionComps[y],
                                    PointOfContact = poc
                                };

                                collisionComps[x].Collided(info);
                            }
                        }
                        break;

                        case CollisionShapes.Rectangle:
                        {
                            Vector2 poc = Vector2.Zero;

                            CollisionType collides = CollisionShapeHelper.Collides((Rectangle)(collisionComps[x].Bounds),
                                                                                   (Rectangle)(collisionComps[y].Bounds), out poc);

                            if (collides != CollisionType.None)
                            {
                                CollisionInfo info = new CollisionInfo()
                                {
                                    Instigator     = collisionComps[x],
                                    Collider       = collisionComps[y],
                                    PointOfContact = poc
                                };

                                collisionComps[x].Collided(info);
                            }
                        }
                        break;
                        }
                    }
                    break;
                    }
                }
            }
        }