OctoCore 0.0.1
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
using OctoCore.Inputs;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace OctoCore
|
||||
{
|
||||
[CustomEditor(typeof(OctoSettings))]
|
||||
public class OctoSettingsEditor : UnityEditor.Editor
|
||||
{
|
||||
SerializedProperty saveProp;
|
||||
SerializedProperty saveBooleansProp;
|
||||
SerializedProperty saveFloatsProp;
|
||||
SerializedProperty saveIntegersProp;
|
||||
SerializedProperty saveStringsProp;
|
||||
SerializedProperty saveVectorsProp;
|
||||
|
||||
SerializedProperty mappingProp;
|
||||
SerializedProperty mappingInputActionAssetProp;
|
||||
SerializedProperty mappingActionsProp;
|
||||
|
||||
SerializedProperty languagesProp;
|
||||
SerializedProperty languagesDefaultProp;
|
||||
SerializedProperty languagesSaveWrittenProp;
|
||||
SerializedProperty languagesSaveAudioProp;
|
||||
SerializedProperty languagesOverridesProp;
|
||||
|
||||
SerializedProperty scenesProp;
|
||||
SerializedProperty scenesSceneDatasProp;
|
||||
SerializedProperty scenesUseAddressablesProp;
|
||||
SerializedProperty scenesFadeSettingsProp;
|
||||
|
||||
SerializedProperty UiProp;
|
||||
SerializedProperty UiReferenceSizeProp;
|
||||
SerializedProperty UiIconsBackgroundProp;
|
||||
|
||||
bool foldoutSave;
|
||||
bool foldoutMapping;
|
||||
bool foldoutLanguages;
|
||||
bool foldoutScenes;
|
||||
bool foldoutUi;
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
saveProp = serializedObject.FindProperty("Save");
|
||||
saveBooleansProp = saveProp.FindPropertyRelative("Booleans");
|
||||
saveIntegersProp = saveProp.FindPropertyRelative("Integers");
|
||||
saveFloatsProp = saveProp.FindPropertyRelative("Floats");
|
||||
saveStringsProp = saveProp.FindPropertyRelative("Strings");
|
||||
saveVectorsProp = saveProp.FindPropertyRelative("Vectors");
|
||||
|
||||
mappingProp = serializedObject.FindProperty("Mapping");
|
||||
mappingInputActionAssetProp = mappingProp.FindPropertyRelative("InputActionAsset");
|
||||
mappingActionsProp = mappingProp.FindPropertyRelative("Actions");
|
||||
|
||||
languagesProp = serializedObject.FindProperty("Languages");
|
||||
languagesDefaultProp = languagesProp.FindPropertyRelative("Default");
|
||||
languagesSaveWrittenProp = languagesProp.FindPropertyRelative("SaveWritten");
|
||||
languagesSaveAudioProp = languagesProp.FindPropertyRelative("SaveAudio");
|
||||
languagesOverridesProp = languagesProp.FindPropertyRelative("Overrides");
|
||||
|
||||
scenesProp = serializedObject.FindProperty("Scenes");
|
||||
scenesSceneDatasProp = scenesProp.FindPropertyRelative("SceneDatas");
|
||||
scenesUseAddressablesProp = scenesProp.FindPropertyRelative("UseAddressables");
|
||||
scenesFadeSettingsProp = scenesProp.FindPropertyRelative("FadeSettings");
|
||||
|
||||
UiProp = serializedObject.FindProperty("Ui");
|
||||
UiReferenceSizeProp = UiProp.FindPropertyRelative("ReferenceSize");
|
||||
UiIconsBackgroundProp = UiProp.FindPropertyRelative("IconsBackground");
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
OctoSettings data = (OctoSettings)target;
|
||||
|
||||
serializedObject.Update();
|
||||
|
||||
GUIStyle foldout = new GUIStyle(EditorStyles.foldout) { fontStyle = FontStyle.Bold };
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// SAVE
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
|
||||
EditorGUILayout.BeginVertical("box");
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
foldoutSave = EditorGUILayout.Foldout(foldoutSave, "SAVE", true, foldout);
|
||||
|
||||
if (foldoutSave)
|
||||
{
|
||||
EditorGUILayout.Space();
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
if (GUILayout.Button("Get All Datas"))
|
||||
{
|
||||
data.GetAllDatas();
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(saveBooleansProp);
|
||||
EditorGUILayout.PropertyField(saveFloatsProp);
|
||||
EditorGUILayout.PropertyField(saveIntegersProp);
|
||||
EditorGUILayout.PropertyField(saveStringsProp);
|
||||
EditorGUILayout.PropertyField(saveVectorsProp);
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.Space(4);
|
||||
}
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.EndVertical();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// MAPPING
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
|
||||
EditorGUILayout.BeginVertical("box");
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
foldoutMapping = EditorGUILayout.Foldout(foldoutMapping, "MAPPING", true, foldout);
|
||||
|
||||
if (foldoutMapping)
|
||||
{
|
||||
EditorGUILayout.Space();
|
||||
|
||||
#if ENABLE_INPUT_SYSTEM
|
||||
EditorGUILayout.PropertyField(mappingInputActionAssetProp);
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField(mappingActionsProp);
|
||||
EditorGUI.indentLevel--;
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.HelpBox(
|
||||
"To generate OctoActions enum:\n" +
|
||||
"1. Assign an Input Action Asset first\n" +
|
||||
"2. Click 'Generate Inputs'\n\n" +
|
||||
"Note: The enum will be generated in Assets/OctoCore/ (safe from package updates)",
|
||||
MessageType.Info
|
||||
);
|
||||
|
||||
EditorGUILayout.Space(5);
|
||||
|
||||
GUI.enabled = data.Mapping.InputActionAsset != null;
|
||||
if (GUILayout.Button("Generate Inputs", GUILayout.Height(20)))
|
||||
{
|
||||
data.GenerateInputs();
|
||||
}
|
||||
GUI.enabled = true;
|
||||
#else
|
||||
EditorGUILayout.HelpBox(
|
||||
"Input System Package is not enabled.\n" +
|
||||
"Please enable it in Project Settings > Player > Active Input Handling.",
|
||||
MessageType.Warning
|
||||
);
|
||||
#endif
|
||||
|
||||
EditorGUILayout.Space(4);
|
||||
}
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.EndVertical();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// LANGUAGES
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
|
||||
EditorGUILayout.BeginVertical("box");
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
foldoutLanguages = EditorGUILayout.Foldout(foldoutLanguages, "LANGUAGES", true, foldout);
|
||||
|
||||
if (foldoutLanguages)
|
||||
{
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(languagesDefaultProp);
|
||||
EditorGUILayout.PropertyField(languagesSaveWrittenProp);
|
||||
EditorGUILayout.PropertyField(languagesSaveAudioProp);
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField(languagesOverridesProp);
|
||||
EditorGUI.indentLevel--;
|
||||
|
||||
EditorGUILayout.Space(4);
|
||||
}
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.EndVertical();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// SCENES
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
|
||||
EditorGUILayout.BeginVertical("box");
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
foldoutScenes = EditorGUILayout.Foldout(foldoutScenes, "SCENES", true, foldout);
|
||||
|
||||
if (foldoutScenes)
|
||||
{
|
||||
EditorGUILayout.Space();
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
if (GUILayout.Button("Get All Scene Datas"))
|
||||
{
|
||||
data.GetAllSceneDatas();
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(scenesSceneDatasProp);
|
||||
EditorGUILayout.PropertyField(scenesUseAddressablesProp);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.LabelField("Fade Settings", EditorStyles.boldLabel);
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField(scenesFadeSettingsProp);
|
||||
EditorGUI.indentLevel--;
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.Space(4);
|
||||
}
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.EndVertical();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// UI
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
|
||||
EditorGUILayout.BeginVertical("box");
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
foldoutUi = EditorGUILayout.Foldout(foldoutUi, "INTERFACE", true, foldout);
|
||||
|
||||
if (foldoutUi)
|
||||
{
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(UiReferenceSizeProp);
|
||||
EditorGUILayout.PropertyField(UiIconsBackgroundProp);
|
||||
|
||||
EditorGUILayout.Space(4);
|
||||
}
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.EndVertical();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user