public static void DeleteSpringBonesAndManagers()
        {
            if (Application.isPlaying)
            {
                Debug.LogError("再生モードを止めてください。");
                return;
            }

            if (Selection.gameObjects.Length != 1)
            {
                Debug.LogError("一つだけのルートオブジェクトを選択してください");
                return;
            }

            var rootObject   = Selection.gameObjects.First();
            var queryMessage = "本当にこのオブジェクトとその子供に入っている全ての\n"
                               + "スプリングボーンとスプリングマネージャーを削除しますか?\n\n"
                               + rootObject.name;

            if (EditorUtility.DisplayDialog(
                    "スプリングボーンとマネージャーを削除", queryMessage, "削除", "キャンセル"))
            {
                SpringBoneSetup.DestroySpringManagersAndBones(rootObject);
                AssetDatabase.Refresh();
            }
        }
Exemple #2
0
        public static SpringManager PerformSetup
        (
            GameObject rootObject,
            IEnumerable <GameObject> newSpringBones,
            AutoSetupParameters parameters
        )
        {
            SpringBoneSetup.DestroySpringManagersAndBones(rootObject);
            SpringColliderSetup.DestroySpringColliders(rootObject);

            var springBones = new List <SpringBone>();

            foreach (var boneParent in newSpringBones.Where(boneParent => boneParent.transform.childCount > 0))
            {
                springBones.Add(boneParent.AddComponent <SpringBone>());
            }

            var manager = rootObject.AddComponent <SpringManager>();

            SpringBoneSetup.FindAndAssignSpringBones(manager, true);

            if (parameters.createPivots)
            {
                foreach (var springBone in springBones)
                {
                    SpringBoneSetup.CreateSpringPivotNode(springBone);
                }
            }

            return(manager);
        }
            public void BuildObjects(GameObject springBoneRoot, GameObject colliderRoot, IEnumerable <string> requiredBones)
            {
                var managerProperties = PersistentSpringManagerProperties.Create(
                    springBoneRoot.GetComponentInChildren <SpringManager>());

                SpringBoneSetup.DestroySpringManagersAndBones(springBoneRoot);

                if (requiredBones != null)
                {
                    FilterBoneRecordsByRequiredBonesAndCreateUnrecordedBones(springBoneRoot, requiredBones);
                }

                var initialTransforms = GameObjectUtil.BuildNameToComponentMap <Transform>(springBoneRoot, true);

                foreach (var record in pivotRecords)
                {
                    BuildPivotFromSerializer(initialTransforms, record);
                }

                var setupMaps = SpringBoneSetupMaps.Build(springBoneRoot, colliderRoot);

                foreach (var record in springBoneRecords)
                {
                    BuildSpringBoneFromSerializer(setupMaps, record);
                }

                var springManager = springBoneRoot.AddComponent <SpringManager>();

                if (managerProperties != null)
                {
                    managerProperties.ApplyTo(springManager);
                }
                SpringBoneSetup.FindAndAssignSpringBones(springManager);
            }
Exemple #4
0
        public static void DeleteSpringBonesAndManagers()
        {
            if (Application.isPlaying)
            {
                Debug.LogError("请退出Play模式。");
                return;
            }

            if (Selection.gameObjects.Length != 1)
            {
                Debug.LogError("只可以选择一个Root对象");
                return;
            }

            var rootObject   = Selection.gameObjects.First();
            var queryMessage =
                "确定要把以下对象及其子对象中的\n"
                + "SpringBone与SpringManager都删除吗?\n\n"
                + rootObject.name
            ;

            if (EditorUtility.DisplayDialog(
                    "考虑清楚,真的要删掉嘛", queryMessage, "删除", "取消"))
            {
                SpringBoneSetup.DestroySpringManagersAndBones(rootObject);
                AssetDatabase.Refresh();
            }
        }