using System.Collections; using System.Collections.Generic; using UnityEngine; using EZXR.Glass.SixDof; using EZXR.Glass.Core; using System; namespace EZXR.Glass.UI { [ExecuteInEditMode] public class SpatialUIController : MonoBehaviour { #region Singleton private static SpatialUIController instance; public static SpatialUIController Instance { get { if (instance == null) { instance = FindObjectOfType(); if (instance == null) { GameObject go = new GameObject("SpatialUIController"); instance = go.AddComponent(); } } return instance; } } #endregion public event Action ReCalculateAllSize; /// /// 中间位相机(通常用于Editor) /// [HideInInspector] public Camera centerCamera; /// /// 左眼相机 /// [HideInInspector] public Camera leftCamera; /// /// 右眼相机 /// [HideInInspector] public Camera rightCamera; /// /// 头的Transform /// [HideInInspector] public Transform headTransform; /// /// 图片的每个像素对应的UnityUnit(Cube的默认边长即为1个UnityUnit) /// public float unitsPerPixel; ////[HideInInspector] public float lastUnitsPerPixel; //public ARUIController() //{ // instance = this; //} private void Awake() { if (Application.isPlaying) { instance = this; } else { #if UNITY_EDITOR //Common.PrefabUtility.UnpackPrefabInstance(gameObject); lastUnitsPerPixel = unitsPerPixel; #endif } } private void Start() { if (Application.isPlaying) { if (HMDPoseTracker.Instance != null) { leftCamera = HMDPoseTracker.Instance.leftCamera != null ? HMDPoseTracker.Instance.leftCamera : null; rightCamera = HMDPoseTracker.Instance.rightCamera != null ? HMDPoseTracker.Instance.rightCamera : null; centerCamera = HMDPoseTracker.Instance.centerCamera != null ? HMDPoseTracker.Instance.centerCamera : null; headTransform = HMDPoseTracker.Instance.transform; } if (leftCamera == null) { Debug.LogError("leftCamera 不存在!"); } if (rightCamera == null) { Debug.LogError("rightCamera 不存在!"); } if (centerCamera == null) { Debug.LogError("centerCamera 不存在!"); } } } #if UNITY_EDITOR public void PerformReCalculateAllSize(float newUnitsPerPixel) { if (ReCalculateAllSize != null) { ReCalculateAllSize(newUnitsPerPixel, true); } } #endif } }