public void ResizeIfNeeded(int size) { NativeArrayHelpers.ResizeIfNeeded(ref rootBoneTransformId, size); NativeArrayHelpers.ResizeIfNeeded(ref rootTransformId, size); NativeArrayHelpers.ResizeIfNeeded(ref spriteBound, size); NativeArrayHelpers.ResizeIfNeeded(ref newSpriteBound, size); }
void UpdateTransformIndex() { if (!m_Dirty) { return; } m_Dirty = false; Profiler.BeginSample("UpdateTransformIndex"); NativeArrayHelpers.ResizeIfNeeded(ref m_TransformMatrix, m_Transform.Length); if (!m_TransformAccessArray.isCreated) { TransformAccessArray.Allocate(m_Transform.Length, -1, out m_TransformAccessArray); } else if (m_TransformAccessArray.capacity != m_Transform.Length) { m_TransformAccessArray.capacity = m_Transform.Length; } m_TransformAccessArray.SetTransforms(m_Transform); for (int i = 0; i < m_Transform.Length; ++i) { if (m_Transform[i] != null) { var instanceId = m_Transform[i].GetInstanceID(); var transformData = m_TransformData[instanceId]; transformData.transformIndex = i; m_TransformData[instanceId] = transformData; } } Profiler.EndSample(); }
void CacheBatchBoneTransform() { if (boneTransforms != null) { int boneCount = 0; for (int i = 0; i < boneTransforms.Length; ++i) { if (boneTransforms[i] != null) { ++boneCount; } } if (m_BoneTransformId.IsCreated) { for (int i = 0; i < m_BoneTransformId.Length; ++i) { SpriteSkinComposite.instance.RemoveTransformById(m_BoneTransformId[i]); } NativeArrayHelpers.ResizeIfNeeded(ref m_BoneTransformId, boneCount); } else { m_BoneTransformId = new NativeArray <int>(boneCount, Allocator.Persistent); } m_BoneTransformIdNativeSlice = new NativeCustomSlice <int>(m_BoneTransformId); for (int i = 0, j = 0; i < m_BoneTransformId.Length; ++i) { if (boneTransforms[i] != null) { m_BoneTransformId[j] = boneTransforms[i].GetInstanceID(); ++j; } } if (this.enabled) { SpriteSkinComposite.instance.AddSpriteSkinBoneTransform(this); } } else { if (m_BoneTransformId.IsCreated) { NativeArrayHelpers.ResizeIfNeeded(ref m_BoneTransformId, 0); } else { m_BoneTransformId = new NativeArray <int>(0, Allocator.Persistent); } } }
void CacheBoneTransformIds(bool forceUpdate = false) { if (!m_BoneCacheUpdateToDate || forceUpdate) { SpriteSkinComposite.instance.RemoveTransformById(m_RootBoneTransformId); if (rootBone != null) { m_RootBoneTransformId = rootBone.GetInstanceID(); if (this.enabled) { SpriteSkinComposite.instance.AddSpriteSkinRootBoneTransform(this); } } else { m_RootBoneTransformId = 0; } if (boneTransforms != null) { int boneCount = 0; for (int i = 0; i < boneTransforms.Length; ++i) { if (boneTransforms[i] != null) { ++boneCount; } } if (m_BoneTransformId.IsCreated) { for (int i = 0; i < m_BoneTransformId.Length; ++i) { SpriteSkinComposite.instance.RemoveTransformById(m_BoneTransformId[i]); } NativeArrayHelpers.ResizeIfNeeded(ref m_BoneTransformId, boneCount); } else { m_BoneTransformId = new NativeArray <int>(boneCount, Allocator.Persistent); } m_BoneTransformIdNativeSlice = new NativeCustomSlice <int>(m_BoneTransformId); for (int i = 0, j = 0; i < boneTransforms.Length; ++i) { if (boneTransforms[i] != null) { m_BoneTransformId[j] = boneTransforms[i].GetInstanceID(); ++j; } } if (this.enabled) { SpriteSkinComposite.instance.AddSpriteSkinBoneTransform(this); } } else { if (m_BoneTransformId.IsCreated) { NativeArrayHelpers.ResizeIfNeeded(ref m_BoneTransformId, 0); } else { m_BoneTransformId = new NativeArray <int>(0, Allocator.Persistent); } } CacheValidFlag(); m_BoneCacheUpdateToDate = true; SpriteSkinComposite.instance.CopyToSpriteSkinData(this); } }