From e5f6819b6d0ea5e8db7d34b2a45b118c40697066 Mon Sep 17 00:00:00 2001 From: AoiKamishiro Date: Mon, 30 Jun 2025 01:14:07 +0900 Subject: [PATCH] =?UTF-8?q?BlittableSpring=E3=81=AE=E6=9C=80=E9=81=A9?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Blittables/BlittableSpring.cs | 21 +++++++++++++------ .../FastSpringBoneConbinedBuffer.cs | 11 +++++----- .../InputPorts/FastSpringBoneBuffer.cs | 10 ++++----- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs index c4de2b291..f98d231d0 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs @@ -7,12 +7,21 @@ namespace UniGLTF.SpringBoneJobs.Blittables /// FastSpringBoneではこれを起点として並列化し、処理を行う /// [Serializable] - public struct BlittableSpring + public readonly struct BlittableSpring { - public BlittableSpan colliderSpan; - public BlittableSpan logicSpan; - public int centerTransformIndex; - public int transformIndexOffset; - public int modelIndex; + public readonly BlittableSpan colliderSpan; + public readonly BlittableSpan logicSpan; + public readonly int centerTransformIndex; + public readonly int transformIndexOffset; + public readonly int modelIndex; + + public BlittableSpring(BlittableSpan colliderSpan = default, BlittableSpan logicSpan = default, int centerTransformIndex = 0, int transformIndexOffset = 0, int modelIndex = 0) + { + this.colliderSpan = colliderSpan; + this.logicSpan = logicSpan; + this.centerTransformIndex = centerTransformIndex; + this.transformIndexOffset = transformIndexOffset; + this.modelIndex = modelIndex; + } } } \ No newline at end of file diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs index fb65bc910..efc722c8a 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs @@ -248,11 +248,12 @@ namespace UniGLTF.SpringBoneJobs public void Execute(int index) { var spring = SrcSprings[index]; - spring.modelIndex = ModelIndex; - spring.colliderSpan = new BlittableSpan(spring.colliderSpan.startIndex + CollidersOffset, spring.colliderSpan.count); - spring.logicSpan = new BlittableSpan(spring.logicSpan.startIndex + LogicsOffset, spring.logicSpan.count); - spring.transformIndexOffset = TransformOffset; - DestSprings[index] = spring; + DestSprings[index] = new BlittableSpring( + modelIndex: ModelIndex, + colliderSpan: new BlittableSpan(spring.colliderSpan.startIndex + CollidersOffset, spring.colliderSpan.count), + logicSpan: new BlittableSpan(spring.logicSpan.startIndex + LogicsOffset, spring.logicSpan.count), + transformIndexOffset: TransformOffset, + centerTransformIndex: spring.centerTransformIndex); } } diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs index 3c0fddec4..617c993f0 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs @@ -67,12 +67,10 @@ namespace UniGLTF.SpringBoneJobs.InputPorts List blittableLogics = new(); foreach (var spring in springs) { - var blittableSpring = new BlittableSpring - { - colliderSpan = new BlittableSpan(blittableColliders.Count,spring.colliders.Length), - logicSpan = new BlittableSpan(blittableJoints.Count, spring.joints.Length - 1), - centerTransformIndex = Array.IndexOf(Transforms, spring.center), - }; + var blittableSpring = new BlittableSpring( + centerTransformIndex: Array.IndexOf(Transforms, spring.center), + colliderSpan: new BlittableSpan(blittableColliders.Count, spring.colliders.Length), + logicSpan: new BlittableSpan(blittableJoints.Count, spring.joints.Length - 1)); blittableSprings.Add(blittableSpring); blittableColliders.AddRange(spring.colliders.Select(collider =>