Пример #1
0
 protected virtual Script DeserializeScript(ReloadedScriptEntry reloadedScript)
 {
     var eventReader = new EventReader(new MemoryParser(reloadedScript.YamlEvents));
     var scriptCollection = (ScriptCollection)YamlSerializer.Deserialize(eventReader, null, typeof(ScriptCollection), log != null ? new SerializerContextSettings { Logger = new YamlForwardLogger(log) } : null);
     var script = scriptCollection.Count == 1 ? scriptCollection[0] : null;
     return script;
 }
Пример #2
0
        protected override void ReplaceScript(ScriptComponent scriptComponent, ReloadedScriptEntry reloadedScript)
        {
            // Create new script instance
            var newScript = DeserializeScript(reloadedScript);

            // Dispose and unregister old script (and their MicroThread, if any)
            var oldScript = scriptComponent.Scripts[reloadedScript.ScriptIndex];

            // Flag scripts as being live reloaded
            if (game != null)
            {
                game.Script.LiveReload(oldScript, newScript);
            }

            // Replace with new script
            // TODO: Remove script before serializing it, so cancellation code can run
            scriptComponent.Scripts[reloadedScript.ScriptIndex] = newScript;

            oldScript.Dispose();

            if (oldScript.MicroThread != null && !oldScript.MicroThread.IsOver)
            {
                // Force the script to be cancelled
                oldScript.MicroThread.RaiseException(new MicroThreadCancelledException());
            }
        }
Пример #3
0
        protected virtual Script DeserializeScript(ReloadedScriptEntry reloadedScript)
        {
            var eventReader      = new EventReader(new MemoryParser(reloadedScript.YamlEvents));
            var scriptCollection = (ScriptCollection)YamlSerializer.Deserialize(eventReader, null, typeof(ScriptCollection), log != null ? new SerializerContextSettings {
                Logger = new YamlForwardLogger(log)
            } : null);
            var script = scriptCollection.Count == 1 ? scriptCollection[0] : null;

            return(script);
        }
Пример #4
0
        protected virtual Script DeserializeScript(ReloadedScriptEntry reloadedScript)
        {
            var eventReader      = new EventReader(new MemoryParser(reloadedScript.YamlEvents));
            var scriptCollection = new ScriptCollection();

            // Use the newly created script during second pass for proper cycle deserialization
            var newScript = ((ReloadedScriptEntryLive)reloadedScript).NewScript;

            if (newScript != null)
            {
                scriptCollection.Add(newScript);
            }

            // Try to create script first
            YamlSerializer.Deserialize(eventReader, scriptCollection, typeof(ScriptCollection));
            var script = scriptCollection.Count == 1 ? scriptCollection[0] : null;

            return(script);
        }
Пример #5
0
 protected virtual void ReplaceScript(ScriptComponent scriptComponent, ReloadedScriptEntry reloadedScript)
 {
     // TODO: Let PropertyGrid know that we updated the script
     scriptComponent.Scripts[reloadedScript.ScriptIndex] = DeserializeScript(reloadedScript);
 }
Пример #6
0
 protected virtual void ReplaceScript(ScriptComponent scriptComponent, ReloadedScriptEntry reloadedScript)
 {
     // TODO: Let PropertyGrid know that we updated the script
     scriptComponent.Scripts[reloadedScript.ScriptIndex] = DeserializeScript(reloadedScript);
 }
Пример #7
0
        protected override void ReplaceScript(ScriptComponent scriptComponent, ReloadedScriptEntry reloadedScript)
        {
            // Create new script instance
            var newScript = DeserializeScript(reloadedScript);

            // Dispose and unregister old script (and their MicroThread, if any)
            var oldScript = scriptComponent.Scripts[reloadedScript.ScriptIndex];

            // Flag scripts as being live reloaded
            if (game != null)
            {
                game.Script.LiveReload(oldScript, newScript);
            }

            // Replace with new script
            // TODO: Remove script before serializing it, so cancellation code can run
            scriptComponent.Scripts[reloadedScript.ScriptIndex] = newScript;

            oldScript.Dispose();

            if (oldScript.MicroThread != null && !oldScript.MicroThread.IsOver)
            {
                // Force the script to be cancelled
                oldScript.MicroThread.RaiseException(new MicroThreadCancelledException());
            }
        }
Пример #8
0
        protected virtual Script DeserializeScript(ReloadedScriptEntry reloadedScript)
        {
            var eventReader = new EventReader(new MemoryParser(reloadedScript.YamlEvents));
            var scriptCollection = new ScriptCollection();

            // Use the newly created script during second pass for proper cycle deserialization
            var newScript = ((ReloadedScriptEntryLive)reloadedScript).NewScript;
            if (newScript != null)
                scriptCollection.Add(newScript);

            // Try to create script first
            YamlSerializer.Deserialize(eventReader, scriptCollection, typeof(ScriptCollection));
            var script = scriptCollection.Count == 1 ? scriptCollection[0] : null;
            return script;
        }