Exemple #1
0
 protected EditorComponent(EditorDomain domain, EditorComponent parent, string id)
     : base(id)
 {
     Domain   = domain;
     Parent   = parent;
     Children = new List <EditorComponent>();
 }
Exemple #2
0
 protected PropertyItem(EditorDomain domain, PropertyGroup parent, string id, string name, Type valueType, object value)
     : base(domain, parent, id)
 {
     Name      = name;
     ValueType = valueType;
     Value     = value;
 }
        protected TaskNode(EditorDomain domain, EditorComponent parent, TaskState task)
            : base(domain
                   , parent
                   , string.Format("{0}-Node", task.Id))
        {
            Task = task;
            Task.OnEventApplied += Task_OnEventApplied;

            if (task.Desc is DecoratorTaskDescWrapper)
            {
                var desc = (DecoratorTaskDescWrapper)task.Desc;

                if (desc.ChildTaskId > 0)
                {
                    CreateChildTaskNode(desc.ChildTaskId);
                }
            }
            else if (task.Desc is CompositeTaskDescWrapper)
            {
                var desc = (CompositeTaskDescWrapper)task.Desc;

                foreach (var id in desc.ChildTaskIds)
                {
                    CreateChildTaskNode(id);
                }
            }
        }
        public GroupPropertyItem(EditorDomain domain, PropertyGroup parent, string name, Type valueType, object value)
            : base(domain, parent, string.Format("{0}-{1}", typeof(GroupPropertyItem), Guid.NewGuid()), name, valueType, value)
        {
            if (value == null)
            {
                value = Activator.CreateInstance(valueType);
            }

            group = new PropertyGroup(domain, parent, valueType, value);
        }
        public BehaviorTreeView(EditorDomain domain, BehaviorTreeState tree, Vector2 windowSize)
            : base(domain, null, string.Format("{0}-View", tree.Id))
        {
            Tree         = tree;
            Size         = windowSize;
            scrollOffset = new Vector2(windowSize.x / 2, EditorConfiguration.NodeSize.y);

            Children.Add(new BehaviorTreeNode(domain, this));

            NodeLayoutHelper.Calculate(Tree);
        }
Exemple #6
0
        public BehaviorTreeNode(EditorDomain domain, BehaviorTreeView parent)
            : base(domain
                   , parent
                   , string.Format("{0}-Node", parent.Tree.Id))
        {
            Tree = parent.Tree;
            Tree.OnEventApplied += Tree_OnEventApplied;

            if (Tree.RootTaskId > 0)
            {
                var task = (TaskState)Repository.States[TaskState.GetId(Tree.RootTaskId)];
                RootView.Children.Add(TaskNode.Create(RootView, task));
            }
        }
        public PropertyGroup(EditorDomain domain, EditorComponent parent, Type valueType, object value)
            : base(domain
                   , parent
                   , string.Format("{0}-{1}", typeof(PropertyGroup).Name, Guid.NewGuid().ToString()))
        {
            ValueType = valueType;
            Value     = value;

            properties = (from p in ValueType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                          where p.GetCustomAttributes(typeof(BehaveAsFieldAttribute), true).Length > 0
                          select Tuple.Create(CreateItem(EditorHelper.GetPropertyName(p), p.PropertyType, p.GetValue(value, null)), p) into t
                          where t.Item2 != null
                          select t).ToArray();
        }
Exemple #8
0
        public void Deserialize()
        {
            if (Domain != null)
            {
                return;
            }

            var repo    = new EditorRepository();
            var handler = new BehaviorTreeCommandHandler();
            var domain  = new EditorDomain(repo, handler);

            domain.OnEventApplied += Domain_OnEventApplied;

            var treeId = BehaviorTreeState.GetId();
            var tree   = new BehaviorTreeState(domain, treeId);

            tree.Asset          = this;
            repo.States[treeId] = tree;

            if (bytes != null && bytes.Length > 0)
            {
                var treeDesc = BehaviorTreeSerializer.DeserializeDesc(bytes);
                tree.Title      = treeDesc.Title;
                tree.Comment    = treeDesc.Comment;
                tree.RootTaskId = treeDesc.RootTaskId;

                if (treeDesc.Tasks != null && treeDesc.Tasks.Length > 0)
                {
                    tree.NextTaskId = treeDesc.Tasks.Max(t => t.Id) + 1;

                    foreach (var taskDesc in treeDesc.Tasks)
                    {
                        var taskId = TaskState.GetId(taskDesc.Id);
                        var task   = new TaskState(domain, taskId);
                        if (taskDesc.Id != treeDesc.RootTaskId)
                        {
                            task.ParentTaskId = EditorHelper.FindParentTask(treeDesc.Tasks, taskDesc.Id).Id;
                        }
                        task.Desc            = taskDesc;
                        repo.States[task.Id] = task;
                    }
                }
            }

            Domain = domain;
            Tree   = tree;
        }
Exemple #9
0
        public ListPropertyItem(EditorDomain domain, PropertyGroup parent, string name, Type valueType, object value, Type elementType)
            : base(domain, parent, string.Format("{0}-{1}", typeof(ListPropertyItem), Guid.NewGuid()), name, valueType, value)
        {
            this.elementType = elementType;

            if (value == null)
            {
                elements = new PropertyItem[0];
            }
            else
            {
                var list = (IList)value;

                elements = new PropertyItem[list.Count];
                for (int i = 0; i < list.Count; i++)
                {
                    elements[i] = parent.CreateItem(I18n._("Element #{0}", i), elementType, list[i]);
                    elements[i].OnLabelClick += Item_OnLabelClick;
                }
            }
        }
Exemple #10
0
 public IntPropertyItem(EditorDomain domain, PropertyGroup parent, string name, Type valueType, object value)
     : base(domain, parent, string.Format("{0}-{1}", typeof(IntPropertyItem), Guid.NewGuid()), name, valueType, value)
 {
 }
 public BehaviorTreeState(EditorDomain domain, string id)
     : base(domain, id)
 {
     NextTaskId = 1;
 }
 public DecoratorTaskNode(EditorDomain domain, EditorComponent parent, TaskState task)
     : base(domain, parent, task)
 {
 }
Exemple #13
0
        //public string Title { get; protected set; }

        //public Vector2 Position { get; protected set; }

        //public Vector2 Size { get; protected set; }

        //public GUIStyle Style { get; protected set; }

        protected Node(EditorDomain domain, EditorComponent parent, string id)
            : base(domain, parent, id)
        {
            RootView = FindRootView();
        }
 public TaskState(EditorDomain domain, string id)
     : base(domain, id)
 {
 }
Exemple #15
0
 public CompositeTaskNode(EditorDomain domain, EditorComponent parent, TaskState task)
     : base(domain, parent, task)
 {
 }
Exemple #16
0
 protected EditorState(EditorDomain domain, string id)
     : base(id)
 {
     Domain = domain;
 }