using System; using System.Runtime.InteropServices; using UnityEngine; namespace UnityEngine.XR.ARSubsystems { /// /// Parameters of the Unity Camera that may be necessary/useful to the provider. /// [StructLayout(LayoutKind.Sequential)] public struct XRCameraParams : IEquatable { /// /// Distance from the camera to the near plane. /// /// /// Distance from the camera to the near plane. /// public float zNear { get { return m_ZNear; } set { m_ZNear = value; } } float m_ZNear; /// /// Distance from the camera to the far plane. /// /// /// Distance from the camera to the far plane. /// public float zFar { get { return m_ZFar; } set { m_ZFar = value; } } float m_ZFar; /// /// Width, in pixels, of the screen resolution. /// /// /// Width, in pixels, of the screen resolution. /// public float screenWidth { get { return m_ScreenWidth; } set { m_ScreenWidth = value; } } float m_ScreenWidth; /// /// Height, in pixels, of the screen resolution. /// /// /// Height, in pixels, of the screen resolution. /// public float screenHeight { get { return m_ScreenHeight; } set { m_ScreenHeight = value; } } float m_ScreenHeight; /// /// The orientation of the screen. /// /// /// The orientation of the screen. /// public ScreenOrientation screenOrientation { get { return m_ScreenOrientation; } set { m_ScreenOrientation = value; } } ScreenOrientation m_ScreenOrientation; public bool Equals(XRCameraParams other) { return (m_ZNear.Equals(other.m_ZNear) && m_ZFar.Equals(other.m_ZFar) && m_ScreenWidth.Equals(other.m_ScreenWidth) && m_ScreenHeight.Equals(other.m_ScreenHeight) && m_ScreenOrientation.Equals(other.m_ScreenOrientation)); } public override bool Equals(System.Object obj) { return ((obj is XRCameraParams) && Equals((XRCameraParams)obj)); } public static bool operator ==(XRCameraParams lhs, XRCameraParams rhs) { return lhs.Equals(rhs); } public static bool operator !=(XRCameraParams lhs, XRCameraParams rhs) { return !lhs.Equals(rhs); } public override int GetHashCode() { int hashCode = 486187739; unchecked { hashCode = (hashCode * 486187739) + m_ZNear.GetHashCode(); hashCode = (hashCode * 486187739) + m_ZFar.GetHashCode(); hashCode = (hashCode * 486187739) + m_ScreenWidth.GetHashCode(); hashCode = (hashCode * 486187739) + m_ScreenHeight.GetHashCode(); hashCode = (hashCode * 486187739) + ((int)m_ScreenOrientation).GetHashCode(); } return hashCode; } public override string ToString() { return string.Format("zNear:{0} zFar:{1} screen:{2}x{3}({4})", m_ZNear.ToString("0.000"), m_ZFar.ToString("0.000"), m_ScreenWidth.ToString(), m_ScreenHeight.ToString(), m_ScreenOrientation.ToString()); } } }