update pipeline configs

This commit is contained in:
Mikhail 2024-03-07 08:12:20 +08:00
parent ef0f13850f
commit 256b72ad7c

View File

@ -197,16 +197,16 @@ namespace DCFApixels.DragonECS
private readonly Dictionary<string, List<IEcsProcess>> _systems; private readonly Dictionary<string, List<IEcsProcess>> _systems;
private readonly string _basicLayer; private readonly string _basicLayer;
public readonly LayerList Layers; public readonly LayerList Layers;
private readonly IConfigContainerWriter _configs; private readonly Configurator _configurator;
private readonly Injector.Builder _injector; private readonly Injector.Builder _injector;
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS #if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
private EcsProfilerMarker _buildBarker = new EcsProfilerMarker("EcsPipeline.Build"); private EcsProfilerMarker _buildBarker = new EcsProfilerMarker("EcsPipeline.Build");
#endif #endif
private List<InitDeclaredRunner> _initDeclaredRunners = new List<InitDeclaredRunner>(4); private List<InitDeclaredRunner> _initDeclaredRunners = new List<InitDeclaredRunner>(4);
public IConfigContainerWriter Configs public Configurator Configs
{ {
get { return _configs; } get { return _configurator; }
} }
public Injector.Builder Injector public Injector.Builder Injector
{ {
@ -217,8 +217,8 @@ namespace DCFApixels.DragonECS
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS #if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
_buildBarker.Begin(); _buildBarker.Begin();
#endif #endif
if (config == null) { config = ConfigContainer.Empty; } if (config == null) { config = new ConfigContainer(); }
_configs = config; _configurator = new Configurator(config, this);
_injector = new Injector.Builder(this); _injector = new Injector.Builder(this);
_injector.AddNode<object>(); _injector.AddNode<object>();
@ -293,7 +293,7 @@ namespace DCFApixels.DragonECS
if (_systems.TryGetValue(item, out var list)) if (_systems.TryGetValue(item, out var list))
result.AddRange(list); result.AddRange(list);
} }
EcsPipeline pipeline = new EcsPipeline(_configs.GetContainer(), _injector, result.ToArray()); EcsPipeline pipeline = new EcsPipeline(_configurator.Instance.GetContainer(), _injector, result.ToArray());
foreach (var item in _initDeclaredRunners) foreach (var item in _initDeclaredRunners)
{ {
item.Declare(pipeline); item.Declare(pipeline);
@ -315,6 +315,25 @@ namespace DCFApixels.DragonECS
pipeline.GetRunnerInstance<T>(); pipeline.GetRunnerInstance<T>();
} }
} }
public class Configurator
{
private readonly IConfigContainerWriter _configs;
private readonly Builder _builder;
public Configurator(IConfigContainerWriter configs, Builder builder)
{
_configs = configs;
_builder = builder;
}
public IConfigContainerWriter Instance
{
get { return _configs; }
}
public Builder Set<T>(T value)
{
_configs.Set(value);
return _builder;
}
}
public class LayerList : IEnumerable<string> public class LayerList : IEnumerable<string>
{ {
private const string ADD_LAYER = nameof(ADD_LAYER); // автоматический слой нужный только для метода Add private const string ADD_LAYER = nameof(ADD_LAYER); // автоматический слой нужный только для метода Add