using System; using System.Collections.Generic; using System.Linq; using System.Text; using Azimuth; using Blacklight.Core; using Annulus; namespace Lodestone.TestBed.Demos { public class PointMassBounce : Demo { Universe universe = new Universe(); List entities = new List(); public override void Initialize() { var worldBounds = new PerforatedPolygon(new SimplePolygon(new Vector[] { new Vector(-1100, 1100), new Vector(-1100,-1100), new Vector(1100,-1100), new Vector(1100, 1100), }), new SimplePolygon[] { new SimplePolygon(new Vector[] { new Vector(-1000, 1000), new Vector(-1000,-1000), new Vector(1000,-1000), new Vector(1000, 1000), })}); entities.Add(Entity.BuildFromPolygon(worldBounds)); entities.ForEach(entity => { universe.AddBody(entity.PhysicsBody); }); } public override void Shutdown() { } public override void Step(Scalar timeStep) { universe.Step(timeStep); } public override Scene Draw() { var returnMe = new Scene(); var cel = new Cel(); returnMe.Cels.Add(cel); foreach (var entity in entities) { var transform = entity.PhysicsBody.Motion.Transform; var drawable = entity.DrawPrimitive; cel.AddEntity(new Blacklight.Core.Entity { drawable = drawable, modelToWorld = transform, }); } return returnMe; } public override string Description { get { return "This demo shows a single point bouncing inside a box."; } } } }