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
EngineExtensions.cs
1using Avalonia.Controls;
8using Microsoft.Extensions.Logging;
9
10namespace Gondwana.Avalonia;
11
15public static class EngineExtensions
16{
26 public static void InitializeAvaloniaKeyboardAdapter(this Engine engine, Control control)
27 {
28 Engine.Logger.LogInformation("Initializing AvaloniaKeyboardAdapter...");
29
30 if (control == null)
31 {
32 Engine.Logger.LogError("AvaloniaKeyboardAdapter initialization failed: Control cannot be null.");
33 throw new ArgumentNullException(nameof(control));
34 }
35
36 KeyboardEventPoller.Initialize(new AvaloniaKeyboardAdapter(control));
37 }
38
46 public static void InitializeAvaloniaMouseAdapter(this Engine engine, Control control, MouseEventConfiguration? mouseEventConfiguration = null)
47 {
48 Engine.Logger.LogInformation("Initializing AvaloniaMouseAdapter...");
49
50 if (control == null)
51 {
52 Engine.Logger.LogError("AvaloniaMouseAdapter initialization failed: Control cannot be null.");
53 throw new ArgumentNullException(nameof(control));
54 }
55
56 MouseEventPoller.Initialize(new AvaloniaMouseAdapter(control), mouseEventConfiguration);
57 }
58
81 public static void InitializeAvaloniaTouchAdapter(
82 this Engine engine,
83 Control control,
84 bool emulateMouse = false)
85 {
86 Engine.Logger.LogInformation("Initializing AvaloniaTouchInputAdapter...");
87
88 if (control == null)
89 {
90 Engine.Logger.LogError("AvaloniaTouchInputAdapter initialization failed: Control cannot be null.");
91 throw new ArgumentNullException(nameof(control));
92 }
93
94 engine.Input.TouchAdapter = new AvaloniaTouchInputAdapter(control, emulateMouse);
95 }
96}