From 81f9ef10bff1eb1f1183b1fc88f06cbf6487d2a4 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Mon, 22 Jan 2024 22:45:40 +0300 Subject: [PATCH] BREAKING CHANGE: Removed MonoGame Package --- .../Abstract/Assignable/IAssignableSprite.cs | 26 ----- Engine.Core/Abstract/IBehaviourController.cs | 22 ++--- Engine.Core/Abstract/ICamera.cs | 14 +-- Engine.Core/Abstract/IDisplayable.cs | 8 -- Engine.Core/Abstract/IGameObject.cs | 6 +- Engine.Core/Abstract/ISprite.cs | 13 --- Engine.Core/Abstract/ITransform.cs | 6 +- Engine.Core/BehaviourController.cs | 18 ++-- Engine.Core/BehaviourOverride.cs | 40 ++++---- Engine.Core/CameraBehaviour.cs | 98 ------------------- Engine.Core/Engine.Core.csproj | 4 - Engine.Core/GameManager.cs | 44 +-------- Engine.Core/GameObject.cs | 8 +- Engine.Core/Sprite.cs | 29 ------ Engine.Core/Static/Internal/Constants.cs | 3 - Engine.Core/Transform.cs | 10 +- 16 files changed, 53 insertions(+), 296 deletions(-) delete mode 100644 Engine.Core/Abstract/Assignable/IAssignableSprite.cs delete mode 100644 Engine.Core/Abstract/IDisplayable.cs delete mode 100644 Engine.Core/Abstract/ISprite.cs delete mode 100644 Engine.Core/CameraBehaviour.cs delete mode 100644 Engine.Core/Sprite.cs diff --git a/Engine.Core/Abstract/Assignable/IAssignableSprite.cs b/Engine.Core/Abstract/Assignable/IAssignableSprite.cs deleted file mode 100644 index 8f05c68..0000000 --- a/Engine.Core/Abstract/Assignable/IAssignableSprite.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; - -namespace Syntriax.Engine.Core.Abstract; - -/// -/// Indicates the object is an with an assignable field. -/// -public interface IAssignableSprite : IAssignable -{ - /// - /// Callback triggered when the value has has been assigned a new value. - /// - Action? OnSpriteAssigned { get; set; } - - /// - ISprite Sprite { get; } - - /// - /// Assign a value to the field of this object - /// - /// New to assign. - /// - /// , if the value given assigned successfully assigned, if not. - /// - bool Assign(ISprite sprite); -} diff --git a/Engine.Core/Abstract/IBehaviourController.cs b/Engine.Core/Abstract/IBehaviourController.cs index 040aa58..bf5f195 100644 --- a/Engine.Core/Abstract/IBehaviourController.cs +++ b/Engine.Core/Abstract/IBehaviourController.cs @@ -2,8 +2,6 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using Microsoft.Xna.Framework; - namespace Syntriax.Engine.Core.Abstract; /// @@ -12,18 +10,18 @@ namespace Syntriax.Engine.Core.Abstract; public interface IBehaviourController : IAssignableGameObject { /// - /// Callback triggered when the is called but right before the action is triggered. + /// Callback triggered when the is called but right before the action is triggered. /// - Action? OnPreUpdate { get; set; } + Action? OnPreUpdate { get; set; } /// - /// Callback triggered when the is called. + /// Callback triggered when the is called. /// - Action? OnUpdate { get; set; } + Action? OnUpdate { get; set; } /// - /// Callback triggered when the is called. + /// Callback triggered when the is called. /// - Action? OnPreDraw { get; set; } + Action? OnPreDraw { get; set; } /// @@ -84,12 +82,12 @@ public interface IBehaviourController : IAssignableGameObject /// /// To be called in every frame of the engine. Responsible for notifying 's under the 's control that a new frame is happening. /// - /// information from the game. - void Update(GameTime gameTime); + /// information from the game. + void Update(); /// /// To be called before every draw call from the engine. Responsible for notifying 's under the 's control that the engine is about to start drawing into the screen. /// - /// information from the game. - void UpdatePreDraw(GameTime gameTime); + /// information from the game. + void UpdatePreDraw(); } diff --git a/Engine.Core/Abstract/ICamera.cs b/Engine.Core/Abstract/ICamera.cs index 18934a0..bcab06c 100644 --- a/Engine.Core/Abstract/ICamera.cs +++ b/Engine.Core/Abstract/ICamera.cs @@ -1,23 +1,11 @@ using System; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; namespace Syntriax.Engine.Core.Abstract; -public interface ICamera +public interface ICamera : IAssignableTransform { - Action? OnMatrixTransformChanged { get; set; } - Action? OnViewportChanged { get; set; } - Action? OnPositionChanged { get; set; } - Action? OnRotationChanged { get; set; } Action? OnZoomChanged { get; set; } - Matrix MatrixTransform { get; } - Viewport Viewport { get; set; } - - Vector2 Position { get; set; } - - float Rotation { get; set; } float Zoom { get; set; } void Update(); diff --git a/Engine.Core/Abstract/IDisplayable.cs b/Engine.Core/Abstract/IDisplayable.cs deleted file mode 100644 index d27a812..0000000 --- a/Engine.Core/Abstract/IDisplayable.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Microsoft.Xna.Framework.Graphics; - -namespace Syntriax.Engine.Core.Abstract; - -public interface IDisplayable -{ - public void Draw(SpriteBatch spriteBatch); -} diff --git a/Engine.Core/Abstract/IGameObject.cs b/Engine.Core/Abstract/IGameObject.cs index 6849e2a..c9d6a49 100644 --- a/Engine.Core/Abstract/IGameObject.cs +++ b/Engine.Core/Abstract/IGameObject.cs @@ -1,12 +1,10 @@ using System; -using Microsoft.Xna.Framework; - namespace Syntriax.Engine.Core.Abstract; public interface IGameObject : IEntity, IAssignableTransform, IAssignableBehaviourController, INameable, IInitialize { - Action? OnUpdated { get; set; } + Action? OnUpdated { get; set; } - void Update(GameTime time); + void Update(); } diff --git a/Engine.Core/Abstract/ISprite.cs b/Engine.Core/Abstract/ISprite.cs deleted file mode 100644 index 7a584b6..0000000 --- a/Engine.Core/Abstract/ISprite.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; - -namespace Syntriax.Engine.Core.Abstract; - -// TODO Probably gonna have to rethink this -public interface ISprite -{ - Action? OnTextureChanged { get; set; } - - Texture2D Texture2D { get; set; } -} diff --git a/Engine.Core/Abstract/ITransform.cs b/Engine.Core/Abstract/ITransform.cs index 72adc38..437b4d7 100644 --- a/Engine.Core/Abstract/ITransform.cs +++ b/Engine.Core/Abstract/ITransform.cs @@ -1,7 +1,5 @@ using System; -using Microsoft.Xna.Framework; - namespace Syntriax.Engine.Core.Abstract; public interface ITransform @@ -10,8 +8,8 @@ public interface ITransform Action? OnScaleChanged { get; set; } Action? OnRotationChanged { get; set; } - Vector2 Position { get; set; } - Vector2 Scale { get; set; } + Vector2D Position { get; set; } + Vector2D Scale { get; set; } float Rotation { get; set; } } diff --git a/Engine.Core/BehaviourController.cs b/Engine.Core/BehaviourController.cs index ab2a278..98d4585 100644 --- a/Engine.Core/BehaviourController.cs +++ b/Engine.Core/BehaviourController.cs @@ -2,17 +2,15 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using Microsoft.Xna.Framework; - using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; public class BehaviourController : IBehaviourController { - public Action? OnPreUpdate { get; set; } - public Action? OnUpdate { get; set; } = null; - public Action? OnPreDraw { get; set; } = null; + public Action? OnPreUpdate { get; set; } + public Action? OnUpdate { get; set; } = null; + public Action? OnPreDraw { get; set; } = null; public Action? OnBehaviourAdded { get; set; } = null; public Action? OnBehaviourRemoved { get; set; } = null; @@ -115,21 +113,21 @@ public class BehaviourController : IBehaviourController return true; } - public void Update(GameTime gameTime) + public void Update() { if (!GameObject.StateEnable.Enabled) return; - OnPreUpdate?.Invoke(this, gameTime); - OnUpdate?.Invoke(this, gameTime); + OnPreUpdate?.Invoke(this); + OnUpdate?.Invoke(this); } - public void UpdatePreDraw(GameTime gameTime) + public void UpdatePreDraw() { if (!GameObject.StateEnable.Enabled) return; - OnPreDraw?.Invoke(this, gameTime); + OnPreDraw?.Invoke(this); } public BehaviourController() { } diff --git a/Engine.Core/BehaviourOverride.cs b/Engine.Core/BehaviourOverride.cs index 5c2e9f3..81a8d4c 100644 --- a/Engine.Core/BehaviourOverride.cs +++ b/Engine.Core/BehaviourOverride.cs @@ -1,5 +1,3 @@ -using Microsoft.Xna.Framework; - using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; @@ -41,49 +39,49 @@ public abstract class BehaviourOverride : Behaviour OnFinalize(); } - protected virtual void OnPreUpdatePreEnabledCheck(GameTime time) { } - protected virtual void OnPreUpdate(GameTime time) { } - private void PreUpdate(IBehaviourController _, GameTime time) + protected virtual void OnPreUpdatePreEnabledCheck() { } + protected virtual void OnPreUpdate() { } + private void PreUpdate(IBehaviourController _) { - OnPreUpdatePreEnabledCheck(time); + OnPreUpdatePreEnabledCheck(); if (!StateEnable.Enabled) return; if (isInitializedThisFrame) - FirstActiveFrame(time); + FirstActiveFrame(); - OnPreUpdate(time); + OnPreUpdate(); } - protected virtual void OnFirstActiveFrame(GameTime time) { } - private void FirstActiveFrame(GameTime time) + protected virtual void OnFirstActiveFrame() { } + private void FirstActiveFrame() { - OnFirstActiveFrame(time); + OnFirstActiveFrame(); isInitializedThisFrame = false; } - protected virtual void OnUpdatePreEnabledCheck(GameTime time) { } - protected virtual void OnUpdate(GameTime time) { } - private void Update(IBehaviourController _, GameTime time) + protected virtual void OnUpdatePreEnabledCheck() { } + protected virtual void OnUpdate() { } + private void Update(IBehaviourController _) { - OnUpdatePreEnabledCheck(time); + OnUpdatePreEnabledCheck(); if (!StateEnable.Enabled) return; - OnUpdate(time); + OnUpdate(); } - protected virtual void OnPreDrawPreEnabledCheck(GameTime time) { } - protected virtual void OnPreDraw(GameTime time) { } - private void PreDraw(IBehaviourController _, GameTime time) + protected virtual void OnPreDrawPreEnabledCheck() { } + protected virtual void OnPreDraw() { } + private void PreDraw(IBehaviourController _) { - OnPreDrawPreEnabledCheck(time); + OnPreDrawPreEnabledCheck(); if (!StateEnable.Enabled) return; - OnPreDraw(time); + OnPreDraw(); } } diff --git a/Engine.Core/CameraBehaviour.cs b/Engine.Core/CameraBehaviour.cs deleted file mode 100644 index d29eeb8..0000000 --- a/Engine.Core/CameraBehaviour.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using Syntriax.Engine.Core.Abstract; - -namespace Syntriax.Engine.Core; - -public class CameraBehaviour : BehaviourOverride, ICamera -{ - public Action? OnPositionChanged { get; set; } = null; - public Action? OnMatrixTransformChanged { get; set; } = null; - public Action? OnViewportChanged { get; set; } = null; - public Action? OnRotationChanged { get; set; } = null; - public Action? OnZoomChanged { get; set; } = null; - - private Matrix _matrixTransform = Matrix.Identity; - - private Viewport _viewport = default; - - private float _zoom = 1f; - - public Matrix MatrixTransform - { - get => _matrixTransform; - set - { - if (_matrixTransform == value) - return; - - _matrixTransform = value; - OnMatrixTransformChanged?.Invoke(this); - } - } - - public Vector2 Position - { - get => Transform.Position; - set => Transform.Position = value; - } - - public Viewport Viewport - { - get => _viewport; - set - { - if (_viewport.Equals(value)) - return; - - _viewport = value; - OnViewportChanged?.Invoke(this); - } - } - - public float Zoom - { - get => _zoom; - set - { - float newValue = value >= .1f ? value : .1f; - - if (_zoom == newValue) - return; - - _zoom = newValue; - OnZoomChanged?.Invoke(this); - } - } - - public float Rotation - { - get => Transform.Rotation; - set => Transform.Rotation = value; - } - - public void Update() - { - MatrixTransform = - Matrix.CreateTranslation(new Vector3(-Position.X, Position.Y, 0f)) * - Matrix.CreateRotationZ(Rotation) * - Matrix.CreateScale(Zoom) * - Matrix.CreateTranslation(new Vector3(_viewport.Width * .5f, _viewport.Height * .5f, 0f)); - } - - protected override void OnInitialize() - { - Transform.OnRotationChanged += OnTransformRotationChanged; - Transform.OnPositionChanged += OnTransformPositionChanged; - } - - protected override void OnFinalize() - { - Transform.OnRotationChanged -= OnTransformRotationChanged; - Transform.OnPositionChanged -= OnTransformPositionChanged; - } - - private void OnTransformRotationChanged(ITransform _) => OnRotationChanged?.Invoke(this); - private void OnTransformPositionChanged(ITransform _) => OnPositionChanged?.Invoke(this); -} diff --git a/Engine.Core/Engine.Core.csproj b/Engine.Core/Engine.Core.csproj index ad9c883..5334de3 100644 --- a/Engine.Core/Engine.Core.csproj +++ b/Engine.Core/Engine.Core.csproj @@ -5,8 +5,4 @@ false enable - - - - diff --git a/Engine.Core/GameManager.cs b/Engine.Core/GameManager.cs index 9a8b25c..76aca6c 100644 --- a/Engine.Core/GameManager.cs +++ b/Engine.Core/GameManager.cs @@ -1,9 +1,6 @@ using System; using System.Collections.Generic; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; - using Syntriax.Engine.Core.Abstract; using Syntriax.Engine.Core.Exceptions; using Syntriax.Engine.Core.Factory; @@ -20,7 +17,6 @@ public class GameManager : IEntity private IList _gameObjects = new List(Constants.GAME_OBJECTS_SIZE_INITIAL); - private IList _drawables = new List(Constants.DRAWABLE_OBJECTS_SIZE_INITIAL); private IStateEnable _stateEnable = null!; private GameObjectFactory _gameObjectFactory = null!; @@ -137,51 +133,31 @@ public class GameManager : IEntity return true; } - public void Update(GameTime time) + public void Update() { foreach (var gameObject in GameObjects) - gameObject.BehaviourController.Update(time); + gameObject.BehaviourController.Update(); } - public void PreDraw(GameTime time) + public void PreDraw() { foreach (var gameObject in GameObjects) - gameObject.BehaviourController.UpdatePreDraw(time); - } - - public void Draw(SpriteBatch spriteBatch) - { - spriteBatch.Begin(SpriteSortMode.Deferred, transformMatrix: Camera.MatrixTransform); - - foreach (var drawable in _drawables) - drawable.Draw(spriteBatch); - - spriteBatch.End(); + gameObject.BehaviourController.UpdatePreDraw(); } ///////////////////////////////////////////////////////////////// private void Unregister(IGameObject gameObject) { - gameObject.BehaviourController.OnBehaviourAdded -= OnBehaviourAdd; - gameObject.BehaviourController.OnBehaviourRemoved -= OnBehaviourRemove; gameObject.OnFinalized -= OnGameObjectFinalize; - if (gameObject.BehaviourController.TryGetBehaviour(out var drawable)) - _drawables.Remove(drawable); - _gameObjects.Remove(gameObject); } private void Register(IGameObject gameObject) { - gameObject.BehaviourController.OnBehaviourAdded += OnBehaviourAdd; - gameObject.BehaviourController.OnBehaviourRemoved += OnBehaviourRemove; gameObject.OnFinalized += OnGameObjectFinalize; - if (gameObject.BehaviourController.TryGetBehaviour(out var drawable)) - _drawables.Add(drawable); - _gameObjects.Add(gameObject); } @@ -190,16 +166,4 @@ public class GameManager : IEntity if (initialize is IGameObject gameObject) Unregister(gameObject); } - - private void OnBehaviourAdd(IBehaviourController controller, IBehaviour behaviour) - { - if (behaviour is IDisplayable drawable) - _drawables.Add(drawable); - } - - private void OnBehaviourRemove(IBehaviourController controller, IBehaviour behaviour) - { - if (behaviour is IDisplayable drawable) - _drawables.Remove(drawable); - } } diff --git a/Engine.Core/GameObject.cs b/Engine.Core/GameObject.cs index 47d6acc..7423977 100644 --- a/Engine.Core/GameObject.cs +++ b/Engine.Core/GameObject.cs @@ -1,7 +1,5 @@ using System; -using Microsoft.Xna.Framework; - using Syntriax.Engine.Core.Abstract; using Syntriax.Engine.Core.Exceptions; @@ -19,7 +17,7 @@ public class GameObject : IGameObject public Action? OnInitialized { get; set; } = null; public Action? OnFinalized { get; set; } = null; - public Action? OnUpdated { get; set; } = null; + public Action? OnUpdated { get; set; } = null; private ITransform _transform = null!; @@ -74,12 +72,12 @@ public class GameObject : IGameObject return true; } - public void Update(GameTime time) + public void Update() { if (!_stateEnable.Enabled) return; - OnUpdated?.Invoke(this, time); + OnUpdated?.Invoke(this); } public bool Finalize() diff --git a/Engine.Core/Sprite.cs b/Engine.Core/Sprite.cs deleted file mode 100644 index be6c77d..0000000 --- a/Engine.Core/Sprite.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; - -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; - -using Syntriax.Engine.Core.Abstract; - -namespace Syntriax.Engine.Core; - -// TODO Probably gonna have to rethink this -public class Sprite : ISprite -{ - public Action? OnTextureChanged { get; set; } - - private Texture2D _texture = null!; - - public Texture2D Texture2D - { - get => _texture; - set - { - if (_texture == value) - return; - - _texture = value; - OnTextureChanged?.Invoke(this); - } - } -} diff --git a/Engine.Core/Static/Internal/Constants.cs b/Engine.Core/Static/Internal/Constants.cs index 2d10f70..30273e4 100644 --- a/Engine.Core/Static/Internal/Constants.cs +++ b/Engine.Core/Static/Internal/Constants.cs @@ -1,6 +1,3 @@ -using System.Collections.Generic; -using Microsoft.Xna.Framework; - namespace Syntriax.Engine.Core; internal static class Constants diff --git a/Engine.Core/Transform.cs b/Engine.Core/Transform.cs index 5603454..f4b28dd 100644 --- a/Engine.Core/Transform.cs +++ b/Engine.Core/Transform.cs @@ -1,7 +1,5 @@ using System; -using Microsoft.Xna.Framework; - using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; @@ -12,11 +10,11 @@ public class Transform : ITransform public Action? OnScaleChanged { get; set; } = null; public Action? OnRotationChanged { get; set; } = null; - private Vector2 _position = Vector2.Zero; - private Vector2 _scale = Vector2.One; + private Vector2D _position = Vector2D.Zero; + private Vector2D _scale = Vector2D.One; private float _rotation = 0f; - public Vector2 Position + public Vector2D Position { get => _position; set @@ -29,7 +27,7 @@ public class Transform : ITransform } } - public Vector2 Scale + public Vector2D Scale { get => _scale; set