private void ReleaseMouseEventHandler(object sender, MouseButtonEventArgs e) { if (IsHoldingMouse) { Logic.StopDrag(selectedShape); FollowMouseTimer.Stop(); IsHoldingMouse = false; Logic.UneffectedShapes.Remove(selectedShape); selectedShape = null; } }
public MainWindow() { InitializeComponent(); SetMouseEvents(); SetUiElements(); CreateLogic(); SetRenderTimer(60); SetFollowMouseTimer(); Logic.TimerSwitch = true; void SetMouseEvents() { PreviewMouseDown += HoldMouseEventHandler; PreviewMouseUp += ReleaseMouseEventHandler; } void SetUiElements() { var c1 = new WpfCircle(50); var c2 = new WpfCircle(50); Cnvs.Children.Add(c1.Ellipse); Cnvs.Children.Add(c2.Ellipse); entities = new List <WpfCircle>() { c1, c2 }; } void CreateLogic() { Logic = new PhysicsLogic(GetScreenWidth, GetScreenHeight, entities.ToArray()); } void SetFollowMouseTimer() { FollowMouseTimer = new DispatcherTimer(DispatcherPriority.Send); FollowMouseTimer.Tick += FollowMouseTick; FollowMouseTimer.Interval = TimeSpan.FromMilliseconds(16); } void SetRenderTimer(int ticksPerSecond) { RenderUiTimer = new DispatcherTimer(DispatcherPriority.Send); RenderUiTimer.Tick += Draw; RenderUiTimer.Interval = TimeSpan.FromMilliseconds(1000 / ticksPerSecond); RenderUiTimer.Start(); } }
private void HoldMouseEventHandler(object sender, MouseButtonEventArgs e) { foreach (var s in entities) { if (s.Ellipse.IsMouseOver) { IsHoldingMouse = true; FollowMouseTimer.Start(); selectedShape = s; Logic.UneffectedShapes.Add(s); return; } } }