Esempio n. 1
0
        internal override void CollectInputExpressions(List <StatementSyntax> expressions)
        {
            var value = ObjectBuilder.Value ?? string.Empty;
            var type  = MyVisualScriptingProxy.GetType(ObjectBuilder.Type);

            base.CollectInputExpressions(expressions);

            // First handle special cases as Color and Enums
            if (type == typeof(Color) || type.IsEnum)
            {
                expressions.Add(
                    MySyntaxFactory.LocalVariable(
                        ObjectBuilder.Type,
                        VariableSyntaxName(),
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.IdentifierName(ObjectBuilder.Type),
                            SyntaxFactory.IdentifierName(ObjectBuilder.Value)
                            )
                        )
                    );
            }
            else if (type == typeof(Vector3D))
            {
                expressions.Add(
                    MySyntaxFactory.LocalVariable(ObjectBuilder.Type, VariableSyntaxName(),
                                                  MySyntaxFactory.NewVector3D(ObjectBuilder.Value)
                                                  )
                    );
            }
            else
            {
                // Rest is generic
                expressions.Add(
                    MySyntaxFactory.LocalVariable(
                        ObjectBuilder.Type,
                        VariableSyntaxName(),
                        MySyntaxFactory.Literal(ObjectBuilder.Type, value))
                    );
            }
        }
Esempio n. 2
0
        public MyVisualScriptNavigator(MyObjectBuilder_VisualScript scriptOb)
        {
            var scriptBase = string.IsNullOrEmpty(scriptOb.Interface) ? null : MyVisualScriptingProxy.GetType(scriptOb.Interface);

            foreach (var scriptNodeOb in scriptOb.Nodes)
            {
                Debug.Assert(!m_idToNode.ContainsKey(scriptNodeOb.ID));

                MyVisualSyntaxNode node;
                if (scriptNodeOb is MyObjectBuilder_NewListScriptNode)
                {
                    node = new MyVisualSyntaxNewListNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_SwitchScriptNode)
                {
                    node = new MyVisualSyntaxSwitchNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_LocalizationScriptNode)
                {
                    node = new MyVisualSyntaxLocalizationNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_LogicGateScriptNode)
                {
                    node = new MyVisualSyntaxLogicGateNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_ForLoopScriptNode)
                {
                    node = new MyVisualSyntaxForLoopNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_SequenceScriptNode)
                {
                    node = new MyVisualSyntaxSequenceNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_ArithmeticScriptNode)
                {
                    node = new MyVisualSyntaxArithmeticNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_InterfaceMethodNode)
                {
                    node = new MyVisualSyntaxInterfaceMethodNode(scriptNodeOb, scriptBase);
                }
                else if (scriptNodeOb is MyObjectBuilder_KeyEventScriptNode)
                {
                    node = new MyVisualSyntaxKeyEventNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_BranchingScriptNode)
                {
                    node = new MyVisualSyntaxBranchingNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_InputScriptNode)
                {
                    node = new MyVisualSyntaxInputNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_CastScriptNode)
                {
                    node = new MyVisualSyntaxCastNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_EventScriptNode)
                {
                    node = new MyVisualSyntaxEventNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_FunctionScriptNode)
                {
                    node = new MyVisualSyntaxFunctionNode(scriptNodeOb, scriptBase);
                }
                else if (scriptNodeOb is MyObjectBuilder_VariableSetterScriptNode)
                {
                    node = new MyVisualSyntaxSetterNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_TriggerScriptNode)
                {
                    node = new MyVisualSyntaxTriggerNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_VariableScriptNode)
                {
                    node = new MyVisualSyntaxVariableNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_ConstantScriptNode)
                {
                    node = new MyVisualSyntaxConstantNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_GetterScriptNode)
                {
                    node = new MyVisualSyntaxGetterNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_OutputScriptNode)
                {
                    node = new MyVisualSyntaxOutputNode(scriptNodeOb);
                }
                else if (scriptNodeOb is MyObjectBuilder_ScriptScriptNode)
                {
                    node = new MyVisualSyntaxScriptNode(scriptNodeOb);
                }
                else
                {
                    continue;
                }

                node.Navigator = this;

                m_idToNode.Add(scriptNodeOb.ID, node);

                var type = node.GetType();
                if (!m_nodesByType.ContainsKey(type))
                {
                    m_nodesByType.Add(type, new List <MyVisualSyntaxNode>());
                }

                m_nodesByType[type].Add(node);

                if (type == typeof(MyVisualSyntaxVariableNode))
                {
                    m_variablesByName.Add(((MyObjectBuilder_VariableScriptNode)scriptNodeOb).VariableName, (MyVisualSyntaxVariableNode)node);
                }
            }
        }
Esempio n. 3
0
 public MyVisualSyntaxVariableNode(MyObjectBuilder_ScriptNode ob) : base(ob)
 {
     Debug.Assert(ob is MyObjectBuilder_VariableScriptNode);
     m_variableType = MyVisualScriptingProxy.GetType(ObjectBuilder.VariableType);
     Using          = MySyntaxFactory.UsingStatementSyntax(m_variableType.Namespace);
 }