示例#1
0
        private static object GetPropertyValue(FrameStatePool.PlanningState nodeState, string agentFullName, string propertyName)
        {
            FrameStatePool.PlanningState ns = nodeState;
            bool bOk = ns._agents.ContainsKey(agentFullName) && ns._agents[agentFullName].ContainsKey(propertyName);

            //if the current node has no value, to look for it in the parent's
            object v = null;

            while (!bOk)
            {
                ns = ns._parent;

                if (ns == null)
                {
                    break;
                }

                bOk = ns._agents.ContainsKey(agentFullName) && ns._agents[agentFullName].ContainsKey(propertyName);
            }

            if (bOk)
            {
                Debug.Check(ns._agents[agentFullName].ContainsKey(propertyName));
                v = ns._agents[agentFullName][propertyName];
            }

            return(v);
        }
示例#2
0
        public void ShowInstanceProperty()
        {
            if (Plugin.EditMode == EditModes.Design)
            {
                return;
            }

            TreeNode treeNode = this.treeView.SelectedNode;

            if (treeNode == null)
            {
                return;
            }

            string agentInstanceName = treeNode.Name;

            FrameStatePool.PlanningState nodeState = null;

            if (treeNode.Tag != null && treeNode.Tag is FrameStatePool.PlanningProcess)
            {
                FrameStatePool.PlanningProcess planning = (FrameStatePool.PlanningProcess)treeNode.Tag;

                agentInstanceName = planning._agentFullName;
                nodeState         = planning._rootState;
            }

            ParametersDock.Inspect(agentInstanceName, nodeState);
        }
示例#3
0
        public void SetProperty(FrameStatePool.PlanningState nodeState, string agentFullName)
        {
            Debug.Check(nodeState != null);

            //iterate all the properties
            for (int i = 0; i < _rowControls.Count; ++i)
            {
                RowControl rc = _rowControls[i];

                object v = GetPropertyValue(nodeState, agentFullName, rc.Name);

                if (v != null)
                {
                    SetProperty(rc.Name, v.ToString());
                }
            }
        }
示例#4
0
        private static void Planning_ClikcNode(NodeViewData nvd)
        {
            if (nvd != null)
            {
                Behavior b = nvd.Node.Behavior as Behavior;

                if (b != null && b.PlanningProcess != null)
                {
                    b.AgentType.AddPars(b.LocalVars);

                    FrameStatePool.PlanningState nodeState = b.PlanningProcess._rootState;

                    if (nvd.Parent != null)
                    {
                        nodeState = b.PlanningProcess.GetLastNode(nvd);
                    }

                    ParametersDock.Inspect(b.PlanningProcess._agentFullName, nodeState);
                }
            }
        }
示例#5
0
        internal static void Inspect(string agentFullName, FrameStatePool.PlanningState nodeState)
        {
            Debug.Check(!string.IsNullOrEmpty(agentFullName));

            string[] tokens    = agentFullName.Split('#');
            string   agentName = tokens[tokens.Length - 1];

            Debug.Check(tokens.Length == 2);

            // Agent
            if (tokens.Length > 1)
            {
                AgentType agentType = Plugin.GetAgentType(tokens[0]);

                Inspect(agentType, agentName, agentFullName, nodeState);
            }

            // Global
            else
            {
                Inspect(Plugin.GetInstanceAgentType(agentFullName, null, null), agentName, agentFullName, nodeState);
            }
        }
示例#6
0
        internal static void Inspect(AgentType agentType, string agentName, string agentFullName, FrameStatePool.PlanningState nodeState)
        {
            ParametersDock dock = findParametersDock(agentType, agentName);

            if (dock == null)
            {
                dock = new ParametersDock();
                dock.Show(MainWindow.Instance.DockPanel, WeifenLuo.WinFormsUI.Docking.DockState.DockBottom);
            }

            dock.InspectObject(agentType, agentName, agentFullName, nodeState);
        }
示例#7
0
 private void setProperty(FrameStatePool.PlanningState nodeState, string agentFullName)
 {
     parametersPanel.SetProperty(nodeState, agentFullName);
 }
示例#8
0
        private void InspectObject(AgentType agentType, string agentName, string agentFullName, FrameStatePool.PlanningState nodeState)
        {
            Nodes.Node node = null;

            if (!string.IsNullOrEmpty(agentFullName))
            {
                int           frame            = AgentDataPool.CurrentFrame > -1 ? AgentDataPool.CurrentFrame : 0;
                string        behaviorFilename = FrameStatePool.GetBehaviorFilename(agentFullName, frame);
                List <string> transitionIds    = FrameStatePool.GetHighlightTransitionIds(agentFullName, frame, behaviorFilename);
                List <string> highlightNodeIds = FrameStatePool.GetHighlightNodeIds(agentFullName, frame, behaviorFilename);
                List <string> updatedNodeIds   = FrameStatePool.GetUpdatedNodeIds(agentFullName, frame, behaviorFilename);
                Dictionary <string, FrameStatePool.NodeProfileInfos.ProfileInfo> profileInfos = FrameStatePool.GetProfileInfos(frame, behaviorFilename);

                BehaviorNode behavior = UIUtilities.ShowBehaviorTree(agentFullName, frame, transitionIds, highlightNodeIds, updatedNodeIds, HighlightBreakPoint.Instance, profileInfos);
                node = behavior as Nodes.Node;
            }

            _agentType = agentType;
            _agentName = agentName;

            Hide();

            setText(agentType, agentName);

            if (nodeState != null)
            {
                foreach (string agentFullName1 in nodeState._agents.Keys)
                {
                    string[] tokens = agentFullName1.Split('#');
                    Debug.Check(tokens.Length == 2);
                    string at = tokens[0];
                    string an = tokens[1];

                    AgentType agentType1 = Plugin.GetAgentType(at);

                    ParametersDock dock = findParametersDock(agentType1, an);
                    dock.InspectObject(agentType1, agentFullName1);

                    dock.setProperty(nodeState, agentFullName1);
                }
            }
            else if (AgentDataPool.CurrentFrame > -1 && !string.IsNullOrEmpty(agentName))
            {
                ParametersDock dock = findParametersDock(agentType, agentName);
                dock.InspectObject(agentType, agentFullName);

                List <AgentDataPool.ValueMark> valueSet = AgentDataPool.GetValidValues(agentType, agentFullName, AgentDataPool.CurrentFrame);
                foreach (AgentDataPool.ValueMark value in valueSet)
                {
                    dock.setProperty(null, value.Name, value.Value);
                }
            }

            lostAnyFocus();
            Show();
        }