Beispiel #1
0
        public static IEnumerable <SyntaxNode> Build(this RoslynTranslator translator, LogNodeModel model,
                                                     IPortModel portModel)
        {
            var    obj = translator.BuildPort(model.InputPort).SingleOrDefault() as ExpressionSyntax;
            string methodName;

            switch (model.LogType)
            {
            case LogNodeModel.LogTypes.Message:
                methodName = nameof(Debug.Log);
                break;

            case LogNodeModel.LogTypes.Warning:
                methodName = nameof(Debug.LogWarning);
                break;

            case LogNodeModel.LogTypes.Error:
                methodName = nameof(Debug.LogError);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            var arg = obj != null?Argument(obj) : Argument(LiteralExpression(SyntaxKind.NullLiteralExpression));

            yield return(RoslynBuilder.MethodInvocation(methodName, IdentifierName(nameof(Debug)), arg));
        }
Beispiel #2
0
        public ExpressionSyntax BuildCall(RoslynTranslator translator, IPortModel portModel, out ExpressionSyntax inputName, out string methodName)
        {
            if (InputPort.IsConnected || InputPort.EmbeddedValue != null)
            {
                inputName = translator.BuildPort(InputPort).FirstOrDefault() as ExpressionSyntax;
            }
            else
            {
                inputName = SyntaxFactory.LiteralExpression(
                    SyntaxKind.DefaultLiteralExpression,
                    SyntaxFactory.Token(SyntaxKind.DefaultKeyword));
            }

            var method = RoslynBuilder.MethodInvocation(methodName = MethodName(portModel), typeof(Input).ToTypeSyntax(), SyntaxFactory.Argument(inputName));

            return(method);
        }
        public static ExpressionSyntax BuildCall(RoslynTranslator translator, GetInputNodeModel model, string methodName, out ExpressionSyntax inputName)
        {
            if (model.InputPort.Connected || model.InputPort.EmbeddedValue != null)
            {
                inputName = translator.BuildPort(model.InputPort).FirstOrDefault() as ExpressionSyntax;
            }
            else
            {
                inputName = RoslynBuilder.EmptyStringLiteralExpression();
            }

            var methodParameters = new[] { SyntaxFactory.Argument(inputName) };

            var method = RoslynBuilder.MethodInvocation(methodName, typeof(Input).ToTypeSyntax(), methodParameters, Enumerable.Empty <TypeSyntax>());

            return(method);
        }