ZeroVR/ZeroPacientVR/Assets/Octave3D World Builder/Scripts/Camera/CameraDataSnapshot.cs

69 lines
2.2 KiB
C#

#if UNITY_EDITOR
using UnityEngine;
namespace O3DWB
{
public class CameraDataSnapshot
{
#region Private Variables
private TransformSnapshot _transformSnapshot;
private CameraType _cameraType;
#endregion
#region Public Methods
public void TakeSnapshot(Camera camera)
{
_transformSnapshot = new TransformSnapshot();
_transformSnapshot.TakeSnapshot(camera.transform);
_cameraType = camera.orthographic ? CameraType.Orthographic : CameraType.Perspective;
}
public override bool Equals(object value)
{
if (ReferenceEquals(value, null)) return false;
if (ReferenceEquals(value, this)) return true;
if (value.GetType() != this.GetType()) return false;
return IsEqual(value as CameraDataSnapshot);
}
public bool Equals(CameraDataSnapshot cameraDataSnapshot)
{
if (ReferenceEquals(cameraDataSnapshot, null)) return false;
if (ReferenceEquals(cameraDataSnapshot, this)) return true;
return IsEqual(cameraDataSnapshot);
}
public override int GetHashCode()
{
int hash = 13;
hash = (hash * 7) + _transformSnapshot.GetHashCode();
hash = (hash * 7) + _cameraType.GetHashCode();
return hash;
}
public static bool operator ==(CameraDataSnapshot firstSnapshot, CameraDataSnapshot secondSnapshot)
{
return !ReferenceEquals(firstSnapshot, null) &&
!ReferenceEquals(secondSnapshot, null) &&
(ReferenceEquals(firstSnapshot, secondSnapshot) || firstSnapshot.IsEqual(secondSnapshot));
}
public static bool operator !=(CameraDataSnapshot firstSnapshot, CameraDataSnapshot secondSnapshot)
{
return !(firstSnapshot == secondSnapshot);
}
#endregion
#region Private Methods
private bool IsEqual(CameraDataSnapshot cameraDataSnapshot)
{
return _transformSnapshot == cameraDataSnapshot._transformSnapshot &&
_cameraType == cameraDataSnapshot._cameraType;
}
#endregion
}
}
#endif