Renderer/src/main/java/electrosphere/client/ClientState.java
2025-06-04 11:53:42 -04:00

198 lines
5.2 KiB
Java

package electrosphere.client;
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.service.ClientTemporalService;
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.collision.PhysicsCallback;
import electrosphere.data.entity.common.CommonEntityType;
import electrosphere.data.voxel.VoxelType;
import electrosphere.engine.Globals;
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;
/**
* The number of open inventories
*/
public int openInventoriesCount = 0;
//
//Services
//
public final ClientTemporalService clientTemporalService;
/**
* Constructor
*/
public ClientState(){
this.clientSceneWrapper = new ClientSceneWrapper(this.clientScene, CollisionEngine.create("clientPhysics", new PhysicsCallback()), CollisionEngine.create("clientChem", new ClientChemistryCollisionCallback()), new CollisionEngine("clientInteraction"));
this.clientTemporalService = (ClientTemporalService)Globals.engineState.serviceManager.registerService(new ClientTemporalService());
}
}