refactor: added server project

This commit is contained in:
Syntriax 2025-06-06 23:54:03 +03:00
parent b835fb1582
commit 2294c06bf9
9 changed files with 142 additions and 66 deletions

17
.vscode/launch.json vendored
View File

@ -28,8 +28,19 @@
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "build", "preLaunchTask": "build",
"program": "${workspaceFolder}/Platforms/Server/bin/Debug/net9.0/Server.exe",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"console": "internalConsole"
},
{
"name": ".NET Launch (Host)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/Platforms/Desktop/bin/Debug/net9.0/Desktop.exe", "program": "${workspaceFolder}/Platforms/Desktop/bin/Debug/net9.0/Desktop.exe",
"args": ["-server"], "args": ["--server"],
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}",
"stopAtEntry": false, "stopAtEntry": false,
"console": "internalConsole" "console": "internalConsole"
@ -37,8 +48,8 @@
], ],
"compounds": [ "compounds": [
{ {
"name": ".NET Launch 1 Client & 1 Server", "name": ".NET Launch Client & Host",
"configurations": [".NET Launch (Server)", ".NET Launch (Client) 1"] "configurations": [".NET Launch (Host)", ".NET Launch (Client) 1"]
}, },
{ {
"name": ".NET Launch 2 Client & 1 Server", "name": ".NET Launch 2 Client & 1 Server",

2
Engine

@ -1 +1 @@
Subproject commit fbdea47dc7768aea65fe6826020cc6dd79a0b711 Subproject commit 45524e474e1f795012d5e04f0b7f709eff2026b5

View File

@ -1,16 +1,22 @@
using Microsoft.Xna.Framework.Graphics; using System;
using System.Linq;
using Microsoft.Xna.Framework.Graphics;
using Syntriax.Engine.Core; using Syntriax.Engine.Core;
using Syntriax.Engine.Integration.MonoGame; using Syntriax.Engine.Integration.MonoGame;
using var game = new Pong.GamePong(); bool isServerEnabled = Environment.GetCommandLineArgs().FirstOrDefault(x => x.CompareTo("--server") == 0) is not null;
game.Universe IUniverse universe = Pong.PongUniverse.GetPongUniverse(isServerEnabled, isClientEnabled: true);
.InstantiateUniverseObject().SetUniverseObject("Desktop HO")
universe.InstantiateUniverseObject().SetUniverseObject("Desktop HO")
.BehaviourController.AddBehaviour<KeyboardInputsBehaviour>(); .BehaviourController.AddBehaviour<KeyboardInputsBehaviour>();
game.Graphics.PreferredBackBufferWidth = 1024; using MonoGameWindow monoGameWindow = new(universe);
game.Graphics.PreferredBackBufferHeight = 576;
game.Graphics.GraphicsProfile = GraphicsProfile.HiDef;
game.Run(); monoGameWindow.Graphics.PreferredBackBufferWidth = 1024;
monoGameWindow.Graphics.PreferredBackBufferHeight = 576;
monoGameWindow.Graphics.GraphicsProfile = GraphicsProfile.HiDef;
monoGameWindow.Run();

View File

@ -0,0 +1,22 @@
using System;
using System.Threading;
using Syntriax.Engine.Core;
IUniverse universe = Pong.PongUniverse.GetPongUniverse(isServerEnabled: true, isClientEnabled: false);
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);
}

View File

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="../../Shared/Shared.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.2.1105">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>

View File

@ -23,6 +23,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine.Integration", "Engin
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Engine.Integration.MonoGame", "Engine\Engine.Integration\Engine.Integration.MonoGame\Engine.Integration.MonoGame.csproj", "{7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Engine.Integration.MonoGame", "Engine\Engine.Integration\Engine.Integration.MonoGame\Engine.Integration.MonoGame.csproj", "{7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Platforms\Server\Server.csproj", "{A15263DB-DF65-4A07-8CA1-33A2919501A0}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -117,6 +119,18 @@ Global
{7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}.Release|x64.Build.0 = Release|Any CPU {7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}.Release|x64.Build.0 = Release|Any CPU
{7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}.Release|x86.ActiveCfg = Release|Any CPU {7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}.Release|x86.ActiveCfg = Release|Any CPU
{7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}.Release|x86.Build.0 = Release|Any CPU {7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283}.Release|x86.Build.0 = Release|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Debug|x64.ActiveCfg = Debug|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Debug|x64.Build.0 = Debug|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Debug|x86.ActiveCfg = Debug|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Debug|x86.Build.0 = Debug|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Release|Any CPU.Build.0 = Release|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Release|x64.ActiveCfg = Release|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Release|x64.Build.0 = Release|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Release|x86.ActiveCfg = Release|Any CPU
{A15263DB-DF65-4A07-8CA1-33A2919501A0}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -129,5 +143,6 @@ Global
{8863A1BA-2E83-419F-BACB-D4A4156EC71C} = {F7F62670-237A-4C93-A30E-CE661C6FC401} {8863A1BA-2E83-419F-BACB-D4A4156EC71C} = {F7F62670-237A-4C93-A30E-CE661C6FC401}
{9059393F-4073-9273-0EEC-2B1BA61B620B} = {F7F62670-237A-4C93-A30E-CE661C6FC401} {9059393F-4073-9273-0EEC-2B1BA61B620B} = {F7F62670-237A-4C93-A30E-CE661C6FC401}
{7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283} = {9059393F-4073-9273-0EEC-2B1BA61B620B} {7CC31BC4-38EE-40F4-BBBA-9FC2F4CF6283} = {9059393F-4073-9273-0EEC-2B1BA61B620B}
{A15263DB-DF65-4A07-8CA1-33A2919501A0} = {FECFFD54-338F-4060-9161-1E5770D1DC33}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

View File

@ -22,7 +22,7 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
private bool isUpPressed = false; private bool isUpPressed = false;
private bool isDownPressed = false; private bool isDownPressed = false;
private IButtonInputs<Keys> inputs = null!; private IButtonInputs<Keys>? inputs = null;
private INetworkCommunicatorClient? networkClient = null!; private INetworkCommunicatorClient? networkClient = null!;
private INetworkCommunicatorServer? networkServer = null; private INetworkCommunicatorServer? networkServer = null;
private IRigidBody2D rigidBody = null!; private IRigidBody2D rigidBody = null!;
@ -44,25 +44,25 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
public void FirstActiveFrame() public void FirstActiveFrame()
{ {
physicsEngine2D = Universe.FindRequiredBehaviour<IPhysicsEngine2D>(); physicsEngine2D = Universe.FindRequiredBehaviour<IPhysicsEngine2D>();
inputs = Universe.FindRequiredBehaviour<IButtonInputs<Keys>>(); inputs = Universe.FindBehaviour<IButtonInputs<Keys>>();
networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>(); networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>(); networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>(); rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>();
inputs.RegisterOnPress(Up, OnUpPressed); inputs?.RegisterOnPress(Up, OnUpPressed);
inputs.RegisterOnRelease(Up, OnUpReleased); inputs?.RegisterOnRelease(Up, OnUpReleased);
inputs.RegisterOnPress(Down, OnDownPressed); inputs?.RegisterOnPress(Down, OnDownPressed);
inputs.RegisterOnRelease(Down, OnDownReleased); inputs?.RegisterOnRelease(Down, OnDownReleased);
} }
protected override void OnFinalize() protected override void OnFinalize()
{ {
inputs.UnregisterOnPress(Up, OnUpPressed); inputs?.UnregisterOnPress(Up, OnUpPressed);
inputs.UnregisterOnRelease(Up, OnUpReleased); inputs?.UnregisterOnRelease(Up, OnUpReleased);
inputs.UnregisterOnPress(Down, OnDownPressed); inputs?.UnregisterOnPress(Down, OnDownPressed);
inputs.UnregisterOnRelease(Down, OnDownReleased); inputs?.UnregisterOnRelease(Down, OnDownReleased);
} }
private void OnUpPressed(IButtonInputs<Keys> sender, IButtonInputs<Keys>.ButtonCallbackArguments args) { isUpPressed = true; networkClient?.SendToServer(new PaddleKeyStatePacket(this)); } private void OnUpPressed(IButtonInputs<Keys> sender, IButtonInputs<Keys>.ButtonCallbackArguments args) { isUpPressed = true; networkClient?.SendToServer(new PaddleKeyStatePacket(this)); }

View File

@ -32,8 +32,8 @@ public class PongManagerBehaviour : Behaviour, INetworkEntity, IFirstFrameUpdate
public void FirstActiveFrame() public void FirstActiveFrame()
{ {
IButtonInputs<Keys> buttonInputs = Universe.FindRequired<IButtonInputs<Keys>>(); IButtonInputs<Keys>? buttonInputs = Universe.FindBehaviour<IButtonInputs<Keys>>();
buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => networkClient?.SendToServer(new RequestStartPacket())); buttonInputs?.RegisterOnRelease(Keys.Space, (_, _1) => networkClient?.SendToServer(new RequestStartPacket()));
ball = Universe.FindRequiredBehaviour<BallBehaviour>(); ball = Universe.FindRequiredBehaviour<BallBehaviour>();
networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>(); networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();

View File

@ -1,5 +1,4 @@
using System; using System;
using System.Linq;
using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Input;
@ -14,106 +13,109 @@ using Syntriax.Engine.Systems.Tween;
namespace Pong; namespace Pong;
public class GamePong : MonoGameWindow public static class PongUniverse
{ {
protected override void Initialize() public static IUniverse GetPongUniverse(bool isServerEnabled, bool isClientEnabled)
{ {
base.Initialize(); Universe universe = new();
if (Environment.GetCommandLineArgs().FirstOrDefault(x => x.CompareTo("-server") == 0) is not null) if (isServerEnabled)
{ {
LiteNetLibServer server = Universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour<LiteNetLibServer>(); LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour<LiteNetLibServer>();
server.BehaviourController.AddBehaviour<NetworkManager>(); server.BehaviourController.AddBehaviour<NetworkManager>();
server.Start(8888, 2); server.Start(8888, 2);
Window.Title = $"Server";
} }
else
if (isClientEnabled)
{ {
LiteNetLibClient client = Universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour<LiteNetLibClient>(); LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour<LiteNetLibClient>();
client.BehaviourController.AddBehaviour<NetworkManager>(); client.BehaviourController.AddBehaviour<NetworkManager>();
client.Connect("localhost", 8888); client.Connect("localhost", 8888);
Window.Title = $"Client";
DrawManager drawManager = Universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour<DrawManager>(); DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour<DrawManager>();
Universe.InstantiateUniverseObject().SetUniverseObject("Shape Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<ShapeBatcher>(); universe.InstantiateUniverseObject().SetUniverseObject("Shape Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<ShapeBatcher>();
Universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<SpriteBatcher>(); universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<SpriteBatcher>();
Universe.InstantiateUniverseObject().SetUniverseObject("Score Left") ////////////////////////////////////////////////////////////////////////////////////
universe.InstantiateUniverseObject().SetUniverseObject("Camera")
.BehaviourController.AddBehaviour<Transform2D>()
.BehaviourController.AddBehaviour<CameraController>()
.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>();
////////////////////////////////////////////////////////////////////////////////////
universe.InstantiateUniverseObject().SetUniverseObject("Score Left")
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f) .BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f)
.BehaviourController.AddBehaviour<TextScoreBehaviour>(true); .BehaviourController.AddBehaviour<TextScoreBehaviour>(true);
Universe.InstantiateUniverseObject().SetUniverseObject("Score Right") universe.InstantiateUniverseObject().SetUniverseObject("Score Right")
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f) .BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f)
.BehaviourController.AddBehaviour<TextScoreBehaviour>(false); .BehaviourController.AddBehaviour<TextScoreBehaviour>(false);
} }
Universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour<UpdateManager>(); universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour<UpdateManager>();
Universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour<CoroutineManager>(); universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour<CoroutineManager>();
Universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour<TweenManager>(); universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour<TweenManager>();
Universe.InstantiateUniverseObject().SetUniverseObject("Physics Engine 2D").BehaviourController.AddBehaviour<PhysicsEngine2D>(); universe.InstantiateUniverseObject().SetUniverseObject("Physics Engine 2D").BehaviourController.AddBehaviour<PhysicsEngine2D>();
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
Universe.InstantiateUniverseObject().SetUniverseObject("Camera") PongManagerBehaviour pongManager = universe.InstantiateUniverseObject().SetUniverseObject("Pong Game Manager")
.BehaviourController.AddBehaviour<Transform2D>()
.BehaviourController.AddBehaviour<CameraController>()
.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>();
////////////////////////////////////////////////////////////////////////////////////
PongManagerBehaviour pongManager = Universe.InstantiateUniverseObject().SetUniverseObject("Pong Game Manager")
.BehaviourController.AddBehaviour<PongManagerBehaviour>(5); .BehaviourController.AddBehaviour<PongManagerBehaviour>(5);
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
Universe.InstantiateUniverseObject().SetUniverseObject("Ball") universe.InstantiateUniverseObject().SetUniverseObject("Ball")
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f)) .BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f))
.BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f)) .BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f))
.BehaviourController.AddBehaviour<BallBehaviour>() .BehaviourController.AddBehaviour<BallBehaviour>()
.BehaviourController.AddBehaviour<RigidBody2D>(); .BehaviourController.AddBehaviour<RigidBody2D>();
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
IUniverseObject leftPaddle = UniverseObjectFactory.Instantiate().SetUniverseObject("Left Paddle"); IUniverseObject leftPaddle = UniverseObjectFactory.Instantiate().SetUniverseObject("Left Paddle");
leftPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-468f, 0f), scale: new Vector2D(15f, 60f)) leftPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-468f, 0f), scale: new Vector2D(15f, 60f))
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square) .BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true; .BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
PaddleBehaviour leftPaddleBehaviour = BehaviourFactory.Instantiate<PaddleBehaviour>(Keys.W, Keys.S, 228f, -228f, 400f); PaddleBehaviour leftPaddleBehaviour = BehaviourFactory.Instantiate<PaddleBehaviour>(Keys.W, Keys.S, 228f, -228f, 400f);
leftPaddleBehaviour.Id = "lp"; leftPaddleBehaviour.Id = "lp";
leftPaddle.BehaviourController.AddBehaviour(leftPaddleBehaviour); leftPaddle.BehaviourController.AddBehaviour(leftPaddleBehaviour);
Universe.Register(leftPaddle); universe.Register(leftPaddle);
IUniverseObject rightPaddle = UniverseObjectFactory.Instantiate().SetUniverseObject("Right Paddle"); IUniverseObject rightPaddle = UniverseObjectFactory.Instantiate().SetUniverseObject("Right Paddle");
rightPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(468f, 0f), scale: new Vector2D(15f, 60f)) rightPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(468f, 0f), scale: new Vector2D(15f, 60f))
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square) .BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true; .BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
PaddleBehaviour rightPaddleBehaviour = BehaviourFactory.Instantiate<PaddleBehaviour>(Keys.Up, Keys.Down, 228f, -228f, 400f); PaddleBehaviour rightPaddleBehaviour = BehaviourFactory.Instantiate<PaddleBehaviour>(Keys.Up, Keys.Down, 228f, -228f, 400f);
rightPaddleBehaviour.Id = "rp"; rightPaddleBehaviour.Id = "rp";
rightPaddle.BehaviourController.AddBehaviour(rightPaddleBehaviour); rightPaddle.BehaviourController.AddBehaviour(rightPaddleBehaviour);
Universe.Register(rightPaddle); universe.Register(rightPaddle);
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Top") universe.InstantiateUniverseObject().SetUniverseObject("Wall Top")
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, 308f), scale: new Vector2D(552f, 20f)) .BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, 308f), scale: new Vector2D(552f, 20f))
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square) .BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true; .BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Bottom") universe.InstantiateUniverseObject().SetUniverseObject("Wall Bottom")
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, -308f), scale: new Vector2D(552f, 20f)) .BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, -308f), scale: new Vector2D(552f, 20f))
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square) .BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true; .BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Right") universe.InstantiateUniverseObject().SetUniverseObject("Wall Right")
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(532f, 0f), scale: new Vector2D(20f, 328f)) .BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(532f, 0f), scale: new Vector2D(20f, 328f))
.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToLeft) .BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToLeft)
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square) .BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true; .BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Left") universe.InstantiateUniverseObject().SetUniverseObject("Wall Left")
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-532f, 0f), scale: new Vector2D(20f, 328f)) .BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-532f, 0f), scale: new Vector2D(20f, 328f))
.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToRight) .BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToRight)
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square) .BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true; .BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
return universe;
} }
} }