public override void OnInspectorGUI()
        {
            GUI.skin.label.richText = true;
            GUILayout.Space(10);

            list.blackboard = (Blackboard)EditorGUILayout.ObjectField("Target Blackboard", (Blackboard)list.blackboard, typeof(Blackboard), true);
            TaskEditor.TaskFieldSingle(list.actionList, null, false);
            EditorUtils.EndOfInspector();

            if (Event.current.isMouse)
            {
                Repaint();
            }
        }
Exemple #2
0
        public override Task OnGUI(GUIContent content, Task instance)
        {
            //we presume the system is the context unity object (99% will be and always is in default NC)
            var system = contextUnityObject as ITaskSystem;

            if (system == null)
            {
                GUILayout.Label("Can't resolve ITaskSystem for task");
                return(instance);
            }

            if (fieldInfo.FieldType == typeof(ActionList))
            {
                if (instance == null)
                {
                    instance = Task.Create <ActionList>(system);
                }
                (instance as ActionList).ShowListGUI();
                (instance as ActionList).ShowNestedActionsGUI();
                return(instance);
            }

            if (fieldInfo.FieldType == typeof(ConditionList))
            {
                if (instance == null)
                {
                    instance = Task.Create <ConditionList>(system);
                }
                (instance as ConditionList).ShowListGUI();
                (instance as ConditionList).ShowNestedConditionsGUI();
                return(instance);
            }

            //we need capture the objects for the delegate callback
            var _field   = fieldInfo;
            var _context = context;

            TaskEditor.TaskFieldMulti(instance, system, _field.FieldType, (t) => _field.SetValue(_context, t));
            EditorUtils.Separator();
            return(instance);
        }