Renderer/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java
austin 3df3beafba
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
fix testing
2025-05-11 14:12:10 -04:00

93 lines
3.4 KiB
Java

package electrosphere.engine.loadingthreads;
import java.util.concurrent.TimeUnit;
import org.joml.Vector3d;
import electrosphere.auth.AuthenticationManager;
import electrosphere.client.ui.menu.MenuGenerators;
import electrosphere.client.ui.menu.WindowStrings;
import electrosphere.client.ui.menu.WindowUtils;
import electrosphere.engine.Globals;
import electrosphere.engine.signal.Signal.SignalType;
import electrosphere.logger.LoggerInterface;
import electrosphere.net.parser.net.message.TerrainMessage;
import electrosphere.net.server.player.Player;
import electrosphere.renderer.ui.elements.Window;
import electrosphere.server.db.DatabaseController;
import electrosphere.server.db.DatabaseUtils;
/**
* Loads the viewport
*/
public class ViewportLoading {
/**
* Loads the viewport
*/
protected static void loadViewport(Object[] params){
//
//show loading
Globals.signalSystem.post(SignalType.UI_MODIFICATION, ()->{
Window loadingWindow = (Window)Globals.elementService.getWindow(WindowStrings.WINDOW_LOADING);
WindowUtils.recursiveSetVisible(Globals.elementService.getWindow(WindowStrings.WINDOW_MENU_MAIN), false);
WindowUtils.replaceMainMenuContents(MenuGenerators.createEmptyMainMenu());
loadingWindow.setVisible(true);
});
//
//init realm manager with viewport realm
Globals.realmManager.createViewportRealm(new Vector3d(0,0,0), new Vector3d(16,16,16));
//
//connect client to server
LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT);
ViewportLoading.initInMemoryDB();
LoadingUtils.initAuthenticationManager(true);
Globals.clientUsername = "leveleditor";
Globals.clientPassword = AuthenticationManager.getHashedString("leveleditor");
LoadingUtils.initLocalConnection(true);
//wait for player object creation
while(Globals.playerManager.getPlayers().size() < 1){
try {
TimeUnit.MILLISECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//add player to viewport realm
Player localPlayer = Globals.playerManager.getFirstPlayer();
Globals.realmManager.first().getDataCellManager().addPlayerToRealm(localPlayer);
//initialize the "real" objects simulation
LoadingUtils.initMicroSimulation();
LoadingUtils.setSimulationsToReady();
LoggerInterface.loggerEngine.INFO("[Server]Finished loading level editor");
//request terrain data
Globals.clientConnection.queueOutgoingMessage(TerrainMessage.constructRequestMetadataMessage());
//block for client world data
while(Globals.clientWorldData == null){
try {
TimeUnit.MILLISECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//Run client startup process
ClientLoading.loadViewport(params);
}
/**
* Initializes an in-memory db
*/
private static void initInMemoryDB(){
Globals.dbController = new DatabaseController();
Globals.dbController.connect(DatabaseController.IN_MEMORY_PATH);
DatabaseUtils.runScript(Globals.dbController,"createTables.sql");
}
}