From a06fcfc7bedf66ea9d64fc455d232d93f356bea6 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sun, 14 Apr 2024 16:13:14 +0800 Subject: [PATCH] update Enable/Disable AutoReleasedelEntBuffer api --- src/EcsWorld.cs | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index 5f45155..0800dfa 100644 --- a/src/EcsWorld.cs +++ b/src/EcsWorld.cs @@ -457,25 +457,35 @@ namespace DCFApixels.DragonECS #endregion #region DelEntBuffer - public AutoReleaseDelEntBufferLonkUnloker DisableAutoReleaseDelEntBuffer() + public IsEnableAutoReleaseDelEntBufferScope DisableAutoReleaseDelEntBuffer() { - _isEnableAutoReleaseDelEntBuffer = false; - return new AutoReleaseDelEntBufferLonkUnloker(this); + return new IsEnableAutoReleaseDelEntBufferScope(this, false); } - public void EnableAutoReleaseDelEntBuffer() + public IsEnableAutoReleaseDelEntBufferScope EnableAutoReleaseDelEntBuffer() { - _isEnableAutoReleaseDelEntBuffer = true; + return new IsEnableAutoReleaseDelEntBufferScope(this, true); } - public readonly struct AutoReleaseDelEntBufferLonkUnloker : IDisposable + private void SetEnableAutoReleaseDelEntBuffer(bool value) + { + _isEnableAutoReleaseDelEntBuffer = value; + } + public readonly struct IsEnableAutoReleaseDelEntBufferScope : IDisposable { private readonly EcsWorld _source; - public AutoReleaseDelEntBufferLonkUnloker(EcsWorld source) + private readonly bool _lastValue; + public IsEnableAutoReleaseDelEntBufferScope(EcsWorld source, bool value) { + _lastValue = source._isEnableAutoReleaseDelEntBuffer; + source.SetEnableAutoReleaseDelEntBuffer(value); _source = source; } - public void Dispose() + public void End() { - _source.EnableAutoReleaseDelEntBuffer(); + _source.SetEnableAutoReleaseDelEntBuffer(_lastValue); + } + void IDisposable.Dispose() + { + End(); } } public void ReleaseDelEntityBufferAll()