update templates

This commit is contained in:
Mikhail 2024-04-26 06:05:29 +08:00
parent 07cb628af7
commit dfcdebab41
3 changed files with 22 additions and 12 deletions

View File

@ -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<ScriptableEntityTemplate> ScriptableTemplates
public IEnumerable<ScriptableEntityTemplateBase> ScriptableTemplates
{
get { return _scriptableTemplates; }
}
public IEnumerable<MonoEntityTemplate> MonoTemplates
public IEnumerable<MonoEntityTemplateBase> MonoTemplates
{
get { return _monoTemplates; }
}
@ -198,7 +198,7 @@ namespace DCFApixels.DragonECS
private static void Autoset(EcsEntityConnect target)
{
IEnumerable<MonoEntityTemplate> result;
IEnumerable<MonoEntityTemplateBase> 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<MonoEntityTemplate> GetTemplatesFor(Transform parent)
private static IEnumerable<MonoEntityTemplateBase> GetTemplatesFor(Transform parent)
{
IEnumerable<MonoEntityTemplate> result = parent.GetComponents<MonoEntityTemplate>();
IEnumerable<MonoEntityTemplateBase> result = parent.GetComponents<MonoEntityTemplateBase>();
for (int i = 0; i < parent.childCount; i++)
{
var child = parent.GetChild(i);
if (child.TryGetComponent<EcsEntityConnect>(out _))
{
return Enumerable.Empty<MonoEntityTemplate>();
return Enumerable.Empty<MonoEntityTemplateBase>();
}
result = result.Concat(GetTemplatesFor(child));
}

View File

@ -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)
{

View File

@ -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)
{