示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }