//================================================================================ void Update() { if (inputSettings.movementInputName == "") { ErrorHandling.LogError("Warning [FirstPersonView_TranslationalMotionController] : " + "Please specify the (correct) name of the movement VirtualJoystick."); } else { joystickAxis = VirtualJoystick.GetAxis(inputSettings.movementInputName); VirtualJoystick.GetAngleAndMagnitude(inputSettings.movementInputName, out joystickAngle, out joystickMagnitude); } if (inputSettings.runInputName == "") { ErrorHandling.LogError("Warning [FirstPersonView_TranslationalMotionController] : " + "Please specify the (correct) name of runInputName in the inspector"); } else { switch (inputSettings.runInputStyle) { case RunJumpInputStyle.VirtualJoystick_DoubleTap: isRunning = VirtualJoystick.GetDoubleTap(inputSettings.runInputName); break; case RunJumpInputStyle.VirtualJoystick_DoubleTapHold: isRunning = VirtualJoystick.GetDoubleTapHold(inputSettings.runInputName); break; case RunJumpInputStyle.VirtualTouchpad_DoubleTap: isRunning = VirtualTouchpad.GetDoubleTap(inputSettings.runInputName); break; case RunJumpInputStyle.VirtualTouchpad_DoubleTapHold: isRunning = VirtualTouchpad.GetDoubleTapHold(inputSettings.runInputName); break; case RunJumpInputStyle.VirtualButton_GoingDown: isRunning = VirtualButton.GetButtonDown(inputSettings.runInputName); break; case RunJumpInputStyle.VirtualButton_Down: isRunning = VirtualButton.GetButton(inputSettings.runInputName); break; case RunJumpInputStyle.None: isRunning = false; break; default: isRunning = false; break; } } if (inputSettings.jumpInputName == "") { ErrorHandling.LogError("Warning [FirstPersonView_TranslationalMotionController] : " + "Please specify the (correct) name of jumpInputName in the inspector"); } else { switch (inputSettings.jumpInputStyle) { case RunJumpInputStyle.VirtualJoystick_DoubleTap: isJumping = VirtualJoystick.GetDoubleTap(inputSettings.jumpInputName); break; case RunJumpInputStyle.VirtualJoystick_DoubleTapHold: isJumping = VirtualJoystick.GetDoubleTapHold(inputSettings.jumpInputName); break; case RunJumpInputStyle.VirtualTouchpad_DoubleTap: isJumping = VirtualTouchpad.GetDoubleTap(inputSettings.jumpInputName); break; case RunJumpInputStyle.VirtualTouchpad_DoubleTapHold: isJumping = VirtualTouchpad.GetDoubleTapHold(inputSettings.jumpInputName); break; case RunJumpInputStyle.VirtualButton_GoingDown: isJumping = VirtualButton.GetButtonDown(inputSettings.jumpInputName); break; case RunJumpInputStyle.VirtualButton_Down: isJumping = VirtualButton.GetButton(inputSettings.jumpInputName); break; case RunJumpInputStyle.None: isJumping = false; break; default: isJumping = false; break; } } } // void Update ()
//================================================================================ public override void OnInspectorGUI() { virtualTouchpadScript = target as VirtualTouchpad; EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel (" "); AddTouchpad (); ToggleHelp (); } EditorGUILayout.EndHorizontal(); ShowHelp (); int i = 0; bool removeItem = false; int itemToRemove = -1; bool moveItem = false; int itemToMove = -1; int itemMoveDirection = 0; foreach (VirtualTouchpad.Touchpad touchpad in virtualTouchpadScript.virtualTouchpads) { EditorGUILayout.BeginHorizontal(); { touchpad.showSettingsInInspector = EditorGUILayout.Foldout (touchpad.showSettingsInInspector, "[" + (i+1) + "] " + touchpad.name); touchpad.enabled = EditorGUILayout.Toggle(" " ,touchpad.enabled); if (GUILayout.Button("<")) { moveItem = true; itemToMove = i; itemMoveDirection = -1; } if (GUILayout.Button(">")) { moveItem = true; itemToMove = i; itemMoveDirection = 1; } EditorGUILayout.LabelField (" ", GUILayout.Width (8)); if (GUILayout.Button("-")) { removeItem = true; itemToRemove = i; } } EditorGUILayout.EndHorizontal(); if (touchpad.showSettingsInInspector) { touchpad.name = EditorGUILayout.TextField ("Name", touchpad.name); EditorGUILayout.BeginHorizontal (); { EditorGUILayout.PrefixLabel ("Background Texture"); touchpad.backgroundTexture = EditorGUILayout.ObjectField(touchpad.backgroundTexture,typeof(Texture),false) as Texture; touchpad.hideBackgroundTexture = EditorGUILayout.ToggleLeft("Hide",touchpad.hideBackgroundTexture, GUILayout.Width(40)); } EditorGUILayout.EndHorizontal(); if (touchpad.backgroundTexture) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("Horizontal"); float horizontalMin = touchpad.touchpadRect.x; float horizontalMax = touchpad.touchpadRect.x + touchpad.touchpadRect.width; EditorGUILayout.MinMaxSlider(ref horizontalMin, ref horizontalMax, 0f, 1f); horizontalMin = Mathf.Round(horizontalMin * 100f) * 0.01f; horizontalMax = Mathf.Round(horizontalMax * 100f) * 0.01f; touchpad.touchpadRect.x = horizontalMin; touchpad.touchpadRect.width = horizontalMax - touchpad.touchpadRect.x; EditorGUILayout.LabelField(""+horizontalMin.ToString("F2")+"/"+horizontalMax.ToString("F2"), GUILayout.Width(60)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("Vertical"); float verticalMin = 1f-(touchpad.touchpadRect.y + touchpad.touchpadRect.height); ; float verticalMax = 1f-touchpad.touchpadRect.y; EditorGUILayout.MinMaxSlider(ref verticalMin, ref verticalMax, 0f, 1f); verticalMin = Mathf.Round(verticalMin * 100f) * 0.01f; verticalMax = Mathf.Round(verticalMax * 100f) * 0.01f; touchpad.touchpadRect.y = (1f-verticalMax); touchpad.touchpadRect.height = (1f-verticalMin) - touchpad.touchpadRect.y; EditorGUILayout.LabelField(""+verticalMin.ToString("F2")+"/"+verticalMax.ToString("F2"), GUILayout.Width(60)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { touchpad.axisMultiplier = EditorGUILayout.Vector2Field("Axis Multiplier", touchpad.axisMultiplier); } EditorGUILayout.EndHorizontal(); touchpad.compensateForDeviceRoll = EditorGUILayout.Toggle("Device Roll Compensation",touchpad.compensateForDeviceRoll); touchpad.autoUpdateEnabled = EditorGUILayout.Toggle("Auto Update",touchpad.autoUpdateEnabled); if (touchpad.autoUpdateEnabled) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); touchpad.autoUpdateGyroAccelScript = EditorGUILayout.ToggleLeft(" GyroAccelScript",touchpad.autoUpdateGyroAccelScript); } EditorGUILayout.EndHorizontal(); // SendMessage: Axis EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button ("+")) { touchpad.autoUpdateAxisMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver()); int last = touchpad.autoUpdateAxisMessageReceivers.Count-1; touchpad.autoUpdateAxisMessageReceivers[last].messageReceiver = null; touchpad.autoUpdateAxisMessageReceivers[last].functionName = "Function to call"; } EditorGUILayout.LabelField ("SendMessage: Axis"); } EditorGUILayout.EndHorizontal(); int j = 0; bool removeReceiver = false; int receiverToRemove = -1; foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateAxisMessageReceivers) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("-")) { removeReceiver = true; receiverToRemove = j; } receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver,typeof(GameObject),true) as GameObject; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField ("",GUILayout.Width(20)); receiver.functionName = EditorGUILayout.TextField ("", receiver.functionName); } EditorGUILayout.EndHorizontal(); j++; } if (removeReceiver) { touchpad.autoUpdateAxisMessageReceivers.RemoveAt(receiverToRemove); } // SendMessage: DoubleTap EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button ("+")) { touchpad.autoUpdateDoubleTapMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver()); int last = touchpad.autoUpdateDoubleTapMessageReceivers.Count-1; touchpad.autoUpdateDoubleTapMessageReceivers[last].messageReceiver = null; touchpad.autoUpdateDoubleTapMessageReceivers[last].functionName = "Function to call"; } EditorGUILayout.LabelField ("SendMessage: DoubleTap"); } EditorGUILayout.EndHorizontal(); j = 0; removeReceiver = false; receiverToRemove = -1; foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapMessageReceivers) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("-")) { removeReceiver = true; receiverToRemove = j; } receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver,typeof(GameObject),true) as GameObject; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField ("",GUILayout.Width(20)); receiver.functionName = EditorGUILayout.TextField ("", receiver.functionName); } EditorGUILayout.EndHorizontal(); j++; } if (removeReceiver) { touchpad.autoUpdateDoubleTapMessageReceivers.RemoveAt(receiverToRemove); } // SendMessage: DoubleTapHold EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button ("+")) { touchpad.autoUpdateDoubleTapHoldMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver()); int last = touchpad.autoUpdateDoubleTapHoldMessageReceivers.Count-1; touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].messageReceiver = null; touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].functionName = "Function to call"; } EditorGUILayout.LabelField ("SendMessage: DoubleTapHold"); } EditorGUILayout.EndHorizontal(); j = 0; removeReceiver = false; receiverToRemove = -1; foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapHoldMessageReceivers) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("-")) { removeReceiver = true; receiverToRemove = j; } receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver,typeof(GameObject),true) as GameObject; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField ("",GUILayout.Width(20)); receiver.functionName = EditorGUILayout.TextField ("", receiver.functionName); } EditorGUILayout.EndHorizontal(); j++; } if (removeReceiver) { touchpad.autoUpdateDoubleTapHoldMessageReceivers.RemoveAt(receiverToRemove); } } } if (Application.isPlaying) { EditorGUILayout.BeginHorizontal (); { EditorGUILayout.PrefixLabel ("Debug Info"); EditorGUILayout.LabelField ("Axis = " + touchpad.axis); } EditorGUILayout.EndHorizontal (); } // if (touchpad.showDebugInfoInInspector) } // if (touchpad.showSettingsInInspector) EditorGUILayout.Space(); i++; } if (removeItem) { virtualTouchpadScript.virtualTouchpads.RemoveAt(itemToRemove); } if (moveItem) { int itemToSwap = Mathf.Clamp (itemToMove + itemMoveDirection, 0, i - 1); VirtualTouchpad.Touchpad tmpItem = virtualTouchpadScript.virtualTouchpads[itemToSwap]; virtualTouchpadScript.virtualTouchpads[itemToSwap] = virtualTouchpadScript.virtualTouchpads[itemToMove]; virtualTouchpadScript.virtualTouchpads[itemToMove] = tmpItem; } EditorGUILayout.Space (); if (GUI.changed) { EditorUtility.SetDirty(virtualTouchpadScript); } }
//================================================================================ public override void OnInspectorGUI() { virtualTouchpadScript = target as VirtualTouchpad; EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); AddTouchpad(); ToggleHelp(); } EditorGUILayout.EndHorizontal(); ShowHelp(); int i = 0; bool removeItem = false; int itemToRemove = -1; bool moveItem = false; int itemToMove = -1; int itemMoveDirection = 0; foreach (VirtualTouchpad.Touchpad touchpad in virtualTouchpadScript.virtualTouchpads) { EditorGUILayout.BeginHorizontal(); { touchpad.showSettingsInInspector = EditorGUILayout.Foldout(touchpad.showSettingsInInspector, "[" + (i + 1) + "] " + touchpad.name); touchpad.enabled = EditorGUILayout.Toggle(" ", touchpad.enabled); if (GUILayout.Button("<")) { moveItem = true; itemToMove = i; itemMoveDirection = -1; } if (GUILayout.Button(">")) { moveItem = true; itemToMove = i; itemMoveDirection = 1; } EditorGUILayout.LabelField(" ", GUILayout.Width(8)); if (GUILayout.Button("-")) { removeItem = true; itemToRemove = i; } } EditorGUILayout.EndHorizontal(); if (touchpad.showSettingsInInspector) { touchpad.name = EditorGUILayout.TextField("Name", touchpad.name); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("Background Texture"); touchpad.backgroundTexture = EditorGUILayout.ObjectField(touchpad.backgroundTexture, typeof(Texture), false) as Texture; touchpad.hideBackgroundTexture = EditorGUILayout.ToggleLeft("Hide", touchpad.hideBackgroundTexture, GUILayout.Width(40)); } EditorGUILayout.EndHorizontal(); if (touchpad.backgroundTexture) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("Horizontal"); float horizontalMin = touchpad.touchpadRect.x; float horizontalMax = touchpad.touchpadRect.x + touchpad.touchpadRect.width; EditorGUILayout.MinMaxSlider(ref horizontalMin, ref horizontalMax, 0f, 1f); horizontalMin = Mathf.Round(horizontalMin * 100f) * 0.01f; horizontalMax = Mathf.Round(horizontalMax * 100f) * 0.01f; touchpad.touchpadRect.x = horizontalMin; touchpad.touchpadRect.width = horizontalMax - touchpad.touchpadRect.x; EditorGUILayout.LabelField("" + horizontalMin.ToString("F2") + "/" + horizontalMax.ToString("F2"), GUILayout.Width(60)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("Vertical"); float verticalMin = 1f - (touchpad.touchpadRect.y + touchpad.touchpadRect.height);; float verticalMax = 1f - touchpad.touchpadRect.y; EditorGUILayout.MinMaxSlider(ref verticalMin, ref verticalMax, 0f, 1f); verticalMin = Mathf.Round(verticalMin * 100f) * 0.01f; verticalMax = Mathf.Round(verticalMax * 100f) * 0.01f; touchpad.touchpadRect.y = (1f - verticalMax); touchpad.touchpadRect.height = (1f - verticalMin) - touchpad.touchpadRect.y; EditorGUILayout.LabelField("" + verticalMin.ToString("F2") + "/" + verticalMax.ToString("F2"), GUILayout.Width(60)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { touchpad.axisMultiplier = EditorGUILayout.Vector2Field("Axis Multiplier", touchpad.axisMultiplier); } EditorGUILayout.EndHorizontal(); touchpad.compensateForDeviceRoll = EditorGUILayout.Toggle("Device Roll Compensation", touchpad.compensateForDeviceRoll); touchpad.autoUpdateEnabled = EditorGUILayout.Toggle("Auto Update", touchpad.autoUpdateEnabled); if (touchpad.autoUpdateEnabled) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); touchpad.autoUpdateGyroAccelScript = EditorGUILayout.ToggleLeft(" GyroAccelScript", touchpad.autoUpdateGyroAccelScript); } EditorGUILayout.EndHorizontal(); // SendMessage: Axis EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("+")) { touchpad.autoUpdateAxisMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver()); int last = touchpad.autoUpdateAxisMessageReceivers.Count - 1; touchpad.autoUpdateAxisMessageReceivers[last].messageReceiver = null; touchpad.autoUpdateAxisMessageReceivers[last].functionName = "Function to call"; } EditorGUILayout.LabelField("SendMessage: Axis"); } EditorGUILayout.EndHorizontal(); int j = 0; bool removeReceiver = false; int receiverToRemove = -1; foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateAxisMessageReceivers) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("-")) { removeReceiver = true; receiverToRemove = j; } receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver, typeof(GameObject), true) as GameObject; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField("", GUILayout.Width(20)); receiver.functionName = EditorGUILayout.TextField("", receiver.functionName); } EditorGUILayout.EndHorizontal(); j++; } if (removeReceiver) { touchpad.autoUpdateAxisMessageReceivers.RemoveAt(receiverToRemove); } // SendMessage: DoubleTap EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("+")) { touchpad.autoUpdateDoubleTapMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver()); int last = touchpad.autoUpdateDoubleTapMessageReceivers.Count - 1; touchpad.autoUpdateDoubleTapMessageReceivers[last].messageReceiver = null; touchpad.autoUpdateDoubleTapMessageReceivers[last].functionName = "Function to call"; } EditorGUILayout.LabelField("SendMessage: DoubleTap"); } EditorGUILayout.EndHorizontal(); j = 0; removeReceiver = false; receiverToRemove = -1; foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapMessageReceivers) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("-")) { removeReceiver = true; receiverToRemove = j; } receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver, typeof(GameObject), true) as GameObject; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField("", GUILayout.Width(20)); receiver.functionName = EditorGUILayout.TextField("", receiver.functionName); } EditorGUILayout.EndHorizontal(); j++; } if (removeReceiver) { touchpad.autoUpdateDoubleTapMessageReceivers.RemoveAt(receiverToRemove); } // SendMessage: DoubleTapHold EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("+")) { touchpad.autoUpdateDoubleTapHoldMessageReceivers.Add(new VirtualTouchpad.SendMessageReceiver()); int last = touchpad.autoUpdateDoubleTapHoldMessageReceivers.Count - 1; touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].messageReceiver = null; touchpad.autoUpdateDoubleTapHoldMessageReceivers[last].functionName = "Function to call"; } EditorGUILayout.LabelField("SendMessage: DoubleTapHold"); } EditorGUILayout.EndHorizontal(); j = 0; removeReceiver = false; receiverToRemove = -1; foreach (VirtualTouchpad.SendMessageReceiver receiver in touchpad.autoUpdateDoubleTapHoldMessageReceivers) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("-")) { removeReceiver = true; receiverToRemove = j; } receiver.messageReceiver = EditorGUILayout.ObjectField(receiver.messageReceiver, typeof(GameObject), true) as GameObject; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); EditorGUILayout.LabelField("", GUILayout.Width(20)); receiver.functionName = EditorGUILayout.TextField("", receiver.functionName); } EditorGUILayout.EndHorizontal(); j++; } if (removeReceiver) { touchpad.autoUpdateDoubleTapHoldMessageReceivers.RemoveAt(receiverToRemove); } } } if (Application.isPlaying) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("Debug Info"); EditorGUILayout.LabelField("Axis = " + touchpad.axis); } EditorGUILayout.EndHorizontal(); } // if (touchpad.showDebugInfoInInspector) } // if (touchpad.showSettingsInInspector) EditorGUILayout.Space(); i++; } if (removeItem) { virtualTouchpadScript.virtualTouchpads.RemoveAt(itemToRemove); } if (moveItem) { int itemToSwap = Mathf.Clamp(itemToMove + itemMoveDirection, 0, i - 1); VirtualTouchpad.Touchpad tmpItem = virtualTouchpadScript.virtualTouchpads[itemToSwap]; virtualTouchpadScript.virtualTouchpads[itemToSwap] = virtualTouchpadScript.virtualTouchpads[itemToMove]; virtualTouchpadScript.virtualTouchpads[itemToMove] = tmpItem; } EditorGUILayout.Space(); if (GUI.changed) { EditorUtility.SetDirty(virtualTouchpadScript); } } // public override void OnInspectorGUI()