Renderer/src/main/java/electrosphere/client/ClientState.java
2025-05-18 12:45:03 -04:00

198 lines
5.1 KiB
Java

package electrosphere.client;
import java.util.ArrayList;
import org.joml.Vector3f;
import electrosphere.client.block.ClientBlockManager;
import electrosphere.client.block.cells.ClientBlockCellManager;
import electrosphere.client.chemistry.ClientChemistryCollisionCallback;
import electrosphere.client.entity.character.ClientCharacterManager;
import electrosphere.client.fluid.cells.FluidCellManager;
import electrosphere.client.fluid.manager.ClientFluidManager;
import electrosphere.client.player.ClientPlayerData;
import electrosphere.client.scene.ClientLevelEditorData;
import electrosphere.client.scene.ClientSceneWrapper;
import electrosphere.client.scene.ClientWorldData;
import electrosphere.client.sim.ClientSimulation;
import electrosphere.client.terrain.cells.ClientDrawCellManager;
import electrosphere.client.terrain.foliage.FoliageCellManager;
import electrosphere.client.terrain.manager.ClientTerrainManager;
import electrosphere.collision.CollisionEngine;
import electrosphere.data.entity.common.CommonEntityType;
import electrosphere.data.voxel.VoxelType;
import electrosphere.entity.Entity;
import electrosphere.entity.scene.Scene;
import electrosphere.net.client.ClientNetworking;
import electrosphere.net.server.player.Player;
import electrosphere.net.synchronization.client.ClientSynchronizationManager;
/**
* State on the client
*/
public class ClientState {
/**
* Data on the currently loaded world
*/
public ClientWorldData clientWorldData;
/**
* The scene on the client
*/
public final Scene clientScene = new Scene();
/**
* The client scene wrapper
*/
public ClientSceneWrapper clientSceneWrapper;
/**
* The client simulation
*/
public ClientSimulation clientSimulation;
/**
* The synchronization manager on the client
*/
public final ClientSynchronizationManager clientSynchronizationManager = new ClientSynchronizationManager();
/**
* The client network connection
*/
public ClientNetworking clientConnection;
/**
* The foliage cell manager
*/
public FoliageCellManager foliageCellManager;
/**
* Manages characters on the client
*/
public final ClientCharacterManager clientCharacterManager = new ClientCharacterManager();
/**
* Manages terrain data on client
*/
public final ClientTerrainManager clientTerrainManager = new ClientTerrainManager();
/**
* Manages fluid data on client
*/
public final ClientFluidManager clientFluidManager = new ClientFluidManager();
/**
* Manages block data on client
*/
public final ClientBlockManager clientBlockManager = new ClientBlockManager();
/**
* Terrain cell manager
*/
public ClientDrawCellManager clientDrawCellManager;
/**
* Block cell manager
*/
public ClientBlockCellManager clientBlockCellManager;
/**
* The fluid cell manager
*/
public FluidCellManager fluidCellManager;
/**
* client level editor data management
*/
public final ClientLevelEditorData clientLevelEditorData = new ClientLevelEditorData();
/**
* client current selected voxel type
*/
public VoxelType clientSelectedVoxelType = null;
/**
* the selected type of entity to spawn
*/
public CommonEntityType selectedSpawntype = null;
/**
* Client player data
*/
public Player clientPlayer;
/**
* Current auth username
*/
public String clientUsername;
/**
* Current auth password
*/
public String clientPassword;
/**
* client player data
*/
public final ClientPlayerData clientPlayerData = new ClientPlayerData();
/**
* The client side equivalent of this client's entity on the server
*/
public Entity playerEntity;
/**
* the entity for the first person model (view model)
*/
public Entity firstPersonEntity;
/**
* the player camera entity
*/
public Entity playerCamera;
/**
* The target of the interaction
*/
public Entity interactionTarget = null;
/**
* skybox entity
*/
public Entity skybox;
/**
* The inventory entity currently being dragged
*/
public Entity draggedItem = null;
/**
* The source inventory of the currently dragged inventory item
*/
public Object dragSourceInventory = null;
/**
* The target container to drop the dragged inventory entity into
*/
public Entity targetContainer = null;
//famous fuckin last words, but temporary solution
//global arraylist of values for the skybox colors
//edit(6/1/21): :upside_down_smile:
public ArrayList<Vector3f> skyboxColors = new ArrayList<Vector3f>();
/**
* The number of open inventories
*/
public int openInventoriesCount = 0;
/**
* Constructor
*/
public ClientState(){
this.clientSceneWrapper = new ClientSceneWrapper(this.clientScene, new CollisionEngine(), CollisionEngine.create(new ClientChemistryCollisionCallback()), new CollisionEngine());
}
}