From 009af5cc3eef85f1460121f3c5ce571b6d2f0976 Mon Sep 17 00:00:00 2001 From: austin Date: Sun, 18 May 2025 11:36:54 -0400 Subject: [PATCH] shuffling data --- .../electrosphere/client/ClientState.java | 6 --- .../ui/menu/editor/ImGuiStructureTab.java | 37 +++++++++++++------ .../data/block/fab/BlockFabMetadata.java | 20 ++++++++++ .../pipelines/debug/DebugContentPipeline.java | 16 +++++--- 4 files changed, 56 insertions(+), 23 deletions(-) diff --git a/src/main/java/electrosphere/client/ClientState.java b/src/main/java/electrosphere/client/ClientState.java index a3190206..98af799d 100644 --- a/src/main/java/electrosphere/client/ClientState.java +++ b/src/main/java/electrosphere/client/ClientState.java @@ -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 */ diff --git a/src/main/java/electrosphere/client/ui/menu/editor/ImGuiStructureTab.java b/src/main/java/electrosphere/client/ui/menu/editor/ImGuiStructureTab.java index 2d87787a..b6104c19 100644 --- a/src/main/java/electrosphere/client/ui/menu/editor/ImGuiStructureTab.java +++ b/src/main/java/electrosphere/client/ui/menu/editor/ImGuiStructureTab.java @@ -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"); + } } } diff --git a/src/main/java/electrosphere/data/block/fab/BlockFabMetadata.java b/src/main/java/electrosphere/data/block/fab/BlockFabMetadata.java index d7774dc4..1ee425de 100644 --- a/src/main/java/electrosphere/data/block/fab/BlockFabMetadata.java +++ b/src/main/java/electrosphere/data/block/fab/BlockFabMetadata.java @@ -15,6 +15,11 @@ public class BlockFabMetadata { */ private List 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; + } } diff --git a/src/main/java/electrosphere/renderer/pipelines/debug/DebugContentPipeline.java b/src/main/java/electrosphere/renderer/pipelines/debug/DebugContentPipeline.java index 9f5cebba..bc69dbab 100644 --- a/src/main/java/electrosphere/renderer/pipelines/debug/DebugContentPipeline.java +++ b/src/main/java/electrosphere/renderer/pipelines/debug/DebugContentPipeline.java @@ -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