Files
HauntedBloodlines/Assets/Editor/RoomTriggerEditor.cs
2025-05-29 22:31:40 +03:00

60 lines
2.0 KiB
C#

using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(RoomTrigger))]
public class RoomTriggerEditor : Editor
{
SerializedProperty roomSceneAsset;
SerializedProperty roomSceneName;
private void OnEnable()
{
roomSceneAsset = serializedObject.FindProperty("roomSceneAsset");
roomSceneName = serializedObject.FindProperty("roomSceneName");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
RoomTrigger roomTrigger = (RoomTrigger)target;
// Draw όλα τα άλλα properties (εκτός από αυτά που διαχειριζόμαστε ειδικά)
DrawPropertiesExcluding(serializedObject, "roomSceneAsset", "roomSceneName");
EditorGUILayout.Space();
EditorGUILayout.LabelField("Room Scene Settings", EditorStyles.boldLabel);
#if UNITY_EDITOR
EditorGUILayout.PropertyField(roomSceneAsset, new GUIContent("Room Scene Asset"));
if (GUILayout.Button("Assign Current Scene as Asset"))
{
string currentSceneName = roomTrigger.gameObject.scene.name;
string[] guids = AssetDatabase.FindAssets(currentSceneName + " t:SceneAsset");
if (guids.Length > 0)
{
string path = AssetDatabase.GUIDToAssetPath(guids[0]);
SceneAsset foundAsset = AssetDatabase.LoadAssetAtPath<SceneAsset>(path);
if (foundAsset != null)
{
roomSceneAsset.objectReferenceValue = foundAsset;
Debug.Log($"[RoomTriggerEditor] Assigned current scene '{foundAsset.name}' to RoomTrigger.");
}
else
{
Debug.LogWarning($"[RoomTriggerEditor] SceneAsset not found for current scene '{currentSceneName}'.");
}
}
else
{
Debug.LogWarning($"[RoomTriggerEditor] No SceneAsset found matching '{currentSceneName}'.");
}
}
#endif
serializedObject.ApplyModifiedProperties();
}
}