From 840d325b1f584e1af87fb5ae29024c937204f5a5 Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 3 Apr 2025 15:16:18 -0400 Subject: [PATCH] fix toolbar unequip bug --- docs/src/progress/renderertodo.md | 1 + .../menu/debug/entity/ImGuiEntityMacros.java | 6 +++++ .../debug/entity/ImGuiEntityToolbarTab.java | 27 +++++++++++++++++++ .../state/equip/ClientToolbarState.java | 3 +++ 4 files changed, 37 insertions(+) create mode 100644 src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityToolbarTab.java diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 97c46e9a..1b1493ca 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1424,6 +1424,7 @@ Update ServerEntityUtils.repositionEntityRecursive behavior Add bush entity Add bushes to forest biome Make foliage data files recursive +Fix bug with toolbar not unequipping items when moving to empty slot diff --git a/src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityMacros.java b/src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityMacros.java index 7dbd2edb..e01867dd 100644 --- a/src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityMacros.java +++ b/src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityMacros.java @@ -18,6 +18,7 @@ import electrosphere.entity.state.AnimationPriorities; import electrosphere.entity.state.attach.AttachUtils; import electrosphere.entity.state.client.firstPerson.FirstPersonTree; import electrosphere.entity.state.equip.ClientEquipState; +import electrosphere.entity.state.equip.ClientToolbarState; import electrosphere.entity.state.foliage.AmbientFoliage; import electrosphere.entity.state.hitbox.HitboxCollectionState; import electrosphere.entity.state.server.ServerPlayerViewDirTree; @@ -68,6 +69,7 @@ public class ImGuiEntityMacros { private static boolean showServerViewDirTab = false; //show server view dir private static boolean showPhysicsTab = false; //show physics values private static boolean showFoliageTab = false; //show foliage data + private static boolean showToolbarTab = false; //show toolbar data private static boolean showDebugActionsTab = false; //show debug actions /** @@ -182,6 +184,9 @@ public class ImGuiEntityMacros { if(CommonEntityUtils.getCommonData(detailViewEntity) instanceof FoliageType && ImGui.checkbox("Foliage Data", showFoliageTab)){ showFoliageTab = !showFoliageTab; } + if(ClientToolbarState.getClientToolbarState(detailViewEntity) != null && ImGui.checkbox("Toolbar Data", showToolbarTab)){ + showToolbarTab = !showToolbarTab; + } if(ImGui.checkbox("Debug Actions", showDebugActionsTab)){ showDebugActionsTab = !showDebugActionsTab; } @@ -198,6 +203,7 @@ public class ImGuiEntityMacros { ImGuiEntityMacros.drawServerViewDir(); ImGuiEntityPhysicsTab.drawPhysicsView(showPhysicsTab, detailViewEntity); ImGuiEntityFoliageTab.drawFoliageView(showFoliageTab, detailViewEntity); + ImGuiEntityToolbarTab.drawToolbarTab(showToolbarTab, detailViewEntity); ImGuiEntityDebugActions.drawDebugActions(showDebugActionsTab, detailViewEntity); ImGuiEntityMacros.drawDataView(); } diff --git a/src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityToolbarTab.java b/src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityToolbarTab.java new file mode 100644 index 00000000..5e0d5c56 --- /dev/null +++ b/src/main/java/electrosphere/client/ui/menu/debug/entity/ImGuiEntityToolbarTab.java @@ -0,0 +1,27 @@ +package electrosphere.client.ui.menu.debug.entity; + +import electrosphere.entity.Entity; +import electrosphere.entity.state.equip.ClientToolbarState; +import imgui.ImGui; + +/** + * Debug menu for toolbar state + */ +public class ImGuiEntityToolbarTab { + + /** + * Client scene entity view + */ + protected static void drawToolbarTab(boolean show, Entity detailViewEntity){ + if(show && ImGui.collapsingHeader("Toolbar Data")){ + ClientToolbarState clientToolbarState = ClientToolbarState.getClientToolbarState(detailViewEntity); + ImGui.indent(); + if(detailViewEntity != null && clientToolbarState != null){ + ImGui.text("Selected slot: " + clientToolbarState.getSelectedSlot()); + ImGui.text("Selected item: " + clientToolbarState.getCurrentPrimaryItem()); + } + ImGui.unindent(); + } + } + +} diff --git a/src/main/java/electrosphere/entity/state/equip/ClientToolbarState.java b/src/main/java/electrosphere/entity/state/equip/ClientToolbarState.java index 62c6f592..f0b6d151 100644 --- a/src/main/java/electrosphere/entity/state/equip/ClientToolbarState.java +++ b/src/main/java/electrosphere/entity/state/equip/ClientToolbarState.java @@ -232,6 +232,9 @@ public class ClientToolbarState implements BehaviorTree { FirstPersonTree.conditionallyInterruptAnimation(parent, animation); } } + + //null out the attached entity + this.equippedEntity = null; } }