Example #1
0
        /// <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);
        }
Example #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);
                }
            }
        }
        /// <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;
        }