Mercurial > hg > Game > Games
diff Orchestland/Assets/OVR/Scripts/Util/OVRUGUI.cs @ 1:f7675884f2a1
Add Orchestland project
author | Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2015 23:09:20 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orchestland/Assets/OVR/Scripts/Util/OVRUGUI.cs Fri Jul 17 23:09:20 2015 +0900 @@ -0,0 +1,292 @@ +/************************************************************************************ + +Copyright : Copyright 2014 Oculus VR, LLC. All Rights reserved. + +Licensed under the Oculus VR Rift SDK License Version 3.2 (the "License"); +you may not use the Oculus VR Rift SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +http://www.oculusvr.com/licenses/LICENSE-3.2 + +Unless required by applicable law or agreed to in writing, the Oculus VR SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +// Use the Unity new GUI with Unity 4.6 or above. +#if UNITY_4_6 || UNITY_5_0 +#define USE_NEW_GUI +#endif + +using UnityEngine; +#if USE_NEW_GUI +using UnityEngine.UI; +# endif +using System.Collections; + +//------------------------------------------------------------------------------------- +/// <summary> +/// Class for Unity new GUI built in 4.6 +/// </summary> +public class OVRUGUI +{ +#if USE_NEW_GUI + + #region UIGameObject + private static GameObject NewGUIManager; + private static GameObject RiftPresent; + private static GameObject LowPersistence; + private static GameObject VisionMode; + private static GameObject FPS; + private static GameObject Prediction; + private static GameObject IPD; + private static GameObject FOV; + private static GameObject Height; + private static GameObject SpeedRotationMutipler; + private static GameObject DeviceDetection; + private static GameObject ResolutionEyeTexture; + private static GameObject Latencies; + #endregion + + #region VRVariables + [HideInInspector] + public static string strRiftPresent = null; + [HideInInspector] + public static string strLPM = null; //"LowPersistenceMode: ON"; + [HideInInspector] + public static string strVisionMode = null;//"Vision Enabled: ON"; + [HideInInspector] + public static string strFPS = null;//"FPS: 0"; + [HideInInspector] + public static string strIPD = null;//"IPD: 0.000"; + [HideInInspector] + public static string strPrediction = null;//"Pred: OFF"; + [HideInInspector] + public static string strFOV = null;//"FOV: 0.0f"; + [HideInInspector] + public static string strHeight = null;//"Height: 0.0f"; + [HideInInspector] + public static string strSpeedRotationMultipler = null;//"Spd. X: 0.0f Rot. X: 0.0f"; + [HideInInspector] + public static OVRPlayerController PlayerController = null; + [HideInInspector] + public static OVRCameraRig CameraController = null; + //[HideInInspector] + //public static string strDeviceDetection = null;// Device attach / detach + [HideInInspector] + public static string strResolutionEyeTexture = null;// "Resolution : {0} x {1}" + [HideInInspector] + public static string strLatencies = null;// Device attach / detach + #endregion + + [HideInInspector] + public static bool InitUIComponent = false; + private static float offsetY = 55.0f; + private static bool isInited = false; + private static int numOfGUI = 0; + private static GameObject text; + + /// <summary> + /// It's for rift present GUI + /// </summary> + public static void RiftPresentGUI(GameObject GUIMainOBj) + { + RiftPresent = ComponentComposition(RiftPresent); + RiftPresent.transform.parent = GUIMainOBj.transform; + RiftPresent.name = "RiftPresent"; + RectTransform r = RiftPresent.GetComponent<RectTransform>(); + r.localPosition = new Vector3(0.0f, 0.0f, 0.0f); + r.localScale = new Vector3(1.0f, 1.0f, 1.0f); + r.localEulerAngles = Vector3.zero; + + Text t = RiftPresent.GetComponentInChildren<Text>(); + t.text = strRiftPresent; + t.fontSize = 20; + } + + /// <summary> + /// It's for rift present GUI + /// </summary> + public static void UpdateGUI() + { + if (InitUIComponent && !isInited) + { + InitUIComponents(); + } + + UpdateVariable(); + } + + + /// <summary> + /// Update VR Variables + /// </summary> + static void UpdateVariable() + { + NewGUIManager.transform.localPosition = new Vector3(0.0f, 100.0f, 0.0f); + + if (!string.IsNullOrEmpty(strLPM)) + LowPersistence.GetComponentInChildren<Text>().text = strLPM; + if (!string.IsNullOrEmpty(strVisionMode)) + VisionMode.GetComponentInChildren<Text>().text = strVisionMode; + if (!string.IsNullOrEmpty(strFPS)) + FPS.GetComponentInChildren<Text>().text = strFPS; + if (!string.IsNullOrEmpty(strPrediction)) + Prediction.GetComponentInChildren<Text>().text = strPrediction; + if (!string.IsNullOrEmpty(strIPD)) + IPD.GetComponentInChildren<Text>().text = strIPD; + if (!string.IsNullOrEmpty(strFOV)) + FOV.GetComponentInChildren<Text>().text = strFOV; + if (!string.IsNullOrEmpty(strResolutionEyeTexture)) + ResolutionEyeTexture.GetComponentInChildren<Text>().text = strResolutionEyeTexture; + if (!string.IsNullOrEmpty(strLatencies)) + Latencies.GetComponentInChildren<Text>().text = strLatencies; + + if (PlayerController != null) + { + if (!string.IsNullOrEmpty(strHeight)) + Height.GetComponentInChildren<Text>().text = strHeight; + if (!string.IsNullOrEmpty(strSpeedRotationMultipler)) + SpeedRotationMutipler.GetComponentInChildren<Text>().text = strSpeedRotationMultipler; + } + } + + /// <summary> + /// Initialize UI GameObjects + /// </summary> + static void InitUIComponents() + { + float posY = 0.0f; + int fontSize = 20; + + NewGUIManager = new GameObject(); + NewGUIManager.name = "GUIManager"; + NewGUIManager.transform.parent = GameObject.Find("OVRGUIMain").transform; + NewGUIManager.transform.localPosition = Vector3.zero; + NewGUIManager.transform.localEulerAngles = Vector3.zero; + NewGUIManager.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); + + // Print out for Low Persistence Mode + if (!string.IsNullOrEmpty(strLPM)) + { + LowPersistence = UIObjectManager(LowPersistence, "LowPersistence", posY -= offsetY, strLPM, fontSize); + } + + // Print out for VisionMode + if (!string.IsNullOrEmpty(strVisionMode)) + { + VisionMode = UIObjectManager(VisionMode, "VisionMode", posY -= offsetY, strVisionMode, fontSize); + } + + // Print out for FPS + if (!string.IsNullOrEmpty(strFPS)) + { + FPS = UIObjectManager(FPS, "FPS", posY -= offsetY, strFPS, fontSize); + } + + // Print out for Prediction + if (!string.IsNullOrEmpty(strPrediction)) + { + Prediction = UIObjectManager(Prediction, "Prediction", posY -= offsetY, strPrediction, fontSize); + } + + // Print out for IPD + if (!string.IsNullOrEmpty(strIPD)) + { + IPD = UIObjectManager(IPD, "IPD", posY -= offsetY, strIPD, fontSize); + } + + // Print out for FOV + if (!string.IsNullOrEmpty(strFOV)) + { + FOV = UIObjectManager(FOV, "FOV", posY -= offsetY, strFOV, fontSize); + } + + if (PlayerController != null) + { + // Print out for Height + if (!string.IsNullOrEmpty(strHeight)) + { + Height = UIObjectManager(Height, "Height", posY -= offsetY, strHeight, fontSize); + } + + // Print out for Speed Rotation Multiplier + if (!string.IsNullOrEmpty(strSpeedRotationMultipler)) + { + SpeedRotationMutipler = UIObjectManager(SpeedRotationMutipler, "SpeedRotationMutipler", posY -= offsetY, strSpeedRotationMultipler, fontSize); + } + } + + // Print out for Resoulution of Eye Texture + if (!string.IsNullOrEmpty(strResolutionEyeTexture)) + { + ResolutionEyeTexture = UIObjectManager(ResolutionEyeTexture, "Resolution", posY -= offsetY, strResolutionEyeTexture, fontSize); + } + + // Print out for Latency + if (!string.IsNullOrEmpty(strLatencies)) + { + Latencies = UIObjectManager(Latencies, "Latency", posY -= offsetY, strLatencies, 17); + posY = 0.0f; + } + + InitUIComponent = false; + isInited = true; + + } + + static GameObject UIObjectManager(GameObject gameObject, string name, float posY, string text, int fontSize) + { + gameObject = ComponentComposition(gameObject); + gameObject.name = name; + gameObject.transform.parent = NewGUIManager.transform; + + RectTransform r = gameObject.GetComponent<RectTransform>(); + r.localPosition = new Vector3(0.0f, posY -= offsetY, 0.0f); + + Text t = gameObject.GetComponentInChildren<Text>(); + t.text = text; + t.fontSize = fontSize; + gameObject.transform.localEulerAngles = Vector3.zero; + + r.localScale = new Vector3(1.0f, 1.0f, 1.0f); + + return gameObject; + + } + + /// <summary> + /// Component composition + /// </summary> + /// <returns> Composed game object. </returns> + static GameObject ComponentComposition(GameObject GO) + { + GO = new GameObject(); + GO.AddComponent<RectTransform>(); + GO.AddComponent<CanvasRenderer>(); + GO.AddComponent<Image>(); + GO.GetComponent<RectTransform>().sizeDelta = new Vector2(350f, 50f); + GO.GetComponent<Image>().color = new Color(7f / 255f, 45f / 255f, 71f / 255f, 200f / 255f); + + text = new GameObject(); + text.AddComponent<RectTransform>(); + text.AddComponent<CanvasRenderer>(); + text.AddComponent<Text>(); + text.GetComponent<RectTransform>().sizeDelta = new Vector2(350f, 50f); + text.GetComponent<Text>().font = (Font)Resources.Load("DINPro-Bold"); + text.GetComponent<Text>().alignment = TextAnchor.MiddleCenter; + + text.transform.parent = GO.transform; + text.name = "TextBox"; + + return GO; + } + +#endif +}