mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-27 21:34:38 -05:00
BufferCombiner.Unregister/Register で順番の変更が起きないようにする
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user