From d2d386b617c6ec871cea9b3f8c955980b6b1d710 Mon Sep 17 00:00:00 2001 From: DCFApixels <99481254+DCFApixels@users.noreply.github.com> Date: Wed, 12 Mar 2025 19:32:38 +0800 Subject: [PATCH 1/4] fix --- src/EcsRunner.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EcsRunner.cs b/src/EcsRunner.cs index 67ad62a..c288b28 100644 --- a/src/EcsRunner.cs +++ b/src/EcsRunner.cs @@ -443,7 +443,7 @@ namespace DCFApixels.DragonECS { try { - translationCallback(pair.run, t0); + translationCallback(pair.run, ref data); } catch (Exception e) { @@ -456,7 +456,7 @@ namespace DCFApixels.DragonECS { if (pair.runFinally != null) { - translationFinnalyCallback(pair.runFinally, t0); + translationFinnalyCallback(pair.runFinally, ref data); } } } From ea5227fe2c2545c78e4769ba5ec092dd8b36a8f7 Mon Sep 17 00:00:00 2001 From: DCFApixels <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 13 Mar 2025 11:16:09 +0800 Subject: [PATCH 2/4] add IOnInitInjectionComplete.OnBeforeInitInjection --- src/Injections/Injector.cs | 8 +++++++- src/Injections/Utils/Interfaces.cs | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Injections/Injector.cs b/src/Injections/Injector.cs index cf82f7d..3efe4bf 100644 --- a/src/Injections/Injector.cs +++ b/src/Injections/Injector.cs @@ -230,12 +230,18 @@ namespace DCFApixels.DragonECS monoWorldSystem.World = _monoWorld; } + + var initInjectionCallbacks = pipeline.GetProcess(); + foreach (var system in initInjectionCallbacks) + { + system.OnBeforeInitInjection(); + } _instance.Init(pipeline); foreach (var item in _initInjections) { item.InjectTo(_instance); } - foreach (var system in pipeline.GetProcess()) + foreach (var system in initInjectionCallbacks) { system.OnInitInjectionComplete(); } diff --git a/src/Injections/Utils/Interfaces.cs b/src/Injections/Utils/Interfaces.cs index 7ecd48f..e7bc9ad 100644 --- a/src/Injections/Utils/Interfaces.cs +++ b/src/Injections/Utils/Interfaces.cs @@ -20,6 +20,7 @@ [MetaID("05C3537C920155AFC044C900E4F17D90")] public interface IOnInitInjectionComplete : IEcsProcess { + void OnBeforeInitInjection(); void OnInitInjectionComplete(); } public interface IInjector From 9d5be80190ff574e386ab862de30a3453c4ee46c Mon Sep 17 00:00:00 2001 From: DCFApixels <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 13 Mar 2025 11:18:45 +0800 Subject: [PATCH 3/4] add EcsMask.ToStatic --- src/EcsMask.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/EcsMask.cs b/src/EcsMask.cs index 91149c4..57d3d7f 100644 --- a/src/EcsMask.cs +++ b/src/EcsMask.cs @@ -163,6 +163,10 @@ namespace DCFApixels.DragonECS { return world.Get().ConvertFromStatic(abstractMask); } + public EcsStaticMask ToStatic() + { + return _staticMask; + } EcsMask IComponentMask.ToMask(EcsWorld world) { return this; } public EcsMaskIterator GetIterator() { From 5b9fbbd62a0a4b33fb23a0238889f5d9fa91ba68 Mon Sep 17 00:00:00 2001 From: DCFApixels <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 13 Mar 2025 11:19:02 +0800 Subject: [PATCH 4/4] add EcsAspect events --- src/EcsAspect.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/EcsAspect.cs b/src/EcsAspect.cs index 7d1a87c..8a76f7c 100644 --- a/src/EcsAspect.cs +++ b/src/EcsAspect.cs @@ -127,7 +127,6 @@ namespace DCFApixels.DragonECS internal EcsWorld _source; internal EcsMask _mask; private bool _isBuilt = false; - //private IEcsPool[] _pools; #region Properties public EcsMask Mask @@ -232,6 +231,7 @@ namespace DCFApixels.DragonECS builtinAspect._source = world; builtinAspect.Init(builder); } + OnInit(newAspect, builder); //Build Mask if (staticMask == null) @@ -253,6 +253,9 @@ namespace DCFApixels.DragonECS } _constructorBuildersStackIndex--; + + OnAfterInit(newAspect, mask); + return (newAspect, mask); } #endregion @@ -430,6 +433,14 @@ namespace DCFApixels.DragonECS } } #endregion + + #region Events + public delegate void OnInitApectHandler(object aspect, Builder builder); + public static event OnInitApectHandler OnInit = delegate { }; + + public delegate void OnBuildApectHandler(object aspect, EcsMask mask); + public static event OnBuildApectHandler OnAfterInit = delegate { }; + #endregion } #region EcsAspect.Builder.Extensions