From f479cb122dfa6b0981415f0dabc614c3278d5016 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 19 Oct 2024 00:03:02 +0800 Subject: [PATCH] update --- src/EcsPipeline.Builder.cs | 26 ++++++++++++++++++++++++++ src/EcsPipeline.cs | 4 +++- 2 files changed, 29 insertions(+), 1 deletion(-) 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(); } }