diff --git a/src/EcsPipeline.Builder.cs b/src/EcsPipeline.Builder.cs index af49af0..638d806 100644 --- a/src/EcsPipeline.Builder.cs +++ b/src/EcsPipeline.Builder.cs @@ -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 modules) + { + var result = EcsPipeline.New(); + foreach (var module in modules) + { + result.Add(module); + } + return result.Build(); + } + public static EcsPipeline ToPipelineAndInit(this IEnumerable 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) diff --git a/src/EcsPipeline.cs b/src/EcsPipeline.cs index ff5dfcf..0ebf232 100644 --- a/src/EcsPipeline.cs +++ b/src/EcsPipeline.cs @@ -231,8 +231,10 @@ namespace DCFApixels.DragonECS { void Import(EcsPipeline.Builder b); } - public abstract class EcsModule : IEcsModule, IInjectionUnit + public abstract class EcsModule : 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(); } public EcsModule() { if (GetType() != typeof(T)) { Throw.UndefinedException(); } }