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; } } } }
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; } } } }