Mercurial > hg > Game > Games
diff Orchestland/Assets/OVR/Scripts/Util/OVRGUI.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/OVRGUI.cs Fri Jul 17 23:09:20 2015 +0900 @@ -0,0 +1,207 @@ +/************************************************************************************ + +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. + +************************************************************************************/ + +using UnityEngine; +using System.Collections.Generic; + +/// <summary> +/// OVRGUI is a GUI help class that provides functions for drawing text and other elements +/// to the screen +/// </summary> +public class OVRGUI +{ + private Font FontReplace = null; + + private float PixelWidth = 1280.0f; + private float PixelHeight = 800.0f; + + // DK1 resolution of W: (1280 / 2) H: 800 + private float DisplayWidth = 1280.0f; + private float DisplayHeight = 800.0f; + + private Rect DrawRect; + + /// <summary> + /// Gets the replacement font. + /// </summary> + /// <param name="fontReplace">Font replace.</param> + public void GetFontReplace(ref Font fontReplace) + { + fontReplace = FontReplace; + } + /// <summary> + /// Sets the font replace. + /// </summary> + /// <param name="fontReplace">Font replace.</param> + public void SetFontReplace(Font fontReplace) + { + FontReplace = fontReplace; + } + + /// <summary> + /// Gets the pixel resolution. + /// </summary> + /// <param name="pixelWidth">Pixel width.</param> + /// <param name="pixelHeight">Pixel height.</param> + public void GetPixelResolution(ref float pixelWidth, ref float pixelHeight) + { + pixelWidth = PixelWidth; + pixelHeight = PixelHeight; + } + /// <summary> + /// Sets the pixel resolution. + /// </summary> + /// <param name="pixelWidth">Pixel width.</param> + /// <param name="pixelHeight">Pixel height.</param> + public void SetPixelResolution(float pixelWidth, float pixelHeight) + { + PixelWidth = pixelWidth; + PixelHeight = pixelHeight; + } + + /// <summary> + /// Gets the display resolution. + /// </summary> + /// <param name="Width">Width.</param> + /// <param name="Height">Height.</param> + public void GetDisplayResolution(ref float Width, ref float Height) + { + Width = DisplayWidth; + Height = DisplayHeight; + } + /// <summary> + /// Sets the display resolution. + /// </summary> + /// <param name="Width">Width.</param> + /// <param name="Height">Height.</param> + public void SetDisplayResolution(float Width, float Height) + { + DisplayWidth = Width; + DisplayHeight = Height; + } + + /// <summary> + /// StereoBox + /// Values go from 0 - PixelSizeX/Y + /// </summary> + /// <param name="X">X.</param> + /// <param name="Y">Y.</param> + /// <param name="wX">W x.</param> + /// <param name="hY">H y.</param> + /// <param name="text">Text.</param> + /// <param name="color">Color.</param> + public void StereoBox(int X, int Y, int wX, int hY, ref string text, Color color) + { + Font prevFont = GUI.skin.font; + GUI.color = color; + // Make sure to change font if it needs replacement + if(GUI.skin.font != FontReplace) GUI.skin.font = FontReplace; + + float s = PixelWidth / DisplayWidth; + + CalcPositionAndSize(X * s, Y * s, wX * s, hY * s, ref DrawRect); + + GUI.Box(DrawRect, text); + + GUI.skin.font = prevFont; + } + + /// <summary> + /// Stereos the box. + /// Values go from 0.0 - 1.0f; normalized approach to rendering GUI objects + /// </summary> + /// <param name="X">X.</param> + /// <param name="Y">Y.</param> + /// <param name="wX">W x.</param> + /// <param name="hY">H y.</param> + /// <param name="text">Text.</param> + /// <param name="color">Color.</param> + public void StereoBox(float X, float Y, float wX, float hY, ref string text, Color color) + { + StereoBox ((int)(X * PixelWidth), + (int)(Y * PixelHeight), + (int)(wX * PixelWidth), + (int)(hY * PixelHeight), + ref text, color); + } + + /// <summary> + /// Draw a stereo texture. + /// </summary> + /// <param name="X">X.</param> + /// <param name="Y">Y.</param> + /// <param name="wX">W x.</param> + /// <param name="hY">H y.</param> + /// <param name="image">Image.</param> + /// <param name="color">Color.</param> + public void StereoDrawTexture(int X, int Y, int wX, int hY, ref Texture image, Color color) + { + GUI.color = color; + // Make sure to change font if it needs replacement + if(GUI.skin.font != FontReplace) GUI.skin.font = FontReplace; + + float s = PixelWidth / DisplayWidth; + + CalcPositionAndSize(X * s, Y * s, wX * s, hY * s, ref DrawRect); + + GUI.DrawTexture(DrawRect, image); + } + /// <summary> + /// Draw a stereo texture. + /// </summary> + /// <param name="X">X.</param> + /// <param name="Y">Y.</param> + /// <param name="wX">W x.</param> + /// <param name="hY">H y.</param> + /// <param name="image">Image.</param> + /// <param name="color">Color.</param> + public void StereoDrawTexture(float X, float Y, float wX, float hY, ref Texture image, Color color) + { + StereoDrawTexture ((int)(X * PixelWidth), + (int)(Y * PixelHeight), + (int)(wX * PixelWidth), + (int)(hY * PixelHeight), + ref image, color); + } + + /// <summary> + /// Calculates the size of the position. + /// </summary> + /// <param name="X">X.</param> + /// <param name="Y">Y.</param> + /// <param name="wX">W x.</param> + /// <param name="hY">H y.</param> + /// <param name="calcPosSize">Calculate position size.</param> + private void CalcPositionAndSize(float X, float Y, float wX, float hY, + ref Rect calcPosSize) + { + float sSX = (float)Screen.width / PixelWidth; + float sSY = (float)Screen.height / PixelHeight; + + calcPosSize.x = X * sSX; + calcPosSize.width = wX * sSX; + calcPosSize.y = Y * sSY; + calcPosSize.height = hY * sSY; + } + +} + +