This commit is contained in:
Mikhail 2024-02-22 23:48:17 +08:00
parent 92697989e1
commit b801139e1c
2 changed files with 13 additions and 23 deletions

View File

@ -141,10 +141,10 @@ namespace DCFApixels.DragonECS
private readonly struct InjectedPropertyRecord
{
public readonly IEcsSystem target;
public readonly IEcsProcess target;
public readonly IInjectedProperty property;
public EcsInjectAttribute Attribute => property.GetAutoInjectAttribute();
public InjectedPropertyRecord(IEcsSystem target, IInjectedProperty property)
public InjectedPropertyRecord(IEcsProcess target, IInjectedProperty property)
{
this.target = target;
this.property = property;
@ -154,33 +154,30 @@ namespace DCFApixels.DragonECS
[MetaTags(MetaTags.HIDDEN)]
[MetaColor(MetaColor.Gray)]
public class AutoInjectSystem : IEcsInject<object>, IEcsPipelineMember, IEcsPreInitInjectProcess
public class AutoInjectSystem : IEcsInject<object>, IEcsPipelineMember, IOnInitInjectionComplete
{
private EcsPipeline _pipeline;
EcsPipeline IEcsPipelineMember.Pipeline { get => _pipeline; set => _pipeline = value; }
private List<object> _delayedInjects = new List<object>();
private AutoInjectionMap _autoInjectionMap;
private bool _preInitInjectCompleted = false;
private bool _isInitInjectionCompleted;
public void Inject(object obj)
{
if (!_preInitInjectCompleted)
{
_delayedInjects.Add(obj);
}
else
if (_isInitInjectionCompleted)
{
_autoInjectionMap.Inject(obj.GetType(), obj);
}
}
public void OnPreInitInjectionBefore(EcsPipeline pipeline)
else
{
_pipeline = pipeline;
_delayedInjects.Add(obj);
}
public void OnPreInitInjectionAfter()
}
public void OnInitInjectionComplete()
{
_autoInjectionMap = new AutoInjectionMap(_pipeline);
_preInitInjectCompleted = true;
_isInitInjectionCompleted = true;
foreach (var obj in _delayedInjects)
{

View File

@ -1,7 +0,0 @@
namespace DCFApixels.DragonECS
{
public interface IInjectRaw : IEcsSystem
{
void Inject(object obj);
}
}