From eed18136be27c08350dfc0bf7e8030d2aa95f003 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 19 Nov 2024 10:17:30 +0900 Subject: [PATCH] _nextTailsBackup --- .../FastSpringBoneBufferCombiner.cs | 2 +- .../FastSpringBoneConbinedBuffer.cs | 2 +- .../InputPorts/FastSpringBoneBuffer.cs | 30 ++++++++++--------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs index a43d5b439..f22112b5e 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs @@ -57,7 +57,7 @@ namespace UniGLTF.SpringBoneJobs // 削除するので skip continue; } - buffer.BackupCurrentTails(combined.CurrentTails, logicsIndex); + buffer.BackupCurrentTails(combined.CurrentTails, combined.NextTails, logicsIndex); logicsIndex += buffer.Logics.Length; } } diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs index 0e597b70d..ae66220b6 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs @@ -148,7 +148,7 @@ namespace UniGLTF.SpringBoneJobs } // 速度の維持 - buffer.RestoreCurrentTails(_currentTails, logicsOffset); + buffer.RestoreCurrentTails(_currentTails, _nextTails, logicsOffset); handle = new LoadSpringsJob { diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs index c1bf55ffb..455e17dd6 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs @@ -23,8 +23,8 @@ namespace UniGLTF.SpringBoneJobs.InputPorts public NativeArray Colliders { get; } public NativeArray Logics { get; } private NativeArray _currentTailsBackup; + private NativeArray _nextTailsBackup; public Transform[] Transforms { get; } - public bool IsDisposed { get; private set; } /// /// Joint, Collider, Center の Transform のリスト @@ -141,13 +141,9 @@ namespace UniGLTF.SpringBoneJobs.InputPorts } } - public void BackupCurrentTails(NativeArray currentTails, int offset) + public void BackupCurrentTails(NativeArray currentTails, NativeArray nextTails, int offset) { - if (!IsDisposed) - { - return; - } - if (Logics.Length == 0) + if (!Logics.IsCreated || Logics.Length == 0) { return; } @@ -155,14 +151,20 @@ namespace UniGLTF.SpringBoneJobs.InputPorts { _currentTailsBackup = new(Logics.Length, Allocator.Persistent); } + if (!_nextTailsBackup.IsCreated) + { + _nextTailsBackup = new(Logics.Length, Allocator.Persistent); + } NativeArray.Copy(currentTails, offset, _currentTailsBackup, 0, Logics.Length); + NativeArray.Copy(nextTails, offset, _nextTailsBackup, 0, Logics.Length); } - public void RestoreCurrentTails(NativeArray currentTails, int offset) + public void RestoreCurrentTails(NativeArray currentTails, NativeArray nextTails, int offset) { if (_currentTailsBackup.IsCreated) { NativeArray.Copy(_currentTailsBackup, 0, currentTails, offset, Logics.Length); + NativeArray.Copy(_nextTailsBackup, 0, nextTails, offset, Logics.Length); } else { @@ -177,12 +179,12 @@ namespace UniGLTF.SpringBoneJobs.InputPorts public void Dispose() { - if (IsDisposed) return; - IsDisposed = true; - Springs.Dispose(); - Joints.Dispose(); - Colliders.Dispose(); - Logics.Dispose(); + if (Springs.IsCreated) Springs.Dispose(); + if (Joints.IsCreated) Joints.Dispose(); + if (Colliders.IsCreated) Colliders.Dispose(); + if (Logics.IsCreated) Logics.Dispose(); + if (_currentTailsBackup.IsCreated) _currentTailsBackup.Dispose(); + if (_nextTailsBackup.IsCreated) _nextTailsBackup.Dispose(); } } } \ No newline at end of file