private void GenerateConnectionCode(GeneratedBlockInfo blockInfo) { //Output connections var block = blockInfo.Block; var variableName = blockInfo.VariableName; for (var i = 0; i < block.OutputNodes.Count; i++) { var outputNode = block.OutputNodes[i]; var connectedTo = _generatedBlocks.Where(it => it.Block.InputNodes.Any(c => c.ConnectingNode == outputNode)); foreach (var connectedBlock in connectedTo) { for (var j = 0; j < connectedBlock.Block.InputNodes.Count; j++) { if (connectedBlock.Block.InputNodes[j].ConnectingNode == outputNode) { _text.AppendLine(Ident(3) + variableName + ".OutputNodes[" + i + "].ConnectTo(" + connectedBlock.VariableName + ".InputNodes[" + j + "]);"); } } } } }
private void GenerateDeclarationCode(GeneratedBlockInfo blockInfo) { //Variable declaration and paramaters var block = blockInfo.Block; var type = block.GetType(); var parameterProperties = type.GetProperties().Where(property => property.GetCustomAttributes(true).OfType <Parameter>().Any()).ToList(); var variableName = blockInfo.VariableName; _text.Append(Ident(3) + "var " + variableName + " = new " + type.Name); if (parameterProperties.Count == 0) { _text.AppendLine("();"); } else { _text.AppendLine(Environment.NewLine + Ident(3) + "{"); for (var i = 0; i < parameterProperties.Count; i++) { var property = parameterProperties[i]; _text.AppendLine(Ident(4) + property.Name + " = " + GetPropertyValue(property, block) + (i < parameterProperties.Count - 1 ? "," : "")); } _text.AppendLine(Ident(3) + "};"); } }