diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs index a1c46b747..efd342140 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs @@ -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 }); - } - - /// - /// 順番が変わらないように更新する - /// - /// - public void ReRegister(FastSpringBoneBuffer remove, FastSpringBoneBuffer add) + public void Register(FastSpringBoneBuffer add, FastSpringBoneBuffer remove) { _request.Enqueue(new Request { Remove = remove, Add = add }); } diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs index 6a64725b0..3202abfbd 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs @@ -79,7 +79,7 @@ namespace UniGLTF.SpringBoneJobs } /// - /// Lidt をひとつの FastSpringBoneCombinedBuffer に統合する + /// Job向けに、Lidt[FastSpringBoneBuffer] をひとつの FastSpringBoneCombinedBuffer に統合する /// internal static JobHandle Create(JobHandle handle, IReadOnlyList buffers, out FastSpringBoneCombinedBuffer combined) diff --git a/Assets/VRM/Runtime/SpringBone/Jobs/Vrm0XFastSpringBoneRuntime.cs b/Assets/VRM/Runtime/SpringBone/Jobs/Vrm0XFastSpringBoneRuntime.cs index 4e730e4ac..45d56ffad 100644 --- a/Assets/VRM/Runtime/SpringBone/Jobs/Vrm0XFastSpringBoneRuntime.cs +++ b/Assets/VRM/Runtime/SpringBone/Jobs/Vrm0XFastSpringBoneRuntime.cs @@ -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); } diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs index 4f26d93d1..246eb9c7c 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs @@ -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; diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs index 31153063d..e1660af07 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs @@ -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;