DragonECS-Unity/src/EntityTemplate/Templates/MonoEntityTemplate.cs
2024-03-03 03:51:49 +08:00

66 lines
1.8 KiB
C#

using System;
using UnityEngine;
namespace DCFApixels.DragonECS
{
public class MonoEntityTemplate : MonoBehaviour, ITemplateInternal
{
[SerializeReference]
private IComponentTemplate[] _components;
//[SerializeField]
//private EntityTemplateInheritanceMatrix _inheritanceMatrix;
#region Properties
string ITemplateInternal.ComponentsPropertyName
{
get { return nameof(_components); }
}
//EntityTemplateInheritanceMatrix ITemplateInternal.InheritanceMatrix
//{
// get { return _inheritanceMatrix; }
//}
#endregion
#region Methods
public void Apply(int worldID, int entityID)
{
foreach (var item in _components)
{
item.Apply(worldID, entityID);
}
}
public void Clear()
{
_components = Array.Empty<IComponentTemplate>();
}
#endregion
#region UnityEvents
private void OnValidate()
{
if (_components == null) { return; }
foreach (var item in _components)
{
item.OnValidate(gameObject);
}
}
private void OnDrawGizmos()
{
if (_components == null) { return; }
foreach (var item in _components)
{
item.OnGizmos(transform, IComponentTemplate.GizmosMode.Always);
}
}
private void OnDrawGizmosSelected()
{
if (_components == null) { return; }
foreach (var item in _components)
{
item.OnGizmos(transform, IComponentTemplate.GizmosMode.Selected);
}
}
#endregion
}
}