private static void _server_Started() { var world = new World(); var commandRecorder = new EntityCommandRecorder(); var scene = new Scene("Server", world, commandRecorder); var networkedEntities = new NetworkedEntities(world); var physicsSystem = new PhysicsSystem(); var editors = new List <IEditor>() { //new EditorConsole(_client.Scene), new SelectedEntitySystem(world), new EntityInspector(world), new EntityList(world), new SystemList(scene), new AverageMetricValue(), new MetricGraph() }; _editorMenu.AddEditorSet("Server", editors); scene.AddSystems(editors); var parallelRunner = new DefaultParallelRunner(4); var serverSystem = new ServerSystem(world, _messageTargetMap); serverSystem.AddListener(new TransformMessageApplier(networkedEntities)); serverSystem.AddListener(new InputForceApplier(physicsSystem, world)); serverSystem.AddListener(new SimpleCameraMover(physicsSystem, networkedEntities)); serverSystem.AddListener(new VoxelEditReceiver(physicsSystem)); serverSystem.AddListener(new VoxelSpaceLoadReciever(world)); scene.AddSystem(serverSystem); var voxelTypes = LoadVoxelTypes(); var worldVoxelSpace = world.CreateEntity(); worldVoxelSpace.Set(new NetworkedEntity() { Id = Guid.NewGuid() }); worldVoxelSpace.Set(new Transform(worldVoxelSpace)); worldVoxelSpace.Set(new VoxelSpace(32, 1, worldVoxelSpace)); worldVoxelSpace.Set(new EntityMetaData() { Name = "Voxel Space" }); scene.AddSystem(new WorldSpaceLoader((e) => { }, world, worldVoxelSpace, 4, 3, 32)); scene.AddSystem(new ChunkGeneratorSystem(commandRecorder, parallelRunner, new ChunkGenerator(), world)); scene.AddSystem(new VoxelSpaceExpanderSystem((e) => { }, world)); scene.AddSystem(new PhysicsBlockFinder(world, parallelRunner)); scene.AddSystem(new VoxelSpaceChangePropogator(world)); scene.AddSystem(new VoxelStaticBodyGenerator(physicsSystem, world)); scene.AddSystem(new VoxelSpaceDynamicBodyGenerator(physicsSystem, world)); scene.AddSystem(physicsSystem); scene.AddSystem(new DynamicBodyPositionSync(world)); scene.AddSystem(new CharacterInputSystem(physicsSystem, world)); scene.AddSystem(new EntityRemovalSync(world)); scene.AddSystem(new ClientEntityAssignmentSystem()); scene.AddSystem(new TransformChangeServerSystem(world)); scene.AddSystem(new VoxelSpaceAddedServerSystem(world)); scene.AddSystem(new VoxelGridExistenceServerSystem(world)); scene.AddSystem(new VoxelGridChangeServerSystem(world)); scene.AddSystem(new ComponentSyncServerSystem <EntityMetaData>(world)); scene.AddSystem(new FlagClearingSystem <NeighbourMemberChanged>(world)); _server.SetScene(scene); }