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); }
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); }
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()); } } }
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); } } }
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); } }
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); }
private void setProperty(FrameStatePool.PlanningState nodeState, string agentFullName) { parametersPanel.SetProperty(nodeState, agentFullName); }
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(); }