diff --git a/Platforms/Desktop/Desktop.csproj b/Platforms/Desktop/Desktop.csproj
index 5556412..53fc12f 100644
--- a/Platforms/Desktop/Desktop.csproj
+++ b/Platforms/Desktop/Desktop.csproj
@@ -26,20 +26,14 @@
-
-
+
-
-
- Content/Content.mgcb
-
-
diff --git a/Platforms/Desktop/DesktopInputs.cs b/Platforms/Desktop/DesktopInputs.cs
deleted file mode 100644
index 47b965d..0000000
--- a/Platforms/Desktop/DesktopInputs.cs
+++ /dev/null
@@ -1,135 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-using Microsoft.Xna.Framework.Input;
-
-using Engine.Core;
-using Engine.Integration.MonoGame;
-using Engine.Systems.Input;
-
-using MyUniverse.Shared.Behaviours.Abstract;
-
-namespace MyUniverse.Platforms.Desktop;
-
-public class DesktopInputs : Behaviour, IEnterUniverse, IExitUniverse, IGameInputs
-{
- public IButtonInputs.InputEvent OnAnyButtonPressed { get; } = new();
- public IButtonInputs.InputEvent OnAnyButtonReleased { get; } = new();
-
- private readonly Dictionary.InputEvent> OnPressed = new(256);
- private readonly Dictionary.InputEvent> OnReleased = new(256);
-
- private readonly Dictionary keyMappingReversed = [];
- private readonly Dictionary keyMapping = new() {
- { Keys.Space, IGameInputs.Button.Interact }
- };
-
- private KeyboardInputs keyboardInputs = null!;
-
- public void EnterUniverse(IUniverse universe)
- {
- keyboardInputs = BehaviourController.GetOrAddBehaviour();
- keyboardInputs.OnAnyButtonPressed.AddListener(AnyPressCallback);
- keyboardInputs.OnAnyButtonReleased.AddListener(AnyReleaseCallback);
-
- foreach ((Keys key, IGameInputs.Button button) in keyMapping)
- keyboardInputs.RegisterOnPress(key, PressCallback);
-
- foreach ((Keys key, IGameInputs.Button button) in keyMapping)
- keyboardInputs.RegisterOnRelease(key, ReleaseCallback);
- }
-
- public void ExitUniverse(IUniverse universe)
- {
- keyboardInputs.OnAnyButtonPressed.RemoveListener(AnyPressCallback);
- keyboardInputs.OnAnyButtonReleased.RemoveListener(AnyReleaseCallback);
-
- foreach ((Keys key, IGameInputs.Button button) in keyMapping)
- keyboardInputs.UnregisterOnPress(key, PressCallback);
-
- foreach ((Keys key, IGameInputs.Button button) in keyMapping)
- keyboardInputs.UnregisterOnRelease(key, ReleaseCallback);
- }
-
- private void PressCallback(IButtonInputs sender, IButtonInputs.ButtonCallbackArguments args)
- {
- if (!keyMapping.TryGetValue(args.Button, out IGameInputs.Button button))
- return;
-
- if (!OnPressed.TryGetValue(button, out IButtonInputs.InputEvent? @event))
- return;
-
- @event.Invoke(this, new(button));
- }
-
- private void ReleaseCallback(IButtonInputs sender, IButtonInputs.ButtonCallbackArguments args)
- {
- if (!keyMapping.TryGetValue(args.Button, out IGameInputs.Button button))
- return;
-
- if (!OnReleased.TryGetValue(button, out IButtonInputs.InputEvent? @event))
- return;
-
- @event.Invoke(this, new(button));
- }
-
- private void AnyReleaseCallback(IButtonInputs sender, IButtonInputs.ButtonCallbackArguments args)
- {
- if (keyMapping.TryGetValue(args.Button, out IGameInputs.Button button))
- OnAnyButtonPressed?.Invoke(this, new(button));
- }
-
- private void AnyPressCallback(IButtonInputs sender, IButtonInputs.ButtonCallbackArguments args)
- {
- if (keyMapping.TryGetValue(args.Button, out IGameInputs.Button button))
- OnAnyButtonPressed?.Invoke(this, new(button));
- }
-
- public void RegisterOnPress(IGameInputs.Button button, IButtonInputs.InputEvent.EventHandler callback)
- {
- if (!OnPressed.TryGetValue(button, out IButtonInputs.InputEvent? @event))
- {
- @event = new();
- OnPressed.Add(button, @event);
- }
-
- @event.AddListener(callback);
- }
-
- public void UnregisterOnPress(IGameInputs.Button button, IButtonInputs.InputEvent.EventHandler callback)
- {
- if (OnPressed.TryGetValue(button, out IButtonInputs.InputEvent? @event))
- @event.RemoveListener(callback);
- }
-
- public void RegisterOnRelease(IGameInputs.Button button, IButtonInputs.InputEvent.EventHandler callback)
- {
- if (!OnReleased.TryGetValue(button, out IButtonInputs.InputEvent? @event))
- {
- @event = new();
- OnReleased.Add(button, @event);
- }
-
- @event.AddListener(callback);
- }
-
- public void UnregisterOnRelease(IGameInputs.Button button, IButtonInputs.InputEvent.EventHandler callback)
- {
- if (OnReleased.TryGetValue(button, out IButtonInputs.InputEvent? @event))
- @event.RemoveListener(callback);
- }
-
- public bool IsPressed(IGameInputs.Button button)
- {
- if (!keyMappingReversed.TryGetValue(button, out Keys key))
- throw new($"{Enum.GetName(button)} is not mapped correctly");
-
- return keyboardInputs.IsPressed(key);
- }
-
- public DesktopInputs()
- {
- foreach ((Keys key, IGameInputs.Button button) in keyMapping)
- keyMappingReversed.Add(button, key);
- }
-}
diff --git a/Platforms/Desktop/Program.cs b/Platforms/Desktop/Program.cs
index abd54f2..56db350 100644
--- a/Platforms/Desktop/Program.cs
+++ b/Platforms/Desktop/Program.cs
@@ -1,16 +1,13 @@
-using Microsoft.Xna.Framework.Graphics;
+using System;
using Engine.Core;
using Engine.Core.Debug;
using Engine.Core.Serialization;
-using Engine.Integration.MonoGame;
using Engine.Serializers.Yaml;
using Engine.Systems.Network;
-
-using MyUniverse.Platforms.Desktop;
+using Engine.Systems.Time;
Universe universe = new();
-using MonoGameWindow monoGameWindow = new(universe);
ISerializer serializer = new YamlSerializer();
@@ -25,12 +22,8 @@ universe.InstantiateUniverseObject().SetUniverseObject("Logger")
IUniverseObject desktopParent = universe.InstantiateUniverseObject().SetUniverseObject("Desktop");
-universe.InstantiateUniverseObject().SetUniverseObject("Desktop Inputs", desktopParent)
- .BehaviourController.AddBehaviour();
-
universe.InstantiateUniverseObject().SetUniverseObject("Visual Managers", desktopParent)
- .BehaviourController.AddBehaviour()
- .BehaviourController.AddBehaviour();
+ .BehaviourController.AddBehaviour();
/* For Networking
LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour();
@@ -38,9 +31,24 @@ client.BehaviourController.AddBehaviour();
universe.OnPreUpdate.AddOneTimeListener((_, _) => client.Connect("localhost", 8888));
*/
-MyUniverse.Shared.UniverseSource.ApplyClient(universe);
+MyUniverse.Shared.UniverseSource.ApplyCore(universe);
MyUniverse.Shared.UniverseSource.ApplyUniverse(universe);
-monoGameWindow.Graphics.GraphicsProfile = GraphicsProfile.HiDef;
+desktopParent.AddChild(universe.InstantiateUniverseObject().SetUniverseObject("Triangle Batcher").BehaviourController.AddBehaviour().UniverseObject);
-monoGameWindow.Run();
+universe.Initialize();
+
+DateTime lastRun = DateTime.UtcNow;
+TimeSpan timeSinceStart = new(0);
+
+while (true)
+{
+ DateTime now = DateTime.UtcNow;
+ TimeSpan updateTimeSpan = now - lastRun;
+
+ timeSinceStart += updateTimeSpan;
+ universe.Update(new(timeSinceStart, updateTimeSpan));
+
+ lastRun = now;
+ System.Threading.Thread.Sleep(1);
+}
diff --git a/Shared/Behaviours/MousePositionerBehaviour.cs b/Shared/Behaviours/MousePositionerBehaviour.cs
deleted file mode 100644
index 44f2014..0000000
--- a/Shared/Behaviours/MousePositionerBehaviour.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Microsoft.Xna.Framework.Input;
-
-using Engine.Core;
-using Engine.Integration.MonoGame;
-
-namespace MyUniverse.Shared.Behaviours;
-
-public class MousePositionerBehaviour : Behaviour2D, IUpdate, IFirstFrameUpdate
-{
- private ICamera2D camera = null!;
-
- public void FirstActiveFrame()
- {
- camera = Universe.FindRequiredBehaviour();
- }
-
- public void Update()
- {
- Transform.Position = camera.ScreenToWorldPosition(Mouse.GetState().Position.ToVector2D());
- }
-}
diff --git a/Shared/Shared.csproj b/Shared/Shared.csproj
index f7d2154..f1221c5 100644
--- a/Shared/Shared.csproj
+++ b/Shared/Shared.csproj
@@ -12,6 +12,5 @@
-
diff --git a/Shared/UniverseSource.cs b/Shared/UniverseSource.cs
index bf660a8..ba0e158 100644
--- a/Shared/UniverseSource.cs
+++ b/Shared/UniverseSource.cs
@@ -1,5 +1,4 @@
using Engine.Core;
-using Engine.Integration.MonoGame;
using Engine.Systems.Graphics;
using Engine.Systems.Tween;
@@ -19,33 +18,11 @@ public static class UniverseSource
coreManagersUO.AddChild(universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour().UniverseObject);
}
- public static void ApplyClient(IUniverse universe)
- {
- ApplyCore(universe);
-
- IUniverseObject clientManagersUO = universe.InstantiateUniverseObject().SetUniverseObject("Core Managers");
- clientManagersUO.AddChild(universe.InstantiateUniverseObject().SetUniverseObject("Triangle Batcher").BehaviourController.AddBehaviour().UniverseObject);
- clientManagersUO.AddChild(universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher").BehaviourController.AddBehaviour().UniverseObject);
- clientManagersUO.AddChild(universe.InstantiateUniverseObject().SetUniverseObject("MonoGame Triangle Batch").BehaviourController.AddBehaviour().UniverseObject);
-
- MonoGameCamera2D camera = universe.InstantiateUniverseObject().SetUniverseObject("Camera")
- .BehaviourController.AddBehaviour()
- .BehaviourController.AddBehaviour();
-
- camera.Zoom = 20f;
- }
-
public static void ApplyUniverse(IUniverse universe)
{
universe.InstantiateUniverseObject().SetUniverseObject("Example Object")
.BehaviourController.AddBehaviour();
- universe.InstantiateUniverseObject().SetUniverseObject("MouseObject")
- .BehaviourController.AddBehaviour()
- .BehaviourController.AddBehaviour()
- .BehaviourController.AddBehaviour()
- .BehaviourController.AddBehaviour(Shape2D.CreateNgon(4), new ColorRGB(255, 255, 0)).Priority = 10;
-
universe.InstantiateUniverseObject()
.SetUniverseObject("Rotating Triangle")
.BehaviourController.AddBehaviour().SetTransform(position: new(10f, 6f), scale: Vector2D.One * 5)