diff --git a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs index 062922101..b93a2b7bc 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs @@ -19,6 +19,7 @@ namespace UniVRM10.FastSpringBones.System public NativeArray Logics { get; } public NativeArray BlittableTransforms { get; } public Transform[] Transforms { get; } + public bool IsDisposed { get; private set; } public FastSpringBoneBuffer(IReadOnlyList springs) { @@ -132,6 +133,8 @@ namespace UniVRM10.FastSpringBones.System public void Dispose() { + if (IsDisposed) return; + IsDisposed = true; Springs.Dispose(); Joints.Dispose(); BlittableTransforms.Dispose(); diff --git a/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs b/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs index afad9ab1e..287802cea 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs @@ -75,6 +75,7 @@ namespace UniVRM10.FastSpringBones.System var logicsIndex = 0; foreach (var buffer in _batchedBuffers) { + if(buffer.IsDisposed) continue; var length = buffer.Logics.Length; NativeArray.Copy(_logics, logicsIndex, buffer.Logics, 0, length); logicsIndex += length;