/// <summary> /// Loads the script file. /// </summary> /// <returns></returns> public bool Load() { if (string.IsNullOrEmpty(m_scriptFilePath)) { return(false); } MyObjectBuilder_VSFiles bundle; using (var fstream = MyFileSystem.OpenRead(m_scriptFilePath)) { if (!MyObjectBuilderSerializer.DeserializeXML(fstream, out bundle)) { return(false); } } try { if (bundle.LevelScript != null) { m_objectBuilder = bundle.LevelScript; } else if (bundle.VisualScript != null) { m_objectBuilder = bundle.VisualScript; } m_navigator = new MyVisualScriptNavigator(m_objectBuilder); m_scriptName = m_objectBuilder.Name; if (m_objectBuilder.Interface != null) { m_baseType = MyVisualScriptingProxy.GetType(m_objectBuilder.Interface); } } catch (Exception e) { Debug.Fail("Error occured during the graph reconstruction: " + e); } return(true); }
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); } } }
/// <summary> /// Loads the script file. /// </summary> /// <returns></returns> public bool Load() { if(string.IsNullOrEmpty(m_scriptFilePath)) return false; MyObjectBuilder_VSFiles bundle; using (var fstream = MyFileSystem.OpenRead(m_scriptFilePath)) { if (!MyObjectBuilderSerializer.DeserializeXML(fstream, out bundle)) { return false; } } try { if (bundle.LevelScript != null) { m_objectBuilder = bundle.LevelScript; } else if (bundle.VisualScript != null) { m_objectBuilder = bundle.VisualScript; } m_navigator = new MyVisualScriptNavigator(m_objectBuilder); m_scriptName = m_objectBuilder.Name; if(m_objectBuilder.Interface != null) m_baseType = MyVisualScriptingProxy.GetType(m_objectBuilder.Interface); } catch (Exception e) { Debug.Fail("Error occured during the graph reconstruction: " + e); } return true; }