remove CustomInjectionNodes

This commit is contained in:
Mikhail 2024-03-02 21:27:50 +08:00
parent f009ef9c1c
commit e326ea4b9c
4 changed files with 6 additions and 79 deletions

View File

@ -141,6 +141,11 @@ namespace DCFApixels.DragonECS
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
_initMarker.Begin();
#endif
var members = GetProcess<IEcsPipelineMember>();
for (int i = 0; i < members.Length; i++)
{
members[i].Pipeline = this;
}
_injector = _injectorBuilder.Build(this);
_injectorBuilder = null;
@ -219,7 +224,7 @@ namespace DCFApixels.DragonECS
_injector.AddNode<object>();
_injector.AddNode<EcsWorld>();
_injector.AddNode<EcsAspect>();
_injector.AddCustomNode(new PipelinePropertyInjectionNode());
_injector.AddNode<EcsPipeline>();
_basicLayer = EcsConsts.BASIC_LAYER;
Layers = new LayerList(this, _basicLayer);
@ -559,14 +564,4 @@ namespace DCFApixels.DragonECS
}
}
#endregion
}
namespace DCFApixels.DragonECS.Internal
{
internal sealed class PipelinePropertyInjectionNode : CustomInjectionNode<IEcsPipelineMember, EcsPipeline>
{
public sealed override void InjectTo(IEcsPipelineMember system, EcsPipeline obj)
{
system.Pipeline = obj;
}
}
}

View File

@ -1,36 +0,0 @@
using System;
namespace DCFApixels.DragonECS
{
public abstract class CustomInjectionNodeBase : InjectionNodeBase
{
protected CustomInjectionNodeBase(Type type) : base(type) { }
}
public abstract class CustomInjectionNode<TProcess, TType> : CustomInjectionNodeBase
where TProcess : IEcsProcess
{
private EcsProcess<TProcess> _processProperty;
private EcsProcess<IEcsInject<TType>> _process;
public CustomInjectionNode() : base(typeof(TType)) { }
public sealed override void Init(EcsPipeline pipeline)
{
_processProperty = pipeline.GetProcess<TProcess>();
_process = pipeline.GetProcess<IEcsInject<TType>>();
OnInitialized(pipeline);
}
public sealed override void Inject(object obj)
{
TType target = (TType)obj;
for (int i = 0; i < _process.Length; i++)
{
_process[i].Inject(target);
}
for (int i = 0; i < _processProperty.Length; i++)
{
InjectTo(_processProperty[i], target);
}
}
public virtual void OnInitialized(EcsPipeline pipeline) { }
public abstract void InjectTo(TProcess system, TType obj);
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 44ecc06211a7d12428151f2898e7d453
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -112,22 +112,6 @@ namespace DCFApixels.DragonECS
}
return true;
}
private bool TryDeclareProperty(CustomInjectionNodeBase injectionProperty)
{
Type type = injectionProperty.Type;
if (_nodes.TryGetValue(type, out InjectionNodeBase oldNode))
{
Throw.Exception("Already declared");
}
InitNode(injectionProperty);
#if !REFLECTION_DISABLED
if (IsCanInstantiated(type))
#endif
{
InitBranch(new InjectionBranch(this, type, true));
}
return true;
}
public class Builder
{
@ -144,11 +128,6 @@ namespace DCFApixels.DragonECS
_instance.TryDeclare<T>();
return _source;
}
public EcsPipeline.Builder AddCustomNode(CustomInjectionNodeBase injectionProperty)
{
_instance.TryDeclareProperty(injectionProperty);
return _source;
}
public EcsPipeline.Builder Inject<T>(T obj)
{
_initInjections.Add(new InitInject<T>(obj));