#region License /* FNA - XNA4 Reimplementation for Desktop Platforms * Copyright 2009-2020 Ethan Lee and the MonoGame Team * * Released under the Microsoft Public License. * See LICENSE for details. */ #endregion #region Using Statements using System; #endregion namespace Microsoft.Xna.Framework.Input.Touch { // https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.touch.touchlocation.aspx public struct TouchLocation : IEquatable { #region Public Properties public int Id { get; private set; } public Vector2 Position { get; private set; } public TouchLocationState State { get; private set; } #endregion #region Private Variables private Vector2 prevPosition; private TouchLocationState prevState; #endregion #region Public Constructors public TouchLocation( int id, TouchLocationState state, Vector2 position ) : this() { Id = id; State = state; Position = position; prevState = TouchLocationState.Invalid; prevPosition = Vector2.Zero; } public TouchLocation( int id, TouchLocationState state, Vector2 position, TouchLocationState previousState, Vector2 previousPosition ) : this() { Id = id; State = state; Position = position; prevState = previousState; prevPosition = previousPosition; } #endregion #region Public Methods public bool Equals(TouchLocation other) { return ( Id == other.Id && Position == other.Position && State == other.State && prevPosition == other.prevPosition && prevState == other.prevState ); } public override bool Equals(object obj) { return (obj is TouchLocation) && Equals((TouchLocation) obj); } public override int GetHashCode() { return Id.GetHashCode() + Position.GetHashCode(); } public override string ToString() { return "{Position:" + Position.ToString() + "}"; } public bool TryGetPreviousLocation( out TouchLocation previousLocation ) { previousLocation = new TouchLocation( Id, prevState, prevPosition ); return previousLocation.State != TouchLocationState.Invalid; } #endregion #region Public Static Operator Overloads public static bool operator==( TouchLocation value1, TouchLocation value2 ) { return value1.Equals(value2); } public static bool operator!=( TouchLocation value1, TouchLocation value2 ) { return !value1.Equals(value2); } #endregion } }