chore: updated engine
This commit is contained in:
		
							
								
								
									
										2
									
								
								Engine
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								Engine
									
									
									
									
									
								
							 Submodule Engine updated: 9e4c74ed1d...5c1c025fe3
									
								
							@@ -72,8 +72,8 @@ public class KeyboardInputsBehaviour : Behaviour, IButtonInputs<Keys>
 | 
			
		||||
            if (WasPressed(currentlyPressedKey))
 | 
			
		||||
                continue;
 | 
			
		||||
 | 
			
		||||
            action.Invoke(this, currentlyPressedKey);
 | 
			
		||||
            OnAnyButtonPressed?.Invoke(this, currentlyPressedKey);
 | 
			
		||||
            action.InvokeSafe(this, currentlyPressedKey);
 | 
			
		||||
            OnAnyButtonPressed?.InvokeSafe(this, currentlyPressedKey);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (int i = 0; i < cachePressedPreviouslyCount; i++)
 | 
			
		||||
@@ -86,8 +86,8 @@ public class KeyboardInputsBehaviour : Behaviour, IButtonInputs<Keys>
 | 
			
		||||
            if (IsPressed(previouslyPressedKey))
 | 
			
		||||
                continue;
 | 
			
		||||
 | 
			
		||||
            action.Invoke(this, previouslyPressedKey);
 | 
			
		||||
            OnAnyButtonReleased?.Invoke(this, previouslyPressedKey);
 | 
			
		||||
            action.InvokeSafe(this, previouslyPressedKey);
 | 
			
		||||
            OnAnyButtonReleased?.InvokeSafe(this, previouslyPressedKey);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Array.Copy(cachePressedCurrently, cachePressedPreviously, cachePressedCurrentlyCount);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
using Pong.Platforms.Desktop;
 | 
			
		||||
using Syntriax.Engine.Core;
 | 
			
		||||
 | 
			
		||||
Syntriax.Engine.Core.Abstract.IHierarchyObject hierarchyObject = Syntriax.Engine.Core.Factory.HierarchyObjectFactory.Instantiate().SetHierarchyObject("Desktop HO");
 | 
			
		||||
hierarchyObject.BehaviourController.AddBehaviour<KeyboardInputsBehaviour>();
 | 
			
		||||
using var game = new Pong.GamePong(hierarchyObject);
 | 
			
		||||
Syntriax.Engine.Core.Abstract.IUniverseObject universeObject = Syntriax.Engine.Core.Factory.UniverseObjectFactory.Instantiate().SetUniverseObject("Desktop HO");
 | 
			
		||||
universeObject.BehaviourController.AddBehaviour<KeyboardInputsBehaviour>();
 | 
			
		||||
using var game = new Pong.GamePong(universeObject);
 | 
			
		||||
game.Run();
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ public class BallBehaviour : Behaviour2D
 | 
			
		||||
        BehaviourController.GetRequiredBehaviour<ICollider2D>().OnCollisionDetected += OnCollisionDetected;
 | 
			
		||||
        rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>();
 | 
			
		||||
 | 
			
		||||
        if (HierarchyObject.GameManager.TryFindBehaviour(out PongManagerBehaviour? pongManager))
 | 
			
		||||
        if (UniverseObject.Universe.TryFindBehaviour(out PongManagerBehaviour? pongManager))
 | 
			
		||||
        {
 | 
			
		||||
            pongManager.OnReset += ResetBall;
 | 
			
		||||
            pongManager.OnScored += ResetBall;
 | 
			
		||||
@@ -54,7 +54,7 @@ public class BallBehaviour : Behaviour2D
 | 
			
		||||
        if (rigidBody.Velocity.MagnitudeSquared <= 0.01f)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        Vector2D speedUp = rigidBody.Velocity.Normalized * GameManager.Time.DeltaTime;
 | 
			
		||||
        Vector2D speedUp = rigidBody.Velocity.Normalized * Universe.Time.DeltaTime;
 | 
			
		||||
        rigidBody.Velocity += speedUp * SpeedUpMultiplier;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ public class CameraController : Behaviour
 | 
			
		||||
    protected override void OnFirstActiveFrame()
 | 
			
		||||
    {
 | 
			
		||||
        cameraBehaviour ??= BehaviourController.GetRequiredBehaviour<MonoGameCamera2DBehaviour>();
 | 
			
		||||
        buttonInputs = GameManager.FindRequiredBehaviour<IButtonInputs<Keys>>();
 | 
			
		||||
        buttonInputs = Universe.FindRequiredBehaviour<IButtonInputs<Keys>>();
 | 
			
		||||
 | 
			
		||||
        buttonInputs.RegisterOnPress(Keys.F, SwitchToFullScreen);
 | 
			
		||||
        buttonInputs.RegisterOnPress(Keys.R, ResetCamera);
 | 
			
		||||
@@ -24,21 +24,21 @@ public class CameraController : Behaviour
 | 
			
		||||
    protected override void OnUpdate()
 | 
			
		||||
    {
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.U))
 | 
			
		||||
            cameraBehaviour.Zoom += GameManager.Time.DeltaTime * 5f;
 | 
			
		||||
            cameraBehaviour.Zoom += Universe.Time.DeltaTime * 5f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.J))
 | 
			
		||||
            cameraBehaviour.Zoom -= GameManager.Time.DeltaTime * 5f;
 | 
			
		||||
            cameraBehaviour.Zoom -= Universe.Time.DeltaTime * 5f;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad8)) cameraBehaviour.Transform.LocalPosition += Vector2D.Up * GameManager.Time.DeltaTime * 500f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad2)) cameraBehaviour.Transform.LocalPosition -= Vector2D.Up * GameManager.Time.DeltaTime * 500f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad6)) cameraBehaviour.Transform.LocalPosition += Vector2D.Right * GameManager.Time.DeltaTime * 500f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad4)) cameraBehaviour.Transform.LocalPosition -= Vector2D.Right * GameManager.Time.DeltaTime * 500f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad8)) cameraBehaviour.Transform.LocalPosition += Vector2D.Up * Universe.Time.DeltaTime * 500f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad2)) cameraBehaviour.Transform.LocalPosition -= Vector2D.Up * Universe.Time.DeltaTime * 500f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad6)) cameraBehaviour.Transform.LocalPosition += Vector2D.Right * Universe.Time.DeltaTime * 500f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.NumPad4)) cameraBehaviour.Transform.LocalPosition -= Vector2D.Right * Universe.Time.DeltaTime * 500f;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.Q))
 | 
			
		||||
            cameraBehaviour.Transform.Rotation += GameManager.Time.DeltaTime * 45f;
 | 
			
		||||
            cameraBehaviour.Transform.Rotation += Universe.Time.DeltaTime * 45f;
 | 
			
		||||
        if (buttonInputs.IsPressed(Keys.E))
 | 
			
		||||
            cameraBehaviour.Transform.Rotation -= GameManager.Time.DeltaTime * 45f;
 | 
			
		||||
            cameraBehaviour.Transform.Rotation -= Universe.Time.DeltaTime * 45f;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void SwitchToFullScreen(IButtonInputs<Keys> inputs, Keys keys)
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ public class MonoGameCamera2DBehaviour(GraphicsDeviceManager Graphics) : Behavio
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            _matrixTransform = value;
 | 
			
		||||
            OnMatrixTransformChanged?.Invoke(this);
 | 
			
		||||
            OnMatrixTransformChanged?.InvokeSafe(this);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -47,7 +47,7 @@ public class MonoGameCamera2DBehaviour(GraphicsDeviceManager Graphics) : Behavio
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            _viewport = value;
 | 
			
		||||
            OnViewportChanged?.Invoke(this);
 | 
			
		||||
            OnViewportChanged?.InvokeSafe(this);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -62,7 +62,7 @@ public class MonoGameCamera2DBehaviour(GraphicsDeviceManager Graphics) : Behavio
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            _zoom = newValue;
 | 
			
		||||
            OnZoomChanged?.Invoke(this);
 | 
			
		||||
            OnZoomChanged?.InvokeSafe(this);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ public class MovementBallBehaviour : Behaviour2D
 | 
			
		||||
        if (rigidBody.Velocity.MagnitudeSquared <= 0.01f)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        Vector2D speedUp = rigidBody.Velocity.Normalized * GameManager.Time.DeltaTime;
 | 
			
		||||
        Vector2D speedUp = rigidBody.Velocity.Normalized * Universe.Time.DeltaTime;
 | 
			
		||||
        rigidBody.Velocity += speedUp * SpeedUpMultiplier;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,16 +26,16 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        if (isUpPressed)
 | 
			
		||||
            Transform.Position = Transform.Position + Vector2D.Up * GameManager.Time.DeltaTime * Speed;
 | 
			
		||||
            Transform.Position = Transform.Position + Vector2D.Up * Universe.Time.DeltaTime * Speed;
 | 
			
		||||
        else if (isDownPressed)
 | 
			
		||||
            Transform.Position = Transform.Position + -Vector2D.Up * GameManager.Time.DeltaTime * Speed;
 | 
			
		||||
            Transform.Position = Transform.Position + -Vector2D.Up * Universe.Time.DeltaTime * Speed;
 | 
			
		||||
 | 
			
		||||
        Transform.Position = new Vector2D(Transform.Position.X, MathF.Max(MathF.Min(Transform.Position.Y, High), Low));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected override void OnFirstActiveFrame()
 | 
			
		||||
    {
 | 
			
		||||
        inputs = GameManager.FindRequiredBehaviour<IButtonInputs<Keys>>();
 | 
			
		||||
        inputs = Universe.FindRequiredBehaviour<IButtonInputs<Keys>>();
 | 
			
		||||
 | 
			
		||||
        inputs.RegisterOnPress(Up, OnUpPressed);
 | 
			
		||||
        inputs.RegisterOnRelease(Up, OnUpReleased);
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ public class PongManagerBehaviour : Behaviour
 | 
			
		||||
 | 
			
		||||
    protected override void OnFirstActiveFrame()
 | 
			
		||||
    {
 | 
			
		||||
        var buttonInputs = GameManager.FindRequiredBehaviour<IButtonInputs<Keys>>();
 | 
			
		||||
        var buttonInputs = Universe.FindRequiredBehaviour<IButtonInputs<Keys>>();
 | 
			
		||||
        buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => Reset());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +32,7 @@ public class PongManagerBehaviour : Behaviour
 | 
			
		||||
    public void ScoreToLeft()
 | 
			
		||||
    {
 | 
			
		||||
        ScoreLeft++;
 | 
			
		||||
        OnScored?.Invoke(this);
 | 
			
		||||
        OnScored?.InvokeSafe(this);
 | 
			
		||||
 | 
			
		||||
        CheckFinish();
 | 
			
		||||
    }
 | 
			
		||||
@@ -40,7 +40,7 @@ public class PongManagerBehaviour : Behaviour
 | 
			
		||||
    public void ScoreToRight()
 | 
			
		||||
    {
 | 
			
		||||
        ScoreRight++;
 | 
			
		||||
        OnScored?.Invoke(this);
 | 
			
		||||
        OnScored?.InvokeSafe(this);
 | 
			
		||||
 | 
			
		||||
        CheckFinish();
 | 
			
		||||
    }
 | 
			
		||||
@@ -48,7 +48,7 @@ public class PongManagerBehaviour : Behaviour
 | 
			
		||||
    public void Reset()
 | 
			
		||||
    {
 | 
			
		||||
        ScoreLeft = ScoreRight = 0;
 | 
			
		||||
        OnReset?.Invoke(this);
 | 
			
		||||
        OnReset?.InvokeSafe(this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void CheckFinish()
 | 
			
		||||
@@ -56,6 +56,6 @@ public class PongManagerBehaviour : Behaviour
 | 
			
		||||
        int halfwayScore = (int)(WinScore * .5f);
 | 
			
		||||
 | 
			
		||||
        if (ScoreLeft > halfwayScore || ScoreRight > halfwayScore)
 | 
			
		||||
            OnFinished?.Invoke(this);
 | 
			
		||||
            OnFinished?.InvokeSafe(this);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ public class TextScoreBehaviour : TextBehaviour
 | 
			
		||||
 | 
			
		||||
    protected override void OnFirstActiveFrame()
 | 
			
		||||
    {
 | 
			
		||||
        if (!HierarchyObject.GameManager.TryFindBehaviour(out pongManager))
 | 
			
		||||
        if (!UniverseObject.Universe.TryFindBehaviour(out pongManager))
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        pongManager.OnScored += UpdateScores;
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,6 @@ public class WallScoreBehaviour(Action OnCollision) : Behaviour2D
 | 
			
		||||
        if (!BehaviourController.TryGetBehaviour(out ICollider2D? collider2D))
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        collider2D.OnCollisionDetected += (_, _1) => OnCollision?.Invoke();
 | 
			
		||||
        collider2D.OnCollisionDetected += (_, _1) => OnCollision?.InvokeSafe();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ public static class EngineConverter
 | 
			
		||||
    public readonly static Vector2D screenScale = Vector2D.Down + Vector2D.Right;
 | 
			
		||||
 | 
			
		||||
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
			
		||||
    public static EngineTime ToEngineTime(this GameTime gameTime) => new(gameTime.TotalGameTime, gameTime.ElapsedGameTime);
 | 
			
		||||
    public static UniverseTime ToUniverseTime(this GameTime gameTime) => new(gameTime.TotalGameTime, gameTime.ElapsedGameTime);
 | 
			
		||||
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
			
		||||
    public static Vector2D ToVector2D(this Vector2 vector) => new(vector.X, vector.Y);
 | 
			
		||||
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
			
		||||
 
 | 
			
		||||
@@ -14,21 +14,21 @@ namespace Pong;
 | 
			
		||||
 | 
			
		||||
public class GamePong : Game
 | 
			
		||||
{
 | 
			
		||||
    private readonly IHierarchyObject platformSpecificHierarchyObject = null!;
 | 
			
		||||
    private readonly IUniverseObject platformSpecificUniverseObject = null!;
 | 
			
		||||
    private readonly GraphicsDeviceManager graphics = null!;
 | 
			
		||||
    private SpriteBatch spriteBatch = null!;
 | 
			
		||||
    private ShapeBatch shapeBatch = null!;
 | 
			
		||||
 | 
			
		||||
    private GameManager gameManager = null!;
 | 
			
		||||
    private Universe universe = null!;
 | 
			
		||||
    private BehaviourCollector<IDisplayableSprite> displayableCollector = null!;
 | 
			
		||||
    private BehaviourCollector<IDisplayableShape> displayableShapeCollector = null!;
 | 
			
		||||
    private MonoGameCamera2DBehaviour cameraBehaviour = null!;
 | 
			
		||||
 | 
			
		||||
    private PongManagerBehaviour pongManager = null!;
 | 
			
		||||
 | 
			
		||||
    public GamePong(IHierarchyObject platformSpecificHierarchyObject)
 | 
			
		||||
    public GamePong(IUniverseObject platformSpecificUniverseObject)
 | 
			
		||||
    {
 | 
			
		||||
        this.platformSpecificHierarchyObject = platformSpecificHierarchyObject;
 | 
			
		||||
        this.platformSpecificUniverseObject = platformSpecificUniverseObject;
 | 
			
		||||
        graphics = new GraphicsDeviceManager(this)
 | 
			
		||||
        {
 | 
			
		||||
            PreferredBackBufferWidth = 1024,
 | 
			
		||||
@@ -43,11 +43,11 @@ public class GamePong : Game
 | 
			
		||||
    protected override void Initialize()
 | 
			
		||||
    {
 | 
			
		||||
        // TODO: Add your initialization logic here
 | 
			
		||||
        gameManager = new();
 | 
			
		||||
        displayableCollector = new(gameManager);
 | 
			
		||||
        displayableShapeCollector = new(gameManager);
 | 
			
		||||
        universe = new();
 | 
			
		||||
        displayableCollector = new(universe);
 | 
			
		||||
        displayableShapeCollector = new(universe);
 | 
			
		||||
 | 
			
		||||
        gameManager.Initialize();
 | 
			
		||||
        universe.Initialize();
 | 
			
		||||
 | 
			
		||||
        base.Initialize();
 | 
			
		||||
    }
 | 
			
		||||
@@ -58,79 +58,79 @@ public class GamePong : Game
 | 
			
		||||
        shapeBatch = new ShapeBatch(GraphicsDevice, Content);
 | 
			
		||||
        SpriteFont spriteFont = Content.Load<SpriteFont>("UbuntuMono");
 | 
			
		||||
 | 
			
		||||
        gameManager.Register(platformSpecificHierarchyObject);
 | 
			
		||||
        gameManager.InstantiateHierarchyObject<PhysicsEngine2D>().SetHierarchyObject("Physics Engine 2D");
 | 
			
		||||
        universe.Register(platformSpecificUniverseObject);
 | 
			
		||||
        universe.InstantiateUniverseObject<PhysicsEngine2D>().SetUniverseObject("Physics Engine 2D");
 | 
			
		||||
 | 
			
		||||
        ////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectCamera = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Camera"); ;
 | 
			
		||||
        HierarchyObjectCamera.BehaviourController.AddBehaviour<Transform2D>();
 | 
			
		||||
        IUniverseObject UniverseObjectCamera = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Camera"); ;
 | 
			
		||||
        UniverseObjectCamera.BehaviourController.AddBehaviour<Transform2D>();
 | 
			
		||||
 | 
			
		||||
        HierarchyObjectCamera.BehaviourController.AddBehaviour<CameraController>();
 | 
			
		||||
        cameraBehaviour = HierarchyObjectCamera.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>(graphics);
 | 
			
		||||
        UniverseObjectCamera.BehaviourController.AddBehaviour<CameraController>();
 | 
			
		||||
        cameraBehaviour = UniverseObjectCamera.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>(graphics);
 | 
			
		||||
 | 
			
		||||
        ////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectPongManager = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Pong Game Manager");
 | 
			
		||||
        pongManager = HierarchyObjectPongManager.BehaviourController.AddBehaviour<PongManagerBehaviour>(5);
 | 
			
		||||
        IUniverseObject UniverseObjectPongManager = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Pong Game Manager");
 | 
			
		||||
        pongManager = UniverseObjectPongManager.BehaviourController.AddBehaviour<PongManagerBehaviour>(5);
 | 
			
		||||
 | 
			
		||||
        ////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectBall = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Ball");
 | 
			
		||||
        HierarchyObjectBall.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f));
 | 
			
		||||
        IUniverseObject UniverseObjectBall = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Ball");
 | 
			
		||||
        UniverseObjectBall.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f));
 | 
			
		||||
 | 
			
		||||
        HierarchyObjectBall.BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f));
 | 
			
		||||
        HierarchyObjectBall.BehaviourController.AddBehaviour<BallBehaviour>();
 | 
			
		||||
        HierarchyObjectBall.BehaviourController.AddBehaviour<RigidBody2D>();
 | 
			
		||||
        UniverseObjectBall.BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f));
 | 
			
		||||
        UniverseObjectBall.BehaviourController.AddBehaviour<BallBehaviour>();
 | 
			
		||||
        UniverseObjectBall.BehaviourController.AddBehaviour<RigidBody2D>();
 | 
			
		||||
 | 
			
		||||
        ////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectLeftPaddle = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Left Paddle");
 | 
			
		||||
        HierarchyObjectLeftPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-468f, 0f), scale: new Vector2D(15f, 60f));
 | 
			
		||||
        IUniverseObject UniverseObjectLeftPaddle = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Left Paddle");
 | 
			
		||||
        UniverseObjectLeftPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-468f, 0f), scale: new Vector2D(15f, 60f));
 | 
			
		||||
 | 
			
		||||
        HierarchyObjectLeftPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.W, Keys.S, 228f, -228f, 400f);
 | 
			
		||||
        HierarchyObjectLeftPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        HierarchyObjectLeftPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
        UniverseObjectLeftPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.W, Keys.S, 228f, -228f, 400f);
 | 
			
		||||
        UniverseObjectLeftPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        UniverseObjectLeftPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectRightPaddle = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Right Paddle");
 | 
			
		||||
        HierarchyObjectRightPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(468f, 0f), scale: new Vector2D(15f, 60f));
 | 
			
		||||
        HierarchyObjectRightPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.Up, Keys.Down, 228f, -228f, 400f);
 | 
			
		||||
        HierarchyObjectRightPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        HierarchyObjectRightPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
        IUniverseObject UniverseObjectRightPaddle = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Right Paddle");
 | 
			
		||||
        UniverseObjectRightPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(468f, 0f), scale: new Vector2D(15f, 60f));
 | 
			
		||||
        UniverseObjectRightPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.Up, Keys.Down, 228f, -228f, 400f);
 | 
			
		||||
        UniverseObjectRightPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        UniverseObjectRightPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
 | 
			
		||||
        ////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectWallTop = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Wall Top");
 | 
			
		||||
        HierarchyObjectWallTop.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, 308f), scale: new Vector2D(552f, 20f));
 | 
			
		||||
        HierarchyObjectWallTop.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        HierarchyObjectWallTop.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
        IUniverseObject UniverseObjectWallTop = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Wall Top");
 | 
			
		||||
        UniverseObjectWallTop.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, 308f), scale: new Vector2D(552f, 20f));
 | 
			
		||||
        UniverseObjectWallTop.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        UniverseObjectWallTop.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectWallBottom = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Wall Bottom");
 | 
			
		||||
        HierarchyObjectWallBottom.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, -308f), scale: new Vector2D(552f, 20f));
 | 
			
		||||
        HierarchyObjectWallBottom.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        HierarchyObjectWallBottom.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
        IUniverseObject UniverseObjectWallBottom = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Wall Bottom");
 | 
			
		||||
        UniverseObjectWallBottom.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, -308f), scale: new Vector2D(552f, 20f));
 | 
			
		||||
        UniverseObjectWallBottom.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        UniverseObjectWallBottom.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectWallRight = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Wall Right");
 | 
			
		||||
        HierarchyObjectWallRight.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(532f, 0f), scale: new Vector2D(20f, 328f));
 | 
			
		||||
        HierarchyObjectWallRight.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToLeft);
 | 
			
		||||
        HierarchyObjectWallRight.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        HierarchyObjectWallRight.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
        IUniverseObject UniverseObjectWallRight = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Wall Right");
 | 
			
		||||
        UniverseObjectWallRight.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(532f, 0f), scale: new Vector2D(20f, 328f));
 | 
			
		||||
        UniverseObjectWallRight.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToLeft);
 | 
			
		||||
        UniverseObjectWallRight.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        UniverseObjectWallRight.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectWallLeft = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Wall Left");
 | 
			
		||||
        HierarchyObjectWallLeft.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-532f, 0f), scale: new Vector2D(20f, 328f));
 | 
			
		||||
        HierarchyObjectWallLeft.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToRight);
 | 
			
		||||
        HierarchyObjectWallLeft.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        HierarchyObjectWallLeft.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
        IUniverseObject UniverseObjectWallLeft = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Wall Left");
 | 
			
		||||
        UniverseObjectWallLeft.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-532f, 0f), scale: new Vector2D(20f, 328f));
 | 
			
		||||
        UniverseObjectWallLeft.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToRight);
 | 
			
		||||
        UniverseObjectWallLeft.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square);
 | 
			
		||||
        UniverseObjectWallLeft.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
 | 
			
		||||
 | 
			
		||||
        ////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectLeftScoreText = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Score Left");
 | 
			
		||||
        HierarchyObjectLeftScoreText.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f);
 | 
			
		||||
        HierarchyObjectLeftScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(true, spriteFont);
 | 
			
		||||
        IUniverseObject UniverseObjectLeftScoreText = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Score Left");
 | 
			
		||||
        UniverseObjectLeftScoreText.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f);
 | 
			
		||||
        UniverseObjectLeftScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(true, spriteFont);
 | 
			
		||||
 | 
			
		||||
        IHierarchyObject HierarchyObjectRightScoreText = gameManager.InstantiateHierarchyObject<HierarchyObject>().SetHierarchyObject("Score Right");
 | 
			
		||||
        HierarchyObjectRightScoreText.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f);
 | 
			
		||||
        HierarchyObjectRightScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(false, spriteFont);
 | 
			
		||||
        IUniverseObject UniverseObjectRightScoreText = universe.InstantiateUniverseObject<UniverseObject>().SetUniverseObject("Score Right");
 | 
			
		||||
        UniverseObjectRightScoreText.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f);
 | 
			
		||||
        UniverseObjectRightScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(false, spriteFont);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected override void Update(GameTime gameTime)
 | 
			
		||||
@@ -138,7 +138,7 @@ public class GamePong : Game
 | 
			
		||||
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
 | 
			
		||||
            Exit();
 | 
			
		||||
 | 
			
		||||
        gameManager.Update(gameTime.ToEngineTime());
 | 
			
		||||
        universe.Update(gameTime.ToUniverseTime());
 | 
			
		||||
 | 
			
		||||
        base.Update(gameTime);
 | 
			
		||||
    }
 | 
			
		||||
@@ -148,7 +148,7 @@ public class GamePong : Game
 | 
			
		||||
        GraphicsDevice.Clear(new Color() { R = 32, G = 32, B = 32 });
 | 
			
		||||
 | 
			
		||||
        // TODO: Add your drawing code here
 | 
			
		||||
        gameManager.PreDraw();
 | 
			
		||||
        universe.PreDraw();
 | 
			
		||||
 | 
			
		||||
        spriteBatch.Begin(SpriteSortMode.Deferred, transformMatrix: cameraBehaviour.MatrixTransform);
 | 
			
		||||
        foreach (var displayable in displayableCollector)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user