Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Editor/playerCharactersManagerEditor.cs

855 lines
28 KiB
C#
Raw Normal View History

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