explicit ServerState object
Some checks reported errors
studiorailgun/Renderer/pipeline/head Something is wrong with the build of this commit

This commit is contained in:
austin 2025-05-15 12:57:56 -04:00
parent 56ffc5b879
commit 4e488e43cd
15 changed files with 51 additions and 29 deletions

View File

@ -1811,6 +1811,7 @@ Move playerEntity to clientState
Move playerCamera to clientState
Move global cursor entities into cursorState
Move lots of global state to clientState
Create ServerState global

View File

@ -143,8 +143,8 @@ public class ImGuiPlayerEntity {
ImGui.text("View yaw (Server): " + ServerPlayerViewDirTree.getTree(serverPlayerEntity).getYaw());
ImGui.text("View pitch (Server): " + ServerPlayerViewDirTree.getTree(serverPlayerEntity).getPitch());
}
if(Globals.server != null && Globals.server.getFirstConnection() != null && Globals.server.getFirstConnection().getPlayer() != null){
ImGui.text("Player Object World Pos (Server): " + Globals.server.getFirstConnection().getPlayer().getWorldPos());
if(Globals.serverState.server != null && Globals.serverState.server.getFirstConnection() != null && Globals.serverState.server.getFirstConnection().getPlayer() != null){
ImGui.text("Player Object World Pos (Server): " + Globals.serverState.server.getFirstConnection().getPlayer().getWorldPos());
}
}

View File

@ -54,8 +54,8 @@ public class ImGuiNetworkMonitor {
clientNetworkBandwith.draw();
//server network pressure
if(Globals.server != null && Globals.server.getFirstConnection() != null){
long serverPressureNewTotal = Globals.server.getFirstConnection().getNumBytesRead();
if(Globals.serverState.server != null && Globals.serverState.server.getFirstConnection() != null){
long serverPressureNewTotal = Globals.serverState.server.getFirstConnection().getNumBytesRead();
long serverPressureDelta = serverPressureNewTotal - serverPressureLastValue;
serverPressureDataset.addPoint(serverPressureDelta);
serverPressureLastValue = serverPressureNewTotal;

View File

@ -382,7 +382,7 @@ public class MenuGeneratorsInGame {
* @return True if should show button, false otherwise
*/
private static boolean shouldShowLevelEditor(){
return Globals.server != null;
return Globals.serverState.server != null;
}
}

View File

@ -41,7 +41,6 @@ import electrosphere.engine.time.Timekeeper;
import electrosphere.logger.LoggerInterface;
import electrosphere.net.config.NetConfig;
import electrosphere.net.monitor.NetMonitor;
import electrosphere.net.server.Server;
import electrosphere.net.server.player.PlayerManager;
import electrosphere.net.synchronization.server.EntityValueTrackingService;
import electrosphere.net.synchronization.server.ServerSynchronizationManager;
@ -60,6 +59,7 @@ import electrosphere.renderer.ui.ElementService;
import electrosphere.renderer.ui.elements.ImagePanel;
import electrosphere.renderer.ui.font.FontManager;
import electrosphere.script.ScriptEngine;
import electrosphere.server.ServerState;
import electrosphere.server.ai.AIManager;
import electrosphere.server.datacell.EntityDataCellMapper;
import electrosphere.server.datacell.RealmManager;
@ -166,7 +166,6 @@ public class Globals {
//
//Server manager thing
//
public static Server server;
public static ServerSynchronizationManager serverSynchronizationManager;
public static boolean RUN_SERVER = true;
@ -353,6 +352,10 @@ public class Globals {
*/
public static ClientState clientState = new ClientState();
/**
* State for the server
*/
public static ServerState serverState = new ServerState();
@ -415,6 +418,9 @@ public class Globals {
//client state
Globals.clientState = new ClientState();
//server state
Globals.serverState = new ServerState();
//load in default texture map
textureMapDefault = TextureMap.construct("Textures/default_texture_map.json");
//load model pretransforms
@ -630,7 +636,7 @@ public class Globals {
public static void unloadScene(){
Globals.playerManager = new PlayerManager();
Globals.clientState = new ClientState();
Globals.server = null;
Globals.serverState = new ServerState();
Globals.serverSynchronizationManager = new ServerSynchronizationManager();
if(Globals.aiManager != null){
Globals.aiManager.shutdown();
@ -656,13 +662,13 @@ public class Globals {
Globals.elementService = null;
Globals.realmManager = null;
Globals.clientState = null;
Globals.serverState = null;
Globals.audioEngine = null;
Globals.renderingEngine = null;
Globals.threadManager = null;
Globals.signalSystem = null;
Globals.serviceManager = null;
Globals.fileWatcherService = null;
Globals.server = null;
Globals.serverSynchronizationManager = null;
Globals.aiManager = null;
Globals.playerManager = null;

View File

@ -50,8 +50,8 @@ public class LoadingUtils {
static void initServerThread(){
//start server networking
if(Globals.RUN_SERVER){
Globals.server = new Server(NetUtils.getPort());
Thread serverThread = new Thread(Globals.server);
Globals.serverState.server = new Server(NetUtils.getPort());
Thread serverThread = new Thread(Globals.serverState.server);
Globals.threadManager.start(ThreadLabel.NETWORKING_SERVER, serverThread);
}
}
@ -88,7 +88,7 @@ public class LoadingUtils {
if(runServerThread){
LoadingUtils.initServerThread();
} else {
Globals.server = new Server(NetUtils.getPort());
Globals.serverState.server = new Server(NetUtils.getPort());
}
//client -> server pipe
PipedInputStream clientInput = new PipedInputStream(STREAM_BUFFER_SIZE);
@ -98,7 +98,7 @@ public class LoadingUtils {
PipedOutputStream clientOutput;
clientOutput = new PipedOutputStream(serverInput);
//start server communication thread
rVal = Globals.server.addLocalPlayer(serverInput, serverOutput);
rVal = Globals.serverState.server.addLocalPlayer(serverInput, serverOutput);
//start client communication thread
Globals.clientState.clientConnection = new ClientNetworking(clientInput,clientOutput);
Globals.threadManager.start(ThreadLabel.NETWORKING_CLIENT, new Thread(Globals.clientState.clientConnection));

View File

@ -60,8 +60,8 @@ public class MainMenuLoading {
* Resets the server state
*/
private static void resetServerState(){
Globals.server.close();
Globals.server = null;
Globals.serverState.server.close();
Globals.serverState.server = null;
Globals.serverSynchronizationManager = null;
Globals.realmManager.reset();
Globals.realmManager = new RealmManager();

View File

@ -145,8 +145,8 @@ public class ThreadManager {
threadLock.lock();
//for some reason, server must be explicitly closed
if(Globals.server != null){
Globals.server.close();
if(Globals.serverState.server != null){
Globals.serverState.server.close();
}
if(Globals.realmManager != null && Globals.realmManager.getRealms() != null){

View File

@ -119,7 +119,7 @@ public class Server implements Runnable {
}
this.close();
//null out global state
Globals.server = null;
Globals.serverState.server = null;
LoggerInterface.loggerNetworking.INFO("Server socket thread ended");
}

View File

@ -230,7 +230,7 @@ public class ServerConnectionHandler implements Runnable {
initialized = true;
while(Globals.threadManager.shouldKeepRunning() && this.isConnected == true && Globals.server != null && Globals.server.isOpen()){
while(Globals.threadManager.shouldKeepRunning() && this.isConnected == true && Globals.serverState.server != null && Globals.serverState.server.isOpen()){
boolean receivedMessageThisLoop = false;
//
@ -494,8 +494,8 @@ public class ServerConnectionHandler implements Runnable {
this.synchronousMessageLock.release();
this.isConnected = false;
//add connection to server list of connections to cleanup
if(Globals.server != null){
Globals.server.addClientToCleanup(this);
if(Globals.serverState.server != null){
Globals.serverState.server.addClientToCleanup(this);
}
}

View File

@ -16,15 +16,15 @@ public class MainServerFunctions {
//
//Cleanup disconnected clients
if(Globals.server != null){
Globals.server.cleanupDeadConnections();
if(Globals.serverState.server != null){
Globals.serverState.server.cleanupDeadConnections();
}
//
//Synchronous player message parsing\
Globals.profiler.beginCpuSample("MainServerFunctions.simulate - Server synchronous packet parsing");
if(Globals.server != null){
Globals.server.synchronousPacketHandling();
if(Globals.serverState.server != null){
Globals.serverState.server.synchronousPacketHandling();
}
Globals.profiler.endCpuSample();
Globals.profiler.beginCpuSample("MainServerFunctions.simulate - Server process synchronization messages");

View File

@ -0,0 +1,15 @@
package electrosphere.server;
import electrosphere.net.server.Server;
/**
* Server state
*/
public class ServerState {
/**
* Server networking
*/
public Server server;
}

View File

@ -21,12 +21,12 @@ public class StateCleanupCheckerExtension implements AfterEachCallback {
Globals.renderingEngine,
Globals.audioEngine,
Globals.javaPID,
Globals.server,
Globals.serverSynchronizationManager,
Globals.playerManager,
LoggerInterface.loggerEngine,
RenderingEngine.screenFramebuffer,
Globals.clientState,
Globals.serverState,
};
for(Object object : objectsToCheck){
if(object != null){

View File

@ -163,7 +163,7 @@ public class TestEngineUtils {
*/
public static void spawnPlayerEntity(){
ObjectTemplate creatureTemplate = ObjectTemplate.createDefault(EntityType.CREATURE, "human");
ServerConnectionHandler serverConnection = Globals.server.getFirstConnection();
ServerConnectionHandler serverConnection = Globals.serverState.server.getFirstConnection();
serverConnection.setCreatureTemplate(creatureTemplate);
Character chara = Globals.characterService.createCharacter(creatureTemplate, serverConnection.getPlayerId());
serverConnection.setCharacterId(chara.getId());

View File

@ -34,7 +34,7 @@ public class TestViewportUtils {
Entity creature = CreatureUtils.serverSpawnBasicCreature(Globals.realmManager.first(), new Vector3d(0,0,0), creatureType, creatureTemplate);
//get required data
ServerConnectionHandler connectionHandler = Globals.server.getFirstConnection();
ServerConnectionHandler connectionHandler = Globals.serverState.server.getFirstConnection();
Player playerObj = Globals.playerManager.getFirstPlayer();
//attach