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(); } ); }
/// <inheritdoc/> public void BeginStoryboard(AnimationBase animation, StoryboardInstance storyboardInstance) { Animate(animation, storyboardInstance.StoryboardClock); var animState = GetAnimationState(); animState.StoryboardInstance = storyboardInstance; }
/// <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; }
/// <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(); }
/// <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; }
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; } }
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(); }
public static void LoadStoryboardInstance(StoryboardInstance instance) { Instance = instance; _timestamp = 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(); * } * /*/ }
/// <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); }
public static void ApplyInstance(StoryboardInstance instance) { ActivityInstance = instance; }
public JumpToWindow(StoryboardInstance instance) { InitializeComponent(); this.instance = instance; }
public ControllerWindow(StoryboardInstance instance) { InitializeComponent(); this.CurrentStoryboardIntance = instance; }