CameraDataSnapshot.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. namespace O3DWB
  4. {
  5. public class CameraDataSnapshot
  6. {
  7. #region Private Variables
  8. private TransformSnapshot _transformSnapshot;
  9. private CameraType _cameraType;
  10. #endregion
  11. #region Public Methods
  12. public void TakeSnapshot(Camera camera)
  13. {
  14. _transformSnapshot = new TransformSnapshot();
  15. _transformSnapshot.TakeSnapshot(camera.transform);
  16. _cameraType = camera.orthographic ? CameraType.Orthographic : CameraType.Perspective;
  17. }
  18. public override bool Equals(object value)
  19. {
  20. if (ReferenceEquals(value, null)) return false;
  21. if (ReferenceEquals(value, this)) return true;
  22. if (value.GetType() != this.GetType()) return false;
  23. return IsEqual(value as CameraDataSnapshot);
  24. }
  25. public bool Equals(CameraDataSnapshot cameraDataSnapshot)
  26. {
  27. if (ReferenceEquals(cameraDataSnapshot, null)) return false;
  28. if (ReferenceEquals(cameraDataSnapshot, this)) return true;
  29. return IsEqual(cameraDataSnapshot);
  30. }
  31. public override int GetHashCode()
  32. {
  33. int hash = 13;
  34. hash = (hash * 7) + _transformSnapshot.GetHashCode();
  35. hash = (hash * 7) + _cameraType.GetHashCode();
  36. return hash;
  37. }
  38. public static bool operator ==(CameraDataSnapshot firstSnapshot, CameraDataSnapshot secondSnapshot)
  39. {
  40. return !ReferenceEquals(firstSnapshot, null) &&
  41. !ReferenceEquals(secondSnapshot, null) &&
  42. (ReferenceEquals(firstSnapshot, secondSnapshot) || firstSnapshot.IsEqual(secondSnapshot));
  43. }
  44. public static bool operator !=(CameraDataSnapshot firstSnapshot, CameraDataSnapshot secondSnapshot)
  45. {
  46. return !(firstSnapshot == secondSnapshot);
  47. }
  48. #endregion
  49. #region Private Methods
  50. private bool IsEqual(CameraDataSnapshot cameraDataSnapshot)
  51. {
  52. return _transformSnapshot == cameraDataSnapshot._transformSnapshot &&
  53. _cameraType == cameraDataSnapshot._cameraType;
  54. }
  55. #endregion
  56. }
  57. }
  58. #endif