private static void UngroupAllSelected(GameObject[] selected, List <GameObject> selectedWithGravityFieldsAction) { for (int i = 0; i < selected.Length; i++) { Attractor action = selected[i].GetComponentInChildren <Attractor>(); if (!selected[i].GetComponent <AttractorGroup>() && action != null && action.GetComponentInParent <AttractorGroup>() != null) { selectedWithGravityFieldsAction.AddIfNotContain(selected[i]); } } if (selectedWithGravityFieldsAction.Count == 0) { return; } Transform firstParent = selectedWithGravityFieldsAction[0].transform.parent; Transform parent = firstParent; if (parent != null) { parent = parent.parent; } AttractorGroup mainGroup = selectedWithGravityFieldsAction[0].GetComponentInParent <AttractorGroup>(); List <int> index = new List <int>(selectedWithGravityFieldsAction.Count); for (int i = 0; i < selectedWithGravityFieldsAction.Count; i++) { index.Add(selectedWithGravityFieldsAction[i].transform.GetSiblingIndex()); } int additionnalIndex = 0; if (firstParent != null) { additionnalIndex = firstParent.GetSiblingIndex() + selectedWithGravityFieldsAction.Count; } for (int i = 0; i < selectedWithGravityFieldsAction.Count; i++) { Undo.SetTransformParent(selectedWithGravityFieldsAction[i].transform, parent, "Move to Parent"); } ExtTransform.BubbleSortTransforms(index, selectedWithGravityFieldsAction); for (int i = 0; i < selectedWithGravityFieldsAction.Count; i++) { selectedWithGravityFieldsAction[i].transform.SetSiblingIndex(selectedWithGravityFieldsAction[i].transform.GetSiblingIndex() + additionnalIndex); } if (mainGroup.transform.childCount == 0) { Undo.DestroyObjectImmediate(mainGroup.gameObject); } }
private static void SetupSiblingOfNewGroup(List <GameObject> selectedWithAttractor, Transform commonParent, GameObject newParent) { if (commonParent != null) { newParent.transform.SetSiblingIndex(commonParent.GetSiblingIndex()); } GameObjectUtility.EnsureUniqueNameForSibling(newParent); Undo.RegisterCreatedObjectUndo(newParent, "Create AttractorGroup"); List <int> index = new List <int>(selectedWithAttractor.Count); for (int i = 0; i < selectedWithAttractor.Count; i++) { index.Add(selectedWithAttractor[i].transform.GetSiblingIndex()); } for (int i = 0; i < selectedWithAttractor.Count; i++) { Undo.SetTransformParent(selectedWithAttractor[i].transform, newParent.transform, "Move parent"); } ExtTransform.BubbleSortTransforms(index, selectedWithAttractor); }