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