private StatementSyntax GetCorrectAssignmentsExpression() { // Determine Type and create correct assingment var boundVariableNode = Navigator.GetVariable(ObjectBuilder.VariableName); Debug.Assert(boundVariableNode != null, "Missing variable: " + ObjectBuilder.VariableName); var type = MyVisualScriptingProxy.GetType(boundVariableNode.ObjectBuilder.VariableType); if (type == typeof(string)) { if (ObjectBuilder.ValueInputID.NodeID == -1) { return(MySyntaxFactory.VariableAssignmentExpression(ObjectBuilder.VariableName, ObjectBuilder.VariableValue, SyntaxKind.StringLiteralExpression)); } } else if (type == typeof(Vector3D)) { if (ObjectBuilder.ValueInputID.NodeID == -1) { return(MySyntaxFactory.SimpleAssignment(ObjectBuilder.VariableName, MySyntaxFactory.NewVector3D(ObjectBuilder.VariableValue))); } } else if (type == typeof(bool)) { if (ObjectBuilder.ValueInputID.NodeID == -1) { var normalizedValue = MySyntaxFactory.NormalizeBool(ObjectBuilder.VariableValue); var syntaxKind = normalizedValue == "true" ? SyntaxKind.TrueLiteralExpression : SyntaxKind.FalseLiteralExpression; return(MySyntaxFactory.VariableAssignmentExpression( ObjectBuilder.VariableName, ObjectBuilder.VariableValue, syntaxKind)); } } else { if (ObjectBuilder.ValueInputID.NodeID == -1) { return(MySyntaxFactory.VariableAssignmentExpression(ObjectBuilder.VariableName, ObjectBuilder.VariableValue, SyntaxKind.NumericLiteralExpression)); } } return(MySyntaxFactory.SimpleAssignment(ObjectBuilder.VariableName, SyntaxFactory.IdentifierName(m_inputVariableName))); }
internal override void CollectInputExpressions(List <StatementSyntax> expressions) { base.CollectInputExpressions(expressions); // just for the sake of adding the assignments all at once after the // value supplier operations. List <StatementSyntax> assignments = new List <StatementSyntax>(ObjectBuilder.Inputs.Count); for (int index = 0; index < ObjectBuilder.Inputs.Count; index++) { var valueInputNode = m_inputNodes[index]; //valueSupplierNode.CollectInputExpressions(expressions, this); var inputVarName = valueInputNode.VariableSyntaxName(ObjectBuilder.Inputs[index].Input.VariableName); var assignment = MySyntaxFactory.SimpleAssignment(ObjectBuilder.Inputs[index].Name, SyntaxFactory.IdentifierName(inputVarName)); assignments.Add(assignment); } // Add "return true;" expressions.Add(SyntaxFactory.ReturnStatement(SyntaxFactory.LiteralExpression(SyntaxKind.TrueLiteralExpression))); expressions.AddRange(assignments); }