BufferCombiner.Unregister/Register で順番の変更が起きないようにする

This commit is contained in:
ousttrue
2025-03-14 18:56:44 +09:00
parent f0d59ae948
commit cad4082cc4
5 changed files with 12 additions and 39 deletions

View File

@@ -32,21 +32,7 @@ namespace UniGLTF.SpringBoneJobs
public bool HasBuffer => _buffers.Count > 0 && _combinedBuffer != null;
public void Register(FastSpringBoneBuffer buffer)
{
_request.Enqueue(new Request { Add = buffer });
}
public void Unregister(FastSpringBoneBuffer buffer)
{
_request.Enqueue(new Request { Remove = buffer });
}
/// <summary>
/// 順番が変わらないように更新する
/// </summary>
/// <param name="buffer"></param>
public void ReRegister(FastSpringBoneBuffer remove, FastSpringBoneBuffer add)
public void Register(FastSpringBoneBuffer add, FastSpringBoneBuffer remove)
{
_request.Enqueue(new Request { Remove = remove, Add = add });
}

View File

@@ -79,7 +79,7 @@ namespace UniGLTF.SpringBoneJobs
}
/// <summary>
/// Lidt<FastSpringBoneBuffer> をひとつの FastSpringBoneCombinedBuffer に統合する
/// Job向けに、Lidt[FastSpringBoneBuffer] をひとつの FastSpringBoneCombinedBuffer に統合する
/// </summary>
internal static JobHandle Create(JobHandle handle,
IReadOnlyList<FastSpringBoneBuffer> buffers, out FastSpringBoneCombinedBuffer combined)

View File

@@ -57,7 +57,7 @@ namespace VRM
return;
}
m_service.BufferCombiner.Unregister(m_buffer);
m_service.BufferCombiner.Register(add: null, remove: m_buffer);
m_buffer.Dispose();
m_buffer = null;
}
@@ -67,7 +67,7 @@ namespace VRM
Debug.Assert(m_buffer == null);
var buffer = await SpringBoneJobs.FastSpringBoneReplacer.MakeBufferAsync(m_vrm, awaitCaller);
m_buffer = buffer;
SpringBoneJobs.FastSpringBoneService.Instance.BufferCombiner.Register(buffer);
SpringBoneJobs.FastSpringBoneService.Instance.BufferCombiner.Register(add: buffer, remove: null);
}

View File

@@ -55,7 +55,7 @@ namespace UniVRM10
{
if (m_fastSpringBoneBuffer != null)
{
m_fastSpringBoneService.BufferCombiner.Unregister(m_fastSpringBoneBuffer);
m_fastSpringBoneService.BufferCombiner.Register(add: null, remove: m_fastSpringBoneBuffer);
m_fastSpringBoneBuffer.Dispose();
}
}
@@ -87,16 +87,10 @@ namespace UniVRM10
}
m_building = true;
// 登録削除
if (m_fastSpringBoneBuffer != null)
{
m_fastSpringBoneService.BufferCombiner.Unregister(m_fastSpringBoneBuffer);
}
var fastSpringBoneBuffer = await FastSpringBoneBufferFactory.ConstructSpringBoneAsync(awaitCaller, m_instance, m_fastSpringBoneBuffer);
m_fastSpringBoneBuffer = await FastSpringBoneBufferFactory.ConstructSpringBoneAsync(awaitCaller, m_instance, m_fastSpringBoneBuffer);
// 登録
m_fastSpringBoneService.BufferCombiner.Register(m_fastSpringBoneBuffer);
m_fastSpringBoneService.BufferCombiner.Register(add: fastSpringBoneBuffer, remove: m_fastSpringBoneBuffer);
m_fastSpringBoneBuffer = fastSpringBoneBuffer;
m_building = false;
return true;

View File

@@ -54,7 +54,7 @@ namespace UniVRM10
public void Dispose()
{
m_bufferCombiner.Unregister(m_fastSpringBoneBuffer);
m_bufferCombiner.Register(add: null, remove: m_fastSpringBoneBuffer);
m_fastSpringBoneBuffer.Dispose();
m_fastSpringBoneScheduler.Dispose();
@@ -88,16 +88,9 @@ namespace UniVRM10
}
m_building = true;
// 登録削除
if (m_fastSpringBoneBuffer != null)
{
m_bufferCombiner.Unregister(m_fastSpringBoneBuffer);
}
m_fastSpringBoneBuffer = await FastSpringBoneBufferFactory.ConstructSpringBoneAsync(awaitCaller, m_instance, m_fastSpringBoneBuffer);
// 登録
m_bufferCombiner.Register(m_fastSpringBoneBuffer);
var fastSpringBoneBuffer = await FastSpringBoneBufferFactory.ConstructSpringBoneAsync(awaitCaller, m_instance, m_fastSpringBoneBuffer);
m_bufferCombiner.Register(add: fastSpringBoneBuffer, remove: m_fastSpringBoneBuffer);
m_fastSpringBoneBuffer = fastSpringBoneBuffer;
m_building = false;
return true;