ShakeOptions.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. namespace LitMotion
  3. {
  4. /// <summary>
  5. /// Options for shake motion.
  6. /// </summary>
  7. public struct ShakeOptions : IEquatable<ShakeOptions>, IMotionOptions
  8. {
  9. public int Frequency;
  10. public float DampingRatio;
  11. public Unity.Mathematics.Random RandomState;
  12. public static ShakeOptions Default
  13. {
  14. get
  15. {
  16. return new ShakeOptions()
  17. {
  18. Frequency = 10,
  19. DampingRatio = 1f
  20. };
  21. }
  22. }
  23. public readonly bool Equals(ShakeOptions other)
  24. {
  25. return other.Frequency == Frequency &&
  26. other.DampingRatio == DampingRatio &&
  27. other.RandomState.state == RandomState.state;
  28. }
  29. public override readonly bool Equals(object obj)
  30. {
  31. if (obj is ShakeOptions options) return Equals(options);
  32. return false;
  33. }
  34. public override readonly int GetHashCode()
  35. {
  36. return HashCode.Combine(Frequency, DampingRatio, RandomState);
  37. }
  38. }
  39. }