private void ExportNodeClass(StreamWriter file, string btClassName, string agentType, BehaviorNode behavior, Node node) { string nodeName = string.Format("node{0}", node.Id); NodeCppExporter nodeExporter = NodeCppExporter.CreateInstance(node); nodeExporter.GenerateClass(node, file, "", nodeName, agentType, btClassName); ExportAttachmentClass(file, btClassName, node); if (!(node is ReferencedBehavior)) { foreach (Node child in node.Children) { ExportNodeClass(file, btClassName, agentType, behavior, child); } } }
private void ExportNode(StreamWriter file, string btClassName, string agentType, string parentName, Node node, int indentDepth) { // generate the indent string string indent = string.Empty; for (int i = 0; i < indentDepth; ++i) { indent += '\t'; } string nodeName = string.Format("node{0}", node.Id); // open some brackets for a better formatting in the generated code file.WriteLine("{0}{{", indent); // export its instance and the properties NodeCppExporter nodeExporter = NodeCppExporter.CreateInstance(node); nodeExporter.GenerateInstance(node, file, indent, nodeName, agentType, btClassName); ExportPars(file, nodeName, node, indent); ExportAttachment(file, btClassName, agentType, nodeName, node, indent + "\t"); // add the node to its parent file.WriteLine("{0}\t{1}->AddChild({2});", indent, parentName, nodeName); // export the child nodes if (!(node is ReferencedBehavior)) { foreach (Node child in node.Children) { ExportNode(file, btClassName, agentType, nodeName, child, indentDepth + 1); } } file.WriteLine("{0}\t{1}->SetHasEvents({1}->HasEvents() | {2}->HasEvents());", indent, parentName, nodeName); // close the brackets for a better formatting in the generated code file.WriteLine("{0}}}", indent); }