This commit is contained in:
Mikhail 2024-06-15 19:18:28 +08:00
parent 330834b07b
commit 0c66a1254e
4 changed files with 17 additions and 36 deletions

View File

@ -251,6 +251,10 @@ namespace DCFApixels.DragonECS.Unity.Docs.Editors
GUILayout.BeginHorizontal(); GUILayout.BeginHorizontal();
GUILayout.TextArea(IsUseCustomNames ? meta.Name : meta.TypeName, EditorStyles.boldLabel, GUILayout.ExpandWidth(false)); GUILayout.TextArea(IsUseCustomNames ? meta.Name : meta.TypeName, EditorStyles.boldLabel, GUILayout.ExpandWidth(false));
if (meta.TryGetSourceType(out System.Type targetType) && UnityEditorUtility.TryGetScriptAsset(targetType, out MonoScript script))
{
EcsGUI.Layout.ScriptAssetButton(script, GUILayout.Width(19f));
}
if (meta.IsCustomName) if (meta.IsCustomName)
{ {
using (EcsGUI.SetAlpha(0.64f)) using (EcsGUI.SetAlignment(GUI.skin.label, TextAnchor.MiddleRight)) using (EcsGUI.SetAlpha(0.64f)) using (EcsGUI.SetAlignment(GUI.skin.label, TextAnchor.MiddleRight))

View File

@ -203,6 +203,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
if (EcsGUI.CloseButton(optionButton)) if (EcsGUI.CloseButton(optionButton))
{ {
componentRefProp.managedReferenceValue = null; componentRefProp.managedReferenceValue = null;
return;
} }
//Edit script button //Edit script button
if (UnityEditorUtility.TryGetScriptAsset(componentType, out MonoScript script)) if (UnityEditorUtility.TryGetScriptAsset(componentType, out MonoScript script))

View File

@ -181,10 +181,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
optionButton.yMax += HeadIconsRect.height; optionButton.yMax += HeadIconsRect.height;
optionButton.xMin = optionButton.xMax - 64; optionButton.xMin = optionButton.xMax - 64;
optionButton.center += Vector2.up * padding * 2f; optionButton.center += Vector2.up * padding * 2f;
if (EcsGUI.HitTest(optionButton) && Event.current.type == EventType.MouseUp) bool cancelExpanded = EcsGUI.HitTest(optionButton) && Event.current.type == EventType.MouseUp;
{
componentProperty.isExpanded = !componentProperty.isExpanded;
}
EditorGUI.BeginChangeCheck(); EditorGUI.BeginChangeCheck();
GUILayout.BeginVertical(UnityEditorUtility.GetStyle(alphaPanelColor)); GUILayout.BeginVertical(UnityEditorUtility.GetStyle(alphaPanelColor));
@ -197,6 +194,11 @@ namespace DCFApixels.DragonECS.Unity.Editors
OnRemoveComponentAt(index); OnRemoveComponentAt(index);
return; return;
} }
//Canceling isExpanded
if (cancelExpanded)
{
componentProperty.isExpanded = !componentProperty.isExpanded;
}
//Edit script button //Edit script button
if (UnityEditorUtility.TryGetScriptAsset(componentType, out MonoScript script)) if (UnityEditorUtility.TryGetScriptAsset(componentType, out MonoScript script))
{ {

View File

@ -224,43 +224,14 @@ namespace DCFApixels.DragonECS.Unity.Editors
} }
} }
public readonly ref struct ScriptAssetButtonCommand public static void ScriptAssetButton(Rect position, MonoScript script)
{
public enum Command
{
None = 0,
OneClick = 1,
DoubleClick = 2,
}
public readonly Command command;
public ScriptAssetButtonCommand(Command command)
{
this.command = command;
}
public void Execute(MonoScript script)
{
switch (command)
{
case Command.OneClick:
EditorGUIUtility.PingObject(script);
break;
case Command.DoubleClick:
AssetDatabase.OpenAsset(script);
break;
}
}
}
public static ScriptAssetButtonCommand ScriptAssetButton(Rect position, MonoScript script)
{ {
var current = Event.current; var current = Event.current;
var hover = IconHoverScan(position, current); var hover = IconHoverScan(position, current);
using (new ColorScope(new Color(1f, 1f, 1f, hover ? 1f : 0.8f))) using (new ColorScope(new Color(1f, 1f, 1f, hover ? 1f : 0.8f)))
{ {
DrawIcon(position, Icons.Instance.FileIcon, hover ? 1f : 2f, "One click - Ping File. Double click - Edit Script"); DrawIcon(position, Icons.Instance.FileIcon, hover ? 1f : 2f, "One click - Ping File. Double click - Edit Script");
} }
if (hover) if (hover)
{ {
if (current.type == EventType.MouseUp) if (current.type == EventType.MouseUp)
@ -272,7 +243,6 @@ namespace DCFApixels.DragonECS.Unity.Editors
AssetDatabase.OpenAsset(script); AssetDatabase.OpenAsset(script);
} }
} }
return default;
} }
public static bool CloseButton(Rect position, string description = null) public static bool CloseButton(Rect position, string description = null)
{ {
@ -481,6 +451,10 @@ namespace DCFApixels.DragonECS.Unity.Editors
public static class Layout public static class Layout
{ {
public static void ScriptAssetButton(MonoScript script, params GUILayoutOption[] options)
{
EcsGUI.ScriptAssetButton(GUILayoutUtility.GetRect(UnityEditorUtility.GetLabelTemp(), EditorStyles.miniButton, options), script);
}
public static bool IconButton(Texture icon, params GUILayoutOption[] options) public static bool IconButton(Texture icon, params GUILayoutOption[] options)
{ {
bool result = GUILayout.Button(UnityEditorUtility.GetLabel(string.Empty), options); bool result = GUILayout.Button(UnityEditorUtility.GetLabel(string.Empty), options);
@ -646,7 +620,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
if (UnityEditorUtility.TryGetScriptAsset(componentType, out MonoScript script)) if (UnityEditorUtility.TryGetScriptAsset(componentType, out MonoScript script))
{ {
optionButton = HeadIconsRect.MoveTo(optionButton.center - (Vector2.right * optionButton.width)); optionButton = HeadIconsRect.MoveTo(optionButton.center - (Vector2.right * optionButton.width));
ScriptAssetButton(optionButton, script); EcsGUI.ScriptAssetButton(optionButton, script);
} }
//Description icon //Description icon
if (string.IsNullOrEmpty(meta.Description.Text) == false) if (string.IsNullOrEmpty(meta.Description.Text) == false)