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
EffectTargetAccess.cs
1using System.Drawing;
4
5namespace Gondwana.Effects;
6
7internal static class EffectTargetAccess
8{
9 internal static float GetOpacity(object target) => target switch
10 {
11 View view => view.EffectOpacity,
12 SceneLayer layer => layer.EffectOpacity,
13 _ => throw Unsupported(target)
14 };
15
16 internal static void SetOpacity(object target, float value)
17 {
18 value = Math.Clamp(value, 0f, 1f);
19
20 switch (target)
21 {
22 case View view:
23 view.EffectOpacity = value;
24 break;
25 case SceneLayer layer:
26 layer.EffectOpacity = value;
27 break;
28 default:
29 throw Unsupported(target);
30 }
31 }
32
33 internal static float GetReveal(object target) => target switch
34 {
35 View view => view.EffectReveal,
36 SceneLayer layer => layer.EffectReveal,
37 _ => throw Unsupported(target)
38 };
39
40 internal static EffectDirection GetRevealDirection(object target) => target switch
41 {
42 View view => view.EffectRevealDirection,
43 SceneLayer layer => layer.EffectRevealDirection,
44 _ => throw Unsupported(target)
45 };
46
47 internal static void SetReveal(
48 object target,
49 float value,
50 EffectDirection direction)
51 {
52 value = Math.Clamp(value, 0f, 1f);
53
54 switch (target)
55 {
56 case View view:
57 view.EffectReveal = value;
58 view.EffectRevealDirection = direction;
59 break;
60 case SceneLayer layer:
61 layer.EffectReveal = value;
62 layer.EffectRevealDirection = direction;
63 break;
64 default:
65 throw Unsupported(target);
66 }
67 }
68
69 internal static PointF GetOffsetFactor(object target) => target switch
70 {
71 View view => view.EffectOffsetFactor,
72 SceneLayer layer => layer.EffectOffsetFactor,
73 _ => throw Unsupported(target)
74 };
75
76 internal static PointF GetOffsetPixels(object target) => target switch
77 {
78 View view => view.EffectOffsetPx,
79 SceneLayer layer => layer.EffectOffsetPx,
80 _ => throw Unsupported(target)
81 };
82
83 internal static void SetTransform(
84 object target,
85 PointF factor,
86 PointF pixels)
87 {
88 switch (target)
89 {
90 case View view:
91 view.EffectOffsetFactor = factor;
92 view.EffectOffsetPx = pixels;
93 break;
94 case SceneLayer layer:
95 layer.EffectOffsetFactor = factor;
96 layer.EffectOffsetPx = pixels;
97 break;
98 default:
99 throw Unsupported(target);
100 }
101 }
102
103 private static ArgumentException Unsupported(object target) =>
104 new($"Unsupported effect target type: {target.GetType().FullName}.", nameof(target));
105}
@ SceneLayer
Performs direct drawing within a scene layer using world-space coordinates.
EffectDirection
Specifies the direction in which a directional display effect travels.
@ View
Displays camera position, viewport zoom, and viewport dimensions.