public override List <ScriptAction> Load(Stream stream)
        {
            List <RealTouchCommand> commands = new List <RealTouchCommand>();

            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8, true, 1024, true))
            {
                while (!reader.EndOfStream)
                {
                    string           line    = reader.ReadLine();
                    RealTouchCommand command = RealTouchCommand.Parse(line);
                    if (command != null)
                    {
                        commands.Add(command);
                    }
                }
            }

            List <RawScriptAction> intermediateResult = ConvertToRawFunscript(commands);
            List <FunScriptAction> finalResult        = intermediateResult.Select(raw => new FunScriptAction
            {
                TimeStamp = raw.TimeStamp,
                Position  = raw.Position
            }).ToList();

            //TODO Smooth movement (e.g. CH_Corruptors.ott @ 21:00)
            finalResult = RawScriptConverter.Convert(intermediateResult);

            return(finalResult.Cast <ScriptAction>().ToList());
        }
        public override List <ScriptAction> Load(Stream stream)
        {
            using (StreamReader reader = new StreamReader(stream, new UTF8Encoding(false)))
            {
                string content = reader.ReadToEnd();

                FeelMeScript script = GetScriptContent(content);

                string scriptContent = TrimNonNumberCharacters(script.String);
                var    kiirooScript  = KiirooScriptConverter.Parse(scriptContent, script.PairSeparator, script.ValueSeparator);
                var    rawScript     = KiirooScriptConverter.Convert(kiirooScript);
                var    funscript     = RawScriptConverter.Convert(rawScript);
                return(funscript.Cast <ScriptAction>().ToList());
            }
        }