Example #1
0
        private List <IMyExecutable> GetTasks(MyWorkingNode node)
        {
            List <IMyExecutable> tasks = new List <IMyExecutable>();

            foreach (string taskName in node.GetInfo().KnownTasks.Keys)
            {
                MyTask task = node.GetTaskByPropertyName(taskName);
                tasks.Add(task);
            }

            MyNodeGroup nodeGroup = node as MyNodeGroup;

            if (nodeGroup != null)
            {
                foreach (MyNode childNode in nodeGroup.Children)
                {
                    MyWorkingNode childWorkingNode = childNode as MyWorkingNode;
                    if (childWorkingNode != null)
                    {
                        tasks.AddRange(GetTasks(childWorkingNode));
                    }
                }
            }

            return(tasks);
        }
Example #2
0
        public void RefreshView()
        {
            isUpdating = true;

            listView.Items.Clear();
            if (m_target != null)
            {
                foreach (PropertyInfo taskPropInfo in m_target.GetInfo().TaskOrder)
                {
                    MyTask task = m_target.GetTaskByPropertyName(taskPropInfo.Name);

                    if (task != null)
                    {
                        ListViewItem item = new ListViewItem(new string[] { task.Name, task.OneShot ? "Init" : "" });
                        item.Checked = task.Enabled;
                        item.Tag     = task;
                        listView.Items.Add(item);
                    }
                }
            }

            isUpdating = false;

            if (lastSelectedTaskIndex != -1 && listView.Items.Count > lastSelectedTaskIndex)
            {
                listView.Items[lastSelectedTaskIndex].Selected = true;
                listView.Invalidate();
            }
            else
            {
                m_mainForm.TaskPropertyView.Target = null;
            }

            RefreshDashboardButton();
        }
Example #3
0
 /// <summary>
 /// Return task of given type from given node
 /// </summary>
 /// <param name="node">Node</param>
 /// <param name="type">Type of task</param>
 /// <returns>Task</returns>
 protected MyTask GetTaskByType(MyWorkingNode node, Type type)
 {
     foreach (PropertyInfo taskPropInfo in node.GetInfo().TaskOrder)
     {
         MyTask task = node.GetTaskByPropertyName(taskPropInfo.Name);
         if (task.GetType().ToString() == type.ToString())
         {
             return(task);
         }
     }
     return(null);
 }
        private MyExecutionBlock CreateNodeExecutionPlan(MyWorkingNode node, bool initPhase)
        {
            List<IMyExecutable> defaultPlanContent = new List<IMyExecutable>();

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyIncomingSignalTask(node));
            }

            foreach (string taskName in node.GetInfo().KnownTasks.Keys)
            {
                MyTask task = node.GetTaskByPropertyName(taskName);

                if (task != null && initPhase && task.OneShot || !initPhase && !task.OneShot)
                {
                    defaultPlanContent.Add(task);
                }
            }

            if (node is MyNodeGroup)
            {
                IEnumerable<MyNode> children = (node as MyNodeGroup).Children.OrderBy(x => x.TopologicalOrder);

                foreach (MyNode childNode in children)
                {
                    if (childNode is MyWorkingNode)
                    {
                        defaultPlanContent.Add(CreateNodeExecutionPlan(childNode as MyWorkingNode, initPhase));
                    }
                }
            }

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyOutgoingSignalTask(node));
            }

            MyExecutionBlock defaultPlan = new MyExecutionBlock(defaultPlanContent.ToArray());
            defaultPlan.Name = node.Name;

            MyExecutionBlock resultPlan = defaultPlan;

            if (node is IMyCustomExecutionPlanner)
            {
                if (initPhase)
                {
                    resultPlan = (node as IMyCustomExecutionPlanner).CreateCustomInitPhasePlan(defaultPlan);
                }
                else
                {
                    resultPlan = (node as IMyCustomExecutionPlanner).CreateCustomExecutionPlan(defaultPlan);
                }
                resultPlan.Name = defaultPlan.Name;
            }

            if (node is MyNodeGroup)
            {
                resultPlan.Name += " (group)";
            }

            return resultPlan;
        }
        public MyExecutionBlock CreateNodeExecutionPlan(MyWorkingNode node, bool initPhase)
        {
            List<IMyExecutable> defaultPlanContent = new List<IMyExecutable>();

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyIncomingSignalTask(node));
            }

            foreach (string taskName in node.GetInfo().KnownTasks.Keys)
            {
                MyTask task = node.GetTaskByPropertyName(taskName);

                if (task != null && !task.DesignTime && (initPhase && task.OneShot || !initPhase && !task.OneShot))
                {
                    defaultPlanContent.Add(task);
                }
            }

            MyNodeGroup nodeGroup = node as MyNodeGroup;
            if (nodeGroup != null)
            {
                IEnumerable<MyNode> children = nodeGroup.Children.OrderBy(x => x.TopologicalOrder);

                foreach (MyNode childNode in children)
                {
                    MyWorkingNode childWorkingNode = childNode as MyWorkingNode;
                    if (childWorkingNode != null)
                    {
                        defaultPlanContent.Add(CreateNodeExecutionPlan(childWorkingNode, initPhase));
                    }
                }
            }

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyOutgoingSignalTask(node));
            }

            MyExecutionBlock defaultPlan = new MyExecutionBlock(defaultPlanContent.ToArray());
            defaultPlan.Name = node.Name;

            MyExecutionBlock resultPlan = defaultPlan;

            IMyCustomExecutionPlanner executionPlannerNode = node as IMyCustomExecutionPlanner;
            if (executionPlannerNode != null)
            {
                if (initPhase)
                {
                    resultPlan = executionPlannerNode.CreateCustomInitPhasePlan(defaultPlan);
                }
                else
                {
                    resultPlan = executionPlannerNode.CreateCustomExecutionPlan(defaultPlan);
                }
                resultPlan.Name = defaultPlan.Name;
            }

            if (resultPlan.Name == null)
                resultPlan.Name = node.GetType().Name;

            if (node is MyNodeGroup)
            {
                resultPlan.Name += " (group)";
            }

            // TODO(HonzaS): Rethink this. It's only used in profiling results.
            node.ExecutionBlock = resultPlan;

            return resultPlan;
        }
        private List<IMyExecutable> GetTasks(MyWorkingNode node)
        {
            List<IMyExecutable> tasks = new List<IMyExecutable>();

            foreach (string taskName in node.GetInfo().KnownTasks.Keys)
            {
                MyTask task = node.GetTaskByPropertyName(taskName);
                tasks.Add(task);
            }

            MyNodeGroup nodeGroup = node as MyNodeGroup;
            if (nodeGroup != null)
            {
                foreach (MyNode childNode in nodeGroup.Children)
                {
                    MyWorkingNode childWorkingNode = childNode as MyWorkingNode;
                    if (childWorkingNode != null)
                    {
                        tasks.AddRange(GetTasks(childWorkingNode));
                    }
                }
            }

            return tasks;
        }
Example #7
0
        private MyExecutionBlock CreateNodeExecutionPlan(MyWorkingNode node, bool initPhase)
        {
            List <IMyExecutable> defaultPlanContent = new List <IMyExecutable>();

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyIncomingSignalTask(node));
            }

            foreach (string taskName in node.GetInfo().KnownTasks.Keys)
            {
                MyTask task = node.GetTaskByPropertyName(taskName);

                if (task != null && initPhase && task.OneShot || !initPhase && !task.OneShot)
                {
                    defaultPlanContent.Add(task);
                }
            }

            if (node is MyNodeGroup)
            {
                IEnumerable <MyNode> children = (node as MyNodeGroup).Children.OrderBy(x => x.TopologicalOrder);

                foreach (MyNode childNode in children)
                {
                    if (childNode is MyWorkingNode)
                    {
                        defaultPlanContent.Add(CreateNodeExecutionPlan(childNode as MyWorkingNode, initPhase));
                    }
                }
            }

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyOutgoingSignalTask(node));
            }

            MyExecutionBlock defaultPlan = new MyExecutionBlock(defaultPlanContent.ToArray());

            defaultPlan.Name = node.Name;

            MyExecutionBlock resultPlan = defaultPlan;

            if (node is IMyCustomExecutionPlanner)
            {
                if (initPhase)
                {
                    resultPlan = (node as IMyCustomExecutionPlanner).CreateCustomInitPhasePlan(defaultPlan);
                }
                else
                {
                    resultPlan = (node as IMyCustomExecutionPlanner).CreateCustomExecutionPlan(defaultPlan);
                }
                resultPlan.Name = defaultPlan.Name;
            }

            if (node is MyNodeGroup)
            {
                resultPlan.Name += " (group)";
            }

            return(resultPlan);
        }
Example #8
0
        public MyExecutionBlock CreateNodeExecutionPlan(MyWorkingNode node, bool initPhase)
        {
            List <IMyExecutable> defaultPlanContent = new List <IMyExecutable>();

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyIncomingSignalTask(node));
            }

            foreach (var taskPropertyInfo in node.GetInfo().OrderedTasks)
            {
                MyTask task = node.GetTaskByPropertyName(taskPropertyInfo.Name);

                if ((task != null) && !task.DesignTime && (initPhase && task.OneShot || !initPhase && !task.OneShot))
                {
                    defaultPlanContent.Add(task);
                }
            }

            MyNodeGroup nodeGroup = node as MyNodeGroup;

            if (nodeGroup != null)
            {
                foreach (MyNode childNode in nodeGroup.Children.OrderBy(x => x.TopologicalOrder))
                {
                    MyWorkingNode childWorkingNode = childNode as MyWorkingNode;
                    if (childWorkingNode != null)
                    {
                        defaultPlanContent.Add(CreateNodeExecutionPlan(childWorkingNode, initPhase));
                    }
                }
            }

            if (!initPhase && PlanSignalTasks)
            {
                defaultPlanContent.Add(new MyOutgoingSignalTask(node));
            }

            var defaultPlan = new MyExecutionBlock(defaultPlanContent.ToArray())
            {
                Name = node.Name
            };

            MyExecutionBlock resultPlan = defaultPlan;

            IMyCustomExecutionPlanner executionPlannerNode = node as IMyCustomExecutionPlanner;

            if (executionPlannerNode != null)
            {
                resultPlan = initPhase
                    ? executionPlannerNode.CreateCustomInitPhasePlan(defaultPlan)
                    : executionPlannerNode.CreateCustomExecutionPlan(defaultPlan);

                resultPlan.Name = defaultPlan.Name;
            }

            if (resultPlan.Name == null)
            {
                resultPlan.Name = node.GetType().Name;
            }

            if (node is MyNodeGroup)
            {
                resultPlan.Name += " (group)";
            }

            // TODO(HonzaS): Rethink this. It's only used in profiling results.
            node.ExecutionBlock = resultPlan;

            return(resultPlan);
        }
 /// <summary>
 /// Return task of given type from given node
 /// </summary>
 /// <param name="node">Node</param>
 /// <param name="type">Type of task</param>
 /// <returns>Task</returns>
 protected MyTask GetTaskByType(MyWorkingNode node, Type type)
 {
     foreach (PropertyInfo taskPropInfo in node.GetInfo().TaskOrder)
     {
         MyTask task = node.GetTaskByPropertyName(taskPropInfo.Name);
         if (task.GetType().ToString() == type.ToString())
             return task;
     }
     return null;
 }