protected override void GenerateMethod(Node node, StreamWriter stream, string indent) { base.GenerateMethod(node, stream, indent); DecoratorWeight decoratorWeight = node as DecoratorWeight; Debug.Check(decoratorWeight != null); if (decoratorWeight.Weight != null) { stream.WriteLine("{0}\t\tprotected override int GetWeight(Agent pAgent)", indent); stream.WriteLine("{0}\t\t{{", indent); string retStr = VariableCsExporter.GenerateCode(decoratorWeight.Weight, stream, indent + "\t\t\t", string.Empty, string.Empty, string.Empty); stream.WriteLine("{0}\t\t\treturn {1};", indent, retStr); stream.WriteLine("{0}\t\t}}", indent); } }
protected override void GenerateMethod(Node node, StreamWriter stream, string indent) { base.GenerateMethod(node, stream, indent); Wait wait = node as Wait; Debug.Check(wait != null); if (wait.Time != null) { stream.WriteLine("{0}\t\tprotected override float GetTime(Agent pAgent)", indent); stream.WriteLine("{0}\t\t{{", indent); string retStr = VariableCsExporter.GenerateCode(wait.Time, stream, indent + "\t\t\t", string.Empty, string.Empty, string.Empty); stream.WriteLine("{0}\t\t\treturn {1};", indent, retStr); stream.WriteLine("{0}\t\t}}", indent); } }
protected override void GenerateMethod(Node node, StreamWriter stream, string indent) { base.GenerateMethod(node, stream, indent); DecoratorTime decoratorTime = node as DecoratorTime; if (decoratorTime == null) { return; } if (decoratorTime.Time != null) { stream.WriteLine("{0}\t\tprotected override float GetTime(Agent pAgent)", indent); stream.WriteLine("{0}\t\t{{", indent); string retStr = VariableCsExporter.GenerateCode(decoratorTime.Time, false, stream, indent + "\t\t\t", string.Empty, string.Empty, string.Empty); stream.WriteLine("{0}\t\t\treturn {1};", indent, retStr); stream.WriteLine("{0}\t\t}}", indent); } }
protected override void GenerateMethod(Node node, StreamWriter stream, string indent) { base.GenerateMethod(node, stream, indent); DecoratorCount decoratorCount = node as DecoratorCount; if (decoratorCount == null) { return; } if (decoratorCount.Count != null) { stream.WriteLine("{0}\t\tprotected override int GetCount(Agent pAgent)", indent); stream.WriteLine("{0}\t\t{{", indent); string retStr = VariableCsExporter.GenerateCode(node, decoratorCount.Count, false, stream, indent + "\t\t\t", string.Empty, string.Empty, string.Empty); stream.WriteLine("{0}\t\t\treturn {1};", indent, retStr); stream.WriteLine("{0}\t\t}}", indent); } }
protected override void GenerateMethod(Behaviac.Design.Attachments.Attachment attachment, StreamWriter stream, string indent) { base.GenerateMethod(attachment, stream, indent); PluginBehaviac.Events.Predicate predicate = attachment as PluginBehaviac.Events.Predicate; Debug.Check(predicate != null); stream.WriteLine("{0}\t\tprotected override EBTStatus update_impl(behaviac.Agent pAgent, behaviac.EBTStatus childStatus)", indent); stream.WriteLine("{0}\t\t{{", indent); stream.WriteLine("{0}\t\t\tEBTStatus result = EBTStatus.BT_FAILURE;", indent); // BinaryOperator switch (predicate.BinaryOperator) { case BinaryOperator.And: stream.WriteLine("{0}\t\t\tthis.m_bAnd = true;", indent); break; case BinaryOperator.Or: default: stream.WriteLine("{0}\t\t\tthis.m_bAnd = false;", indent); break; } string typeName = Plugin.GetNativeTypeName(predicate.Opl.ValueType); // opl RightValueCsExporter.GenerateCode(predicate.Opl, stream, indent + "\t\t\t", typeName, "opl", string.Empty); // opr VariableCsExporter.GenerateCode(predicate.Opr, stream, indent + "\t\t\t", typeName, "opr", string.Empty); // Operator switch (predicate.Operator) { case OperatorType.Equal: stream.WriteLine("{0}\t\t\tbool op = opl == opr;", indent); break; case OperatorType.NotEqual: stream.WriteLine("{0}\t\t\tbool op = opl != opr;", indent); break; case OperatorType.Greater: stream.WriteLine("{0}\t\t\tbool op = opl > opr;", indent); break; case OperatorType.GreaterEqual: stream.WriteLine("{0}\t\t\tbool op = opl >= opr;", indent); break; case OperatorType.Less: stream.WriteLine("{0}\t\t\tbool op = opl < opr;", indent); break; case OperatorType.LessEqual: stream.WriteLine("{0}\t\t\tbool op = opl <= opr;", indent); break; case OperatorType.And: stream.WriteLine("{0}\t\t\tbool op = opl && opr;", indent); break; case OperatorType.Or: stream.WriteLine("{0}\t\t\tbool op = opl || opr;", indent); break; default: stream.WriteLine("{0}\t\t\tbool op = false;", indent); break; } stream.WriteLine("{0}\t\t\tif (op)", indent); stream.WriteLine("{0}\t\t\t\tresult = EBTStatus.BT_SUCCESS;", indent); stream.WriteLine("{0}\t\t\treturn result;", indent); stream.WriteLine("{0}\t\t}}", indent); }
protected override void GenerateMethod(Node node, StreamWriter stream, string indent) { base.GenerateMethod(node, stream, indent); PluginBehaviac.Nodes.Condition condition = node as PluginBehaviac.Nodes.Condition; Debug.Check(condition != null); stream.WriteLine("{0}\t\tprotected override EBTStatus update_impl(behaviac.Agent pAgent, behaviac.EBTStatus childStatus)", indent); stream.WriteLine("{0}\t\t{{", indent); string typeName = DataCsExporter.GetGeneratedNativeType(condition.Opl.ValueType); // opl RightValueCsExporter.GenerateCode(condition.Opl, stream, indent + "\t\t\t", typeName, "opl", string.Empty); if (condition.Opl.IsMethod) { RightValueCsExporter.PostGenerateCode(condition.Opl, stream, indent + "\t\t\t", typeName, "opl", string.Empty); } // opr VariableCsExporter.GenerateCode(condition.Opr, stream, indent + "\t\t\t", typeName, "opr", string.Empty); // Operator switch (condition.Operator) { case OperatorType.Equal: stream.WriteLine("{0}\t\t\tbool op = opl == opr;", indent); break; case OperatorType.NotEqual: stream.WriteLine("{0}\t\t\tbool op = opl != opr;", indent); break; case OperatorType.Greater: stream.WriteLine("{0}\t\t\tbool op = opl > opr;", indent); break; case OperatorType.GreaterEqual: stream.WriteLine("{0}\t\t\tbool op = opl >= opr;", indent); break; case OperatorType.Less: stream.WriteLine("{0}\t\t\tbool op = opl < opr;", indent); break; case OperatorType.LessEqual: stream.WriteLine("{0}\t\t\tbool op = opl <= opr;", indent); break; case OperatorType.And: stream.WriteLine("{0}\t\t\tbool op = opl && opr;", indent); break; case OperatorType.Or: stream.WriteLine("{0}\t\t\tbool op = opl || opr;", indent); break; default: stream.WriteLine("{0}\t\t\tbool op = false;", indent); break; } stream.WriteLine("{0}\t\t\treturn op ? EBTStatus.BT_SUCCESS : EBTStatus.BT_FAILURE;", indent); stream.WriteLine("{0}\t\t}}", indent); }