/// <summary>Renders a background</summary> /// <param name="Data">The background to render</param> /// <param name="Alpha">The alpha level</param> /// <param name="Scale">The scale</param> public void Render(BackgroundHandle Data, float Alpha, float Scale) { DynamicBackground dynamicBackground = Data as DynamicBackground; StaticBackground staticBackground = Data as StaticBackground; BackgroundObject backgroundObject = Data as BackgroundObject; if (dynamicBackground != null) { RenderDynamicBackground(dynamicBackground, Alpha, Scale); } if (staticBackground != null) { if (renderer.currentOptions.IsUseNewRenderer) { RenderStaticBackground(staticBackground, Alpha, Scale); } else { RenderStaticBackgroundImmediate(staticBackground, Alpha, Scale); } } if (backgroundObject != null) { RenderBackgroundObject(backgroundObject); } }
private void ApplyDynamicBackground([CanBeNull] string filename, double opacity = 0.5) { ActionExtension.InvokeInMainThreadAsync(() => { try { if (filename == null) { DisposeHelper.Dispose(ref _dynamicBackground); if (FancyBackgroundManager.Instance.Enabled) { FancyBackgroundManager.Instance.Recreate(this); } else { ClearValue(BackgroundContentProperty); } } else { var animatedBackground = Regex.IsMatch(filename, @"\.(?:avi|flv|gif|m(?:4[pv]|kv|ov|p[4g])|og[vg]|qt|webm|wmv)$", RegexOptions.IgnoreCase) ? filename : null; var staticBackground = animatedBackground == null ? filename : Regex.Replace(filename, @"\.\w+$", @".jpg"); _dynamicBackground?.Dispose(); BackgroundContent = _dynamicBackground = new DynamicBackground { Animated = animatedBackground, Static = staticBackground, Opacity = opacity }; } } catch (Exception e) { Logging.Error(e); } }); }
/// <summary>Renders a dynamic frustrum based background</summary> /// <param name="data">The background to render</param> /// <param name="alpha">The alpha level</param> /// <param name="scale">The scale</param> private void RenderDynamicBackground(DynamicBackground data, float alpha, float scale) { if (renderer.currentOptions.IsUseNewRenderer) { RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], alpha, scale); } else { RenderStaticBackgroundImmediate(data.StaticBackgrounds[data.CurrentBackgroundIndex], alpha, scale); } }
/// <summary>Renders a dynamic frustrum based background</summary> /// <param name="data">The background to render</param> /// <param name="scale">The scale</param> private void RenderDynamicBackground(DynamicBackground data, float scale) { if (data.PreviousBackgroundIndex == data.CurrentBackgroundIndex) { if (renderer.currentOptions.IsUseNewRenderer) { RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], 1.0f, scale); } else { RenderStaticBackgroundImmediate(data.StaticBackgrounds[data.CurrentBackgroundIndex], 1.0f, scale); } return; } switch (data.StaticBackgrounds[data.CurrentBackgroundIndex].Mode) { case BackgroundTransitionMode.FadeIn: if (renderer.currentOptions.IsUseNewRenderer) { RenderStaticBackground(data.StaticBackgrounds[data.PreviousBackgroundIndex], 1.0f, scale); RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], data.CurrentAlpha, scale); } else { RenderStaticBackgroundImmediate(data.StaticBackgrounds[data.PreviousBackgroundIndex], 1.0f, scale); RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], data.CurrentAlpha, scale); } break; case BackgroundTransitionMode.FadeOut: if (renderer.currentOptions.IsUseNewRenderer) { RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], 1.0f, scale); RenderStaticBackground(data.StaticBackgrounds[data.PreviousBackgroundIndex], data.CurrentAlpha, scale); } else { RenderStaticBackgroundImmediate(data.StaticBackgrounds[data.CurrentBackgroundIndex], 1.0f, scale); RenderStaticBackgroundImmediate(data.StaticBackgrounds[data.PreviousBackgroundIndex], data.CurrentAlpha, scale); } break; } }
/// <summary>Renders a dynamic frustrum based background</summary> /// <param name="data">The background to render</param> /// <param name="scale">The scale</param> private void RenderDynamicBackground(DynamicBackground data, float scale) { if (data.PreviousBackgroundIndex == data.CurrentBackgroundIndex) { RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], 1.0f, scale); return; } switch (data.StaticBackgrounds[data.CurrentBackgroundIndex].Mode) { case BackgroundTransitionMode.FadeIn: RenderStaticBackground(data.StaticBackgrounds[data.PreviousBackgroundIndex], 1.0f, scale); RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], data.CurrentAlpha, scale); break; case BackgroundTransitionMode.FadeOut: RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], 1.0f, scale); RenderStaticBackground(data.StaticBackgrounds[data.PreviousBackgroundIndex], data.CurrentAlpha, scale); break; } }
/// <summary>Renders a background</summary> /// <param name="Data">The background to render</param> /// <param name="Alpha">The alpha level</param> /// <param name="Scale">The scale</param> public void Render(BackgroundHandle Data, float Alpha, float Scale) { DynamicBackground dynamicBackground = Data as DynamicBackground; StaticBackground staticBackground = Data as StaticBackground; BackgroundObject backgroundObject = Data as BackgroundObject; if (dynamicBackground != null) { RenderDynamicBackground(dynamicBackground, Alpha, Scale); } if (staticBackground != null) { RenderStaticBackground(staticBackground, Alpha, Scale); } if (backgroundObject != null) { RenderBackgroundObject(backgroundObject); } }
/// <summary>Renders a dynamic frustrum based background</summary> /// <param name="data">The background to render</param> /// <param name="alpha">The alpha level</param> /// <param name="scale">The scale</param> private void RenderDynamicBackground(DynamicBackground data, float alpha, float scale) { RenderStaticBackground(data.StaticBackgrounds[data.CurrentBackgroundIndex], alpha, scale); }