Renderer/src/main/java/electrosphere/data/settings/UserSettings.java
austin f65d56d667
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
push settings into config
2025-05-15 15:19:52 -04:00

267 lines
6.8 KiB
Java

package electrosphere.data.settings;
import electrosphere.logger.LoggerInterface;
import electrosphere.util.FileUtils;
/**
* User-defined settings
*/
public class UserSettings {
//
//Gameplay settings
//
boolean gameplayGenerateWorld;
int gameplayPhysicsCellRadius;
//
//Display settings
//
int displayWidth;
int displayHeight;
boolean displayFullscreen;
//
//Graphics settings
//
//general
float graphicsFOV;
//performance
int graphicsPerformanceLODChunkRadius;
boolean graphicsPerformanceEnableVSync;
boolean graphicsPerformanceDrawShadows;
boolean graphicsPerformanceOIT;
/**
* Controls whether the foliage manager runs or not
*/
boolean graphicsPerformanceEnableFoliageManager;
//resolution to render at
//this will be scaled to displayWidth/displayHeight after rendering
int renderResolutionX;
int renderResolutionY;
//debug
//debug visuals
boolean graphicsDebugDrawCollisionSpheresClient;
boolean graphicsDebugDrawCollisionSpheresServer;
boolean graphicsDebugDrawPhysicsObjects;
boolean graphicsDebugDrawMovementVectors;
boolean graphicsDebugDrawNavmesh;
boolean graphicsDebugDrawGridAlignment;
//debug network
boolean netRunNetMonitor;
float graphicsViewRange;
public boolean gameplayGenerateWorld() {
return gameplayGenerateWorld;
}
public int getDisplayWidth() {
return displayWidth;
}
public int getDisplayHeight() {
return displayHeight;
}
public float getGraphicsFOV() {
return graphicsFOV;
}
public boolean graphicsPerformanceEnableVSync() {
return graphicsPerformanceEnableVSync;
}
public boolean graphicsPerformanceDrawShadows() {
return graphicsPerformanceDrawShadows;
}
public boolean getGraphicsDebugDrawCollisionSpheresClient() {
return graphicsDebugDrawCollisionSpheresClient;
}
public boolean getGraphicsDebugDrawCollisionSpheresServer() {
return graphicsDebugDrawCollisionSpheresServer;
}
public boolean graphicsDebugDrawPhysicsObjects() {
return graphicsDebugDrawPhysicsObjects;
}
public boolean graphicsDebugDrawMovementVectors() {
return graphicsDebugDrawMovementVectors;
}
public int getGameplayPhysicsCellRadius() {
return gameplayPhysicsCellRadius;
}
public int getGraphicsPerformanceLODChunkRadius() {
return graphicsPerformanceLODChunkRadius;
}
public float getGraphicsViewDistance(){
return graphicsViewRange;
}
public boolean graphicsDebugDrawNavmesh() {
return graphicsDebugDrawNavmesh;
}
public boolean displayFullscreen(){
return displayFullscreen;
}
public int getRenderResolutionX(){
return renderResolutionX;
}
public int getRenderResolutionY(){
return renderResolutionY;
}
public boolean getGraphicsPerformanceOIT(){
return graphicsPerformanceOIT;
}
public boolean getNetRunNetMonitor(){
return netRunNetMonitor;
}
public void setGraphicsDebugDrawCollisionSpheresClient(boolean draw){
this.graphicsDebugDrawCollisionSpheresClient = draw;
}
public void setGraphicsDebugDrawCollisionSpheresServer(boolean draw){
this.graphicsDebugDrawCollisionSpheresServer = draw;
}
public void setGraphicsDebugDrawPhysicsObjects(boolean draw){
this.graphicsDebugDrawPhysicsObjects = draw;
}
public void setGraphicsDebugDrawMovementVectors(boolean draw){
this.graphicsDebugDrawMovementVectors = draw;
}
public void setGraphicsDebugDrawNavmesh(boolean draw){
this.graphicsDebugDrawNavmesh = draw;
}
public void setGraphicsViewRange(float range){
graphicsViewRange = range;
}
public void setDisplayFullscreen(boolean fullscreen){
this.displayFullscreen = fullscreen;
}
/**
* Checks if the foliage manager is enabled or not
* @return true if enabled, false otherwise
*/
public boolean getGraphicsPerformanceEnableFoliageManager() {
return graphicsPerformanceEnableFoliageManager;
}
/**
* Sets if the foliage manager is enabled or not
* @param graphicsPerformanceEnableFoliageManager true if enabled, false otherwise
*/
public void setGraphicsPerformanceEnableFoliageManager(boolean graphicsPerformanceEnableFoliageManager) {
this.graphicsPerformanceEnableFoliageManager = graphicsPerformanceEnableFoliageManager;
}
/**
* Checks if should render the grid alignment data
* @return true if should render grid alignment data, false otherwise
*/
public boolean getGraphicsDebugDrawGridAlignment() {
return graphicsDebugDrawGridAlignment;
}
/**
* Sets whether to draw the grid alignment data or not
* @param graphicsDebugDrawGridAlignment true to render the data, false otherwise
*/
public void setGraphicsDebugDrawGridAlignment(boolean graphicsDebugDrawGridAlignment) {
this.graphicsDebugDrawGridAlignment = graphicsDebugDrawGridAlignment;
}
/**
* Generates a default settings file
* @return The settings file
*/
static UserSettings getDefault(){
UserSettings rVal = new UserSettings();
//display settings
rVal.displayHeight = 1080;
rVal.displayWidth = 1920;
rVal.displayFullscreen = true;
//gameplay settings
rVal.gameplayGenerateWorld = true;
rVal.gameplayPhysicsCellRadius = 2;
//graphics settings
rVal.graphicsDebugDrawCollisionSpheresClient = false;
rVal.graphicsDebugDrawCollisionSpheresServer = false;
rVal.graphicsDebugDrawMovementVectors = false;
rVal.graphicsDebugDrawPhysicsObjects = false;
rVal.graphicsDebugDrawNavmesh = false;
rVal.graphicsPerformanceLODChunkRadius = 5;
rVal.graphicsFOV = 90.0f;
rVal.graphicsPerformanceDrawShadows = true;
rVal.graphicsPerformanceEnableVSync = true;
rVal.graphicsPerformanceOIT = true;
rVal.graphicsPerformanceEnableFoliageManager = true;
rVal.renderResolutionX = 1920;
rVal.renderResolutionY = 1080;
//debug settings
rVal.netRunNetMonitor = false;
return rVal;
}
/**
* Loads the user's settings
*/
public static UserSettings loadUserSettings(){
LoggerInterface.loggerStartup.INFO("Load user settings");
UserSettings rVal = FileUtils.loadObjectFromAssetPath("/Config/settings.json", UserSettings.class);
if(rVal == null){
rVal = UserSettings.getDefault();
}
return rVal;
}
}