mirror of
https://github.com/DCFApixels/DragonECS-Unity.git
synced 2025-09-18 18:14:35 +08:00
update templates
This commit is contained in:
parent
07cb628af7
commit
dfcdebab41
@ -60,9 +60,9 @@ namespace DCFApixels.DragonECS
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
private bool _deleteEntiityWithDestroy = false;
|
private bool _deleteEntiityWithDestroy = false;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private ScriptableEntityTemplate[] _scriptableTemplates;
|
private ScriptableEntityTemplateBase[] _scriptableTemplates;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private MonoEntityTemplate[] _monoTemplates;
|
private MonoEntityTemplateBase[] _monoTemplates;
|
||||||
|
|
||||||
private bool _isConnectInvoked = false;
|
private bool _isConnectInvoked = false;
|
||||||
|
|
||||||
@ -82,11 +82,11 @@ namespace DCFApixels.DragonECS
|
|||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
get { return _entity.IsAlive; }
|
get { return _entity.IsAlive; }
|
||||||
}
|
}
|
||||||
public IEnumerable<ScriptableEntityTemplate> ScriptableTemplates
|
public IEnumerable<ScriptableEntityTemplateBase> ScriptableTemplates
|
||||||
{
|
{
|
||||||
get { return _scriptableTemplates; }
|
get { return _scriptableTemplates; }
|
||||||
}
|
}
|
||||||
public IEnumerable<MonoEntityTemplate> MonoTemplates
|
public IEnumerable<MonoEntityTemplateBase> MonoTemplates
|
||||||
{
|
{
|
||||||
get { return _monoTemplates; }
|
get { return _monoTemplates; }
|
||||||
}
|
}
|
||||||
@ -198,7 +198,7 @@ namespace DCFApixels.DragonECS
|
|||||||
|
|
||||||
private static void Autoset(EcsEntityConnect target)
|
private static void Autoset(EcsEntityConnect target)
|
||||||
{
|
{
|
||||||
IEnumerable<MonoEntityTemplate> result;
|
IEnumerable<MonoEntityTemplateBase> result;
|
||||||
if (target.MonoTemplates != null && target.MonoTemplates.Count() > 0)
|
if (target.MonoTemplates != null && target.MonoTemplates.Count() > 0)
|
||||||
{
|
{
|
||||||
result = target.MonoTemplates.Where(o => o != null).Union(GetTemplatesFor(target.transform));
|
result = target.MonoTemplates.Where(o => o != null).Union(GetTemplatesFor(target.transform));
|
||||||
@ -211,15 +211,15 @@ namespace DCFApixels.DragonECS
|
|||||||
target._monoTemplates = result.ToArray();
|
target._monoTemplates = result.ToArray();
|
||||||
EditorUtility.SetDirty(target);
|
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++)
|
for (int i = 0; i < parent.childCount; i++)
|
||||||
{
|
{
|
||||||
var child = parent.GetChild(i);
|
var child = parent.GetChild(i);
|
||||||
if (child.TryGetComponent<EcsEntityConnect>(out _))
|
if (child.TryGetComponent<EcsEntityConnect>(out _))
|
||||||
{
|
{
|
||||||
return Enumerable.Empty<MonoEntityTemplate>();
|
return Enumerable.Empty<MonoEntityTemplateBase>();
|
||||||
}
|
}
|
||||||
result = result.Concat(GetTemplatesFor(child));
|
result = result.Concat(GetTemplatesFor(child));
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,14 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace DCFApixels.DragonECS
|
namespace DCFApixels.DragonECS
|
||||||
{
|
{
|
||||||
|
public abstract class MonoEntityTemplateBase : MonoBehaviour, ITemplate
|
||||||
|
{
|
||||||
|
public abstract void Apply(short worldID, int entityID);
|
||||||
|
}
|
||||||
|
|
||||||
[DisallowMultipleComponent]
|
[DisallowMultipleComponent]
|
||||||
[AddComponentMenu(EcsConsts.FRAMEWORK_NAME + "/" + nameof(MonoEntityTemplate), 30)]
|
[AddComponentMenu(EcsConsts.FRAMEWORK_NAME + "/" + nameof(MonoEntityTemplate), 30)]
|
||||||
public class MonoEntityTemplate : MonoBehaviour, ITemplateInternal
|
public class MonoEntityTemplate : MonoEntityTemplateBase, ITemplateInternal
|
||||||
{
|
{
|
||||||
[SerializeReference]
|
[SerializeReference]
|
||||||
private IComponentTemplate[] _components;
|
private IComponentTemplate[] _components;
|
||||||
@ -25,7 +30,7 @@ namespace DCFApixels.DragonECS
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
public void Apply(short worldID, int entityID)
|
public override void Apply(short worldID, int entityID)
|
||||||
{
|
{
|
||||||
foreach (var item in _components)
|
foreach (var item in _components)
|
||||||
{
|
{
|
||||||
|
@ -4,8 +4,13 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace DCFApixels.DragonECS
|
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)]
|
[CreateAssetMenu(fileName = nameof(ScriptableEntityTemplate), menuName = EcsConsts.FRAMEWORK_NAME + "/" + nameof(ScriptableEntityTemplate), order = 1)]
|
||||||
public class ScriptableEntityTemplate : ScriptableObject, ITemplateInternal
|
public class ScriptableEntityTemplate : ScriptableEntityTemplateBase, ITemplateInternal
|
||||||
{
|
{
|
||||||
[SerializeReference]
|
[SerializeReference]
|
||||||
private IComponentTemplate[] _components;
|
private IComponentTemplate[] _components;
|
||||||
@ -24,7 +29,7 @@ namespace DCFApixels.DragonECS
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
public void Apply(short worldID, int entityID)
|
public override void Apply(short worldID, int entityID)
|
||||||
{
|
{
|
||||||
foreach (var item in _components)
|
foreach (var item in _components)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user