t1 / TFDContents / Assets / KinectDemos / InteractionDemo / Scripts / GuiWindowScript.cs @ 3
이력 | 보기 | 이력해설 | 다운로드 (3.31 KB)
| 1 | using UnityEngine; | 
|---|---|
| 2 | using System.Collections; | 
| 3 |  | 
| 4 | public class GuiWindowScript : MonoBehaviour | 
| 5 | {
 | 
| 6 | 	[Tooltip("GUI-Window rectangle in screen coordinates (pixels).")]
 | 
| 7 | public Rect guiWindowRect = new Rect(-140, 40, 140, 420); | 
| 8 | 	[Tooltip("GUI-Window skin (optional).")]
 | 
| 9 | public GUISkin guiSkin; | 
| 10 |  | 
| 11 | // public parameters | 
| 12 | 	[Tooltip("Reference to the plane below the draggable objects.")]
 | 
| 13 | public GameObject planeObj = null; | 
| 14 | 	[Tooltip("Whether the window is currently invisible or not.")]
 | 
| 15 | public bool hiddenWindow = false; | 
| 16 |  | 
| 17 | private bool resetObjectsClicked = false; | 
| 18 | private bool hideWindowClicked = false; | 
| 19 | private bool isGravityOn = true; | 
| 20 | private bool isPlaneOn = true; | 
| 21 | private bool isControlMouseOn = true; | 
| 22 |  | 
| 23 | private string label1Text = string.Empty; | 
| 24 | private string label2Text = string.Empty; | 
| 25 |  | 
| 26 |  | 
| 27 | void Start() | 
| 28 | 	{
 | 
| 29 | 		planeObj = GameObject.Find("Plane");
 | 
| 30 | } | 
| 31 |  | 
| 32 |  | 
| 33 | private void ShowGuiWindow(int windowID) | 
| 34 | 	{
 | 
| 35 | GUILayout.BeginVertical(); | 
| 36 |  | 
| 37 | GUILayout.Space(30); | 
| 38 | isPlaneOn = GUILayout.Toggle(isPlaneOn, "Plane On"); | 
| 39 | SetPlaneVisible(isPlaneOn); | 
| 40 |  | 
| 41 | GUILayout.Space(30); | 
| 42 | isGravityOn = GUILayout.Toggle(isGravityOn, "Gravity On"); | 
| 43 | SetGravity(isGravityOn); | 
| 44 |  | 
| 45 | GUILayout.Space(30); | 
| 46 | isControlMouseOn = GUILayout.Toggle(isControlMouseOn, "Control Mouse"); | 
| 47 | SetMouseControl(isControlMouseOn); | 
| 48 |  | 
| 49 | GUILayout.FlexibleSpace(); | 
| 50 |  | 
| 51 | 		resetObjectsClicked = GUILayout.Button("Reset Objects");
 | 
| 52 | if(resetObjectsClicked) | 
| 53 | 		{
 | 
| 54 | //label1Text = "Resetting objects..."; | 
| 55 | ResetObjects(resetObjectsClicked); | 
| 56 | } | 
| 57 |  | 
| 58 | GUILayout.Label(label1Text); | 
| 59 |  | 
| 60 | 		hideWindowClicked = GUILayout.Button("Hide Options");
 | 
| 61 | if(hideWindowClicked) | 
| 62 | 		{
 | 
| 63 | //label2Text = "Hiding options window..."; | 
| 64 | HideWindow(hideWindowClicked); | 
| 65 | } | 
| 66 |  | 
| 67 | GUILayout.Label(label2Text); | 
| 68 | GUILayout.EndVertical(); | 
| 69 |  | 
| 70 | // Make the window draggable. | 
| 71 | GUI.DragWindow(); | 
| 72 | } | 
| 73 |  | 
| 74 |  | 
| 75 | void OnGUI() | 
| 76 | 	{
 | 
| 77 | if(!hiddenWindow) | 
| 78 | 		{
 | 
| 79 | Rect windowRect = guiWindowRect; | 
| 80 | if(windowRect.x < 0) | 
| 81 | windowRect.x += Screen.width; | 
| 82 | if(windowRect.y < 0) | 
| 83 | windowRect.y += Screen.height; | 
| 84 |  | 
| 85 | GUI.skin = guiSkin; | 
| 86 | guiWindowRect = GUI.Window(1, windowRect, ShowGuiWindow, "Options"); | 
| 87 | } | 
| 88 | } | 
| 89 |  | 
| 90 |  | 
| 91 | // set gravity on or off | 
| 92 | private void SetGravity(bool gravityOn) | 
| 93 | 	{
 | 
| 94 | GrabDropScript compGrabDrop = GetComponent<GrabDropScript>(); | 
| 95 |  | 
| 96 | if(compGrabDrop != null && compGrabDrop.useGravity != gravityOn) | 
| 97 | 		{
 | 
| 98 | compGrabDrop.useGravity = gravityOn; | 
| 99 | } | 
| 100 | } | 
| 101 |  | 
| 102 | // make plane visible or not | 
| 103 | private void SetPlaneVisible(bool planeOn) | 
| 104 | 	{
 | 
| 105 | if(planeObj && planeObj.activeInHierarchy != planeOn) | 
| 106 | 		{
 | 
| 107 | planeObj.SetActive(planeOn); | 
| 108 | } | 
| 109 | } | 
| 110 |  | 
| 111 | // turn off or on mouse-cursor control | 
| 112 | private void SetMouseControl(bool controlMouseOn) | 
| 113 | 	{
 | 
| 114 | InteractionManager manager = InteractionManager.Instance; | 
| 115 |  | 
| 116 | if(manager && manager.IsInteractionInited()) | 
| 117 | 		{
 | 
| 118 | if(manager.controlMouseCursor != controlMouseOn) | 
| 119 | 			{
 | 
| 120 | manager.controlMouseCursor = controlMouseOn; | 
| 121 | } | 
| 122 | } | 
| 123 | } | 
| 124 |  | 
| 125 | // reset objects if needed | 
| 126 | private void ResetObjects(bool resetObjs) | 
| 127 | 	{
 | 
| 128 | if(resetObjs) | 
| 129 | 		{
 | 
| 130 | GrabDropScript compGrabDrop = GetComponent<GrabDropScript>(); | 
| 131 |  | 
| 132 | if(compGrabDrop != null) | 
| 133 | 			{
 | 
| 134 | compGrabDrop.resetObjects = true; | 
| 135 | } | 
| 136 | } | 
| 137 | } | 
| 138 |  | 
| 139 | // hide options window | 
| 140 | private void HideWindow(bool hideWin) | 
| 141 | 	{
 | 
| 142 | if(hideWin) | 
| 143 | 		{
 | 
| 144 | hiddenWindow = true; | 
| 145 | } | 
| 146 | } | 
| 147 |  | 
| 148 |  | 
| 149 | } |