Ejemplo n.º 1
0
        public static void PlayStoryboard(BeatmapFolderInfoEx info)
        {
            //init audio
            if (!(MusicPlayerManager.ActivityPlayer is MusicPlayer player))
            {
                throw new Exception("Player must be MusicPlayer if you want to call PlayStoryboard()");
            }

            player.Load(info.audio_file_path);

            MusicPlayerManager.ActivityPlayer?.Stop();
            MusicPlayerManager.ApplyPlayer(player);

            //load Storyboard objects
            var instance = StoryboardInstance.Load(info);

            var auto_trigger = ToolManager.GetOrCreateTool <AutoTrigger>();

            auto_trigger.Load(info);
            auto_trigger.Trim();

            ExecutorSync.PostTask(() =>
            {
                StoryboardWindow.CurrentWindow.LoadStoryboardInstance(instance);
                MusicPlayerManager.ActivityPlayer?.Play();
            }
                                  );
        }
Ejemplo n.º 2
0
            /// <inheritdoc/>
            public void BeginStoryboard(AnimationBase animation, StoryboardInstance storyboardInstance)
            {
                Animate(animation, storyboardInstance.StoryboardClock);

                var animState = GetAnimationState();

                animState.StoryboardInstance = storyboardInstance;
            }
Ejemplo n.º 3
0
            /// <inheritdoc/>
            public void StopStoryboard(AnimationBase animation, StoryboardInstance storyboardInstance)
            {
                if (this.storyboardInstance != storyboardInstance)
                {
                    return;
                }

                ClearAnimation();
            }
        public override void Update()
        {
            var i = StoryboardInstanceManager.ActivityInstance;

            if (i != instance)
            {
                Window?.Reset();
            }

            instance = i;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Enlists a dependency property on this object into the specified storyboard instance.
        /// </summary>
        /// <param name="dp">A <see cref="DependencyProperty"/> that identifies the dependency property to enlist.</param>
        /// <param name="storyboardInstance">The <see cref="StoryboardInstance"/> into which to enlist the dependency property.</param>
        /// <param name="animation">The animation to apply to the dependency property.</param>
        internal void EnlistDependencyPropertyInStoryboard(DependencyProperty dp, StoryboardInstance storyboardInstance, AnimationBase animation)
        {
            Contract.Require(dp, nameof(dp));
            Contract.Require(storyboardInstance, nameof(storyboardInstance));
            Contract.Require(animation, nameof(animation));

            if (dp.IsReadOnly)
            {
                throw new InvalidOperationException(PresentationStrings.DependencyPropertyIsReadOnly.Format(dp.Name));
            }

            var wrapper = GetDependencyPropertyValue(dp, dp.PropertyType);

            storyboardInstance.Enlist(wrapper, animation);
        }
            /// <inheritdoc/>
            public void StopStoryboard(AnimationBase animation, StoryboardInstance storyboardInstance)
            {
                var animState = GetAnimationState(false);

                if (animState == null)
                {
                    return;
                }

                if (animState.StoryboardInstance != storyboardInstance)
                {
                    return;
                }

                ClearAnimation();
            }
Ejemplo n.º 7
0
        /// <summary>
        /// 将SB实例加载到Window上,后者将会自动调用instance.Update()并渲染
        /// </summary>
        /// <param name="instance"></param>
        public static void LoadStoryboardInstance(StoryboardInstance instance)
        {
            ready = false;

            if (Instance != null)
            {
                Clean();
            }

            Instance = instance;
            StoryboardInstanceManager.ApplyInstance(instance);
            SetupClipPostProcesses();

            BuildResource(instance);

            ready = true;
        }
Ejemplo n.º 8
0
        private static void BuildResource(StoryboardInstance instance)
        {
            if (instance.Resource != null)
            {
                try
                {
                    instance.Resource.Dispose();
                    instance.Resource = null;
                }
                catch {}
            }

            using (StopwatchRun.Count("Loaded image resouces and sprite instances."))
            {
                var resource = StoryboardResource.BuildDefaultResource(instance.Updater.StoryboardObjectList, instance.Info.folder_path);
                instance.Resource = resource;
            }
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            var dir_path = "ssss";

            BeatmapFolderInfo folder_info = BeatmapFolderInfo.Parse(dir_path, null);

            Setting.EnableSplitMoveScaleCommand = false;

            var sb_instance = StoryboardInstance.Load(folder_info);

            CSSInstance css = new CSSInstance();

            var objects = sb_instance.Updater.StoryboardObjectList;

            foreach (var sbo in objects)
            {
                sbo.CalculateAndApplyBaseFrameTime();

                var result = StoryboardConverter.ConvertStoryboardObject(sbo, dir_path);

                css.FormatableCSSElements.AddRange(result.keyframes);

                css.FormatableCSSElements.Add(result.selector);
            }

            AppendVisualField(css);

            var css_content = css.FormatAsCSSSupport(null);

            var css_save_path = Path.Combine(folder_info.folder_path, "result.css");

            File.WriteAllText(css_save_path, css_content);

            var html_content   = GenerateHtml(css_save_path, css, objects);
            var html_save_path = Path.Combine(folder_info.folder_path, "result_html.html");

            File.WriteAllText(html_save_path, html_content);

            //Console.ReadLine();
        }
Ejemplo n.º 10
0
 public static void LoadStoryboardInstance(StoryboardInstance instance)
 {
     Instance   = instance;
     _timestamp = 0;
 }
Ejemplo n.º 11
0
        public static void Main(string[] argv)
        {
            //Test();
            Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory;

            //hook Ctrl-C action for console window.
            SetConsoleCtrlHandler(type => {
                Exit();
                return(true);
            }, false);

            //apply settings from file
            PlayerSetting.Init();

            //apply settings from commandline
            var args = ParseProgramCommands(argv, out var beatmap_folder);

            //apply features and settings from diff envs
            EnvironmentHelper.SetupEnvironment();

            //Update check and notify
            if (PlayerSetting.EnableUpdateCheck)
            {
                ProgramUpdater.UpdateCheck();
            }

            //clean temp folder if updated just now.
            ProgramUpdater.CleanTemp();

            PlayerSetting.PrintSettings();

            //init window
            StoryboardWindow window = new StoryboardWindow(PlayerSetting.Width, PlayerSetting.Height);

            Log.User($"Start to parse folder :{beatmap_folder}");

            if (Directory.Exists(beatmap_folder))
            {
                var info     = BeatmapFolderInfoEx.Parse(beatmap_folder, args);
                var instance = StoryboardInstance.Load(info);

                window.LoadStoryboardInstance(instance);

                var player = new MusicPlayer();
                player.Load(info.audio_file_path);
                MusicPlayerManager.ApplyPlayer(player);

                var auto_trigger = ToolManager.GetOrCreateTool <AutoTrigger>();
                auto_trigger.Load(info);
                auto_trigger.Trim();
            }
            else
            {
                Exit($"You have to select a beatmap folder which contains storyboard to play");
            }

            if (PlayerSetting.EncodingEnvironment)
            {
                //init encoding environment
                var                   encoding_opt    = new EncoderOption(args);
                EncodingKernel        encoding_kernel = new EncodingKernel(encoding_opt);
                EncodingProcessPlayer encoding_player = new EncodingProcessPlayer(MusicPlayerManager.ActivityPlayer.Length, encoding_opt.FPS);
                MusicPlayerManager.ActivityPlayer.Pause();
                MusicPlayerManager.ApplyPlayer(encoding_player);
                ToolManager.AddTool(encoding_kernel);
                encoding_kernel.Start();
            }

            #region Setup Loop Playback

            if ((PlayerSetting._LoopPlayStartTime != null || PlayerSetting._LoopPlayEndTime != null) && MusicPlayerManager.ActivityPlayer is MusicPlayer mp)
            {
                var len = mp.Length;

                LoopPlayer lp = new LoopPlayer(PlayerSetting._LoopPlayStartTime ?? 0, PlayerSetting._LoopPlayEndTime ?? len);

                Log.User($"Loop playback : {lp}");

                MusicPlayerManager.ApplyPlayer(lp);
            }

            #endregion

            MusicPlayerManager.ActivityPlayer.Volume = PlayerSetting.Volume;

            MusicPlayerManager.ActivityPlayer?.Play();

            window.Run();

            /*/ 不曾设想的操作.jpg
             * window.IsVisible = true;
             * window.RefreshResize();
             *
             * while (true)
             * {
             *  UpdateKernel.Update();
             *  RenderKernel.Draw();
             *  window.SwapBuffers();
             *  UpdateKernel.FrameRateLimit();
             *  Application.DoEvents();
             * }
             * /*/
        }
Ejemplo n.º 12
0
 /// <inheritdoc/>
 public void BeginStoryboard(AnimationBase animation, StoryboardInstance storyboardInstance)
 {
     Animate(animation, storyboardInstance.StoryboardClock);
     this.storyboardInstance = storyboardInstance;
 }
 public void LoadStoryboardInstance(StoryboardInstance instance)
 {
     UpdateKernel.LoadStoryboardInstance(instance);
     RenderKernel.LoadStoryboardInstance(instance);
 }
Ejemplo n.º 14
0
 public static void ApplyInstance(StoryboardInstance instance)
 {
     ActivityInstance = instance;
 }
Ejemplo n.º 15
0
        public JumpToWindow(StoryboardInstance instance)
        {
            InitializeComponent();

            this.instance = instance;
        }
Ejemplo n.º 16
0
        public ControllerWindow(StoryboardInstance instance)
        {
            InitializeComponent();

            this.CurrentStoryboardIntance = instance;
        }