From df18cce5dd2128b92a0495bb5c47c9f9053daf77 Mon Sep 17 00:00:00 2001 From: sebas77 Date: Fri, 2 Nov 2018 13:45:11 +0000 Subject: [PATCH] fix sequencer bug make EnginesRoot dispose itself --- Svelto.ECS/EnginesRoot.Engines.cs | 2 +- Svelto.ECS/EnginesRoot.Entities.cs | 9 ++++++++- Svelto.ECS/EnginesRoot.Submission.cs | 2 +- Svelto.ECS/Sequencer.cs | 4 ++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Svelto.ECS/EnginesRoot.Engines.cs b/Svelto.ECS/EnginesRoot.Engines.cs index 0ca68ef..94e0cde 100644 --- a/Svelto.ECS/EnginesRoot.Engines.cs +++ b/Svelto.ECS/EnginesRoot.Engines.cs @@ -12,7 +12,7 @@ using Svelto.ECS.Profiler; namespace Svelto.ECS { - public partial class EnginesRoot : IDisposable + public partial class EnginesRoot { #if ENGINE_PROFILER_ENABLED && UNITY_EDITOR static EnginesRoot() diff --git a/Svelto.ECS/EnginesRoot.Entities.cs b/Svelto.ECS/EnginesRoot.Entities.cs index 502d50c..d7bd7c7 100644 --- a/Svelto.ECS/EnginesRoot.Entities.cs +++ b/Svelto.ECS/EnginesRoot.Entities.cs @@ -11,7 +11,7 @@ using Svelto.ECS.Profiler; namespace Svelto.ECS { - public partial class EnginesRoot : IDisposable + public partial class EnginesRoot: IDisposable { /// /// Dispose an EngineRoot once not used anymore, so that all the @@ -26,6 +26,13 @@ namespace Svelto.ECS foreach (var engine in _disposableEngines) engine.Dispose(); + + GC.SuppressFinalize(this); + } + + ~EnginesRoot() + { + Dispose(); } ///-------------------------------------------- diff --git a/Svelto.ECS/EnginesRoot.Submission.cs b/Svelto.ECS/EnginesRoot.Submission.cs index f73459e..7f9f79b 100644 --- a/Svelto.ECS/EnginesRoot.Submission.cs +++ b/Svelto.ECS/EnginesRoot.Submission.cs @@ -14,7 +14,7 @@ using Svelto.ECS.Profiler; namespace Svelto.ECS { - public partial class EnginesRoot : IDisposable + public partial class EnginesRoot { void SubmitEntityViews() { diff --git a/Svelto.ECS/Sequencer.cs b/Svelto.ECS/Sequencer.cs index e5dfce0..0b0a25d 100644 --- a/Svelto.ECS/Sequencer.cs +++ b/Svelto.ECS/Sequencer.cs @@ -104,7 +104,7 @@ namespace Svelto.ECS _steps = steps; } - public void Next(IEngine engine, C condition, EGID id) where C:struct,IConvertible + public void Next(IEngine engine, C condition, EGID id) where C:struct, IConvertible { C branch = condition; var to = (_steps._steps[engine] as To); @@ -120,7 +120,7 @@ namespace Svelto.ECS var to = _steps._steps[engine]; var steps = to.engines; - if (steps != null) + if (steps != null && steps.Length > 1) for (var i = 0; i < steps.Length; i++) steps[i].Step(id); else