using Unity.Burst; using Unity.Collections; using Unity.Jobs; using Unity.Mathematics; namespace UnityEngine.U2D.Animation { [BurstCompile] internal struct BoneTransformsChangeDetectionJob : IJobParallelFor { [ReadOnly] public NativeArray transformChanged; [ReadOnly] public NativeArray spriteSkinData; [ReadOnly] public NativeHashMap boneTransformIndex; [WriteOnly] public NativeArray hasBoneTransformsChanged; public void Execute(int skinIndex) { SpriteSkinData skinData = spriteSkinData[skinIndex]; bool hasChanged = false; for (int boneIndex = 0; boneIndex < skinData.boneTransformId.Length; boneIndex++) { int boneId = skinData.boneTransformId[boneIndex]; int transformIndex = boneTransformIndex[boneId].transformIndex; if (transformIndex < 0) continue; if (transformChanged[transformIndex]) { hasChanged = true; break; } } hasBoneTransformsChanged[skinIndex] = hasChanged; } } }