public void ApplyCollision(IEventTriggerer eventTriggerer, DynamicBody body) { var perp = _line.Normal.Perpendicular(); var impulse = perp*-1.8*perp.Dot(body.Velocity); //TODO: requires mass; body.State = new BodyState(body.Position, body.Velocity + impulse, false); }
public PhysicsEngine(IObservable<IGameEvent> events, IEventTriggerer eventTriggerer, IBarriers barriers) { _eventTriggerer = eventTriggerer; _barriers = barriers; events.OfType<AddGameObjectRequest>() .Subscribe(AddGameObject); events.OfType<PositionChangeRequest>() .Subscribe(ChangePosition); events.OfType<ApplyImpulseRequest>() .Subscribe(ApplyImpulse); events.OfType<AddForceRequest>() .Subscribe(AddForce); events.OfType<RemoveForceRequest>() .Subscribe(RemoveForce); }
public SurfaceManager(IObservable<IGameEvent> events, IEventTriggerer eventTriggerer) { _eventTriggerer = eventTriggerer; events.OfType<AddSurfaceRequest>().Subscribe(AddSurface); events.OfType<PositionChanged>().Subscribe(PositionChanged); }
public void Apply(IEventTriggerer eventTriggerer) { throw new NotImplementedException(); }
public GameEngine(IPhysicsEngine physicsEngine, ISurfaceManager surfaceManager, IEventTriggerer eventTriggerer) { _physicsEngine = physicsEngine; _surfaceManager = surfaceManager; _eventTriggerer = eventTriggerer; }