update Enable/Disable AutoReleasedelEntBuffer api

This commit is contained in:
Mikhail 2024-04-14 16:13:14 +08:00
parent fd5d1ec06a
commit a06fcfc7be

View File

@ -457,25 +457,35 @@ namespace DCFApixels.DragonECS
#endregion #endregion
#region DelEntBuffer #region DelEntBuffer
public AutoReleaseDelEntBufferLonkUnloker DisableAutoReleaseDelEntBuffer() public IsEnableAutoReleaseDelEntBufferScope DisableAutoReleaseDelEntBuffer()
{ {
_isEnableAutoReleaseDelEntBuffer = false; return new IsEnableAutoReleaseDelEntBufferScope(this, false);
return new AutoReleaseDelEntBufferLonkUnloker(this);
} }
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; 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; _source = source;
} }
public void Dispose() public void End()
{ {
_source.EnableAutoReleaseDelEntBuffer(); _source.SetEnableAutoReleaseDelEntBuffer(_lastValue);
}
void IDisposable.Dispose()
{
End();
} }
} }
public void ReleaseDelEntityBufferAll() public void ReleaseDelEntityBufferAll()