mirror of
https://github.com/DCFApixels/DragonECS-Unity.git
synced 2026-04-22 04:35:55 +08:00
Squashed commit of the following:
commit 2bf43449ed537fcf0edf3720483bdb9fa0f6b4e6
Author: Mikhail <99481254+DCFApixels@users.noreply.github.com>
Date: Mon Mar 30 16:22:38 2026 +0800
Fix component draw
commit 4ad2027cc8565cc73270e52ac3760d6e7ae26531
Author: Mikhail <99481254+DCFApixels@users.noreply.github.com>
Date: Mon Mar 30 14:58:22 2026 +0800
Update EcsGUI.cs
commit 9ac41ff8ce4512c0e3bfe77a5a2a84266a722228
Author: Mikhail <99481254+DCFApixels@users.noreply.github.com>
Date: Mon Mar 30 14:55:24 2026 +0800
stash
This commit is contained in:
parent
20a409049d
commit
35642db710
@ -714,48 +714,48 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
{
|
{
|
||||||
return DrawTypeMetaBlockPadding * 2 + contentHeight;
|
return DrawTypeMetaBlockPadding * 2 + contentHeight;
|
||||||
}
|
}
|
||||||
public static bool DrawTypeMetaElementBlock(ref Rect position, SerializedProperty arrayProperty, int elementIndex, SerializedProperty elementRootProperty, ITypeMeta meta)
|
|
||||||
|
public static bool DrawTypeMetaElementBlock(ref Rect rect, SerializedProperty arrayProperty, int elementIndex, SerializedProperty elementRootProperty, ITypeMeta meta)
|
||||||
{
|
{
|
||||||
var result = DrawTypeMetaBlock_Internal(ref position, elementRootProperty, meta, elementIndex, arrayProperty.arraySize);
|
var result = DrawTypeMetaBlock_Internal(ref rect, elementRootProperty, meta, elementIndex, arrayProperty.arraySize);
|
||||||
if (result.HasFlag(DrawTypeMetaBlockResult.CloseButtonClicked))
|
if (result.HasFlag(DrawTypeMetaBlockResultFlags.CloseButtonClicked))
|
||||||
{
|
{
|
||||||
arrayProperty.DeleteArrayElementAtIndex(elementIndex);
|
arrayProperty.DeleteArrayElementAtIndex(elementIndex);
|
||||||
}
|
}
|
||||||
return result != DrawTypeMetaBlockResult.None;
|
return result != DrawTypeMetaBlockResultFlags.None;
|
||||||
}
|
}
|
||||||
public static bool DrawTypeMetaBlock(ref Rect position, SerializedProperty rootProperty, ITypeMeta meta, int index = -1, int total = -1)
|
public static bool DrawTypeMetaBlock(ref Rect rect, SerializedProperty rootProperty, ITypeMeta meta, int index = -1, int total = -1)
|
||||||
{
|
{
|
||||||
var result = DrawTypeMetaBlock_Internal(ref position, rootProperty, meta, index, total);
|
var result = DrawTypeMetaBlock_Internal(ref rect, rootProperty, meta, index, total);
|
||||||
if (result.HasFlag(DrawTypeMetaBlockResult.CloseButtonClicked))
|
if (result.HasFlag(DrawTypeMetaBlockResultFlags.CloseButtonClicked))
|
||||||
{
|
{
|
||||||
rootProperty.ResetValues();
|
rootProperty.ResetValues();
|
||||||
}
|
}
|
||||||
return result.HasFlag(DrawTypeMetaBlockResult.Drop);
|
return result.HasFlag(DrawTypeMetaBlockResultFlags.DropExpanded);
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum DrawTypeMetaBlockResult
|
[Flags]
|
||||||
|
private enum DrawTypeMetaBlockResultFlags
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
Drop = 1 << 0,
|
DropExpanded = 1 << 0,
|
||||||
CloseButtonClicked = 1 << 1,
|
CloseButtonClicked = 1 << 1,
|
||||||
}
|
}
|
||||||
private static DrawTypeMetaBlockResult DrawTypeMetaBlock_Internal(ref Rect position, SerializedProperty rootProperty, ITypeMeta meta, int index = -1, int total = -1)
|
|
||||||
|
|
||||||
|
private static DrawTypeMetaBlockResultFlags DrawTypeMetaBlock_Internal(ref Rect rect, SerializedProperty rootProperty, ITypeMeta meta, int index = -1, int total = -1)
|
||||||
{
|
{
|
||||||
Color alphaPanelColor;
|
|
||||||
if (meta == null)
|
if (meta == null)
|
||||||
{
|
{
|
||||||
alphaPanelColor = Color.black;
|
EditorGUI.DrawRect(rect, Color.black.SetAlpha(EscEditorConsts.COMPONENT_DRAWER_ALPHA));
|
||||||
alphaPanelColor.a = EscEditorConsts.COMPONENT_DRAWER_ALPHA;
|
return DrawTypeMetaBlockResultFlags.None;
|
||||||
EditorGUI.DrawRect(position, alphaPanelColor);
|
|
||||||
position = position.AddPadding(DrawTypeMetaBlockPadding * 2f);
|
|
||||||
return DrawTypeMetaBlockResult.None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
string name = meta.Name;
|
//string name = meta.Name;
|
||||||
string description = meta.Description.Text;
|
string description = meta.Description.Text;
|
||||||
|
|
||||||
int positionIndex;
|
int positionIndex = index;
|
||||||
if (index < 0)
|
if (positionIndex < 0)
|
||||||
{
|
{
|
||||||
positionIndex = int.MaxValue;
|
positionIndex = int.MaxValue;
|
||||||
var counter = rootProperty.Copy();
|
var counter = rootProperty.Copy();
|
||||||
@ -765,53 +765,51 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
positionIndex--;
|
positionIndex--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
positionIndex = index;
|
|
||||||
}
|
|
||||||
|
|
||||||
alphaPanelColor = SelectPanelColor(meta, positionIndex, total).Desaturate(EscEditorConsts.COMPONENT_DRAWER_DESATURATE).SetAlpha(EscEditorConsts.COMPONENT_DRAWER_ALPHA);
|
Color panelColor = SelectPanelColor(meta, positionIndex, total)
|
||||||
|
.Desaturate(EscEditorConsts.COMPONENT_DRAWER_DESATURATE)
|
||||||
|
.SetAlpha(EscEditorConsts.COMPONENT_DRAWER_ALPHA);
|
||||||
|
|
||||||
DrawTypeMetaBlockResult result = DrawTypeMetaBlockResult.None;
|
EditorGUI.DrawRect(rect, panelColor);
|
||||||
|
|
||||||
|
Rect optionRect = rect;
|
||||||
|
rect = rect.AddPadding(DrawTypeMetaBlockPadding * 2f);
|
||||||
|
|
||||||
|
optionRect.center -= new Vector2(0, optionRect.height);
|
||||||
|
optionRect.yMin = optionRect.yMax;
|
||||||
|
optionRect.yMax += HeadIconsRect.height;
|
||||||
|
optionRect.xMin = optionRect.xMax - 64;
|
||||||
|
optionRect.center += Vector2.up * DrawTypeMetaBlockPadding;
|
||||||
|
|
||||||
|
DrawTypeMetaBlockResultFlags result = DrawTypeMetaBlockResultFlags.None;
|
||||||
using (CheckChanged())
|
using (CheckChanged())
|
||||||
{
|
{
|
||||||
EditorGUI.DrawRect(position, alphaPanelColor);
|
|
||||||
|
|
||||||
Rect optionButton = position;
|
|
||||||
position = position.AddPadding(DrawTypeMetaBlockPadding * 2f);
|
|
||||||
|
|
||||||
optionButton.center -= new Vector2(0, optionButton.height);
|
|
||||||
optionButton.yMin = optionButton.yMax;
|
|
||||||
optionButton.yMax += HeadIconsRect.height;
|
|
||||||
optionButton.xMin = optionButton.xMax - 64;
|
|
||||||
optionButton.center += Vector2.up * DrawTypeMetaBlockPadding;
|
|
||||||
|
|
||||||
//Canceling isExpanded
|
//Canceling isExpanded
|
||||||
bool oldIsExpanded = rootProperty.isExpanded;
|
bool oldIsExpanded = rootProperty.isExpanded;
|
||||||
if (ClickTest(optionButton))
|
if (ClickTest(optionRect))
|
||||||
{
|
{
|
||||||
rootProperty.isExpanded = oldIsExpanded;
|
rootProperty.isExpanded = oldIsExpanded;
|
||||||
result |= DrawTypeMetaBlockResult.Drop;
|
result |= DrawTypeMetaBlockResultFlags.DropExpanded;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Close button
|
//Close button
|
||||||
optionButton.xMin = optionButton.xMax - HeadIconsRect.width;
|
optionRect.xMin = optionRect.xMax - HeadIconsRect.width;
|
||||||
if (CloseButton(optionButton))
|
if (CloseButton(optionRect))
|
||||||
{
|
{
|
||||||
result |= DrawTypeMetaBlockResult.CloseButtonClicked;
|
result |= DrawTypeMetaBlockResultFlags.CloseButtonClicked;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
//Edit script button
|
//Edit script button
|
||||||
if (ScriptsCache.TryGetScriptAsset(meta.FindRootTypeMeta(), out MonoScript script))
|
if (ScriptsCache.TryGetScriptAsset(meta.FindRootTypeMeta(), out MonoScript script))
|
||||||
{
|
{
|
||||||
optionButton = HeadIconsRect.MoveTo(optionButton.center - (Vector2.right * optionButton.width));
|
optionRect = HeadIconsRect.MoveTo(optionRect.center - (Vector2.right * optionRect.width));
|
||||||
ScriptAssetButton(optionButton, script);
|
ScriptAssetButton(optionRect, script);
|
||||||
}
|
}
|
||||||
//Description icon
|
//Description icon
|
||||||
if (string.IsNullOrEmpty(description) == false)
|
if (string.IsNullOrEmpty(description) == false)
|
||||||
{
|
{
|
||||||
optionButton = HeadIconsRect.MoveTo(optionButton.center - (Vector2.right * optionButton.width));
|
optionRect = HeadIconsRect.MoveTo(optionRect.center - (Vector2.right * optionRect.width));
|
||||||
DescriptionIcon(optionButton, description);
|
DescriptionIcon(optionRect, description);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -890,20 +888,22 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
switch (AutoColorMode)
|
switch (AutoColorMode)
|
||||||
{
|
{
|
||||||
case ComponentColorMode.Auto:
|
case ComponentColorMode.Auto:
|
||||||
return color.ToUnityColor().Desaturate(0.48f) / 1.18f; //.Desaturate(0.48f) / 1.18f;
|
{
|
||||||
|
return color.ToUnityColor().Desaturate(0.48f) / 1.18f; //.Desaturate(0.48f) / 1.18f;
|
||||||
|
}
|
||||||
case ComponentColorMode.Rainbow:
|
case ComponentColorMode.Rainbow:
|
||||||
int localTotal = Mathf.Max(total, EscEditorConsts.AUTO_COLOR_RAINBOW_MIN_RANGE);
|
{
|
||||||
Color hsv = Color.HSVToRGB(1f / localTotal * (index % localTotal), 1, 1);
|
int localTotal = Mathf.Max(total, EscEditorConsts.AUTO_COLOR_RAINBOW_MIN_RANGE);
|
||||||
return hsv.Desaturate(0.48f) / 1.18f;
|
Color hsv = Color.HSVToRGB(1f / localTotal * (index % localTotal), 1, 1);
|
||||||
|
return hsv.Desaturate(0.48f) / 1.18f;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return GetGenericPanelColor(index);
|
{
|
||||||
|
return index % 2 == 0 ? new Color(0.40f, 0.40f, 0.40f) : new Color(0.54f, 0.54f, 0.54f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static Color GetGenericPanelColor(int index)
|
|
||||||
{
|
|
||||||
return index % 2 == 0 ? new Color(0.40f, 0.40f, 0.40f) : new Color(0.54f, 0.54f, 0.54f);
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Other Elements
|
#region Other Elements
|
||||||
|
|||||||
@ -37,7 +37,6 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
[CustomPropertyDrawer(typeof(ComponentTemplateReferenceAttribute), true)]
|
|
||||||
[CustomPropertyDrawer(typeof(ReferenceButtonAttribute), true)]
|
[CustomPropertyDrawer(typeof(ReferenceButtonAttribute), true)]
|
||||||
internal sealed class ReferenceButtonAttributeDrawer : ExtendedPropertyDrawer<IReferenceButtonAttribute>
|
internal sealed class ReferenceButtonAttributeDrawer : ExtendedPropertyDrawer<IReferenceButtonAttribute>
|
||||||
{
|
{
|
||||||
@ -68,7 +67,8 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
if (property.managedReferenceValue != null &&
|
if (property.propertyType == SerializedPropertyType.ManagedReference &&
|
||||||
|
property.managedReferenceValue != null &&
|
||||||
Cahce(property).HasSerializableData_Editor)
|
Cahce(property).HasSerializableData_Editor)
|
||||||
{
|
{
|
||||||
return EditorGUI.GetPropertyHeight(property, label, true);
|
return EditorGUI.GetPropertyHeight(property, label, true);
|
||||||
@ -81,6 +81,11 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
|
|
||||||
protected override void DrawCustom(Rect position, SerializedProperty property, GUIContent label)
|
protected override void DrawCustom(Rect position, SerializedProperty property, GUIContent label)
|
||||||
{
|
{
|
||||||
|
if(property.propertyType != SerializedPropertyType.ManagedReference)
|
||||||
|
{
|
||||||
|
GUI.Label(position, label);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (IsArrayElement)
|
if (IsArrayElement)
|
||||||
{
|
{
|
||||||
label = UnityEditorUtility.GetLabelTemp();
|
label = UnityEditorUtility.GetLabelTemp();
|
||||||
|
|||||||
@ -77,4 +77,5 @@ namespace DCFApixels.DragonECS
|
|||||||
IsHideButtonIfNotNull = true;
|
IsHideButtonIfNotNull = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public sealed class ComponentTemplateAttribute : PropertyAttribute { }
|
||||||
}
|
}
|
||||||
@ -58,37 +58,40 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
|
|
||||||
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||||
{
|
{
|
||||||
#region No SerializeReference
|
bool isSerializeReference = property.propertyType == SerializedPropertyType.ManagedReference;
|
||||||
if (property.propertyType != SerializedPropertyType.ManagedReference)
|
//#region No SerializeReference
|
||||||
{
|
//if (property.propertyType != SerializedPropertyType.ManagedReference)
|
||||||
return EditorGUI.GetPropertyHeight(property, label);
|
//{
|
||||||
}
|
// return EditorGUI.GetPropertyHeight(property, label);
|
||||||
#endregion
|
//}
|
||||||
|
//#endregion
|
||||||
|
|
||||||
var instance = property.managedReferenceValue;
|
if (isSerializeReference)
|
||||||
IComponentTemplate template = instance as IComponentTemplate;
|
|
||||||
|
|
||||||
if (template == null || instance == null)
|
|
||||||
{
|
{
|
||||||
return EditorGUIUtility.singleLineHeight + Padding * 2f;
|
var instance = property.managedReferenceValue;
|
||||||
}
|
IComponentTemplate template = instance as IComponentTemplate;
|
||||||
|
if (instance == null)
|
||||||
try
|
|
||||||
{
|
|
||||||
if (instance is ComponentTemplateBase customTemplate)
|
|
||||||
{
|
{
|
||||||
property = property.FindPropertyRelative("component");
|
return EditorGUIUtility.singleLineHeight + Padding * 2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (instance is ComponentTemplateBase customTemplate)
|
||||||
|
{
|
||||||
|
property = property.FindPropertyRelative("component");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
property = null;
|
||||||
|
}
|
||||||
|
if (property == null)
|
||||||
|
{
|
||||||
|
return DamagedComponentHeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
property = null;
|
|
||||||
}
|
|
||||||
if (property == null)
|
|
||||||
{
|
|
||||||
return DamagedComponentHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
int propCount = EcsGUI.GetChildPropertiesCount(property);
|
int propCount = EcsGUI.GetChildPropertiesCount(property);
|
||||||
|
|
||||||
return (propCount <= 0 ? EditorGUIUtility.singleLineHeight : EditorGUI.GetPropertyHeight(property, label)) + Padding * 4f;
|
return (propCount <= 0 ? EditorGUIUtility.singleLineHeight : EditorGUI.GetPropertyHeight(property, label)) + Padding * 4f;
|
||||||
@ -98,39 +101,47 @@ namespace DCFApixels.DragonECS.Unity.Editors
|
|||||||
{
|
{
|
||||||
Draw(position, property, property, label);
|
Draw(position, property, property, label);
|
||||||
}
|
}
|
||||||
public void Draw(Rect position, SerializedProperty rootProperty, SerializedProperty property, GUIContent label)
|
public void Draw(Rect rect, SerializedProperty rootProperty, SerializedProperty property, GUIContent label)
|
||||||
{
|
{
|
||||||
#region No SerializeReference
|
bool isSerializeReference = property.propertyType == SerializedPropertyType.ManagedReference;
|
||||||
if (property.propertyType != SerializedPropertyType.ManagedReference)
|
//#region No SerializeReference
|
||||||
{
|
//if (isSerializeReference == false)
|
||||||
EditorGUI.PropertyField(position, property, label, true);
|
//{
|
||||||
return;
|
// EditorGUI.PropertyField(position, property, label, true);
|
||||||
}
|
// return;
|
||||||
#endregion
|
//}
|
||||||
|
//#endregion
|
||||||
var instance = property.managedReferenceValue;
|
|
||||||
IComponentTemplate template = instance as IComponentTemplate;
|
|
||||||
|
|
||||||
if (template == null || instance == null)
|
|
||||||
{
|
|
||||||
DrawSelectionPopup(position, property, label);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
ITypeMeta meta = null;
|
||||||
SerializedProperty componentProp = property;
|
SerializedProperty componentProp = property;
|
||||||
if (componentProp.managedReferenceValue is ComponentTemplateBase customTemplate)
|
if (isSerializeReference)
|
||||||
{
|
{
|
||||||
componentProp = property.FindPropertyRelative("component");
|
var instance = property.managedReferenceValue;
|
||||||
|
if (instance == null)
|
||||||
|
{
|
||||||
|
DrawSelectionPopup(rect, property, label);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IComponentTemplate template = instance as IComponentTemplate;
|
||||||
|
if (componentProp.managedReferenceValue is ComponentTemplateBase customTemplate)
|
||||||
|
{
|
||||||
|
componentProp = property.FindPropertyRelative("component");
|
||||||
|
}
|
||||||
|
if (componentProp == null)
|
||||||
|
{
|
||||||
|
DrawDamagedComponent(rect, "Damaged component template.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
meta = template is ITypeMeta metaOverride ? metaOverride : template.Type.GetMeta();
|
||||||
}
|
}
|
||||||
if (componentProp == null)
|
else
|
||||||
{
|
{
|
||||||
DrawDamagedComponent(position, "Damaged component template.");
|
meta = fieldInfo.FieldType.GetMeta();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ITypeMeta meta = template is ITypeMeta metaOverride ? metaOverride : template.Type.GetMeta();
|
|
||||||
|
|
||||||
Rect rect = position;
|
|
||||||
if (EcsGUI.DrawTypeMetaBlock(ref rect, rootProperty, meta))
|
if (EcsGUI.DrawTypeMetaBlock(ref rect, rootProperty, meta))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace DCFApixels.DragonECS.Unity.Editors
|
namespace DCFApixels.DragonECS.Unity.Editors
|
||||||
{
|
{
|
||||||
internal abstract class EntityTemplateEditorBase : ExtendedEditor<ITemplateNode>
|
internal abstract class EntityTemplateEditorBase : ExtendedEditor
|
||||||
{
|
{
|
||||||
private ComponentTemplatesDropDown _componentDropDown;
|
private ComponentTemplatesDropDown _componentDropDown;
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
#undef DEBUG
|
#undef DEBUG
|
||||||
#endif
|
#endif
|
||||||
using DCFApixels.DragonECS.Unity;
|
using DCFApixels.DragonECS.Unity;
|
||||||
using DCFApixels.DragonECS.Unity.Internal;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -25,12 +24,12 @@ namespace DCFApixels.DragonECS
|
|||||||
public class MonoEntityTemplate : MonoEntityTemplateBase, ITemplateNode
|
public class MonoEntityTemplate : MonoEntityTemplateBase, ITemplateNode
|
||||||
{
|
{
|
||||||
[SerializeReference]
|
[SerializeReference]
|
||||||
[ReferenceButton(true, typeof(IComponentTemplate))]
|
[ReferenceButton(true, typeof(ITemplateNode))]
|
||||||
[FormerlySerializedAs("_components")]
|
[FormerlySerializedAs("_components")]
|
||||||
private IComponentTemplate[] _componentTemplates;
|
private ITemplateNode[] _componentTemplates;
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
public ReadOnlySpan<IComponentTemplate> GetComponentTemplates()
|
public ReadOnlySpan<ITemplateNode> GetComponentTemplates()
|
||||||
{
|
{
|
||||||
return _componentTemplates;
|
return _componentTemplates;
|
||||||
}
|
}
|
||||||
@ -57,7 +56,7 @@ namespace DCFApixels.DragonECS
|
|||||||
if (_componentTemplates == null) { return; }
|
if (_componentTemplates == null) { return; }
|
||||||
foreach (var item in _componentTemplates)
|
foreach (var item in _componentTemplates)
|
||||||
{
|
{
|
||||||
item?.OnValidate(gameObject);
|
if(item is IComponentTemplate ct) { ct.OnValidate(gameObject); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OnDrawGizmos()
|
private void OnDrawGizmos()
|
||||||
@ -65,7 +64,7 @@ namespace DCFApixels.DragonECS
|
|||||||
if (_componentTemplates == null) { return; }
|
if (_componentTemplates == null) { return; }
|
||||||
foreach (var item in _componentTemplates)
|
foreach (var item in _componentTemplates)
|
||||||
{
|
{
|
||||||
item?.OnGizmos(transform, IComponentTemplate.GizmosMode.Always);
|
if(item is IComponentTemplate ct) { ct.OnGizmos(transform, IComponentTemplate.GizmosMode.Always); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OnDrawGizmosSelected()
|
private void OnDrawGizmosSelected()
|
||||||
@ -73,7 +72,7 @@ namespace DCFApixels.DragonECS
|
|||||||
if (_componentTemplates == null) { return; }
|
if (_componentTemplates == null) { return; }
|
||||||
foreach (var item in _componentTemplates)
|
foreach (var item in _componentTemplates)
|
||||||
{
|
{
|
||||||
item?.OnGizmos(transform, IComponentTemplate.GizmosMode.Selected);
|
if(item is IComponentTemplate ct) { ct.OnGizmos(transform, IComponentTemplate.GizmosMode.Selected); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
#undef DEBUG
|
#undef DEBUG
|
||||||
#endif
|
#endif
|
||||||
using DCFApixels.DragonECS.Unity;
|
using DCFApixels.DragonECS.Unity;
|
||||||
using DCFApixels.DragonECS.Unity.Internal;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -26,9 +25,9 @@ namespace DCFApixels.DragonECS
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
private ScriptableEntityTemplateBase[] _templates;
|
private ScriptableEntityTemplateBase[] _templates;
|
||||||
[SerializeReference]
|
[SerializeReference]
|
||||||
[ReferenceButton(true, typeof(IComponentTemplate))]
|
[ReferenceButton(true, typeof(ITemplateNode))]
|
||||||
[FormerlySerializedAs("_components")]
|
[FormerlySerializedAs("_components")]
|
||||||
private IComponentTemplate[] _componentTemplates;
|
private ITemplateNode[] _componentTemplates;
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
public ReadOnlySpan<ScriptableEntityTemplateBase> GetTemplates()
|
public ReadOnlySpan<ScriptableEntityTemplateBase> GetTemplates()
|
||||||
@ -39,7 +38,7 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
_templates = templates.ToArray();
|
_templates = templates.ToArray();
|
||||||
}
|
}
|
||||||
public ReadOnlySpan<IComponentTemplate> GetComponentTemplates()
|
public ReadOnlySpan<ITemplateNode> GetComponentTemplates()
|
||||||
{
|
{
|
||||||
return _componentTemplates;
|
return _componentTemplates;
|
||||||
}
|
}
|
||||||
@ -70,7 +69,7 @@ namespace DCFApixels.DragonECS
|
|||||||
if (_componentTemplates == null) { return; }
|
if (_componentTemplates == null) { return; }
|
||||||
foreach (var item in _componentTemplates)
|
foreach (var item in _componentTemplates)
|
||||||
{
|
{
|
||||||
item?.OnValidate(this);
|
if (item is IComponentTemplate ct) { ct.OnValidate(this); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user