Example #1
0
        /// <summary>
        /// Implement this function to make a custom inspector.
        /// </summary>
        public virtual void OnInspectorGUI()
        {
            // Update serialized node data
            if (Event.current.type == EventType.Layout)
            {
                m_SerializedNode.Update();
            }

            this.DrawDefaultInspector();

            // Apply modified properties
            m_SerializedNode.ApplyModifiedProperties();
        }
Example #2
0
        /// <summary>
        /// Draws the node inspector.
        /// <param name="target">The node that is being inspected.</param>
        /// </summary>
        public void DrawNode(ActionNode target)
        {
            // Create style?
            if (s_Styles == null)
            {
                s_Styles = new NodeEditor.Styles();
            }

            if (target == null)
            {
                m_SerializedNode    = null;
                m_Target            = null;
                m_TargetContent     = GUIContent.none;
                m_TargetIconContent = GUIContent.none;
                m_TargetType        = string.Empty;
            }
            // The target node has changed?
            else if (m_SerializedNode == null || m_SerializedNode.target != target)
            {
                m_SerializedNode = new SerializedNode(target);
                m_Target         = target;

                Type targetType = m_Target.GetType();
                m_TargetType = " (" + targetType.Name + ")";
                var nodeInfo = AttributeUtility.GetAttribute <NodeInfoAttribute>(targetType, false) ?? new NodeInfoAttribute();
                m_TargetContent     = new GUIContent(target.name + m_TargetType, null, nodeInfo.description);
                m_TargetIconContent = new GUIContent(IconUtility.GetIcon(targetType));

                // Update Values
                m_SerializedNode.Update();
            }

            // The serialized node is not null?
            if (m_SerializedNode != null)
            {
                // Draw node title
                this.DrawTitle();

                if (m_Target != null && BehaviourWindow.IsVisible(m_Target.instanceID))
                {
                    // Draw node properties
                    this.OnInspectorGUI();

                    // Update target content?
                    if (Event.current.type == EventType.Used && m_Target != null)
                    {
                        m_TargetContent.text = m_Target.name + m_TargetType;
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// Draws the node inspector.
        /// <param name="target">The node that is being inspected.</param>
        /// </summary>
        public void DrawNode (ActionNode target) {
            // Create style?
            if (s_Styles == null)
                s_Styles = new NodeEditor.Styles();

            if (target == null) {
                m_SerializedNode = null;
                m_Target = null;
                m_TargetContent = GUIContent.none;
                m_TargetIconContent = GUIContent.none;
                m_TargetType = string.Empty;
            }
            // The target node has changed?
            else if (m_SerializedNode == null || m_SerializedNode.target != target) {
                m_SerializedNode = new SerializedNode(target);
                m_Target = target;

                Type targetType = m_Target.GetType();
                m_TargetType = " (" + targetType.Name + ")";
                var nodeInfo = AttributeUtility.GetAttribute<NodeInfoAttribute>(targetType, false) ?? new NodeInfoAttribute();
                m_TargetContent = new GUIContent(target.name + m_TargetType, null, nodeInfo.description);
                m_TargetIconContent = new GUIContent(IconUtility.GetIcon(targetType));

                // Update Values
                m_SerializedNode.Update();
            }

            // The serialized node is not null?
            if (m_SerializedNode != null) {
                // Draw node title
                this.DrawTitle();

                if (m_Target != null && BehaviourWindow.IsVisible(m_Target.instanceID)) {
                    // Draw node properties
                    this.OnInspectorGUI();

                    // Update target content?
                    if (Event.current.type == EventType.Used && m_Target != null) {
                        m_TargetContent.text = m_Target.name + m_TargetType;
                    }
                }
            }
        }
Example #4
0
        /// <summary>
        /// Shows the node generic menu.
        /// </summary>
        void ShowNodeContextMenu()
        {
            var menu = new GenericMenu();

            menu.AddItem(new GUIContent("Reset"), false, delegate { StateUtility.ResetNode(target); m_SerializedNode = new SerializedNode(target); m_SerializedNode.Update(); });
            menu.AddSeparator(string.Empty);
            menu.AddItem(new GUIContent("Copy"), false, delegate { BehaviourTreeUtility.nodeToPaste = target; });
            menu.AddSeparator(string.Empty);
            if (target != null)
            {
                menu.AddItem(new GUIContent("Find Script"), false, delegate {
                    MonoScript script = BehaviourTreeUtility.GetNodeScript(target.GetType());
                    if (script != null)
                    {
                        EditorGUIUtility.PingObject(script);
                    }
                });
                menu.AddItem(new GUIContent("Edit Script"), false, delegate {
                    MonoScript script = BehaviourTreeUtility.GetNodeScript(target.GetType());
                    if (script != null)
                    {
                        AssetDatabase.OpenAsset(script);
                    }
                });
            }
            else
            {
                menu.AddDisabledItem(new GUIContent("Find Script"));
                menu.AddDisabledItem(new GUIContent("Edit Script"));
            }

            menu.ShowAsContext();
        }
Example #5
0
        /// <summary>
        /// Shows the node generic menu.
        /// </summary>
        void ShowNodeContextMenu () {
            var menu = new GenericMenu();

            menu.AddItem(new GUIContent("Reset"), false, delegate {StateUtility.ResetNode(target); m_SerializedNode = new SerializedNode(target); m_SerializedNode.Update();});
            menu.AddSeparator(string.Empty);
            menu.AddItem(new GUIContent("Copy"), false, delegate {BehaviourTreeUtility.nodeToPaste = target;});
            menu.AddSeparator(string.Empty);
            if (target != null) {
                menu.AddItem(new GUIContent("Find Script"), false, delegate {
                    MonoScript script = BehaviourTreeUtility.GetNodeScript(target.GetType());
                    if (script != null)
                        EditorGUIUtility.PingObject(script);
                });
                menu.AddItem(new GUIContent("Edit Script"), false, delegate {
                    MonoScript script = BehaviourTreeUtility.GetNodeScript(target.GetType());
                    if (script != null)
                        AssetDatabase.OpenAsset(script);
                });
            }
            else {
                menu.AddDisabledItem(new GUIContent("Find Script"));
                menu.AddDisabledItem(new GUIContent("Edit Script"));
            }

            menu.ShowAsContext();
        }