Add and implement interfaces for systems (ISystem, IUpdatableSystem, etc.), move Color to Utils, rename Handlers/Renderers/Backends to System, move input related classes to an Input subfolder.
This commit is contained in:
@@ -5,7 +5,7 @@ namespace Voile;
|
|||||||
|
|
||||||
public class Circle2d : Drawable2d
|
public class Circle2d : Drawable2d
|
||||||
{
|
{
|
||||||
public override void OnDraw(Renderer renderer)
|
public override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
renderer.DrawCircle(32f, Color.AliceBlue);
|
renderer.DrawCircle(32f, Color.AliceBlue);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ public class TestGame : Game
|
|||||||
{
|
{
|
||||||
InitializeDefault();
|
InitializeDefault();
|
||||||
|
|
||||||
_audioBackend = new FmodAudioBackend();
|
_audioSystem = new FmodAudioSystem();
|
||||||
_audioBackend.Initialize();
|
_audioSystem.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadResources()
|
protected override void LoadResources()
|
||||||
@@ -39,7 +39,7 @@ public class TestGame : Game
|
|||||||
_scene = new Scene(new SceneSettings()
|
_scene = new Scene(new SceneSettings()
|
||||||
{
|
{
|
||||||
Renderer = Renderer,
|
Renderer = Renderer,
|
||||||
AudioBackend = _audioBackend!,
|
AudioBackend = _audioSystem!,
|
||||||
InputHandler = Input,
|
InputHandler = Input,
|
||||||
ResourceManager = ResourceManager
|
ResourceManager = ResourceManager
|
||||||
});
|
});
|
||||||
@@ -47,7 +47,7 @@ public class TestGame : Game
|
|||||||
_uiLayer = new UiLayer();
|
_uiLayer = new UiLayer();
|
||||||
_worldLayer = new EntityLayer();
|
_worldLayer = new EntityLayer();
|
||||||
|
|
||||||
_testSoundInstance = _audioBackend!.CreateInstance(_testSound!);
|
_testSoundInstance = _audioSystem!.CreateInstance(_testSound!);
|
||||||
|
|
||||||
Input.AddInputMapping("play", new InputAction[] { new KeyInputAction(KeyboardKey.Spacebar) });
|
Input.AddInputMapping("play", new InputAction[] { new KeyInputAction(KeyboardKey.Spacebar) });
|
||||||
Input.AddInputMapping("sprint", new InputAction[] { new KeyInputAction(KeyboardKey.LeftShift) });
|
Input.AddInputMapping("sprint", new InputAction[] { new KeyInputAction(KeyboardKey.LeftShift) });
|
||||||
@@ -82,13 +82,13 @@ public class TestGame : Game
|
|||||||
public override void Shutdown()
|
public override void Shutdown()
|
||||||
{
|
{
|
||||||
ShutdownDefault();
|
ShutdownDefault();
|
||||||
_audioBackend!.Dispose();
|
_audioSystem!.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Sound? _testSound;
|
private Sound? _testSound;
|
||||||
private SoundInstance? _testSoundInstance;
|
private SoundInstance? _testSoundInstance;
|
||||||
private Font? _font;
|
private Font? _font;
|
||||||
private FmodAudioBackend? _audioBackend;
|
private FmodAudioSystem? _audioSystem;
|
||||||
private Scene? _scene;
|
private Scene? _scene;
|
||||||
|
|
||||||
private UiLayer? _uiLayer;
|
private UiLayer? _uiLayer;
|
||||||
|
|||||||
@@ -22,17 +22,17 @@ public class UiLayer : Layer
|
|||||||
_screenContainer.UpdateRect(Vector2.Zero, Scene.Renderer.WindowSize);
|
_screenContainer.UpdateRect(Vector2.Zero, Scene.Renderer.WindowSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnBeginDraw(Renderer renderer)
|
protected override void OnBeginDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnDraw(Renderer renderer)
|
protected override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
_screenContainer.Render(renderer);
|
_screenContainer.Render(renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnEndDraw(Renderer renderer)
|
protected override void OnEndDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class World : Drawable2d
|
|||||||
_randomPositions[i] = MathUtils.RandomVector2(Position, Vector2.One * 2048f);
|
_randomPositions[i] = MathUtils.RandomVector2(Position, Vector2.One * 2048f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override void OnDraw(Renderer renderer)
|
public override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _rectangleAmount; i++)
|
for (int i = 0; i < _rectangleAmount; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
namespace Voile.Audio
|
namespace Voile.Audio
|
||||||
{
|
{
|
||||||
public class DummyAudioBackend : AudioBackend
|
/// <summary>
|
||||||
|
/// Dummy audio system.
|
||||||
|
/// </summary>
|
||||||
|
public class DummyAudioSystem : AudioSystem
|
||||||
{
|
{
|
||||||
public override void AddBusEffect<T>(T effect, string bus = "Master")
|
public override void AddBusEffect<T>(T effect, string bus = "Master")
|
||||||
{
|
{
|
||||||
@@ -17,7 +20,7 @@ namespace Voile.Audio
|
|||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Initialize()
|
protected override void Initialize()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -32,7 +35,7 @@ namespace Voile.Audio
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -4,9 +4,9 @@ using Voile.Utils;
|
|||||||
|
|
||||||
namespace Voile.Audio
|
namespace Voile.Audio
|
||||||
{
|
{
|
||||||
public class FmodAudioBackend : AudioBackend
|
public class FmodAudioSystem : AudioSystem
|
||||||
{
|
{
|
||||||
public override void Initialize()
|
protected override void Initialize()
|
||||||
{
|
{
|
||||||
CreateSystem();
|
CreateSystem();
|
||||||
_loadedSounds = new Dictionary<string, FMOD.Sound>();
|
_loadedSounds = new Dictionary<string, FMOD.Sound>();
|
||||||
@@ -14,7 +14,7 @@ namespace Voile.Audio
|
|||||||
|
|
||||||
CreateBus("Master");
|
CreateBus("Master");
|
||||||
}
|
}
|
||||||
public override void Update() => _system.update();
|
protected override void Update() => _system.update();
|
||||||
|
|
||||||
public override void PlaySound(Sound sound, float pitch, float volume, string bus = "Master")
|
public override void PlaySound(Sound sound, float pitch, float volume, string bus = "Master")
|
||||||
{
|
{
|
||||||
@@ -134,7 +134,7 @@ namespace Voile.Audio
|
|||||||
return _channelGroups[busName];
|
return _channelGroups[busName];
|
||||||
}
|
}
|
||||||
|
|
||||||
private Logger _logger = new(nameof(FmodAudioBackend));
|
private Logger _logger = new(nameof(FmodAudioSystem));
|
||||||
private FMOD.System _system;
|
private FMOD.System _system;
|
||||||
|
|
||||||
// TODO: use a different key for the dictionary, paths are not good :( (waste of memory lol)
|
// TODO: use a different key for the dictionary, paths are not good :( (waste of memory lol)
|
||||||
@@ -3,7 +3,7 @@ namespace Voile.Audio
|
|||||||
public class SoundInstance
|
public class SoundInstance
|
||||||
{
|
{
|
||||||
protected virtual Sound Sound => _sound;
|
protected virtual Sound Sound => _sound;
|
||||||
public SoundInstance(AudioBackend backend, Sound sound)
|
public SoundInstance(AudioSystem backend, Sound sound)
|
||||||
{
|
{
|
||||||
_backend = backend;
|
_backend = backend;
|
||||||
_sound = sound;
|
_sound = sound;
|
||||||
@@ -34,7 +34,7 @@ namespace Voile.Audio
|
|||||||
_backend.PlaySound(Sound, _pitch, _volume, _bus);
|
_backend.PlaySound(Sound, _pitch, _volume, _bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly AudioBackend _backend;
|
private readonly AudioSystem _backend;
|
||||||
private readonly Sound _sound;
|
private readonly Sound _sound;
|
||||||
private string _bus = "Master";
|
private string _bus = "Master";
|
||||||
private float _pitch, _volume = 1.0f;
|
private float _pitch, _volume = 1.0f;
|
||||||
|
|||||||
@@ -10,14 +10,14 @@ namespace Voile
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected ResourceManager ResourceManager { get; private set; }
|
protected ResourceManager ResourceManager { get; private set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The InputHandler associated with this game. Uses <see cref="RaylibInputHandler"/> by default.
|
/// The InputHandler associated with this game. Uses <see cref="RaylibInputSystem"/> by default.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected InputHandler Input { get; private set; }
|
protected InputSystem Input { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The Renderer associated with this game. Uses <see cref="RaylibRenderer"/> by default.
|
/// The Renderer associated with this game. Uses <see cref="RaylibRenderSystem"/> by default.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected Renderer Renderer { get; private set; }
|
protected RenderSystem Renderer { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resource root path for this game.
|
/// Resource root path for this game.
|
||||||
@@ -37,8 +37,8 @@ namespace Voile
|
|||||||
public Game()
|
public Game()
|
||||||
{
|
{
|
||||||
ResourceManager = new ResourceManager();
|
ResourceManager = new ResourceManager();
|
||||||
Input = new RaylibInputHandler();
|
Input = new RaylibInputSystem();
|
||||||
Renderer = new RaylibRenderer();
|
Renderer = new RaylibRenderSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -61,8 +61,10 @@ namespace Voile
|
|||||||
{
|
{
|
||||||
ResourceManager.ResourceRoot = ResourceRoot;
|
ResourceManager.ResourceRoot = ResourceRoot;
|
||||||
|
|
||||||
Input = new RaylibInputHandler();
|
Input = new RaylibInputSystem();
|
||||||
Renderer = new RaylibRenderer();
|
Renderer = new RaylibRenderSystem();
|
||||||
|
|
||||||
|
Input.Start();
|
||||||
|
|
||||||
InitializeRenderer();
|
InitializeRenderer();
|
||||||
}
|
}
|
||||||
@@ -103,7 +105,7 @@ namespace Voile
|
|||||||
if (!string.IsNullOrWhiteSpace(Name))
|
if (!string.IsNullOrWhiteSpace(Name))
|
||||||
windowSettings.Title = Name;
|
windowSettings.Title = Name;
|
||||||
|
|
||||||
Renderer.CreateAndInitialize(windowSettings, RendererSettings.Default);
|
Renderer.Start(RendererSettings.Default);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,9 @@ namespace Voile
|
|||||||
{
|
{
|
||||||
public abstract class InputAction
|
public abstract class InputAction
|
||||||
{
|
{
|
||||||
public abstract bool IsDown(InputHandler inputHandler);
|
public abstract bool IsDown(InputSystem inputHandler);
|
||||||
public abstract bool IsPressed(InputHandler inputHandler);
|
public abstract bool IsPressed(InputSystem inputHandler);
|
||||||
public abstract bool IsReleased(InputHandler inputHandler);
|
public abstract bool IsReleased(InputSystem inputHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class KeyInputAction : InputAction
|
public class KeyInputAction : InputAction
|
||||||
@@ -15,17 +15,17 @@ namespace Voile
|
|||||||
{
|
{
|
||||||
_keyboardKey = keyboardKey;
|
_keyboardKey = keyboardKey;
|
||||||
}
|
}
|
||||||
public override bool IsDown(InputHandler inputHandler)
|
public override bool IsDown(InputSystem inputHandler)
|
||||||
{
|
{
|
||||||
return inputHandler.IsKeyboardKeyDown(_keyboardKey);
|
return inputHandler.IsKeyboardKeyDown(_keyboardKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool IsPressed(InputHandler inputHandler)
|
public override bool IsPressed(InputSystem inputHandler)
|
||||||
{
|
{
|
||||||
return inputHandler.KeyboardKeyJustPressed(_keyboardKey);
|
return inputHandler.KeyboardKeyJustPressed(_keyboardKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool IsReleased(InputHandler inputHandler)
|
public override bool IsReleased(InputSystem inputHandler)
|
||||||
{
|
{
|
||||||
return inputHandler.KeyboardKeyJustReleased(_keyboardKey);
|
return inputHandler.KeyboardKeyJustReleased(_keyboardKey);
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,10 @@ using Raylib_cs;
|
|||||||
|
|
||||||
namespace Voile
|
namespace Voile
|
||||||
{
|
{
|
||||||
public class RaylibInputHandler : InputHandler
|
/// <summary>
|
||||||
|
/// An input system implemented using Raylib's API. Used by default together with <see cref="RaylibRenderer"/>.
|
||||||
|
/// </summary>
|
||||||
|
public class RaylibInputSystem : InputSystem
|
||||||
{
|
{
|
||||||
public override int GetCharPressed()
|
public override int GetCharPressed()
|
||||||
{
|
{
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Raylib_cs;
|
using Raylib_cs;
|
||||||
|
|
||||||
namespace Voile.Rendering
|
namespace Voile.Rendering
|
||||||
{
|
{
|
||||||
public class RaylibRenderer : Renderer
|
public class RaylibRenderSystem : RenderSystem
|
||||||
{
|
{
|
||||||
public override bool ShouldRun => !WindowShouldClose();
|
public override bool ShouldRun => !WindowShouldClose();
|
||||||
public override Vector2 WindowSize
|
public override Vector2 WindowSize
|
||||||
@@ -33,6 +32,31 @@ namespace Voile.Rendering
|
|||||||
public override bool VSync { get => _vsync; set => SetWindowVSync(value); }
|
public override bool VSync { get => _vsync; set => SetWindowVSync(value); }
|
||||||
public override bool Fullscreen { get => _fullscreen; set => SetFullscreen(value); }
|
public override bool Fullscreen { get => _fullscreen; set => SetFullscreen(value); }
|
||||||
|
|
||||||
|
public override void Initialize(RendererSettings settings)
|
||||||
|
{
|
||||||
|
_targetFps = settings.TargetFps;
|
||||||
|
|
||||||
|
ConfigFlags flags = 0;
|
||||||
|
|
||||||
|
// MSAA
|
||||||
|
flags |= settings.Msaa == Msaa.Msaa4x ? ConfigFlags.FLAG_MSAA_4X_HINT : 0;
|
||||||
|
|
||||||
|
// VSync
|
||||||
|
flags |= settings.UseVSync ? ConfigFlags.FLAG_VSYNC_HINT : 0;
|
||||||
|
|
||||||
|
_fullscreen = settings.Fullscreen;
|
||||||
|
|
||||||
|
_defaultFlags = flags;
|
||||||
|
|
||||||
|
Raylib.SetConfigFlags(flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void CreateAndInitializeWithWindow(RendererSettings settings)
|
||||||
|
{
|
||||||
|
Initialize(settings);
|
||||||
|
CreateWindow(settings.WindowSettings);
|
||||||
|
}
|
||||||
|
|
||||||
public override void CreateWindow(WindowSettings windowSettings)
|
public override void CreateWindow(WindowSettings windowSettings)
|
||||||
{
|
{
|
||||||
Raylib.SetTraceLogLevel(TraceLogLevel.LOG_NONE);
|
Raylib.SetTraceLogLevel(TraceLogLevel.LOG_NONE);
|
||||||
@@ -154,25 +178,6 @@ namespace Voile.Rendering
|
|||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Initialize(RendererSettings settings)
|
|
||||||
{
|
|
||||||
_targetFps = settings.TargetFps;
|
|
||||||
|
|
||||||
ConfigFlags flags = 0;
|
|
||||||
|
|
||||||
// MSAA
|
|
||||||
flags |= settings.Msaa == Msaa.Msaa4x ? ConfigFlags.FLAG_MSAA_4X_HINT : 0;
|
|
||||||
|
|
||||||
// VSync
|
|
||||||
flags |= settings.UseVSync ? ConfigFlags.FLAG_VSYNC_HINT : 0;
|
|
||||||
|
|
||||||
_fullscreen = settings.Fullscreen;
|
|
||||||
|
|
||||||
_defaultFlags = flags;
|
|
||||||
|
|
||||||
Raylib.SetConfigFlags(flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetFullscreen(bool fullscreen)
|
private void SetFullscreen(bool fullscreen)
|
||||||
{
|
{
|
||||||
// var flags = _defaultFlags;
|
// var flags = _defaultFlags;
|
||||||
@@ -193,12 +198,6 @@ namespace Voile.Rendering
|
|||||||
// TODO
|
// TODO
|
||||||
public override void SetTransform(Matrix4x4 transform) { }
|
public override void SetTransform(Matrix4x4 transform) { }
|
||||||
|
|
||||||
public override void CreateAndInitialize(WindowSettings windowSettings, RendererSettings renderSettings)
|
|
||||||
{
|
|
||||||
Initialize(renderSettings);
|
|
||||||
CreateWindow(windowSettings);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Raylib_cs.Color VoileColorToRaylibColor(Color color)
|
private Raylib_cs.Color VoileColorToRaylibColor(Color color)
|
||||||
{
|
{
|
||||||
return new Raylib_cs.Color { r = (byte)Math.Round(color.R * 255f), g = (byte)Math.Round(color.G * 255f), b = (byte)Math.Round(color.B * 255f), a = (byte)Math.Round(color.A * 255f) };
|
return new Raylib_cs.Color { r = (byte)Math.Round(color.R * 255f), g = (byte)Math.Round(color.G * 255f), b = (byte)Math.Round(color.B * 255f), a = (byte)Math.Round(color.A * 255f) };
|
||||||
@@ -284,7 +283,6 @@ namespace Voile.Rendering
|
|||||||
texture.Handle = _texturePool.Count - 1;
|
texture.Handle = _texturePool.Count - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<Texture2D> _texturePool = new();
|
private List<Texture2D> _texturePool = new();
|
||||||
private List<Raylib_cs.Font> _fontPool = new();
|
private List<Raylib_cs.Font> _fontPool = new();
|
||||||
private Vector2 _windowSize;
|
private Vector2 _windowSize;
|
||||||
@@ -12,7 +12,7 @@ namespace Voile.Rendering
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A standard, WebGPU-based renderer.
|
/// A standard, WebGPU-based renderer.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class StandardRenderer : Renderer
|
public class StandardRenderSystem : RenderSystem
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override Vector2 WindowSize { get; set; }
|
public override Vector2 WindowSize { get; set; }
|
||||||
@@ -43,10 +43,10 @@ namespace Voile.Rendering
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override void CreateAndInitialize(WindowSettings windowSettings, RendererSettings renderSettings)
|
public override void CreateAndInitializeWithWindow(RendererSettings settings)
|
||||||
{
|
{
|
||||||
CreateWindow(windowSettings);
|
CreateWindow(settings.WindowSettings);
|
||||||
Initialize(renderSettings);
|
Initialize(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CreateWindow(WindowSettings windowSettings)
|
public override void CreateWindow(WindowSettings windowSettings)
|
||||||
@@ -369,6 +369,6 @@ namespace Voile.Rendering
|
|||||||
private unsafe CommandEncoder* _commandEncoder;
|
private unsafe CommandEncoder* _commandEncoder;
|
||||||
private unsafe RenderPassEncoder* _renderPassEncoder;
|
private unsafe RenderPassEncoder* _renderPassEncoder;
|
||||||
|
|
||||||
private Logger _logger = new(nameof(StandardRenderer));
|
private Logger _logger = new(nameof(StandardRenderSystem));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ namespace Voile.SceneGraph
|
|||||||
public float Radius { get => _radius; set => _radius = value; }
|
public float Radius { get => _radius; set => _radius = value; }
|
||||||
public Color Color { get => _color; set => _color = value; }
|
public Color Color { get => _color; set => _color = value; }
|
||||||
|
|
||||||
public override void OnDraw(Renderer renderer)
|
public override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
renderer.DrawCircle(_radius, _color);
|
renderer.DrawCircle(_radius, _color);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ namespace Voile.SceneGraph
|
|||||||
public abstract class Drawable2d : Entity2d, IDrawable
|
public abstract class Drawable2d : Entity2d, IDrawable
|
||||||
{
|
{
|
||||||
public Vector2 PivotOffset { get; set; }
|
public Vector2 PivotOffset { get; set; }
|
||||||
public void Draw(Renderer renderer)
|
public void Draw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
renderer.SetTransform(Position, PivotOffset, Rotation);
|
renderer.SetTransform(Position, PivotOffset, Rotation);
|
||||||
OnDraw(renderer);
|
OnDraw(renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void OnDraw(Renderer renderer);
|
public abstract void OnDraw(RenderSystem renderer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,19 +7,19 @@ namespace Voile.SceneGraph
|
|||||||
public class Entity
|
public class Entity
|
||||||
{
|
{
|
||||||
[JsonIgnore] public EntityLayer? Layer { get; set; }
|
[JsonIgnore] public EntityLayer? Layer { get; set; }
|
||||||
[JsonIgnore] public InputHandler Input => Layer!.Scene.Input;
|
[JsonIgnore] public InputSystem Input => Layer!.Scene.Input;
|
||||||
[JsonIgnore] public AudioBackend Audio => Layer!.Scene.Audio;
|
[JsonIgnore] public AudioSystem Audio => Layer!.Scene.Audio;
|
||||||
[JsonIgnore] public Renderer Renderer => Layer!.Scene.Renderer;
|
[JsonIgnore] public RenderSystem Renderer => Layer!.Scene.Renderer;
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
public void Start() => OnStart();
|
public void Start() => OnStart();
|
||||||
public void Update(double dt) => OnUpdate(dt);
|
public void Update(double dt) => OnUpdate(dt);
|
||||||
public void ReceiveInput(InputHandler input) => OnInput(input);
|
public void ReceiveInput(InputSystem input) => OnInput(input);
|
||||||
|
|
||||||
protected virtual void OnStart() { }
|
protected virtual void OnStart() { }
|
||||||
protected virtual void OnDestroy() { }
|
protected virtual void OnDestroy() { }
|
||||||
protected virtual void OnUpdate(double dt) { }
|
protected virtual void OnUpdate(double dt) { }
|
||||||
protected virtual void OnInput(InputHandler input) { }
|
protected virtual void OnInput(InputSystem input) { }
|
||||||
|
|
||||||
public void Destroy()
|
public void Destroy()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ namespace Voile.SceneGraph
|
|||||||
{
|
{
|
||||||
public interface IDrawable
|
public interface IDrawable
|
||||||
{
|
{
|
||||||
public void Draw(Renderer renderer);
|
public void Draw(RenderSystem renderer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ namespace Voile.SceneGraph
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnDraw(Renderer renderer)
|
public override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
foreach (var particle in _particles)
|
foreach (var particle in _particles)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ public class RectangleShape2d : Drawable2d
|
|||||||
{
|
{
|
||||||
public Vector2 Size { get; set; } = Vector2.One * 32;
|
public Vector2 Size { get; set; } = Vector2.One * 32;
|
||||||
public Color Color { get; set; } = Color.White;
|
public Color Color { get; set; } = Color.White;
|
||||||
public override void OnDraw(Renderer renderer)
|
public override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
PivotOffset = Size / 2;
|
PivotOffset = Size / 2;
|
||||||
renderer.DrawRectangle(Size, Color);
|
renderer.DrawRectangle(Size, Color);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace Voile.SceneGraph
|
|||||||
var renderer = Layer.Scene.Renderer;
|
var renderer = Layer.Scene.Renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnDraw(Renderer renderer)
|
public override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
renderer.DrawTexture(_texture!, Color.White);
|
renderer.DrawTexture(_texture!, Color.White);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace Voile.SceneGraph
|
|||||||
_font = font;
|
_font = font;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnDraw(Renderer renderer)
|
public override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
if (_font == null)
|
if (_font == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ namespace Voile.SceneGraph
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnBeginDraw(Renderer renderer)
|
protected override void OnBeginDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
if (CurrentCamera is not null)
|
if (CurrentCamera is not null)
|
||||||
{
|
{
|
||||||
@@ -83,7 +83,7 @@ namespace Voile.SceneGraph
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnEndDraw(Renderer renderer)
|
protected override void OnEndDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
if (CurrentCamera is not null)
|
if (CurrentCamera is not null)
|
||||||
{
|
{
|
||||||
@@ -92,7 +92,7 @@ namespace Voile.SceneGraph
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected override void OnDraw(Renderer renderer)
|
protected override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
// TODO: can be done more efficiently, needs rendering redesign.
|
// TODO: can be done more efficiently, needs rendering redesign.
|
||||||
foreach (var entity in Entities)
|
foreach (var entity in Entities)
|
||||||
|
|||||||
@@ -7,22 +7,22 @@ namespace Voile.SceneGraph
|
|||||||
public abstract class Layer : IDrawable
|
public abstract class Layer : IDrawable
|
||||||
{
|
{
|
||||||
[JsonIgnore] public Scene? Scene { get; set; }
|
[JsonIgnore] public Scene? Scene { get; set; }
|
||||||
[JsonIgnore] public InputHandler? Input { get; set; }
|
[JsonIgnore] public InputSystem? Input { get; set; }
|
||||||
[JsonIgnore] public ResourceManager ResourceManager => Scene!.ResourceManager;
|
[JsonIgnore] public ResourceManager ResourceManager => Scene!.ResourceManager;
|
||||||
|
|
||||||
public void BeginDraw(Renderer renderer) => OnBeginDraw(renderer);
|
public void BeginDraw(RenderSystem renderer) => OnBeginDraw(renderer);
|
||||||
public void Draw(Renderer renderer) => OnDraw(renderer);
|
public void Draw(RenderSystem renderer) => OnDraw(renderer);
|
||||||
public void EndDraw(Renderer renderer) => OnEndDraw(renderer);
|
public void EndDraw(RenderSystem renderer) => OnEndDraw(renderer);
|
||||||
|
|
||||||
public void Start() => OnStart();
|
public void Start() => OnStart();
|
||||||
public void Update(double dt) => OnUpdate(dt);
|
public void Update(double dt) => OnUpdate(dt);
|
||||||
public void ReceiveInput(InputHandler input) => OnInput(input);
|
public void ReceiveInput(InputSystem input) => OnInput(input);
|
||||||
|
|
||||||
protected virtual void OnStart() { }
|
protected virtual void OnStart() { }
|
||||||
protected virtual void OnUpdate(double dt) { }
|
protected virtual void OnUpdate(double dt) { }
|
||||||
protected virtual void OnInput(InputHandler input) { }
|
protected virtual void OnInput(InputSystem input) { }
|
||||||
protected abstract void OnBeginDraw(Renderer renderer);
|
protected abstract void OnBeginDraw(RenderSystem renderer);
|
||||||
protected abstract void OnDraw(Renderer renderer);
|
protected abstract void OnDraw(RenderSystem renderer);
|
||||||
protected abstract void OnEndDraw(Renderer renderer);
|
protected abstract void OnEndDraw(RenderSystem renderer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,9 +8,9 @@ namespace Voile.SceneGraph
|
|||||||
{
|
{
|
||||||
public class Scene : IMainLoop
|
public class Scene : IMainLoop
|
||||||
{
|
{
|
||||||
public Renderer Renderer { get => _renderer; set => _renderer = value; }
|
public RenderSystem Renderer { get => _renderer; set => _renderer = value; }
|
||||||
public InputHandler? Input { get => _input; set => _input = value; }
|
public InputSystem? Input { get => _input; set => _input = value; }
|
||||||
public AudioBackend? Audio => _audioBackend;
|
public AudioSystem? Audio => _audioBackend;
|
||||||
public ResourceManager ResourceManager => _resourceManager;
|
public ResourceManager ResourceManager => _resourceManager;
|
||||||
|
|
||||||
public double DeltaTime => _renderer.FrameTime;
|
public double DeltaTime => _renderer.FrameTime;
|
||||||
@@ -75,7 +75,7 @@ namespace Voile.SceneGraph
|
|||||||
layer.Value.Update(DeltaTime);
|
layer.Value.Update(DeltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
Audio?.Update();
|
Audio?.Update(DeltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddLayer(string name, Layer layer)
|
public void AddLayer(string name, Layer layer)
|
||||||
@@ -114,17 +114,17 @@ namespace Voile.SceneGraph
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Dictionary<string, Layer> _layers = new();
|
private Dictionary<string, Layer> _layers = new();
|
||||||
private Renderer _renderer;
|
private RenderSystem _renderer;
|
||||||
private AudioBackend? _audioBackend;
|
private AudioSystem? _audioBackend;
|
||||||
private InputHandler? _input;
|
private InputSystem? _input;
|
||||||
private ResourceManager _resourceManager;
|
private ResourceManager _resourceManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct SceneSettings
|
public struct SceneSettings
|
||||||
{
|
{
|
||||||
public Renderer Renderer { get; set; }
|
public RenderSystem Renderer { get; set; }
|
||||||
public AudioBackend AudioBackend { get; set; }
|
public AudioSystem AudioBackend { get; set; }
|
||||||
public InputHandler InputHandler { get; set; }
|
public InputSystem InputHandler { get; set; }
|
||||||
public ResourceManager ResourceManager { get; set; }
|
public ResourceManager ResourceManager { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,19 @@
|
|||||||
namespace Voile.Audio
|
namespace Voile.Audio
|
||||||
{
|
{
|
||||||
public abstract class AudioBackend : IDisposable
|
public abstract class AudioSystem : IStartableSystem, IUpdatableSystem, IDisposable
|
||||||
{
|
{
|
||||||
public abstract void Initialize();
|
public void Start() => Initialize();
|
||||||
public abstract void Update();
|
|
||||||
|
public void Update(double deltaTime) => Update();
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Shutdown();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void Initialize();
|
||||||
|
protected abstract void Update();
|
||||||
protected abstract void Shutdown();
|
protected abstract void Shutdown();
|
||||||
// BUS
|
// BUS
|
||||||
public abstract void CreateBus(string busName);
|
public abstract void CreateBus(string busName);
|
||||||
@@ -23,11 +33,6 @@ namespace Voile.Audio
|
|||||||
// EFFECTS
|
// EFFECTS
|
||||||
public abstract void AddBusEffect<T>(T effect, string bus = "Master") where T : AudioEffect;
|
public abstract void AddBusEffect<T>(T effect, string bus = "Master") where T : AudioEffect;
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Shutdown();
|
|
||||||
GC.SuppressFinalize(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
private LehmerRandom _random = new LehmerRandom();
|
private LehmerRandom _random = new LehmerRandom();
|
||||||
}
|
}
|
||||||
18
Voile/Source/Systems/ISystem.cs
Normal file
18
Voile/Source/Systems/ISystem.cs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
public interface IStartableSystem
|
||||||
|
{
|
||||||
|
void Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A system that accepts additional data for starting.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
public interface IStartableSystem<T>
|
||||||
|
{
|
||||||
|
void Start(T configuration);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IUpdatableSystem
|
||||||
|
{
|
||||||
|
void Update(double deltaTime);
|
||||||
|
}
|
||||||
@@ -4,16 +4,24 @@ using Voile.Utils;
|
|||||||
|
|
||||||
namespace Voile
|
namespace Voile
|
||||||
{
|
{
|
||||||
public abstract class InputHandler : IDisposable
|
/// <summary>
|
||||||
|
/// A system providing means for collecting user input, as well as defining custom <see cref="InputAction"/> list.
|
||||||
|
/// </summary>
|
||||||
|
public abstract class InputSystem : IStartableSystem, IDisposable
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The list of all available input mappings, custom and built-in.
|
||||||
|
/// </summary>
|
||||||
public static IReadOnlyDictionary<string, List<InputAction>> InputMappings => inputMappings;
|
public static IReadOnlyDictionary<string, List<InputAction>> InputMappings => inputMappings;
|
||||||
|
|
||||||
public InputHandler()
|
public void Start()
|
||||||
{
|
{
|
||||||
inputMappings = new Dictionary<string, List<InputAction>>();
|
inputMappings = new Dictionary<string, List<InputAction>>();
|
||||||
CreateDefaultMappings();
|
CreateDefaultMappings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Shutdown() => Dispose();
|
||||||
|
|
||||||
public void Dispose() => GC.SuppressFinalize(this);
|
public void Dispose() => GC.SuppressFinalize(this);
|
||||||
|
|
||||||
public bool Handled { get => _handled; set => _handled = value; }
|
public bool Handled { get => _handled; set => _handled = value; }
|
||||||
@@ -79,10 +87,9 @@ namespace Voile
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected static Dictionary<string, List<InputAction>> inputMappings = new();
|
protected static Dictionary<string, List<InputAction>> inputMappings = new();
|
||||||
private bool _handled;
|
private bool _handled;
|
||||||
private Logger _logger = new(nameof(InputHandler));
|
private Logger _logger = new(nameof(InputSystem));
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum KeyboardKey
|
public enum KeyboardKey
|
||||||
@@ -198,6 +205,8 @@ namespace Voile
|
|||||||
RightSuper = 347,
|
RightSuper = 347,
|
||||||
KBMenu = 348
|
KBMenu = 348
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
public enum MouseButton
|
public enum MouseButton
|
||||||
{
|
{
|
||||||
Left = 0,
|
Left = 0,
|
||||||
@@ -5,15 +5,26 @@ namespace Voile.Rendering
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// An abstract class representing the graphics renderer.
|
/// An abstract class representing the graphics renderer.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class Renderer : IDisposable
|
public abstract class RenderSystem : IStartableSystem<RendererSettings>, IDisposable
|
||||||
{
|
{
|
||||||
|
public void Start(RendererSettings settings)
|
||||||
|
{
|
||||||
|
CreateAndInitializeWithWindow(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Shutdown();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
// INIT
|
// INIT
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates the renderer window and initializes internal resources.
|
/// Creates the renderer with an OS window and initializes internal resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="windowSettings">Settings for the rendering window.</param>
|
|
||||||
/// <param name="renderSettings">Rendering settings.</param>
|
/// <param name="renderSettings">Rendering settings.</param>
|
||||||
public abstract void CreateAndInitialize(WindowSettings windowSettings, RendererSettings renderSettings);
|
public abstract void CreateAndInitializeWithWindow(RendererSettings renderSettings);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes internal resources. Should be called before other methods.
|
/// Initializes internal resources. Should be called before other methods.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -46,13 +57,6 @@ namespace Voile.Rendering
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract Vector2 MonitorSize { get; }
|
public abstract Vector2 MonitorSize { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Shutdown();
|
|
||||||
GC.SuppressFinalize(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a window.
|
/// Creates a window.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -148,6 +152,7 @@ namespace Voile.Rendering
|
|||||||
/// <param name="tint">Texture tint.</param>
|
/// <param name="tint">Texture tint.</param>
|
||||||
public abstract void DrawTexture(Texture2d texture, Color tint);
|
public abstract void DrawTexture(Texture2d texture, Color tint);
|
||||||
|
|
||||||
|
|
||||||
protected Vector2 transformPosition, transformOffset;
|
protected Vector2 transformPosition, transformOffset;
|
||||||
protected float transformRotation;
|
protected float transformRotation;
|
||||||
}
|
}
|
||||||
@@ -166,12 +171,15 @@ namespace Voile.Rendering
|
|||||||
public bool Fullscreen;
|
public bool Fullscreen;
|
||||||
public int TargetFps = 60;
|
public int TargetFps = 60;
|
||||||
|
|
||||||
|
public WindowSettings WindowSettings;
|
||||||
|
|
||||||
public RendererSettings() { }
|
public RendererSettings() { }
|
||||||
|
|
||||||
public static RendererSettings Default => new RendererSettings()
|
public static RendererSettings Default => new RendererSettings()
|
||||||
{
|
{
|
||||||
UseVSync = true,
|
UseVSync = true,
|
||||||
TargetFps = 60
|
TargetFps = 60,
|
||||||
|
WindowSettings = WindowSettings.Default
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ public class Container : UIElement
|
|||||||
|
|
||||||
protected virtual void RearrangeChild(int idx, UIElement child) { }
|
protected virtual void RearrangeChild(int idx, UIElement child) { }
|
||||||
|
|
||||||
protected override void OnRender(Renderer renderer)
|
protected override void OnRender(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public class Panel : Container
|
|||||||
Style = style;
|
Style = style;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnRender(Renderer renderer)
|
protected override void OnRender(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
base.OnRender(renderer);
|
base.OnRender(renderer);
|
||||||
renderer.DrawRectangle(Rect.Size, Style.BackgroundColor);
|
renderer.DrawRectangle(Rect.Size, Style.BackgroundColor);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class TextLabel : UIElement
|
|||||||
}
|
}
|
||||||
public int FontSize { get; set; } = 16;
|
public int FontSize { get; set; } = 16;
|
||||||
public Color FontColor { get; set; } = Color.White;
|
public Color FontColor { get; set; } = Color.White;
|
||||||
protected override void OnRender(Renderer renderer)
|
protected override void OnRender(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_font == null)
|
if (_font == null)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public abstract class UIElement
|
|||||||
child.parent = this;
|
child.parent = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Render(Renderer renderer)
|
public void Render(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
Vector2 parentPos = parent != null ? parent.Rect.Position : Vector2.Zero;
|
Vector2 parentPos = parent != null ? parent.Rect.Position : Vector2.Zero;
|
||||||
renderer.SetTransform(Rect.Position + parentPos, Vector2.Zero, 0);
|
renderer.SetTransform(Rect.Position + parentPos, Vector2.Zero, 0);
|
||||||
@@ -36,7 +36,7 @@ public abstract class UIElement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void OnRender(Renderer renderer);
|
protected abstract void OnRender(RenderSystem renderer);
|
||||||
|
|
||||||
protected List<UIElement> children;
|
protected List<UIElement> children;
|
||||||
protected UIElement? parent;
|
protected UIElement? parent;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace Voile.SceneGraph
|
|||||||
{
|
{
|
||||||
public class ImGuiRenderLayer : Layer
|
public class ImGuiRenderLayer : Layer
|
||||||
{
|
{
|
||||||
protected override void OnDraw(Renderer renderer)
|
protected override void OnDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
Layout();
|
Layout();
|
||||||
_controller.Draw(renderer);
|
_controller.Draw(renderer);
|
||||||
@@ -27,12 +27,12 @@ namespace Voile.SceneGraph
|
|||||||
_controller.Update(dt, Input);
|
_controller.Update(dt, Input);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnBeginDraw(Renderer renderer)
|
protected override void OnBeginDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnEndDraw(Renderer renderer)
|
protected override void OnEndDraw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
@@ -124,7 +124,7 @@ namespace Voile.SceneGraph
|
|||||||
io.DisplaySize = size / _scaleFactor;
|
io.DisplaySize = size / _scaleFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(double dt, InputHandler input)
|
public void Update(double dt, InputSystem input)
|
||||||
{
|
{
|
||||||
ImGuiIOPtr io = ImGui.GetIO();
|
ImGuiIOPtr io = ImGui.GetIO();
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ namespace Voile.SceneGraph
|
|||||||
ImGui.NewFrame();
|
ImGui.NewFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateKeyboard(InputHandler input)
|
private void UpdateKeyboard(InputSystem input)
|
||||||
{
|
{
|
||||||
ImGuiIOPtr io = ImGui.GetIO();
|
ImGuiIOPtr io = ImGui.GetIO();
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ namespace Voile.SceneGraph
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateMouse(InputHandler input)
|
private void UpdateMouse(InputSystem input)
|
||||||
{
|
{
|
||||||
ImGuiIOPtr io = ImGui.GetIO();
|
ImGuiIOPtr io = ImGui.GetIO();
|
||||||
|
|
||||||
@@ -317,7 +317,7 @@ namespace Voile.SceneGraph
|
|||||||
Rlgl.rlEnd();
|
Rlgl.rlEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Draw(Renderer renderer)
|
public void Draw(RenderSystem renderer)
|
||||||
{
|
{
|
||||||
ImGui.Render();
|
ImGui.Render();
|
||||||
RenderCommandLists(ImGui.GetDrawData());
|
RenderCommandLists(ImGui.GetDrawData());
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
## Core
|
## Core
|
||||||
|
|
||||||
- Add and implement interfaces for subsystems (ISubSystem, IUpdatableSubSystem, etc.)
|
- ~~Add and implement interfaces for systems (ISystem, IUpdatableSystem, etc.)~~
|
||||||
- Minimize amount of possible null references.
|
- Minimize amount of possible null references.
|
||||||
- Serialization of Resources through code generation.
|
- Serialization and deserialization of Resources from and to TOML files.
|
||||||
- Add documentation for common classes.
|
- Add documentation for common classes.
|
||||||
- Hot reloading
|
- Hot reloading of resources.
|
||||||
|
|
||||||
## I/O
|
## I/O
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user