Пример #1
0
    public override void OnBodyGUI()
    {
        AnimatorNode target = ((AnimatorNode)this.target);

        //EditorGUILayout.LabelField("GameObject:", target.gameObject!=null?target.gameObject.name:"null");
        target.Animator = (UnityEngine.Animator)EditorGUILayout.ObjectField("Animator", target.Animator, typeof(UnityEngine.Animator), true);

        foreach (NodePort port in target.Outputs)
        {
            NodeEditorGUILayout.PortField(port);
        }

        /*
         * if (target.gameObject == null)
         * {
         *
         *  if (GUILayout.Button("Bind object"))
         *  {
         *      target.Bind(Selection.activeGameObject);
         *  };
         * }*/
        if (target.gameObject != null && target.initialized)
        {
            if (target.Animator != null)
            {
                target.Animator.runtimeAnimatorController = (UnityEngine.RuntimeAnimatorController)EditorGUILayout.ObjectField("Controller", target.Animator.runtimeAnimatorController, typeof(UnityEngine.RuntimeAnimatorController), true);

                for (int p = 0; p < target.Animator.parameters.Length; ++p)
                {
                    AnimatorControllerParameter parameter = target.Animator.parameters[p];
                    if (parameter.name != null && parameter.name.Length > 0)
                    {
                        if (parameter.type == AnimatorControllerParameterType.Bool || parameter.type == AnimatorControllerParameterType.Trigger)
                        {
                            target.Animator.SetBool(parameter.nameHash, EditorGUILayout.ToggleLeft(parameter.name, target.Animator.GetBool(parameter.nameHash)));
                        }
                        else if (parameter.type == AnimatorControllerParameterType.Int)
                        {
                            target.Animator.SetInteger(parameter.nameHash, EditorGUILayout.IntField(parameter.name, target.Animator.GetInteger(parameter.nameHash)));
                        }
                        else if (parameter.type == AnimatorControllerParameterType.Float)
                        {
                            target.Animator.SetFloat(parameter.nameHash, EditorGUILayout.FloatField(parameter.name, target.Animator.GetFloat(parameter.nameHash)));
                        }
                    }
                }
            }

            /*
             * if (GUILayout.Button("Rebind"))
             * {
             *  target.Bind(Selection.activeGameObject,true);
             * };*/
        }
        else
        {
            target.Bind(target.gameObject, true);
        }
    }