138 lines
5.0 KiB
C#
138 lines
5.0 KiB
C#
using System;
|
|
|
|
using Engine.Core;
|
|
using Engine.Core.Debug;
|
|
using Engine.Core.Serialization;
|
|
using Engine.Integration.SDL3;
|
|
using Engine.Serializers.Yaml;
|
|
using Engine.Systems.Network;
|
|
using Engine.Systems.Time;
|
|
using MyUniverse.Shared.Behaviours;
|
|
|
|
Universe universe = new();
|
|
|
|
ISerializer serializer = new YamlSerializer();
|
|
|
|
ILogger logger = new RotatingFileLogger("Logs", "MyUniverse");
|
|
|
|
#if DEBUG
|
|
logger = new LoggerWrapper(logger, new ConsoleLogger());
|
|
#endif
|
|
|
|
universe.InstantiateUniverseObject().SetUniverseObject("Logger")
|
|
.BehaviourController.AddBehaviour<LoggerContainer>().Logger = ILogger.Shared = logger;
|
|
|
|
IUniverseObject desktopParent = universe.InstantiateUniverseObject().SetUniverseObject("Desktop");
|
|
|
|
// universe.InstantiateUniverseObject().SetUniverseObject("Desktop Inputs", desktopParent)
|
|
// .BehaviourController.AddBehaviour<DesktopInputs>();
|
|
|
|
universe.InstantiateUniverseObject().SetUniverseObject("Visual Managers", desktopParent)
|
|
.BehaviourController.AddBehaviour<DrawManager>();
|
|
|
|
/* For Networking
|
|
LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour<LiteNetLibClient>();
|
|
client.BehaviourController.AddBehaviour<NetworkManager>();
|
|
universe.OnPreUpdate.AddOneTimeListener((_, _) => client.Connect("localhost", 8888));
|
|
*/
|
|
|
|
MyUniverse.Shared.UniverseSource.ApplyCore(universe);
|
|
MyUniverse.Shared.UniverseSource.ApplyUniverse(universe);
|
|
|
|
desktopParent.AddChild(universe.InstantiateUniverseObject().SetUniverseObject("Triangle Batcher").BehaviourController.AddBehaviour<Engine.Systems.Graphics.TriangleBatcher>().UniverseObject);
|
|
|
|
Sdl3Window window = Engine.Core.Factory.BehaviourFactory.Instantiate<Sdl3Window>();
|
|
window.Title = "MyUniverse";
|
|
window.Size = new(800, 600);
|
|
window.Mode = WindowMode.Windowed;
|
|
|
|
Sdl3Window window2 = Engine.Core.Factory.BehaviourFactory.Instantiate<Sdl3Window>();
|
|
window2.Title = "MyUniverse 2";
|
|
window2.Size = new(400, 300);
|
|
window2.Mode = WindowMode.Windowed;
|
|
|
|
universe.InstantiateUniverseObject().SetUniverseObject("SDL3 Manager", desktopParent)
|
|
.BehaviourController.AddBehaviour<Sdl3WindowManager>()
|
|
.BehaviourController.AddBehaviour<Sdl3KeyboardInputs>()
|
|
.BehaviourController.AddBehaviour<Sdl3GameInputs>();
|
|
|
|
IUniverseObject windowUO = universe.InstantiateUniverseObject().SetUniverseObject("SDL3 Window", desktopParent);
|
|
windowUO.BehaviourController.AddBehaviour<Transform2D>();
|
|
windowUO.BehaviourController.AddBehaviour<Engine.Systems.Graphics.DrawableShape2D>(Shape2D.Square, new ColorRGB(0, 0, 128));
|
|
windowUO.BehaviourController.AddBehaviour(window);
|
|
windowUO.BehaviourController.AddBehaviour<Sdl3Camera2D>().Zoom = 20f;
|
|
windowUO.BehaviourController.AddBehaviour<Sdl3TriangleBatch>();
|
|
windowUO.BehaviourController.AddBehaviour<CameraController2D>();
|
|
|
|
IUniverseObject windowUO2 = universe.InstantiateUniverseObject().SetUniverseObject("SDL3 Window 2", desktopParent);
|
|
windowUO2.BehaviourController.AddBehaviour<Transform2D>().Rotation = 45f;
|
|
windowUO2.BehaviourController.AddBehaviour<Engine.Systems.Graphics.DrawableShape2D>(Shape2D.Square, new ColorRGB(128, 0, 0));
|
|
windowUO2.BehaviourController.AddBehaviour(window2);
|
|
windowUO2.BehaviourController.AddBehaviour<Sdl3Camera2D>().Zoom = 20f;
|
|
windowUO2.BehaviourController.AddBehaviour<Sdl3TriangleBatch>();
|
|
windowUO2.BehaviourController.AddBehaviour<LinearRotator>();
|
|
|
|
// Testing Start
|
|
// TickerStopwatch tickerStopwatch = windowUO.BehaviourController.AddBehaviour<TickerStopwatch>();
|
|
// tickerStopwatch.Period = 5f;
|
|
// tickerStopwatch.OnTick.AddListener(sender =>
|
|
// {
|
|
// if (window.IsInitialized)
|
|
// windowUO.BehaviourController.RemoveBehaviour(window);
|
|
// else
|
|
// windowUO.BehaviourController.AddBehaviour(window);
|
|
// });
|
|
// tickerStopwatch.Start();
|
|
|
|
// universe.InstantiateUniverseObject()
|
|
// .SetUniverseObject("Square")
|
|
// .BehaviourController.AddBehaviour<Transform2D>()
|
|
// .BehaviourController.AddBehaviour<Engine.Systems.Graphics.DrawableShape2D>(Shape2D.Square, new ColorRGB(255, 255, 0));
|
|
|
|
// Testing End
|
|
|
|
universe.Initialize();
|
|
|
|
// window.OnRender.AddListener((sender, args) => universe.Draw());
|
|
// window.OnUpdate.AddListener((sender, args) =>
|
|
// {
|
|
// timeSinceStart += args.TimeSpan;
|
|
// universe.Update(new(timeSinceStart, args.TimeSpan));
|
|
// });
|
|
|
|
// window.Run();
|
|
|
|
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));
|
|
universe.Draw();
|
|
|
|
lastRun = now;
|
|
System.Threading.Thread.Sleep(1);
|
|
}
|
|
|
|
// DateTime lastRun = DateTime.UtcNow;
|
|
// TimeSpan interval = new(0, 0, 0, 0, 16);
|
|
// TimeSpan timeSinceStart = new(0);
|
|
|
|
// universe.Initialize();
|
|
|
|
// while (true)
|
|
// {
|
|
// if (lastRun + interval <= DateTime.UtcNow)
|
|
// {
|
|
// lastRun += interval;
|
|
// timeSinceStart += interval;
|
|
// universe.Update(new(timeSinceStart, interval));
|
|
// }
|
|
|
|
// Thread.Sleep(1);
|
|
// }
|