12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using System.Collections.Generic;
- namespace UnityEngine.InputSystem.Utilities
- {
- /// <summary>
- /// Compare two <see cref="Vector2"/> by magnitude.
- /// </summary>
- /// <example>
- /// <code>
- /// </code>
- /// public class CompositeWithVector2Part : InputBindingComposite<Vector2>
- /// {
- /// [InputControl(layout = "Vector2")]
- /// public int part;
- ///
- /// public override Vector2 ReadValue(ref InputBindingCompositeContext context)
- /// {
- /// // Return the Vector3 with the greatest magnitude.
- /// return context.ReadValue<Vector2, Vector2MagnitudeComparer>(part);
- /// }
- /// }
- /// </example>
- public struct Vector2MagnitudeComparer : IComparer<Vector2>
- {
- public int Compare(Vector2 x, Vector2 y)
- {
- var lenx = x.sqrMagnitude;
- var leny = y.sqrMagnitude;
- if (lenx < leny)
- return -1;
- if (lenx > leny)
- return 1;
- return 0;
- }
- }
- /// <summary>
- /// Compare two <see cref="Vector3"/> by magnitude.
- /// </summary>
- /// <example>
- /// <code>
- /// </code>
- /// public class CompositeWithVector3Part : InputBindingComposite<Vector3>
- /// {
- /// [InputControl(layout = "Vector3")]
- /// public int part;
- ///
- /// public override Vector3 ReadValue(ref InputBindingCompositeContext context)
- /// {
- /// // Return the Vector3 with the greatest magnitude.
- /// return context.ReadValue<Vector3, Vector2MagnitudeComparer>(part);
- /// }
- /// }
- /// </example>
- public struct Vector3MagnitudeComparer : IComparer<Vector3>
- {
- public int Compare(Vector3 x, Vector3 y)
- {
- var lenx = x.sqrMagnitude;
- var leny = y.sqrMagnitude;
- if (lenx < leny)
- return -1;
- if (lenx > leny)
- return 1;
- return 0;
- }
- }
- }
|