add MetaIDAttribute

This commit is contained in:
Mikhail 2024-09-16 19:30:37 +08:00
parent c12fe06b2d
commit 2410f36e7e
3 changed files with 73 additions and 47 deletions

View File

@ -32,16 +32,16 @@ namespace DCFApixels.DragonECS.Unity.Docs
Array.Sort(array); Array.Sort(array);
return new DragonDocs(array); return new DragonDocs(array);
} }
private static List<Type> GetTypes() private static List<Type> GetTypes()
{ {
Type metaAttributeType = typeof(EcsMetaAttribute); Type metaAttributeType = typeof(EcsMetaAttribute);
Type memberType = typeof(IEcsMember);
List<Type> result = new List<Type>(512); List<Type> result = new List<Type>(512);
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{ {
foreach (var type in assembly.GetTypes()) foreach (var type in assembly.GetTypes())
{ {
if ((type.IsInterface == false && type.IsAbstract == false && memberType.IsAssignableFrom(type)) || Attribute.GetCustomAttributes(type, metaAttributeType, false).Length > 1) if (TypeMeta.IsHasMeta(type))
{ {
result.Add(type); result.Add(type);
} }

View File

@ -25,6 +25,8 @@ namespace DCFApixels.DragonECS.Unity.Docs
[DataMember, SerializeField] internal string _group = string.Empty; [DataMember, SerializeField] internal string _group = string.Empty;
[DataMember, SerializeField] internal string[] _tags = Array.Empty<string>(); [DataMember, SerializeField] internal string[] _tags = Array.Empty<string>();
[DataMember, SerializeField] internal string _metaID = string.Empty;
[DataMember, SerializeField] internal bool _isHidden = false; [DataMember, SerializeField] internal bool _isHidden = false;
@ -72,6 +74,10 @@ namespace DCFApixels.DragonECS.Unity.Docs
{ {
get { return _tags; } get { return _tags; }
} }
public string MetaID
{
get { return _metaID; }
}
public bool IsHidden public bool IsHidden
{ {
get { return _isHidden; } get { return _isHidden; }
@ -107,6 +113,8 @@ namespace DCFApixels.DragonECS.Unity.Docs
_tags[i] = meta.Tags[i]; _tags[i] = meta.Tags[i];
} }
_metaID = meta.MetaID;
_isHidden = meta.IsHidden; _isHidden = meta.IsHidden;
} }

View File

@ -246,10 +246,13 @@ namespace DCFApixels.DragonECS.Unity.Docs.Editors
Color alphaPanelColor = panelColor; Color alphaPanelColor = panelColor;
alphaPanelColor.a = EscEditorConsts.COMPONENT_DRAWER_ALPHA; alphaPanelColor.a = EscEditorConsts.COMPONENT_DRAWER_ALPHA;
GUILayout.BeginVertical(UnityEditorUtility.GetStyle(alphaPanelColor)); using (EcsGUI.Layout.BeginVertical(UnityEditorUtility.GetStyle(alphaPanelColor)))
{
GUILayout.Space(1f); GUILayout.Space(1f);
GUILayout.BeginHorizontal(); //draw title block
using (EcsGUI.Layout.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)) if (meta.TryGetSourceType(out System.Type targetType) && UnityEditorUtility.TryGetScriptAsset(targetType, out MonoScript script))
{ {
@ -262,8 +265,9 @@ namespace DCFApixels.DragonECS.Unity.Docs.Editors
GUILayout.TextArea(IsUseCustomNames ? meta.TypeName : meta.Name, GUI.skin.label); GUILayout.TextArea(IsUseCustomNames ? meta.TypeName : meta.Name, GUI.skin.label);
} }
} }
GUILayout.EndHorizontal(); }
//draw description block
Rect lastRect = GUILayoutUtility.GetLastRect(); Rect lastRect = GUILayoutUtility.GetLastRect();
if (string.IsNullOrEmpty(meta.Description) == false) if (string.IsNullOrEmpty(meta.Description) == false)
{ {
@ -278,7 +282,8 @@ namespace DCFApixels.DragonECS.Unity.Docs.Editors
GUILayout.TextArea(meta.Description, EditorStyles.wordWrappedLabel); GUILayout.TextArea(meta.Description, EditorStyles.wordWrappedLabel);
} }
if (meta._tags.Length > 0) //footer line
if (string.IsNullOrEmpty(meta.MetaID) == false || meta._tags.Length > 0)
{ {
Rect lineRect = GUILayoutUtility.GetLastRect(); Rect lineRect = GUILayoutUtility.GetLastRect();
lineRect.yMin = lineRect.yMax; lineRect.yMin = lineRect.yMax;
@ -287,7 +292,21 @@ namespace DCFApixels.DragonECS.Unity.Docs.Editors
EditorGUI.DrawRect(lineRect, new Color(1, 1, 1, 0.12f)); EditorGUI.DrawRect(lineRect, new Color(1, 1, 1, 0.12f));
GUILayout.Space(3f); GUILayout.Space(3f);
}
//draw metaid block
if (string.IsNullOrEmpty(meta.MetaID) == false)
{
using (EcsGUI.SetAlpha(0.5f))
{
GUILayout.TextArea(meta.MetaID, EditorStyles.wordWrappedMiniLabel);
}
//EditorGUI.DrawRect(lineRect, new Color(1, 1, 1, 0.12f));
}
//draw tags block
if (meta._tags.Length > 0)
{
var tagsstring = string.Join(',', meta._tags); var tagsstring = string.Join(',', meta._tags);
using (EcsGUI.SetAlpha(0.5f)) using (EcsGUI.SetAlpha(0.5f))
{ {
@ -295,9 +314,8 @@ namespace DCFApixels.DragonECS.Unity.Docs.Editors
} }
} }
GUILayout.Space(1f); GUILayout.Space(1f);
GUILayout.EndVertical(); }
} }
} }