public void BounceOffScreenEdge() { var rect = new FilledRect(new Rectangle(ScreenSpace.Current.Viewport.TopLeft, new Size(0.2f)), Color.Red); rect.Add(new SimplePhysics.Data { Gravity = Vector2D.Zero, Velocity = new Vector2D(-0.1f, 0.0f) }); rect.Start<SimplePhysics.Move>(); rect.Start<SimplePhysics.BounceIfAtScreenEdge>(); var collided = false; rect.Get<SimplePhysics.Data>().Bounced += () => collided = true; AdvanceTimeAndUpdateEntities(); Assert.IsTrue(collided); Assert.AreEqual(0.1f, rect.Get<SimplePhysics.Data>().Velocity.X); }
public void RenderRotatingRect() { var rect = new FilledRect(Rectangle.FromCenter(Vector2D.Half, new Size(0.2f)), Color.Orange) { Rotation = 0 }; rect.Add(new SimplePhysics.Data { Gravity = Vector2D.Zero, RotationSpeed = 5 }); rect.Start<SimplePhysics.Rotate>(); }
public void RotateAdvancesAngleCorrectly() { var rect = new FilledRect(new Rectangle(ScreenSpace.Current.Viewport.TopLeft, new Size(0.2f)), Color.Red); rect.Rotation = 0; rect.Add(new SimplePhysics.Data { Gravity = Vector2D.Zero, RotationSpeed = 0.1f }); rect.Start<SimplePhysics.Rotate>(); AdvanceTimeAndUpdateEntities(); Assert.Greater(rect.Rotation, 0); }