using Godot; public class IntegratedServer : Node { private SceneTree _sceneTree; public Server Server { get; private set; } public IntegratedServer() => Name = "IntegratedServer"; public override void _Ready() { _sceneTree = new SceneTree(); _sceneTree.Init(); _sceneTree.Root.RenderTargetUpdateMode = Godot.Viewport.UpdateMode.Disabled; var scene = GD.Load("res://scene/ServerScene.tscn").Init(); _sceneTree.Root.AddChild(scene, true); _sceneTree.CurrentScene = scene; Server = _sceneTree.Root.GetChild(0); // Spawn default blocks. for (var x = -6; x <= 6; x++) { var block = Server.Spawn(); block.Position = new BlockPos(x, 3); block.Color = Color.FromHsv(GD.Randf(), 0.1F, 1.0F); block.Unbreakable = true; } } public override void _Process(float delta) => _sceneTree.Idle(delta); public override void _PhysicsProcess(float delta) => _sceneTree.Iteration(delta); public override void _ExitTree() => _sceneTree.Finish(); }