855 lines
28 KiB
C#
855 lines
28 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
using System.Collections;
|
|||
|
|
|
|||
|
|
#if UNITY_EDITOR
|
|||
|
|
using UnityEditor;
|
|||
|
|
|
|||
|
|
[CustomEditor (typeof (playerCharactersManager))]
|
|||
|
|
public class playerCharactersManagerEditor : Editor
|
|||
|
|
{
|
|||
|
|
SerializedProperty searchPlayersAtStart;
|
|||
|
|
SerializedProperty currentNumberOfPlayers;
|
|||
|
|
SerializedProperty mainCharacter;
|
|||
|
|
SerializedProperty newPlayerPositionOffset;
|
|||
|
|
SerializedProperty regularReferenceResolution;
|
|||
|
|
SerializedProperty splitReferenceResolution;
|
|||
|
|
SerializedProperty cameraStateNameToUse;
|
|||
|
|
|
|||
|
|
SerializedProperty keepActiveOnlyCurrentPlayerSelected;
|
|||
|
|
|
|||
|
|
SerializedProperty changeCameraPositionAtOnceOnCharacterChange;
|
|||
|
|
|
|||
|
|
SerializedProperty setCurrentPlayerPositionToPreviousCharacter;
|
|||
|
|
|
|||
|
|
SerializedProperty setCurrentCharacterToControlAndAIAtStart;
|
|||
|
|
SerializedProperty currentCharacterToControlName;
|
|||
|
|
SerializedProperty delayTimeToChangeBetweenCharacters;
|
|||
|
|
SerializedProperty playerList;
|
|||
|
|
SerializedProperty cameraStatesList;
|
|||
|
|
SerializedProperty extraCharacterList;
|
|||
|
|
|
|||
|
|
SerializedProperty configureLocalMultiplayerCharactersOnAwake;
|
|||
|
|
SerializedProperty numberOfPlayersOnAwake;
|
|||
|
|
SerializedProperty cameraStateNameOnAwake;
|
|||
|
|
|
|||
|
|
SerializedProperty mainDynamicSplitScreenSystem;
|
|||
|
|
|
|||
|
|
SerializedProperty extraPlayerPrefab;
|
|||
|
|
|
|||
|
|
SerializedProperty initialMultiplayerSpawnPosition;
|
|||
|
|
|
|||
|
|
SerializedProperty onlinePlayerPrefab;
|
|||
|
|
|
|||
|
|
SerializedProperty useTransformPositionListToSpawnOnlinePlayer;
|
|||
|
|
|
|||
|
|
SerializedProperty transformPositionListToSpawnOnlinePlayer;
|
|||
|
|
|
|||
|
|
SerializedProperty spawnOnlinePlayersOnStart;
|
|||
|
|
SerializedProperty numberOfOnlinePlayersToSpawnOnStart;
|
|||
|
|
|
|||
|
|
SerializedProperty ignoreCheckEmptyCharactersOnStartEnabled;
|
|||
|
|
|
|||
|
|
|
|||
|
|
playerCharactersManager manager;
|
|||
|
|
|
|||
|
|
Color defBackgroundColor;
|
|||
|
|
bool showEventSettings;
|
|||
|
|
|
|||
|
|
string buttonMessage;
|
|||
|
|
|
|||
|
|
GUIStyle buttonStyle = new GUIStyle ();
|
|||
|
|
|
|||
|
|
GUIStyle style = new GUIStyle ();
|
|||
|
|
|
|||
|
|
void OnEnable ()
|
|||
|
|
{
|
|||
|
|
searchPlayersAtStart = serializedObject.FindProperty ("searchPlayersAtStart");
|
|||
|
|
currentNumberOfPlayers = serializedObject.FindProperty ("currentNumberOfPlayers");
|
|||
|
|
mainCharacter = serializedObject.FindProperty ("mainCharacter");
|
|||
|
|
newPlayerPositionOffset = serializedObject.FindProperty ("newPlayerPositionOffset");
|
|||
|
|
regularReferenceResolution = serializedObject.FindProperty ("regularReferenceResolution");
|
|||
|
|
splitReferenceResolution = serializedObject.FindProperty ("splitReferenceResolution");
|
|||
|
|
cameraStateNameToUse = serializedObject.FindProperty ("cameraStateNameToUse");
|
|||
|
|
|
|||
|
|
keepActiveOnlyCurrentPlayerSelected = serializedObject.FindProperty ("keepActiveOnlyCurrentPlayerSelected");
|
|||
|
|
|
|||
|
|
changeCameraPositionAtOnceOnCharacterChange = serializedObject.FindProperty ("changeCameraPositionAtOnceOnCharacterChange");
|
|||
|
|
|
|||
|
|
setCurrentPlayerPositionToPreviousCharacter = serializedObject.FindProperty ("setCurrentPlayerPositionToPreviousCharacter");
|
|||
|
|
|
|||
|
|
setCurrentCharacterToControlAndAIAtStart = serializedObject.FindProperty ("setCurrentCharacterToControlAndAIAtStart");
|
|||
|
|
currentCharacterToControlName = serializedObject.FindProperty ("currentCharacterToControlName");
|
|||
|
|
delayTimeToChangeBetweenCharacters = serializedObject.FindProperty ("delayTimeToChangeBetweenCharacters");
|
|||
|
|
|
|||
|
|
playerList = serializedObject.FindProperty ("playerList");
|
|||
|
|
cameraStatesList = serializedObject.FindProperty ("cameraStatesList");
|
|||
|
|
extraCharacterList = serializedObject.FindProperty ("extraCharacterList");
|
|||
|
|
|
|||
|
|
configureLocalMultiplayerCharactersOnAwake = serializedObject.FindProperty ("configureLocalMultiplayerCharactersOnAwake");
|
|||
|
|
numberOfPlayersOnAwake = serializedObject.FindProperty ("numberOfPlayersOnAwake");
|
|||
|
|
cameraStateNameOnAwake = serializedObject.FindProperty ("cameraStateNameOnAwake");
|
|||
|
|
|
|||
|
|
mainDynamicSplitScreenSystem = serializedObject.FindProperty ("mainDynamicSplitScreenSystem");
|
|||
|
|
|
|||
|
|
extraPlayerPrefab = serializedObject.FindProperty ("extraPlayerPrefab");
|
|||
|
|
|
|||
|
|
initialMultiplayerSpawnPosition = serializedObject.FindProperty ("initialMultiplayerSpawnPosition");
|
|||
|
|
|
|||
|
|
onlinePlayerPrefab = serializedObject.FindProperty ("onlinePlayerPrefab");
|
|||
|
|
|
|||
|
|
useTransformPositionListToSpawnOnlinePlayer = serializedObject.FindProperty ("useTransformPositionListToSpawnOnlinePlayer");
|
|||
|
|
|
|||
|
|
transformPositionListToSpawnOnlinePlayer = serializedObject.FindProperty ("transformPositionListToSpawnOnlinePlayer");
|
|||
|
|
|
|||
|
|
spawnOnlinePlayersOnStart = serializedObject.FindProperty ("spawnOnlinePlayersOnStart");
|
|||
|
|
numberOfOnlinePlayersToSpawnOnStart = serializedObject.FindProperty ("numberOfOnlinePlayersToSpawnOnStart");
|
|||
|
|
|
|||
|
|
ignoreCheckEmptyCharactersOnStartEnabled = serializedObject.FindProperty ("ignoreCheckEmptyCharactersOnStartEnabled");
|
|||
|
|
|
|||
|
|
manager = (playerCharactersManager)target;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void OnInspectorGUI ()
|
|||
|
|
{
|
|||
|
|
GUILayout.BeginVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
buttonStyle = new GUIStyle (GUI.skin.button);
|
|||
|
|
|
|||
|
|
buttonStyle.fontStyle = FontStyle.Bold;
|
|||
|
|
buttonStyle.fontSize = 12;
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Main Settings", "window", GUILayout.Height (30));
|
|||
|
|
EditorGUILayout.PropertyField (searchPlayersAtStart);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (ignoreCheckEmptyCharactersOnStartEnabled);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (currentNumberOfPlayers);
|
|||
|
|
EditorGUILayout.PropertyField (mainCharacter);
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (newPlayerPositionOffset);
|
|||
|
|
EditorGUILayout.PropertyField (regularReferenceResolution);
|
|||
|
|
EditorGUILayout.PropertyField (splitReferenceResolution);
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (cameraStateNameToUse);
|
|||
|
|
|
|||
|
|
if (manager.cameraStatesListString != null && manager.cameraStatesListString.Length > 0) {
|
|||
|
|
|
|||
|
|
manager.currentCameraStateIndex = EditorGUILayout.Popup ("Camera State To Use", manager.currentCameraStateIndex, manager.cameraStatesListString);
|
|||
|
|
if (manager.currentCameraStateIndex >= 0) {
|
|||
|
|
manager.cameraStateNameToUse = manager.cameraStatesListString [manager.currentCameraStateIndex];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Update Camera States")) {
|
|||
|
|
manager.getCameraStateListString ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Configure/Spawn Multiple Players On Awake Settings", "window");
|
|||
|
|
EditorGUILayout.PropertyField (configureLocalMultiplayerCharactersOnAwake);
|
|||
|
|
EditorGUILayout.PropertyField (numberOfPlayersOnAwake);
|
|||
|
|
EditorGUILayout.PropertyField (cameraStateNameOnAwake);
|
|||
|
|
EditorGUILayout.PropertyField (extraPlayerPrefab);
|
|||
|
|
EditorGUILayout.PropertyField (initialMultiplayerSpawnPosition);
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Online Settings", "window");
|
|||
|
|
EditorGUILayout.PropertyField (onlinePlayerPrefab);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (useTransformPositionListToSpawnOnlinePlayer);
|
|||
|
|
if (useTransformPositionListToSpawnOnlinePlayer.boolValue) {
|
|||
|
|
showSimpleList (transformPositionListToSpawnOnlinePlayer);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (spawnOnlinePlayersOnStart);
|
|||
|
|
if (spawnOnlinePlayersOnStart.boolValue) {
|
|||
|
|
EditorGUILayout.PropertyField (numberOfOnlinePlayersToSpawnOnStart);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Spawn Player (Debug Ingame)")) {
|
|||
|
|
if (Application.isPlaying) {
|
|||
|
|
manager.spawnPlayerOnSceneForMultiplayer ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Use AI As Partner To Switch Settings", "window");
|
|||
|
|
EditorGUILayout.PropertyField (setCurrentCharacterToControlAndAIAtStart);
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (keepActiveOnlyCurrentPlayerSelected);
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (changeCameraPositionAtOnceOnCharacterChange);
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (setCurrentPlayerPositionToPreviousCharacter);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (currentCharacterToControlName);
|
|||
|
|
EditorGUILayout.PropertyField (delayTimeToChangeBetweenCharacters);
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Player List", "window");
|
|||
|
|
showPlayerList (playerList);
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Camera States List", "window");
|
|||
|
|
showCameraStatesList (cameraStatesList);
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Extra Character List", "window");
|
|||
|
|
showExtraCharacterList (extraCharacterList);
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
style.fontStyle = FontStyle.Bold;
|
|||
|
|
style.fontSize = 25;
|
|||
|
|
style.alignment = TextAnchor.MiddleCenter;
|
|||
|
|
|
|||
|
|
EditorGUILayout.LabelField ("MAIN EDITOR BUTTONS", style);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Search Players On The Level")) {
|
|||
|
|
manager.searchPlayersOnTheLevel (false, true);
|
|||
|
|
manager.setExtraCharacterList ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Configure Players")) {
|
|||
|
|
manager.setNumberOfPlayers (true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Set Camera Configuration")) {
|
|||
|
|
manager.setCameraConfiguration (true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Update HUD")) {
|
|||
|
|
manager.updateHUD (true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Set Player ID")) {
|
|||
|
|
manager.setPlayerID (true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Assign Map Systems On Map Creator")) {
|
|||
|
|
manager.assignMapSystem (true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Update Main Player Components")) {
|
|||
|
|
manager.updateMainPlayerComponentsOnGameManager (true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Locked Camera Settings", "window");
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Enable Single Camera State")) {
|
|||
|
|
manager.enableOrDisableSingleCameraState (true, true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Disable Single Camera State")) {
|
|||
|
|
manager.enableOrDisableSingleCameraState (false, true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Dynamic Split Camera Settings", "window");
|
|||
|
|
EditorGUILayout.PropertyField (mainDynamicSplitScreenSystem);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Enable Dynamic Split Camera State")) {
|
|||
|
|
manager.enableOrDisableDynamicSplitCameraState (true, true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Disable Dynamic Split Camera State")) {
|
|||
|
|
manager.enableOrDisableDynamicSplitCameraState (false, true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUI.changed) {
|
|||
|
|
serializedObject.ApplyModifiedProperties ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showPlayerList (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
|
|||
|
|
list.isExpanded = !list.isExpanded;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (list.isExpanded) {
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.Label ("Number Of Players: " + list.arraySize);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Add Player")) {
|
|||
|
|
list.arraySize++;
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Clear List")) {
|
|||
|
|
list.arraySize = 0;
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Expand All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Collapse All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
bool expanded = false;
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
GUILayout.BeginHorizontal ("box");
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (i < list.arraySize && i >= 0) {
|
|||
|
|
EditorGUILayout.BeginVertical ();
|
|||
|
|
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
|
|||
|
|
if (list.GetArrayElementAtIndex (i).isExpanded) {
|
|||
|
|
showPlayerListElements (list.GetArrayElementAtIndex (i));
|
|||
|
|
expanded = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
if (expanded) {
|
|||
|
|
GUILayout.BeginVertical ();
|
|||
|
|
} else {
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("x")) {
|
|||
|
|
list.DeleteArrayElementAtIndex (i);
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("v")) {
|
|||
|
|
if (i >= 0) {
|
|||
|
|
list.MoveArrayElement (i, i + 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("^")) {
|
|||
|
|
if (i < list.arraySize) {
|
|||
|
|
list.MoveArrayElement (i, i - 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (expanded) {
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
} else {
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showPlayerListElements (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
GUILayout.BeginVertical ("box");
|
|||
|
|
GUILayout.BeginVertical ("Main Settings", "window");
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useByAI"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("followMainPlayerOnSwitchCompanion"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useOnlyKeyboard"));
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Components", "window");
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playerParentGameObject"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playerControllerGameObject"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playerCameraGameObject"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playerControllerManager"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playerCameraManager"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playerInput"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("pauseManager"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("mainPlayerComponentsManager"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("mainFriendListManager"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("mainSwitchCompanionSystem"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("mainSaveGameSystem"));
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Toggle Use Only Keyboard/Gamepad")) {
|
|||
|
|
manager.toogleUseOnlyKeyboardGamepad (list.FindPropertyRelative ("Name").stringValue);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
showEventSettings = list.FindPropertyRelative ("showEventSettings").boolValue;
|
|||
|
|
|
|||
|
|
defBackgroundColor = GUI.backgroundColor;
|
|||
|
|
EditorGUILayout.BeginHorizontal ();
|
|||
|
|
if (showEventSettings) {
|
|||
|
|
GUI.backgroundColor = Color.gray;
|
|||
|
|
buttonMessage = "Hide Event Settings";
|
|||
|
|
} else {
|
|||
|
|
GUI.backgroundColor = defBackgroundColor;
|
|||
|
|
buttonMessage = "Show Event Settings";
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button (buttonMessage)) {
|
|||
|
|
showEventSettings = !showEventSettings;
|
|||
|
|
}
|
|||
|
|
GUI.backgroundColor = defBackgroundColor;
|
|||
|
|
EditorGUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
list.FindPropertyRelative ("showEventSettings").boolValue = showEventSettings;
|
|||
|
|
|
|||
|
|
if (showEventSettings) {
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToSetCharacterAsAI"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToSetCharacterAsPlayer"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("DEBUG OPTIONS (IN-GAME)", "window", GUILayout.Height (30));
|
|||
|
|
if (GUILayout.Button ("Set As Current Player Active")) {
|
|||
|
|
if (Application.isPlaying) {
|
|||
|
|
manager.setAsCurrentPlayerActive (list.FindPropertyRelative ("Name").stringValue);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Set as Current Character To Control")) {
|
|||
|
|
if (Application.isPlaying) {
|
|||
|
|
manager.setAsCurrentCharacterToControlByName (list.FindPropertyRelative ("Name").stringValue);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showCameraStatesList (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
|
|||
|
|
list.isExpanded = !list.isExpanded;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (list.isExpanded) {
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.Label ("Number Of Cameras: " + list.arraySize);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Add Camera")) {
|
|||
|
|
list.arraySize++;
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Clear List")) {
|
|||
|
|
list.arraySize = 0;
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Expand All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Collapse All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
bool expanded = false;
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
GUILayout.BeginHorizontal ("box");
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (i < list.arraySize && i >= 0) {
|
|||
|
|
EditorGUILayout.BeginVertical ();
|
|||
|
|
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
|
|||
|
|
if (list.GetArrayElementAtIndex (i).isExpanded) {
|
|||
|
|
showCameraStatesListElements (list.GetArrayElementAtIndex (i));
|
|||
|
|
expanded = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
if (expanded) {
|
|||
|
|
GUILayout.BeginVertical ();
|
|||
|
|
} else {
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("x")) {
|
|||
|
|
list.DeleteArrayElementAtIndex (i);
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("v")) {
|
|||
|
|
if (i >= 0) {
|
|||
|
|
list.MoveArrayElement (i, i + 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("^")) {
|
|||
|
|
if (i < list.arraySize) {
|
|||
|
|
list.MoveArrayElement (i, i - 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (expanded) {
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
} else {
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showCameraStatesListElements (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
GUILayout.BeginVertical ("box");
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("numberfOfPlayers"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginVertical ("Camera Info List", "window");
|
|||
|
|
showCameraInfoList (list.FindPropertyRelative ("cameraInfoList"));
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showCameraInfoList (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
|
|||
|
|
list.isExpanded = !list.isExpanded;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (list.isExpanded) {
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.Label ("Number Of Cameras: " + list.arraySize);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Add Camera")) {
|
|||
|
|
list.arraySize++;
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Clear List")) {
|
|||
|
|
list.arraySize = 0;
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Expand All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Collapse All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
bool expanded = false;
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
GUILayout.BeginHorizontal ("box");
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (i < list.arraySize && i >= 0) {
|
|||
|
|
EditorGUILayout.BeginVertical ();
|
|||
|
|
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
|
|||
|
|
if (list.GetArrayElementAtIndex (i).isExpanded) {
|
|||
|
|
showCameraInfoListElements (list.GetArrayElementAtIndex (i));
|
|||
|
|
expanded = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
if (expanded) {
|
|||
|
|
GUILayout.BeginVertical ();
|
|||
|
|
} else {
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("x")) {
|
|||
|
|
list.DeleteArrayElementAtIndex (i);
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("v")) {
|
|||
|
|
if (i >= 0) {
|
|||
|
|
list.MoveArrayElement (i, i + 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("^")) {
|
|||
|
|
if (i < list.arraySize) {
|
|||
|
|
list.MoveArrayElement (i, i - 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (expanded) {
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
} else {
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showCameraInfoListElements (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
GUILayout.BeginVertical ("box");
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("newX"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("newY"));
|
|||
|
|
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("newW"));
|
|||
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("newH"));
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showExtraCharacterList (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
|
|||
|
|
list.isExpanded = !list.isExpanded;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (list.isExpanded) {
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.Label ("Number Of Characters: " + list.arraySize);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Add Character")) {
|
|||
|
|
list.arraySize++;
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Clear List")) {
|
|||
|
|
list.arraySize = 0;
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Expand All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Collapse All")) {
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
list.GetArrayElementAtIndex (i).isExpanded = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
GUILayout.BeginHorizontal ("box");
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (i < list.arraySize && i >= 0) {
|
|||
|
|
EditorGUILayout.BeginVertical ();
|
|||
|
|
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.EndVertical ();
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void showSimpleList (SerializedProperty list)
|
|||
|
|
{
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
|
|||
|
|
list.isExpanded = !list.isExpanded;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
if (list.isExpanded) {
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.Label ("Number Of Elements: \t" + list.arraySize);
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("Add")) {
|
|||
|
|
list.arraySize++;
|
|||
|
|
}
|
|||
|
|
if (GUILayout.Button ("Clear")) {
|
|||
|
|
list.arraySize = 0;
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
|
|||
|
|
EditorGUILayout.Space ();
|
|||
|
|
|
|||
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (i < list.arraySize && i >= 0) {
|
|||
|
|
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent ("", null, ""), false);
|
|||
|
|
}
|
|||
|
|
GUILayout.BeginHorizontal ();
|
|||
|
|
if (GUILayout.Button ("x")) {
|
|||
|
|
list.DeleteArrayElementAtIndex (i);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
GUILayout.EndHorizontal ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endif
|