Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Editor/playerInputManagerEditor.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

936 lines
36 KiB
C#

using UnityEngine;
using System.Collections;
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor (typeof (playerInputManager))]
public class playerInputManagerEditor : Editor
{
SerializedProperty playerID;
SerializedProperty playerIsNonLocalAvatar;
SerializedProperty playerNonLocalAvatarID;
SerializedProperty showDebugActions;
SerializedProperty useOnlyKeyboard;
SerializedProperty mouseSensitivity;
SerializedProperty leftGamepadJoystickSensitivity;
SerializedProperty rightGamepadJoystickSensitivity;
SerializedProperty leftTouchSensitivity;
SerializedProperty rightTouchSensitivity;
SerializedProperty useVerticalAndHorizontalGamepadSensitivity;
SerializedProperty leftGamepadJoystickHorizontalSensitivity;
SerializedProperty leftGamepadJoystickVerticalSensitivity;
SerializedProperty rightGamepadJoystickHorizontalSensitivity;
SerializedProperty rightGamepadJoystickVerticalSensitivity;
SerializedProperty useMovementOrientation;
SerializedProperty horizontalMovementOrientation;
SerializedProperty verticalMovementOrientation;
SerializedProperty useCameraOrientation;
SerializedProperty horizontalCameraOrientation;
SerializedProperty verticalCameraOrientation;
SerializedProperty touchMovementControl;
SerializedProperty touchCameraControl;
SerializedProperty touchPanel;
SerializedProperty usingTouchMovementJoystick;
SerializedProperty inputLerpSpeedTouchMovementButtons;
SerializedProperty useHorizontaTouchMovementButtons;
SerializedProperty useVerticalTouchMovementButtons;
SerializedProperty horizontalTouchMovementButtons;
SerializedProperty verticalTouchMovementButtons;
SerializedProperty inputEnabled;
SerializedProperty inputCurrentlyActive;
SerializedProperty overrideInputValuesActive;
SerializedProperty inputPaused;
SerializedProperty ignoreAllActionsInput;
SerializedProperty ignoreAllAxisInput;
SerializedProperty movementAxis;
SerializedProperty mouseAxis;
SerializedProperty rawMovementAxis;
SerializedProperty usingGamepad;
SerializedProperty usingKeyBoard;
SerializedProperty usingTouchControls;
SerializedProperty usingPlayerMenu;
SerializedProperty manualControlActive;
SerializedProperty manualMovementHorizontalInput;
SerializedProperty manualMovementVerticalInput;
SerializedProperty manualMouseHorizontalInput;
SerializedProperty manualMouseVerticalInput;
SerializedProperty showSingleMultiAxes;
SerializedProperty currentMultiAxesToShow;
SerializedProperty multiAxesList;
SerializedProperty hideSingleMultiAxes;
SerializedProperty input;
SerializedProperty playerControllerManager;
SerializedProperty mainPlayerInputPanelSystem;
SerializedProperty editInputPanelPrefab;
SerializedProperty editInputMenu;
SerializedProperty currentInputPanelListText;
playerInputManager manager;
Color defBackgroundColor;
string [] currentStringList;
string isEnabled;
bool currentlyActive;
string currentButtonMessage;
bool expandedMultiAxesList = false;
bool expandedAxesList = false;
int currentMultiAxesToShowValue;
SerializedProperty currentSingleMultiAxes;
int multiAxesStringIndex;
int axesStringIndex;
playerInputManager.Axes currentAxes;
playerInputManager.multiAxes currentMultiAxes;
int currentAxesArraySize;
int currentMultiAxesArraySize;
GUIStyle buttonStyle = new GUIStyle ();
GUIStyle mainInputListButtonStyle = new GUIStyle ();
void OnEnable ()
{
playerID = serializedObject.FindProperty ("playerID");
playerIsNonLocalAvatar = serializedObject.FindProperty ("playerIsNonLocalAvatar");
playerNonLocalAvatarID = serializedObject.FindProperty ("playerNonLocalAvatarID");
showDebugActions = serializedObject.FindProperty ("showDebugActions");
useOnlyKeyboard = serializedObject.FindProperty ("useOnlyKeyboard");
mouseSensitivity = serializedObject.FindProperty ("mouseSensitivity");
leftGamepadJoystickSensitivity = serializedObject.FindProperty ("leftGamepadJoystickSensitivity");
rightGamepadJoystickSensitivity = serializedObject.FindProperty ("rightGamepadJoystickSensitivity");
leftTouchSensitivity = serializedObject.FindProperty ("leftTouchSensitivity");
rightTouchSensitivity = serializedObject.FindProperty ("rightTouchSensitivity");
useVerticalAndHorizontalGamepadSensitivity = serializedObject.FindProperty ("useVerticalAndHorizontalGamepadSensitivity");
leftGamepadJoystickHorizontalSensitivity = serializedObject.FindProperty ("leftGamepadJoystickHorizontalSensitivity");
leftGamepadJoystickVerticalSensitivity = serializedObject.FindProperty ("leftGamepadJoystickVerticalSensitivity");
rightGamepadJoystickHorizontalSensitivity = serializedObject.FindProperty ("rightGamepadJoystickHorizontalSensitivity");
rightGamepadJoystickVerticalSensitivity = serializedObject.FindProperty ("rightGamepadJoystickVerticalSensitivity");
useMovementOrientation = serializedObject.FindProperty ("useMovementOrientation");
horizontalMovementOrientation = serializedObject.FindProperty ("horizontalMovementOrientation");
verticalMovementOrientation = serializedObject.FindProperty ("verticalMovementOrientation");
useCameraOrientation = serializedObject.FindProperty ("useCameraOrientation");
horizontalCameraOrientation = serializedObject.FindProperty ("horizontalCameraOrientation");
verticalCameraOrientation = serializedObject.FindProperty ("verticalCameraOrientation");
touchMovementControl = serializedObject.FindProperty ("touchMovementControl");
touchCameraControl = serializedObject.FindProperty ("touchCameraControl");
touchPanel = serializedObject.FindProperty ("touchPanel");
usingTouchMovementJoystick = serializedObject.FindProperty ("usingTouchMovementJoystick");
inputLerpSpeedTouchMovementButtons = serializedObject.FindProperty ("inputLerpSpeedTouchMovementButtons");
useHorizontaTouchMovementButtons = serializedObject.FindProperty ("useHorizontaTouchMovementButtons");
useVerticalTouchMovementButtons = serializedObject.FindProperty ("useVerticalTouchMovementButtons");
horizontalTouchMovementButtons = serializedObject.FindProperty ("horizontalTouchMovementButtons");
verticalTouchMovementButtons = serializedObject.FindProperty ("verticalTouchMovementButtons");
inputEnabled = serializedObject.FindProperty ("inputEnabled");
inputCurrentlyActive = serializedObject.FindProperty ("inputCurrentlyActive");
overrideInputValuesActive = serializedObject.FindProperty ("overrideInputValuesActive");
inputPaused = serializedObject.FindProperty ("inputPaused");
ignoreAllActionsInput = serializedObject.FindProperty ("ignoreAllActionsInput");
ignoreAllAxisInput = serializedObject.FindProperty ("ignoreAllAxisInput");
movementAxis = serializedObject.FindProperty ("movementAxis");
mouseAxis = serializedObject.FindProperty ("mouseAxis");
rawMovementAxis = serializedObject.FindProperty ("rawMovementAxis");
usingGamepad = serializedObject.FindProperty ("usingGamepad");
usingKeyBoard = serializedObject.FindProperty ("usingKeyBoard");
usingTouchControls = serializedObject.FindProperty ("usingTouchControls");
usingPlayerMenu = serializedObject.FindProperty ("usingPlayerMenu");
manualControlActive = serializedObject.FindProperty ("manualControlActive");
manualMovementHorizontalInput = serializedObject.FindProperty ("manualMovementHorizontalInput");
manualMovementVerticalInput = serializedObject.FindProperty ("manualMovementVerticalInput");
manualMouseHorizontalInput = serializedObject.FindProperty ("manualMouseHorizontalInput");
manualMouseVerticalInput = serializedObject.FindProperty ("manualMouseVerticalInput");
showSingleMultiAxes = serializedObject.FindProperty ("showSingleMultiAxes");
currentMultiAxesToShow = serializedObject.FindProperty ("currentMultiAxesToShow");
multiAxesList = serializedObject.FindProperty ("multiAxesList");
hideSingleMultiAxes = serializedObject.FindProperty ("hideSingleMultiAxes");
input = serializedObject.FindProperty ("input");
playerControllerManager = serializedObject.FindProperty ("playerControllerManager");
mainPlayerInputPanelSystem = serializedObject.FindProperty ("mainPlayerInputPanelSystem");
editInputPanelPrefab = serializedObject.FindProperty ("editInputPanelPrefab");
editInputMenu = serializedObject.FindProperty ("editInputMenu");
currentInputPanelListText = serializedObject.FindProperty ("currentInputPanelListText");
manager = (playerInputManager)target;
}
public override void OnInspectorGUI ()
{
EditorGUI.BeginChangeCheck ();
EditorGUILayout.Space ();
buttonStyle = new GUIStyle (GUI.skin.button);
buttonStyle.fontStyle = FontStyle.Bold;
buttonStyle.fontSize = 12;
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (playerID);
EditorGUILayout.PropertyField (showDebugActions);
EditorGUILayout.PropertyField (useOnlyKeyboard);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Sensitivity Settings", "window");
EditorGUILayout.PropertyField (mouseSensitivity);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useVerticalAndHorizontalGamepadSensitivity);
if (useVerticalAndHorizontalGamepadSensitivity.boolValue) {
EditorGUILayout.PropertyField (leftGamepadJoystickHorizontalSensitivity);
EditorGUILayout.PropertyField (leftGamepadJoystickVerticalSensitivity);
EditorGUILayout.PropertyField (rightGamepadJoystickHorizontalSensitivity);
EditorGUILayout.PropertyField (rightGamepadJoystickVerticalSensitivity);
} else {
EditorGUILayout.PropertyField (leftGamepadJoystickSensitivity);
EditorGUILayout.PropertyField (rightGamepadJoystickSensitivity);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (leftTouchSensitivity);
EditorGUILayout.PropertyField (rightTouchSensitivity);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Control Orientation Settings", "window");
EditorGUILayout.PropertyField (useMovementOrientation);
if (useMovementOrientation.boolValue) {
EditorGUILayout.PropertyField (horizontalMovementOrientation);
EditorGUILayout.PropertyField (verticalMovementOrientation);
}
EditorGUILayout.PropertyField (useCameraOrientation);
if (useCameraOrientation.boolValue) {
EditorGUILayout.PropertyField (horizontalCameraOrientation);
EditorGUILayout.PropertyField (verticalCameraOrientation);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Touch Controls Settings", "window");
EditorGUILayout.PropertyField (touchMovementControl);
EditorGUILayout.PropertyField (touchCameraControl);
EditorGUILayout.PropertyField (touchPanel);
EditorGUILayout.PropertyField (usingTouchMovementJoystick);
EditorGUILayout.PropertyField (inputLerpSpeedTouchMovementButtons);
EditorGUILayout.PropertyField (useHorizontaTouchMovementButtons);
EditorGUILayout.PropertyField (useVerticalTouchMovementButtons);
EditorGUILayout.PropertyField (horizontalTouchMovementButtons);
EditorGUILayout.PropertyField (verticalTouchMovementButtons);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Input State", "window");
EditorGUILayout.PropertyField (inputEnabled);
GUILayout.Label ("Input Active\t\t" + inputCurrentlyActive.boolValue);
GUILayout.Label ("Override Input Active\t\t" + overrideInputValuesActive.boolValue);
GUILayout.Label ("Input Paused\t\t" + inputPaused.boolValue);
EditorGUILayout.PropertyField (playerIsNonLocalAvatar);
EditorGUILayout.PropertyField (playerNonLocalAvatarID);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (movementAxis);
EditorGUILayout.PropertyField (mouseAxis);
EditorGUILayout.PropertyField (rawMovementAxis);
EditorGUILayout.Space ();
GUILayout.Label ("Using Gamepad\t\t" + usingGamepad.boolValue);
GUILayout.Label ("Using Keyboard\t\t" + usingKeyBoard.boolValue);
GUILayout.Label ("Using Touch\t\t" + usingTouchControls.boolValue);
GUILayout.Label ("Using Player Menu\t\t" + usingPlayerMenu.boolValue);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (ignoreAllActionsInput);
EditorGUILayout.PropertyField (ignoreAllAxisInput);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Manual Control Settings", "window");
EditorGUILayout.PropertyField (manualControlActive);
if (manualControlActive.boolValue) {
EditorGUILayout.PropertyField (manualMovementHorizontalInput);
EditorGUILayout.PropertyField (manualMovementVerticalInput);
EditorGUILayout.PropertyField (manualMouseHorizontalInput);
EditorGUILayout.PropertyField (manualMouseVerticalInput);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Multi Axes List", "window");
EditorGUILayout.Space ();
defBackgroundColor = GUI.backgroundColor;
EditorGUILayout.BeginHorizontal ();
if (showSingleMultiAxes.boolValue) {
GUI.backgroundColor = Color.gray;
currentButtonMessage = "\n Hide Single Multi Axes \n";
} else {
GUI.backgroundColor = defBackgroundColor;
currentButtonMessage = "\n Show Single Multi Axes \n";
}
if (GUILayout.Button (currentButtonMessage)) {
showSingleMultiAxes.boolValue = !showSingleMultiAxes.boolValue;
if (showSingleMultiAxes.boolValue) {
currentMultiAxesToShowValue = currentMultiAxesToShow.intValue;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
hideSingleMultiAxes.boolValue = true;
}
}
GUI.backgroundColor = defBackgroundColor;
EditorGUILayout.EndHorizontal ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
if (showSingleMultiAxes.boolValue) {
defBackgroundColor = GUI.backgroundColor;
EditorGUILayout.BeginHorizontal ();
if (hideSingleMultiAxes.boolValue) {
GUI.backgroundColor = Color.gray;
currentButtonMessage = "Hide Single Axes";
} else {
GUI.backgroundColor = defBackgroundColor;
currentButtonMessage = "Show Single Axes";
}
if (GUILayout.Button (currentButtonMessage)) {
hideSingleMultiAxes.boolValue = !hideSingleMultiAxes.boolValue;
}
GUI.backgroundColor = defBackgroundColor;
EditorGUILayout.EndHorizontal ();
if (hideSingleMultiAxes.boolValue) {
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
currentMultiAxesToShowValue = currentMultiAxesToShow.intValue;
if (currentMultiAxesToShowValue == 0) {
if (GUILayout.Button ("Next List")) {
currentMultiAxesToShowValue++;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
if (GUILayout.Button (">>")) {
currentMultiAxesToShowValue = multiAxesList.arraySize - 1;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
} else if (currentMultiAxesToShowValue > 0 && currentMultiAxesToShowValue < manager.multiAxesList.Count - 1) {
if (GUILayout.Button ("<<")) {
currentMultiAxesToShowValue = 0;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
if (GUILayout.Button ("Previous List")) {
currentMultiAxesToShowValue--;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
if (GUILayout.Button ("Next List")) {
currentMultiAxesToShowValue++;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
if (GUILayout.Button (">>")) {
currentMultiAxesToShowValue = multiAxesList.arraySize - 1;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
} else if (currentMultiAxesToShowValue == manager.multiAxesList.Count - 1) {
if (GUILayout.Button ("<<")) {
currentMultiAxesToShowValue = 0;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
if (GUILayout.Button ("Previous List")) {
currentMultiAxesToShowValue--;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
}
currentMultiAxesToShow.intValue = currentMultiAxesToShowValue;
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Update Input List")) {
if (!Application.isPlaying) {
manager.updateMultiAxesList ();
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("\nUpdate Current Values (PRESS AFTER CHANGE ANYTHING)\n", buttonStyle)) {
if (!Application.isPlaying) {
manager.updateCurrentInputValues ();
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
if (currentSingleMultiAxes == null) {
currentMultiAxesToShowValue = currentMultiAxesToShow.intValue;
currentSingleMultiAxes = multiAxesList.GetArrayElementAtIndex (currentMultiAxesToShowValue);
}
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < multiAxesList.arraySize; i++) {
multiAxesList.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < multiAxesList.arraySize; i++) {
multiAxesList.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
EditorGUILayout.BeginVertical ();
currentlyActive = currentSingleMultiAxes.FindPropertyRelative ("currentlyActive").boolValue;
if (currentlyActive) {
isEnabled = " +";
} else {
isEnabled = " -";
}
isEnabled += " (" + (currentMultiAxesToShowValue + 1) + "/" + multiAxesList.arraySize + ")";
EditorGUILayout.PropertyField (currentSingleMultiAxes, new GUIContent (currentSingleMultiAxes.displayName + isEnabled), false);
if (currentSingleMultiAxes.isExpanded) {
showSingleMultiAxesListElementInfo (currentSingleMultiAxes, currentMultiAxesToShowValue);
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
GUILayout.EndHorizontal ();
}
} else {
showMultiAxesList (multiAxesList);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Player Element Settings", "window");
EditorGUILayout.PropertyField (input);
EditorGUILayout.PropertyField (playerControllerManager);
EditorGUILayout.PropertyField (mainPlayerInputPanelSystem);
EditorGUILayout.PropertyField (editInputPanelPrefab);
EditorGUILayout.PropertyField (editInputMenu);
EditorGUILayout.PropertyField (currentInputPanelListText);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
if (EditorGUI.EndChangeCheck ()) {
serializedObject.ApplyModifiedProperties ();
Repaint ();
}
}
void showSingleMultiAxesListElementInfo (SerializedProperty list, int index)
{
GUILayout.BeginVertical ("box");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("currentlyActive"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("canUseInputOnPlayerPaused"));
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Axes List", "window");
showAxesList (list.FindPropertyRelative ("axes"), index);
GUILayout.EndVertical ();
GUILayout.EndVertical ();
}
void showMultiAxesListElementInfo (SerializedProperty list, int index)
{
GUILayout.BeginVertical ("box");
currentMultiAxes = manager.multiAxesList [index];
currentStringList = currentMultiAxes.multiAxesStringList;
if (currentStringList.Length > 0) {
multiAxesStringIndex = currentMultiAxes.multiAxesStringIndex;
multiAxesStringIndex = EditorGUILayout.Popup ("Axe ", multiAxesStringIndex, currentStringList);
currentMultiAxes.multiAxesStringIndex = multiAxesStringIndex;
if (multiAxesStringIndex >= 0) {
currentMultiAxes.axesName = currentStringList [multiAxesStringIndex];
} else {
currentMultiAxes.axesName = "MULTI AXES NAME NO FOUND";
}
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("currentlyActive"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("canUseInputOnPlayerPaused"));
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Axes List", "window");
showAxesList (list.FindPropertyRelative ("axes"), index);
GUILayout.EndVertical ();
GUILayout.EndVertical ();
}
void showMultiAxesList (SerializedProperty list)
{
GUILayout.BeginVertical ();
EditorGUILayout.Space ();
mainInputListButtonStyle = new GUIStyle (GUI.skin.button);
mainInputListButtonStyle.fontStyle = FontStyle.Bold;
mainInputListButtonStyle.fontSize = 20;
if (GUILayout.Button ("Show/Hide Multi Axes List", mainInputListButtonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
currentMultiAxesArraySize = list.arraySize;
GUILayout.Label ("Number Of Axes: \t" + currentMultiAxesArraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add Axes")) {
if (!Application.isPlaying) {
manager.addNewAxes ();
currentMultiAxesArraySize = list.arraySize;
}
}
if (GUILayout.Button ("Clear List")) {
if (!Application.isPlaying) {
list.arraySize = 0;
currentMultiAxesArraySize = list.arraySize;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Enable All Axes")) {
if (!Application.isPlaying) {
manager.setMultiAxesEnabledState (true);
}
}
if (GUILayout.Button ("Disable All Axes")) {
if (!Application.isPlaying) {
manager.setMultiAxesEnabledState (false);
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < currentMultiAxesArraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < currentMultiAxesArraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Update Input List", buttonStyle)) {
if (!Application.isPlaying) {
manager.updateMultiAxesList ();
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("\nUpdate Current Values (PRESS AFTER CHANGE ANYTHING)\n", buttonStyle)) {
if (!Application.isPlaying) {
manager.updateCurrentInputValues ();
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
for (int i = 0; i < currentMultiAxesArraySize; i++) {
expandedMultiAxesList = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < currentMultiAxesArraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
SerializedProperty currentArrayElement = list.GetArrayElementAtIndex (i);
currentlyActive = currentArrayElement.FindPropertyRelative ("currentlyActive").boolValue;
if (currentlyActive) {
isEnabled = " +";
} else {
isEnabled = " -";
}
EditorGUILayout.PropertyField (currentArrayElement, new GUIContent (currentArrayElement.displayName + isEnabled), false);
if (currentArrayElement.isExpanded) {
showMultiAxesListElementInfo (currentArrayElement, i);
expandedMultiAxesList = true;
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
GUILayout.EndHorizontal ();
if (expandedMultiAxesList) {
GUILayout.BeginVertical ();
if (GUILayout.Button ("x")) {
if (!Application.isPlaying) {
list.DeleteArrayElementAtIndex (i);
currentMultiAxesArraySize = list.arraySize;
}
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < currentMultiAxesArraySize) {
list.MoveArrayElement (i, i - 1);
}
}
GUILayout.EndVertical ();
} else {
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("x")) {
if (!Application.isPlaying) {
list.DeleteArrayElementAtIndex (i);
currentMultiAxesArraySize = list.arraySize;
}
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < currentMultiAxesArraySize) {
list.MoveArrayElement (i, i - 1);
}
}
GUILayout.EndHorizontal ();
}
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
if (GUILayout.Button ("\nUpdate Current Values (PRESS AFTER CHANGE ANYTHING)\n", buttonStyle)) {
if (!Application.isPlaying) {
manager.updateCurrentInputValues ();
}
}
}
GUILayout.EndVertical ();
}
void showAxesListElementInfo (SerializedProperty list, int multiAxesIndex, int axesIndex)
{
GUILayout.BeginVertical ("box");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("actionName"));
currentMultiAxes = manager.multiAxesList [multiAxesIndex];
currentAxes = currentMultiAxes.axes [axesIndex];
currentStringList = currentAxes.axesStringList;
if (currentStringList.Length > 0) {
currentAxes.axesStringIndex = EditorGUILayout.Popup ("Axe ", currentAxes.axesStringIndex, currentStringList);
axesStringIndex = currentAxes.axesStringIndex;
if (axesStringIndex >= 0 && axesIndex < currentMultiAxes.axes.Count && axesStringIndex < currentStringList.Length) {
currentAxes.Name = currentStringList [axesStringIndex];
} else {
currentAxes.Name = "AXES NAME NO FOUND";
}
}
EditorGUILayout.PropertyField (list.FindPropertyRelative ("actionEnabled"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("buttonPressType"));
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeUsedOnPausedGame"));
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("buttonEvent"));
EditorGUILayout.Space ();
if (GUILayout.Button ("Set Axes Action Name")) {
if (!Application.isPlaying) {
manager.setAxesActionName (multiAxesIndex, axesIndex);
}
}
GUILayout.EndVertical ();
}
void showAxesList (SerializedProperty list, int multiAxesIndex)
{
GUILayout.BeginVertical ();
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide Axes List", buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
currentAxesArraySize = list.arraySize;
GUILayout.Label ("Number Of Actions: \t" + currentAxesArraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add Action")) {
if (!Application.isPlaying) {
manager.addNewAction (multiAxesIndex);
currentAxesArraySize = list.arraySize;
}
}
if (GUILayout.Button ("Clear List")) {
if (!Application.isPlaying) {
list.arraySize = 0;
currentAxesArraySize = list.arraySize;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < currentAxesArraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < currentAxesArraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Enable All Actions")) {
if (!Application.isPlaying) {
manager.setAllActionsEnabledState (multiAxesIndex, true);
}
}
if (GUILayout.Button ("Disable All Actions")) {
if (!Application.isPlaying) {
manager.setAllActionsEnabledState (multiAxesIndex, false);
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Update Input List")) {
if (!Application.isPlaying) {
manager.updateAxesList (multiAxesIndex);
}
}
if (currentAxesArraySize == 0) {
if (GUILayout.Button ("Set All Actions")) {
if (!Application.isPlaying) {
manager.setAllAxesList (multiAxesIndex);
}
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
for (int i = 0; i < currentAxesArraySize; i++) {
expandedAxesList = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < currentAxesArraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
SerializedProperty currentArrayElement = list.GetArrayElementAtIndex (i);
EditorGUILayout.PropertyField (currentArrayElement, false);
if (currentArrayElement.isExpanded) {
showAxesListElementInfo (currentArrayElement, multiAxesIndex, i);
expandedAxesList = true;
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
GUILayout.EndHorizontal ();
if (expandedAxesList) {
GUILayout.BeginVertical ();
if (GUILayout.Button ("x")) {
if (!Application.isPlaying) {
list.DeleteArrayElementAtIndex (i);
currentAxesArraySize = list.arraySize;
}
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < currentAxesArraySize) {
list.MoveArrayElement (i, i - 1);
}
}
GUILayout.EndVertical ();
} else {
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("x")) {
if (!Application.isPlaying) {
list.DeleteArrayElementAtIndex (i);
currentAxesArraySize = list.arraySize;
}
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < currentAxesArraySize) {
list.MoveArrayElement (i, i - 1);
}
}
GUILayout.EndHorizontal ();
}
GUILayout.EndHorizontal ();
}
}
GUILayout.EndVertical ();
}
}
#endif