From dfcdebab418bad438c8703609972f4e8785dc2eb Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Fri, 26 Apr 2024 06:05:29 +0800 Subject: [PATCH] update templates --- src/Connectors/EcsEntityConnect.cs | 16 ++++++++-------- .../Templates/MonoEntityTemplate.cs | 9 +++++++-- .../Templates/ScriptableEntityTemplate.cs | 9 +++++++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/Connectors/EcsEntityConnect.cs b/src/Connectors/EcsEntityConnect.cs index e56c448..78db7ff 100644 --- a/src/Connectors/EcsEntityConnect.cs +++ b/src/Connectors/EcsEntityConnect.cs @@ -60,9 +60,9 @@ namespace DCFApixels.DragonECS [SerializeField] private bool _deleteEntiityWithDestroy = false; [SerializeField] - private ScriptableEntityTemplate[] _scriptableTemplates; + private ScriptableEntityTemplateBase[] _scriptableTemplates; [SerializeField] - private MonoEntityTemplate[] _monoTemplates; + private MonoEntityTemplateBase[] _monoTemplates; private bool _isConnectInvoked = false; @@ -82,11 +82,11 @@ namespace DCFApixels.DragonECS [MethodImpl(MethodImplOptions.AggressiveInlining)] get { return _entity.IsAlive; } } - public IEnumerable ScriptableTemplates + public IEnumerable ScriptableTemplates { get { return _scriptableTemplates; } } - public IEnumerable MonoTemplates + public IEnumerable MonoTemplates { get { return _monoTemplates; } } @@ -198,7 +198,7 @@ namespace DCFApixels.DragonECS private static void Autoset(EcsEntityConnect target) { - IEnumerable result; + IEnumerable result; if (target.MonoTemplates != null && target.MonoTemplates.Count() > 0) { result = target.MonoTemplates.Where(o => o != null).Union(GetTemplatesFor(target.transform)); @@ -211,15 +211,15 @@ namespace DCFApixels.DragonECS target._monoTemplates = result.ToArray(); EditorUtility.SetDirty(target); } - private static IEnumerable GetTemplatesFor(Transform parent) + private static IEnumerable GetTemplatesFor(Transform parent) { - IEnumerable result = parent.GetComponents(); + IEnumerable result = parent.GetComponents(); for (int i = 0; i < parent.childCount; i++) { var child = parent.GetChild(i); if (child.TryGetComponent(out _)) { - return Enumerable.Empty(); + return Enumerable.Empty(); } result = result.Concat(GetTemplatesFor(child)); } diff --git a/src/EntityTemplate/Templates/MonoEntityTemplate.cs b/src/EntityTemplate/Templates/MonoEntityTemplate.cs index 35ac1ef..7bfb03f 100644 --- a/src/EntityTemplate/Templates/MonoEntityTemplate.cs +++ b/src/EntityTemplate/Templates/MonoEntityTemplate.cs @@ -4,9 +4,14 @@ using UnityEngine; namespace DCFApixels.DragonECS { + public abstract class MonoEntityTemplateBase : MonoBehaviour, ITemplate + { + public abstract void Apply(short worldID, int entityID); + } + [DisallowMultipleComponent] [AddComponentMenu(EcsConsts.FRAMEWORK_NAME + "/" + nameof(MonoEntityTemplate), 30)] - public class MonoEntityTemplate : MonoBehaviour, ITemplateInternal + public class MonoEntityTemplate : MonoEntityTemplateBase, ITemplateInternal { [SerializeReference] private IComponentTemplate[] _components; @@ -25,7 +30,7 @@ namespace DCFApixels.DragonECS #endregion #region Methods - public void Apply(short worldID, int entityID) + public override void Apply(short worldID, int entityID) { foreach (var item in _components) { diff --git a/src/EntityTemplate/Templates/ScriptableEntityTemplate.cs b/src/EntityTemplate/Templates/ScriptableEntityTemplate.cs index 198c990..059415a 100644 --- a/src/EntityTemplate/Templates/ScriptableEntityTemplate.cs +++ b/src/EntityTemplate/Templates/ScriptableEntityTemplate.cs @@ -4,8 +4,13 @@ using UnityEngine; namespace DCFApixels.DragonECS { + public abstract class ScriptableEntityTemplateBase : ScriptableObject, ITemplate + { + public abstract void Apply(short worldID, int entityID); + } + [CreateAssetMenu(fileName = nameof(ScriptableEntityTemplate), menuName = EcsConsts.FRAMEWORK_NAME + "/" + nameof(ScriptableEntityTemplate), order = 1)] - public class ScriptableEntityTemplate : ScriptableObject, ITemplateInternal + public class ScriptableEntityTemplate : ScriptableEntityTemplateBase, ITemplateInternal { [SerializeReference] private IComponentTemplate[] _components; @@ -24,7 +29,7 @@ namespace DCFApixels.DragonECS #endregion #region Methods - public void Apply(short worldID, int entityID) + public override void Apply(short worldID, int entityID) { foreach (var item in _components) {