This commit is contained in:
Mikhail 2024-10-19 00:03:02 +08:00
parent 4196c1e600
commit f479cb122d
2 changed files with 29 additions and 1 deletions

View File

@ -797,6 +797,32 @@ namespace DCFApixels.DragonECS
public static partial class EcsPipelineBuilderExtensions
{
#region Simple Builders
public static EcsPipeline ToPipeline(this IEcsModule module)
{
return EcsPipeline.New().Add(module).Build();
}
public static EcsPipeline ToPipelineAndInit(this IEcsModule module)
{
return EcsPipeline.New().Add(module).BuildAndInit();
}
public static EcsPipeline ToPipeline(this IEnumerable<IEcsModule> modules)
{
var result = EcsPipeline.New();
foreach (var module in modules)
{
result.Add(module);
}
return result.Build();
}
public static EcsPipeline ToPipelineAndInit(this IEnumerable<IEcsModule> modules)
{
var result = modules.ToPipeline();
result.Init();
return result;
}
#endregion
#region Add IEcsProcess
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static EcsPipeline.Builder Add(this EcsPipeline.Builder self, IEcsProcess system)

View File

@ -231,8 +231,10 @@ namespace DCFApixels.DragonECS
{
void Import(EcsPipeline.Builder b);
}
public abstract class EcsModule<T> : IEcsModule, IInjectionUnit
public abstract class EcsModule<T> : IEcsModule, IInjectionUnit, IEcsDefaultAddParams
{
AddParams IEcsDefaultAddParams.AddParams { get { return AddParams; } }
protected virtual AddParams AddParams { get { return default; } }
public abstract void Import(EcsPipeline.Builder b);
void IInjectionUnit.InitInjectionNode(InjectionGraph nodes) { nodes.AddNode<T>(); }
public EcsModule() { if (GetType() != typeof(T)) { Throw.UndefinedException(); } }