using PixiEditor.Models.Position; using System; using System.Collections.Generic; using System.Text; using System.Windows.Media; namespace PixiEditor.Models.Controllers { public class MouseMovementController { public List LastMouseMoveCoordinates { get; } = new List(); public event EventHandler MousePositionChanged; public event EventHandler StoppedRecordingChanges; public bool IsRecordingChanges { get; private set; } = false; public void StartRecordingMouseMovementChanges() { if (IsRecordingChanges == false) { LastMouseMoveCoordinates.Clear(); IsRecordingChanges = true; } } public void RecordMouseMovementChange(Coordinates mouseCoordinates) { if (IsRecordingChanges == true) { if (LastMouseMoveCoordinates.Count == 0 || mouseCoordinates != LastMouseMoveCoordinates[LastMouseMoveCoordinates.Count - 1]) { LastMouseMoveCoordinates.Add(mouseCoordinates); MousePositionChanged?.Invoke(this, new MouseMovementEventArgs(mouseCoordinates)); } } } public void StopRecordingMouseMovementChanges() { if (IsRecordingChanges) { IsRecordingChanges = false; StoppedRecordingChanges?.Invoke(this, EventArgs.Empty); } } } } public class MouseMovementEventArgs : EventArgs { public Coordinates NewPosition { get; set; } public MouseMovementEventArgs(Coordinates mousePosition) { NewPosition = mousePosition; } }