Gondwana Game Engine Development (master) - 2.6.1
Gondwana is a cross-platform 2.5D game and rendering engine written in C#/.NET 8. It provides fine-grained control over rendering, timing, and scene composition, with built-in support for parallax, z-ordering, pixel overhang, collision detection, and particle effects. Gondwana targets desktop and web platforms using SkiaSharp for graphics and pluggable audio backends for desktop and browser targets.
Loading...
Searching...
No Matches
FadeEffects.cs
4
5namespace Gondwana.Effects;
6
8public abstract class FadeEffect : DisplayEffect
9{
10 private readonly float _targetOpacity;
11 private readonly bool _startTransparentWhenOpaque;
12 private float _originalOpacity;
13 private float _startOpacity;
14
22 private protected FadeEffect(
23 float targetOpacity,
24 float durationSeconds,
25 EasingKind easing,
26 bool startTransparentWhenOpaque)
27 : base(durationSeconds, easing)
28 {
29 _targetOpacity = Math.Clamp(targetOpacity, 0f, 1f);
30 _startTransparentWhenOpaque = startTransparentWhenOpaque;
31 }
32
33 internal override EffectChannel Channel => EffectChannel.Opacity;
34
35 internal override bool SupportsTarget(object target) =>
36 target is View or SceneLayer;
37
39 private protected override void OnStarting()
40 {
41 _originalOpacity = EffectTargetAccess.GetOpacity(Target);
42 _startOpacity = _startTransparentWhenOpaque && _originalOpacity >= 0.9999f
43 ? 0f
44 : _originalOpacity;
45
46 EffectTargetAccess.SetOpacity(Target, _startOpacity);
47 }
48
50 private protected override void ApplyProgress(float progress) =>
51 EffectTargetAccess.SetOpacity(
52 Target,
53 _startOpacity + (_targetOpacity - _startOpacity) * progress);
54
56 private protected override void RestoreOriginalState() =>
57 EffectTargetAccess.SetOpacity(Target, _originalOpacity);
58}
59
61public sealed class FadeInEffect : FadeEffect
62{
67 float durationSeconds,
68 EasingKind easing = EasingKind.Linear)
69 : base(1f, durationSeconds, easing, startTransparentWhenOpaque: true)
70 {
71 }
72}
73
75public sealed class FadeOutEffect : FadeEffect
76{
81 float durationSeconds,
82 EasingKind easing = EasingKind.Linear)
83 : base(0f, durationSeconds, easing, startTransparentWhenOpaque: false)
84 {
85 }
86}
DisplayEffect(float durationSeconds, EasingKind easing=EasingKind.Linear)
Initializes a new instance of the DisplayEffect class.
override void OnStarting()
Captures or prepares target state before the effect starts.
override void ApplyProgress(float progress)
FadeEffect(float targetOpacity, float durationSeconds, EasingKind easing, bool startTransparentWhenOpaque)
Initializes a new instance of the FadeEffect class.
override void RestoreOriginalState()
FadeInEffect(float durationSeconds, EasingKind easing=EasingKind.Linear)
Creates a fade-in effect.
FadeOutEffect(float durationSeconds, EasingKind easing=EasingKind.Linear)
Creates a fade-out effect.
Represents a rendered view of a scene, combining a camera position with a viewport configuration to c...
Definition View.cs:14
Represents a single layer within a Scene, containing a grid of tiles and supporting various coordinat...
Definition SceneLayer.cs:40
EasingKind
Enumeration of all supported easing functions for animation and movement interpolation....
Definition EasingKind.cs:9