diff --git a/Engine b/Engine index 8d49fb4..beecefe 160000 --- a/Engine +++ b/Engine @@ -1 +1 @@ -Subproject commit 8d49fb467cda79187a1a5677f7d594af4dbaef6e +Subproject commit beecefec1c31751d72ad83a4fcf6c4e65c413af7 diff --git a/Shared/Behaviours/BallBehaviour.cs b/Shared/Behaviours/BallBehaviour.cs index 7c28fb0..66b32a2 100644 --- a/Shared/Behaviours/BallBehaviour.cs +++ b/Shared/Behaviours/BallBehaviour.cs @@ -20,10 +20,10 @@ public class BallBehaviour : Behaviour2D, IFirstFrameUpdate, IPhysicsUpdate, INe public void FirstActiveFrame() { BehaviourController.GetRequiredBehaviour().OnCollisionDetected.AddListener(OnCollisionDetected); - physicsEngine2D = Universe.GetRequiredUniverseObject(); - tweenManager = Universe.GetRequiredUniverseObject(); + physicsEngine2D = Universe.FindRequiredBehaviour(); + tweenManager = Universe.FindRequiredBehaviour(); RigidBody = BehaviourController.GetRequiredBehaviour(); - networkServer = Universe.Find(); + networkServer = Universe.FindBehaviour(); } public void LaunchBall(Vector2D launchDirection) diff --git a/Shared/Behaviours/PaddleBehaviour.cs b/Shared/Behaviours/PaddleBehaviour.cs index c705e72..3ed13f3 100644 --- a/Shared/Behaviours/PaddleBehaviour.cs +++ b/Shared/Behaviours/PaddleBehaviour.cs @@ -34,10 +34,10 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp public void FirstActiveFrame() { - physicsEngine2D = Universe.GetRequiredUniverseObject(); - inputs = Universe.FindRequired>(); - networkClient = Universe.Find(); - networkServer = Universe.Find(); + physicsEngine2D = Universe.FindRequiredBehaviour(); + inputs = Universe.FindRequiredBehaviour>(); + networkClient = Universe.FindBehaviour(); + networkServer = Universe.FindBehaviour(); rigidBody = BehaviourController.GetRequiredBehaviour(); inputs.RegisterOnPress(Up, OnUpPressed); diff --git a/Shared/Behaviours/PongManagerBehaviour.cs b/Shared/Behaviours/PongManagerBehaviour.cs index 45d5b94..f03c6b8 100644 --- a/Shared/Behaviours/PongManagerBehaviour.cs +++ b/Shared/Behaviours/PongManagerBehaviour.cs @@ -36,8 +36,8 @@ public class PongManagerBehaviour : Behaviour, INetworkEntity, IFirstFrameUpdate buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => networkClient?.SendToServer(new RequestStartPacket())); ball = Universe.FindRequiredBehaviour(); - networkClient = Universe.Find(); - networkServer = Universe.Find(); + networkClient = Universe.FindBehaviour(); + networkServer = Universe.FindBehaviour(); } public void ScoreToLeft() diff --git a/Shared/Behaviours/TextBehaviour.cs b/Shared/Behaviours/TextBehaviour.cs index d2cca62..25010b5 100644 --- a/Shared/Behaviours/TextBehaviour.cs +++ b/Shared/Behaviours/TextBehaviour.cs @@ -12,12 +12,12 @@ public class TextBehaviour : Behaviour2D, IDrawableSprite public int Size { get; set; } = 16; public string Text { get; set; } = string.Empty; - public void Draw(SpriteBatch spriteBatch) + public void Draw(ISpriteBatch spriteBatch) { if (Font is null) return; - spriteBatch.DrawString(Font, Text, Transform.Position.ToDisplayVector2(), Color.White, Transform.Rotation, Vector2.One * .5f, Transform.Scale.Magnitude, SpriteEffects.None, 0f); + spriteBatch.DrawString(Font, Text, Transform.Position, Color.White, Transform.Rotation, Vector2D.One * .5f, Transform.Scale.Magnitude, SpriteEffects.None, 0f); } public TextBehaviour() { } diff --git a/Shared/GamePong.cs b/Shared/GamePong.cs index 0c999dc..301bfa4 100644 --- a/Shared/GamePong.cs +++ b/Shared/GamePong.cs @@ -36,27 +36,27 @@ public class GamePong : MonoGameWindow if (Environment.GetCommandLineArgs().FirstOrDefault(x => x.CompareTo("-server") == 0) is not null) { - LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server"); - UniverseObjectFactory.Instantiate().SetUniverseObject("NetworkManager", server.BehaviourController.UniverseObject); + LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour(); + server.BehaviourController.AddBehaviour(); server.Start(8888, 2); Window.Title = $"Server"; } else { - LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client"); - UniverseObjectFactory.Instantiate().SetUniverseObject("NetworkManager", client.BehaviourController.UniverseObject); + LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour(); + client.BehaviourController.AddBehaviour(); client.Connect("localhost", 8888); Window.Title = $"Client"; - DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager"); - universe.InstantiateUniverseObject().SetUniverseObject("Shape Batcher", drawManager).BehaviourController.AddBehaviour(); - universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager).BehaviourController.AddBehaviour(); + DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Shape Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour(); } - universe.InstantiateUniverseObject().SetUniverseObject("Update Manager"); - universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager"); - universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager"); - universe.InstantiateUniverseObject().SetUniverseObject("Physics Engine 2D"); + universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Physics Engine 2D").BehaviourController.AddBehaviour(); //////////////////////////////////////////////////////////////////////////////////// diff --git a/Shared/Network/LiteNetLib/LiteNetLibClient.cs b/Shared/Network/LiteNetLib/LiteNetLibClient.cs index db92078..fd3f57d 100644 --- a/Shared/Network/LiteNetLib/LiteNetLibClient.cs +++ b/Shared/Network/LiteNetLib/LiteNetLibClient.cs @@ -15,7 +15,7 @@ public class LiteNetLibClient : LiteNetLibCommunicatorBase, INetworkCommunicator public INetworkCommunicatorClient Connect(string address, int port, string? password = null) { - if (!IsInUniverse) + if (!UniverseObject.IsInUniverse) throw new($"{nameof(LiteNetLibClient)} must be in an universe to connect"); Manager.Start(); @@ -33,17 +33,17 @@ public class LiteNetLibClient : LiteNetLibCommunicatorBase, INetworkCommunicator return this; } - protected override void OnEnteringUniverse(IUniverse universe) + protected override void OnEnteredUniverse(IUniverse universe) { - base.OnEnteringUniverse(universe); + base.OnEnteredUniverse(universe); cancellationTokenSource = new CancellationTokenSource(); PollEvents(cancellationTokenSource.Token); } - protected override void OnExitingUniverse(IUniverse universe) + protected override void OnExitedUniverse(IUniverse universe) { - base.OnExitingUniverse(universe); + base.OnExitedUniverse(universe); cancellationTokenSource?.Cancel(); } diff --git a/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs b/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs index 1625acb..a9858aa 100644 --- a/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs +++ b/Shared/Network/LiteNetLib/LiteNetLibCommunicatorBase.cs @@ -10,7 +10,7 @@ using Syntriax.Engine.Core; namespace Syntriax.Engine.Network; -public abstract class LiteNetLibCommunicatorBase : UniverseObject, INetworkCommunicator +public abstract class LiteNetLibCommunicatorBase : Behaviour, INetworkCommunicator { protected readonly NetPacketProcessor netPacketProcessor = new(); @@ -25,9 +25,9 @@ public abstract class LiteNetLibCommunicatorBase : UniverseObject, INetworkCommu return this; } - protected override void OnExitingUniverse(IUniverse universe) + protected override void OnExitedUniverse(IUniverse universe) { - base.OnExitingUniverse(universe); + base.OnExitedUniverse(universe); Stop(); } diff --git a/Shared/Network/LiteNetLib/LiteNetLibServer.cs b/Shared/Network/LiteNetLib/LiteNetLibServer.cs index cfe3516..060703c 100644 --- a/Shared/Network/LiteNetLib/LiteNetLibServer.cs +++ b/Shared/Network/LiteNetLib/LiteNetLibServer.cs @@ -32,7 +32,7 @@ public class LiteNetLibServer : LiteNetLibCommunicatorBase, INetworkCommunicator public INetworkCommunicatorServer Start(int port, int maxConnectionCount, string? password = null) { - if (!IsInUniverse) + if (!UniverseObject.IsInUniverse) throw new($"{nameof(LiteNetLibServer)} must be in an universe to start"); Password = password ?? string.Empty; @@ -62,15 +62,15 @@ public class LiteNetLibServer : LiteNetLibCommunicatorBase, INetworkCommunicator private void PollEvents(IUniverse sender, IUniverse.UpdateArguments args) => Manager.PollEvents(); - protected override void OnEnteringUniverse(IUniverse universe) + protected override void OnEnteredUniverse(IUniverse universe) { - base.OnEnteringUniverse(universe); + base.OnEnteredUniverse(universe); universe.OnPostUpdate.AddListener(PollEvents); } - protected override void OnExitingUniverse(IUniverse universe) + protected override void OnExitedUniverse(IUniverse universe) { - base.OnExitingUniverse(universe); + base.OnExitedUniverse(universe); universe.OnPostUpdate.RemoveListener(PollEvents); } } diff --git a/Shared/Network/NetworkManager.cs b/Shared/Network/NetworkManager.cs index c742ac6..f2d7a48 100644 --- a/Shared/Network/NetworkManager.cs +++ b/Shared/Network/NetworkManager.cs @@ -10,7 +10,7 @@ namespace Syntriax.Engine.Network; /// /// Intermediary manager that looks up in it's hierarchy for a to route/broadcast it's received packets to their destinations. /// -public class NetworkManager : UniverseObject, INetworkManager +public class NetworkManager : Behaviour, INetworkManager { private readonly Dictionary>> clientPacketArrivalMethods = []; private readonly Dictionary>> serverPacketArrivalMethods = []; @@ -231,11 +231,11 @@ public class NetworkManager : UniverseObject, INetworkManager UnregisterPacketRoutersFor(removedBehaviour, serverPacketRouters, serverPacketArrivalMethods); } - protected override void OnExitingUniverse(IUniverse universe) => _networkEntityCollector.Unassign(); - protected override void OnEnteringUniverse(IUniverse universe) + protected override void OnExitedUniverse(IUniverse universe) => _networkEntityCollector.Unassign(); + protected override void OnEnteredUniverse(IUniverse universe) { _networkEntityCollector.Assign(universe); - NetworkCommunicator = this.GetRequiredUniverseObjectInParent(); + NetworkCommunicator = BehaviourController.GetRequiredBehaviourInParent(); } #endregion