Files
beyond/Assets/Scripts/Editor/PrefabGroupSettingsWindow.cs
szczuras4 707eb89cf7 clean
2025-09-22 18:02:22 +02:00

89 lines
2.9 KiB
C#

using UnityEditor;
using UnityEngine;
public class PrefabGroupSettingsWindow : EditorWindow
{
private PrefabGroup targetGroup;
private PrefabBrowserDatabase database;
private string tempGroupName;
private Color tempGroupColor;
private bool tempUseLightText;
// NOWA METODA: Tworzy okno jako elegancki dropdown pod przyciskiem.
public static void ShowAsDropDown(Rect buttonRect, PrefabGroup groupToEdit, PrefabBrowserDatabase db)
{
PrefabGroupSettingsWindow window = CreateInstance<PrefabGroupSettingsWindow>();
// Ustawiamy docelow¹ grupê dla tej konkretnej instancji okna
window.SetTarget(groupToEdit, db);
// Ustawiamy rozmiar naszego dropdownu
Vector2 windowSize = new Vector2(250, 150);
window.position = new Rect(buttonRect.x, buttonRect.yMax, 0, 0); // Pozycja pocz¹tkowa
// Wyœwietlamy okno
window.ShowAsDropDown(buttonRect, windowSize);
}
// Metoda, która inicjalizuje dane dla tego konkretnego okna.
private void SetTarget(PrefabGroup group, PrefabBrowserDatabase db)
{
targetGroup = group;
database = db;
if (targetGroup != null)
{
tempGroupName = targetGroup.groupName;
tempGroupColor = targetGroup.groupColor;
tempUseLightText = targetGroup.useLightText;
}
}
private void OnGUI()
{
if (targetGroup == null)
{
Close();
return;
}
// Dodajemy trochê marginesu, ¿eby kontrolki nie by³y przyklejone do krawêdzi
EditorGUILayout.BeginVertical(new GUIStyle { padding = new RectOffset(10, 10, 10, 10) });
EditorGUILayout.LabelField("Edit Group", EditorStyles.boldLabel);
EditorGUILayout.Space(5);
tempGroupName = EditorGUILayout.TextField("Group Name", tempGroupName);
tempGroupColor = EditorGUILayout.ColorField("Group Color", tempGroupColor);
tempUseLightText = EditorGUILayout.Toggle("Use Light Text", tempUseLightText);
EditorGUILayout.Space(10);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Save"))
{
targetGroup.groupName = tempGroupName;
targetGroup.groupColor = tempGroupColor;
targetGroup.useLightText = tempUseLightText;
EditorUtility.SetDirty(database);
AssetDatabase.SaveAssets();
Close();
}
if (GUILayout.Button("Delete"))
{
if (EditorUtility.DisplayDialog("Delete Group", $"Are you sure you want to permanently delete the group '{targetGroup.groupName}'?", "Yes, Delete", "Cancel"))
{
database.groups.Remove(targetGroup);
EditorUtility.SetDirty(database);
AssetDatabase.SaveAssets();
Close();
}
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.EndVertical();
}
}