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

199 lines
6.4 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.Events;
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor (typeof (characterFactionManager))]
public class characterFactionManagerEditor : Editor
{
SerializedProperty factionManager;
SerializedProperty characterTransform;
SerializedProperty checkForFriendlyFactionAttackers;
SerializedProperty changeFactionRelationWithFriendlyAttackers;
SerializedProperty factionStringList;
SerializedProperty factionIndex;
SerializedProperty factionName;
SerializedProperty currentDetectedEnemyList;
SerializedProperty mainManagerName;
SerializedProperty factionManagerAssigned;
SerializedProperty ignoreCharacterFactionEnabled;
SerializedProperty removeAsTargetIfIgnoreCharacterFactionIsActivated;
SerializedProperty useEventsOnIgnoreCharacterFactionStateChange;
SerializedProperty eventOnIgnoreCharacterFactionEnabled;
SerializedProperty eventOnIgnoreCharacterFactionDisabled;
characterFactionManager manager;
GUIStyle buttonStyle = new GUIStyle ();
void OnEnable ()
{
factionManager = serializedObject.FindProperty ("factionManager");
characterTransform = serializedObject.FindProperty ("characterTransform");
checkForFriendlyFactionAttackers = serializedObject.FindProperty ("checkForFriendlyFactionAttackers");
changeFactionRelationWithFriendlyAttackers = serializedObject.FindProperty ("changeFactionRelationWithFriendlyAttackers");
factionStringList = serializedObject.FindProperty ("factionStringList");
factionIndex = serializedObject.FindProperty ("factionIndex");
factionName = serializedObject.FindProperty ("factionName");
currentDetectedEnemyList = serializedObject.FindProperty ("currentDetectedEnemyList");
mainManagerName = serializedObject.FindProperty ("mainManagerName");
factionManagerAssigned = serializedObject.FindProperty ("factionManagerAssigned");
ignoreCharacterFactionEnabled = serializedObject.FindProperty ("ignoreCharacterFactionEnabled");
removeAsTargetIfIgnoreCharacterFactionIsActivated = serializedObject.FindProperty ("removeAsTargetIfIgnoreCharacterFactionIsActivated");
useEventsOnIgnoreCharacterFactionStateChange = serializedObject.FindProperty ("useEventsOnIgnoreCharacterFactionStateChange");
eventOnIgnoreCharacterFactionEnabled = serializedObject.FindProperty ("eventOnIgnoreCharacterFactionEnabled");
eventOnIgnoreCharacterFactionDisabled = serializedObject.FindProperty ("eventOnIgnoreCharacterFactionDisabled");
manager = (characterFactionManager)target;
}
public override void OnInspectorGUI ()
{
EditorGUILayout.Space ();
buttonStyle = new GUIStyle (GUI.skin.button);
buttonStyle.fontStyle = FontStyle.Bold;
buttonStyle.fontSize = 12;
GUILayout.BeginVertical (GUILayout.Height (30));
GUILayout.BeginVertical ("Main Components", "window");
EditorGUILayout.PropertyField (factionManager);
EditorGUILayout.PropertyField (characterTransform);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (ignoreCharacterFactionEnabled);
EditorGUILayout.PropertyField (removeAsTargetIfIgnoreCharacterFactionIsActivated);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (checkForFriendlyFactionAttackers);
EditorGUILayout.PropertyField (changeFactionRelationWithFriendlyAttackers);
EditorGUILayout.PropertyField (mainManagerName);
EditorGUILayout.Space ();
if (factionStringList.arraySize > 0) {
factionIndex.intValue = EditorGUILayout.Popup ("Faction ", factionIndex.intValue, manager.getFactionStringList ());
if (factionIndex.intValue < manager.factionStringList.Length) {
factionName.stringValue = manager.factionStringList [factionIndex.intValue];
}
}
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Events Settings", "window");
EditorGUILayout.PropertyField (useEventsOnIgnoreCharacterFactionStateChange);
if (useEventsOnIgnoreCharacterFactionStateChange.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnIgnoreCharacterFactionEnabled);
EditorGUILayout.PropertyField (eventOnIgnoreCharacterFactionDisabled);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Detected Enemy List (Debug)", "window");
showSimpleList (currentDetectedEnemyList);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (factionManagerAssigned);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
if (GUILayout.Button ("Get Faction List")) {
manager.getFactionListFromEditor ();
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Debug", "window");
if (GUILayout.Button ("Toggle Ignore Character Faction Enabled")) {
manager.toggleIngoreCharacterFactionEnabled ();
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
if (GUI.changed) {
serializedObject.ApplyModifiedProperties ();
}
}
void showSimpleList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUILayout.Label ("Amount: \t" + list.arraySize);
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.EndHorizontal ();
EditorGUILayout.Space ();
}
GUILayout.EndVertical ();
}
}
}
#endif