shuffling data
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2025-05-18 11:36:54 -04:00
parent 5ca9310d3e
commit 009af5cc3e
4 changed files with 56 additions and 23 deletions

View File

@ -19,7 +19,6 @@ 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.block.fab.StructureMetadata;
import electrosphere.data.common.CommonEntityType;
import electrosphere.data.voxel.VoxelType;
import electrosphere.entity.Entity;
@ -188,11 +187,6 @@ public class ClientState {
*/
public int openInventoriesCount = 0;
/**
* The currently selected structure's data
*/
public StructureMetadata currentStructureData;
/**
* Constructor
*/

View File

@ -9,6 +9,7 @@ import electrosphere.client.block.solver.RoomSolver;
import electrosphere.client.interact.select.AreaSelection;
import electrosphere.data.block.fab.BlockFab;
import electrosphere.data.block.fab.BlockFabMetadata;
import electrosphere.data.block.fab.RoomMetadata;
import electrosphere.data.block.fab.StructureMetadata;
import electrosphere.engine.Globals;
import imgui.ImGui;
@ -35,19 +36,12 @@ public class ImGuiStructureTab {
}
} else {
BlockFab currentFab = Globals.clientState.clientLevelEditorData.getCurrentFab();
if(Globals.clientState.currentStructureData == null){
if(ImGui.button("Create Structure Data")){
Globals.clientState.currentStructureData = StructureMetadata.create(Globals.cursorState.getAreaSelection());
}
if(ImGui.button("Create Structure Data")){
StructureMetadata structureData = StructureMetadata.create(Globals.cursorState.getAreaSelection());
currentFab.getFabMetadata().setStructureData(structureData);
}
if(Globals.clientState.currentStructureData != null && ImGui.button("Calculate Rooms")){
RoomSolver.computeRoomsFromSelection(Globals.cursorState.getAreaSelection(),Globals.clientState.currentStructureData);
}
if(ImGui.button("Convert current selection to room")){
AreaSelection currentSelection = Globals.cursorState.getAreaSelection();
if(currentSelection != null){
currentFab.getFabMetadata().getAreas().add(currentSelection);
}
if(currentFab.getFabMetadata().getStructureData() != null && ImGui.button("Calculate Rooms")){
RoomSolver.computeRoomsFromSelection(Globals.cursorState.getAreaSelection(),currentFab.getFabMetadata().getStructureData());
}
if(ImGui.button("Save")){
File exportLoc = new File("./assets/Data/fab/struct.block");
@ -79,6 +73,25 @@ public class ImGuiStructureTab {
} else {
ImGui.text("Areas undefined in metadata");
}
if(fabMetadata.getStructureData() != null){
StructureMetadata structureMetadata = fabMetadata.getStructureData();
if(ImGui.collapsingHeader("Rooms in structure: " + structureMetadata.getRooms().size())){
int i = 0;
ImGui.indent();
for(RoomMetadata room : structureMetadata.getRooms()){
if(ImGui.collapsingHeader("Room " + i)){
ImGui.indent();
ImGui.text("Entry points: " + room.getEntryPoints().size());
ImGui.text("Furniture slots: " + room.getFurnitureSlots().size());
ImGui.unindent();
}
i++;
}
ImGui.unindent();
}
} else {
ImGui.text("Structure Data undefined in metadata");
}
}
}

View File

@ -15,6 +15,11 @@ public class BlockFabMetadata {
*/
private List<AreaSelection> areas;
/**
* The structure metadata for the fab
*/
private StructureMetadata structureData;
/**
* Constructor
*/
@ -38,5 +43,20 @@ public class BlockFabMetadata {
this.areas = areas;
}
/**
* Gets the structure data for the fab
* @return The structure data
*/
public StructureMetadata getStructureData(){
return structureData;
}
/**
* Sets the structure data for the fab
* @param structureMetadata The structure data
*/
public void setStructureData(StructureMetadata structureData){
this.structureData = structureData;
}
}

View File

@ -19,6 +19,7 @@ import electrosphere.collision.PhysicsUtils;
import electrosphere.collision.collidable.Collidable;
import electrosphere.data.block.fab.FurnitureSlotMetadata;
import electrosphere.data.block.fab.RoomMetadata;
import electrosphere.data.block.fab.StructureMetadata;
import electrosphere.data.collidable.CollidableTemplate;
import electrosphere.data.collidable.HitboxData;
import electrosphere.data.common.CommonEntityType;
@ -105,14 +106,19 @@ public class DebugContentPipeline implements RenderPipeline {
}
//render current structure data
if(Globals.clientState.currentStructureData != null){
if(Globals.clientState.currentStructureData.getBoundingArea() != null){
if(
Globals.clientState.clientLevelEditorData.getCurrentFab() != null &&
Globals.clientState.clientLevelEditorData.getCurrentFab().getFabMetadata() != null &&
Globals.clientState.clientLevelEditorData.getCurrentFab().getFabMetadata().getStructureData() != null
){
StructureMetadata structureData = Globals.clientState.clientLevelEditorData.getCurrentFab().getFabMetadata().getStructureData();
if(structureData.getBoundingArea() != null){
DebugContentPipeline.renderAreaSelection(
openGLState, renderPipelineState, modelTransformMatrix,
Globals.clientState.currentStructureData.getBoundingArea(), AssetDataStrings.TEXTURE_RED_TRANSPARENT
structureData.getBoundingArea(), AssetDataStrings.TEXTURE_RED_TRANSPARENT
);
if(Globals.clientState.currentStructureData.getRooms() != null){
for(RoomMetadata roomArea : Globals.clientState.currentStructureData.getRooms()){
if(structureData.getRooms() != null){
for(RoomMetadata roomArea : structureData.getRooms()){
DebugContentPipeline.renderAreaSelection(
openGLState, renderPipelineState, modelTransformMatrix,
roomArea.getArea(), AssetDataStrings.TEXTURE_TEAL_TRANSPARENT