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)) ); } }
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); } } }
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); }