diff --git a/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableLogic.cs b/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableLogic.cs index 16eea4635..31397d8c7 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableLogic.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableLogic.cs @@ -9,7 +9,6 @@ namespace UniVRM10.FastSpringBones.Blittables [Serializable] public struct BlittableLogic { - public int transformIndexOffset; public int parentTransformIndex; public int headTransformIndex; public float length; diff --git a/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableSpring.cs b/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableSpring.cs index 344dcabd8..36f6d7401 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableSpring.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/Blittables/BlittableSpring.cs @@ -12,5 +12,6 @@ namespace UniVRM10.FastSpringBones.Blittables public BlittableSpan colliderSpan; public BlittableSpan logicSpan; public int centerTransformIndex; + public int transformIndexOffset; } } \ No newline at end of file diff --git a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs similarity index 100% rename from Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs rename to Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs diff --git a/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs.meta b/Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneInstanceBuffers.cs.meta rename to Assets/VRM10/Runtime/FastSpringBone/InputPorts/FastSpringBoneBuffer.cs.meta diff --git a/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs b/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs index cf15a9609..23361739a 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneBufferCombiner.cs @@ -155,6 +155,7 @@ namespace UniVRM10.FastSpringBones.System DestSprings = new NativeSlice(_springs, springsOffset, buffer.Springs.Length), CollidersOffset = collidersOffset, LogicsOffset = logicsOffset, + TransformOffset = transformOffset }.Schedule(buffer.Springs.Length, 1, handle); handle = new LoadCollidersJob() { @@ -168,7 +169,6 @@ namespace UniVRM10.FastSpringBones.System SrcJoints = buffer.Joints, DestLogics = new NativeSlice(_logics, logicsOffset, buffer.Logics.Length), DestJoints = new NativeSlice(_joints, logicsOffset, buffer.Logics.Length), - TransformOffset = transformOffset }.Schedule(buffer.Logics.Length, 1, handle); springsOffset += buffer.Springs.Length; @@ -238,12 +238,14 @@ namespace UniVRM10.FastSpringBones.System public int CollidersOffset; public int LogicsOffset; + public int TransformOffset; public void Execute(int index) { var spring = SrcSprings[index]; spring.colliderSpan.startIndex += CollidersOffset; spring.logicSpan.startIndex += LogicsOffset; + spring.transformIndexOffset = TransformOffset; DestSprings[index] = spring; } } @@ -258,8 +260,7 @@ namespace UniVRM10.FastSpringBones.System public void Execute(int index) { - var collider = SrcColliders[index]; - DestColliders[index] = collider; + DestColliders[index] = SrcColliders[index]; } } @@ -272,13 +273,10 @@ namespace UniVRM10.FastSpringBones.System [ReadOnly] public NativeSlice SrcJoints; [WriteOnly] public NativeSlice DestLogics; [WriteOnly] public NativeSlice DestJoints; - public int TransformOffset; public void Execute(int index) { - var logic = SrcLogics[index]; - logic.transformIndexOffset = TransformOffset; - DestLogics[index] = logic; + DestLogics[index] = SrcLogics[index]; DestJoints[index] = SrcJoints[index]; } } diff --git a/Assets/VRM10/Runtime/FastSpringBone/System/UpdateFastSpringBoneJob.cs b/Assets/VRM10/Runtime/FastSpringBone/System/UpdateFastSpringBoneJob.cs index 5b3a5a61e..ef63511c7 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/System/UpdateFastSpringBoneJob.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/System/UpdateFastSpringBoneJob.cs @@ -27,6 +27,7 @@ namespace UniVRM10.FastSpringBones.System public void Execute(int index) { var spring = Springs[index]; + var transformIndexOffset = spring.transformIndexOffset; var colliderSpan = spring.colliderSpan; var logicSpan = spring.logicSpan; @@ -35,12 +36,12 @@ namespace UniVRM10.FastSpringBones.System var logic = Logics[logicIndex]; var joint = Joints[logicIndex]; - var headTransform = Transforms[logic.headTransformIndex + logic.transformIndexOffset]; + var headTransform = Transforms[logic.headTransformIndex + transformIndexOffset]; var parentTransform = logic.parentTransformIndex >= 0 - ? Transforms[logic.parentTransformIndex + logic.transformIndexOffset] + ? Transforms[logic.parentTransformIndex + transformIndexOffset] : (BlittableTransform?)null; var centerTransform = spring.centerTransformIndex >= 0 - ? Transforms[spring.centerTransformIndex + logic.transformIndexOffset] + ? Transforms[spring.centerTransformIndex + transformIndexOffset] : (BlittableTransform?)null; @@ -76,7 +77,7 @@ namespace UniVRM10.FastSpringBones.System for (var colliderIndex = colliderSpan.startIndex; colliderIndex < colliderSpan.startIndex + colliderSpan.count; ++colliderIndex) { var collider = Colliders[colliderIndex]; - var colliderTransform = Transforms[collider.transformIndex + logic.transformIndexOffset]; + var colliderTransform = Transforms[collider.transformIndex + transformIndexOffset]; var colliderScale = colliderTransform.localToWorldMatrix.lossyScale; var absColliderScale = math.abs(colliderScale); var maxColliderScale = math.max(math.max(absColliderScale.x, absColliderScale.y), absColliderScale.z); @@ -134,7 +135,7 @@ namespace UniVRM10.FastSpringBones.System } // 値をバッファに戻す - Transforms[logic.headTransformIndex + logic.transformIndexOffset] = headTransform; + Transforms[logic.headTransformIndex + transformIndexOffset] = headTransform; Logics[logicIndex] = logic; } }