void CreateBoneGO(int index, SpriteBone[] bones, BoneGO[] bonesGO, Transform defaultRoot) { if (bonesGO[index].go != null) { return; } var bone = bones[index]; if (bone.parentId != -1 && bonesGO[bone.parentId].go == null) { CreateBoneGO(bone.parentId, bones, bonesGO, defaultRoot); } var go = new GameObject(bone.name); if (bone.parentId == -1) { go.transform.SetParent(defaultRoot); } else { go.transform.SetParent(bonesGO[bone.parentId].go.transform); } go.transform.localPosition = bone.position * 1 / pixelsPerUnit; go.transform.localRotation = bone.rotation; bonesGO[index] = new BoneGO() { go = go, index = index }; }
BoneGO[] CreateBonesGO(Transform root) { if (characterMode) { var characterSkeleton = GetDataProvider <ICharacterDataProvider>().GetCharacterData(); var bones = characterSkeleton.bones; if (bones != null) { var boneGOs = new BoneGO[bones.Length]; for (int i = 0; i < bones.Length; ++i) { CreateBoneGO(i, bones, boneGOs, root); } return(boneGOs); } } return(new BoneGO[0]); }