Пример #1
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();

            var fxSpawner = serializedObject.targetObject as FXSpawner;

            if (fxSpawner == null)
            {
                Debug.LogWarning("serializedObject.targetObject as FXSpawner == null. Something went very wrong.");
                return;
            }

            var str = ShowDebugMenu ? "Hide Spawn Menu" : "Show Spawn Menu";

            KitGUILayout.BeginCleanFoldout("Spawn Menu", ref ShowDebugMenu, size: 12);

            if (!ShowDebugMenu)
            {
                KitGUILayout.EndCleanFoldout();
                return;
            }

            if (!EditorApplication.isPlaying)
            {
                EditorGUILayout.HelpBox("FX Can only be spawned by the inspector at runtime.", MessageType.Info);
            }

            SelectedKey = EditorGUILayout.TextField("Key: ", SelectedKey);
            Retain      = EditorGUILayout.Toggle("Retain? ", Retain);

            GUI.enabled = EditorApplication.isPlaying;
            EditorGUILayout.BeginHorizontal();
            if (Retain)
            {
                if (GUILayout.Button("Spawn and Retain"))
                {
                    fxSpawner.SpawnAndRetain(SelectedKey);
                }
                if (GUILayout.Button("Despawn"))
                {
                    fxSpawner.DespawnAndRelease(SelectedKey);
                }
            }
            else
            {
                if (GUILayout.Button("Spawn and Forget"))
                {
                    fxSpawner.SpawnAndForget(SelectedKey);
                }
            }
            EditorGUILayout.EndHorizontal();
            GUI.enabled = true;

            EditorGUILayout.LabelField("Interaction", EditorStyles.boldLabel);

            if (AnimationParameter == null)
            {
                AnimationParameter = new AnimationParameter();
            }

            AnimationParameter.Key = EditorGUILayout.TextField("Parameter Key: ", AnimationParameter.Key);

            AnimationParameter.ParameterType = (AnimatorControllerParameterType)
                                               EditorGUILayout.EnumPopup("Parameter Tyoe: ", AnimationParameter.ParameterType);

            switch (AnimationParameter.ParameterType)
            {
            case AnimatorControllerParameterType.Float:
                AnimationParameter.FloatValue = EditorGUILayout.FloatField("Float Value: ", AnimationParameter.FloatValue);
                break;

            case AnimatorControllerParameterType.Int:
                AnimationParameter.IntValue = EditorGUILayout.IntField("Int Value: ", AnimationParameter.IntValue);
                break;

            case AnimatorControllerParameterType.Bool:
                AnimationParameter.BoolValue = EditorGUILayout.Toggle("Bool Value: ", AnimationParameter.BoolValue);
                break;

            default:
            case AnimatorControllerParameterType.Trigger:
                break;
            }
            GUI.enabled = EditorApplication.isPlaying;
            if (GUILayout.Button("Set Parameter on retained FXUnit"))
            {
                var unit = fxSpawner.GetRetainedUnit(SelectedKey);
                if (unit == null)
                {
                    return;
                }

                var animator = unit.GetComponent <Animator>();
                if (animator == null)
                {
                    return;
                }

                AnimationParameter.Set(animator);
            }
            GUI.enabled = true;
            KitGUILayout.EndCleanFoldout();
        }