diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/GUI.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/GUI.java index 2ea9375e..2cae68d6 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/GUI.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/GUI.java @@ -26,6 +26,14 @@ public interface GUI extends Renderable, Disposable, KeyEventHandler { Window inflateWindow(String widgetUid); + boolean isVisible(); + + void setVisible(boolean visible); + + void show(); + + void hide(); + Widget getRoot(); void setRoot(Widget root); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGGUI.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGGUI.java index ae77129b..740a99a5 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGGUI.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGGUI.java @@ -47,6 +47,8 @@ public class NanoVGGUI implements GUI { private final Set loadedFonts = new HashSet<>(); private final Map loadedImages = new HashMap<>(); + private boolean visible = true; + public void init(Screen screen) { nvg = nvgCreate(NVG_ANTIALIAS | NVG_STENCIL_STROKES); @@ -59,6 +61,10 @@ public class NanoVGGUI implements GUI { @Override public void render(Screen screen, Camera camera, ShaderManager shaderManager) { + if (!visible) { + return; + } + nvgBeginFrame(nvg, screen.getWidth(), screen.getHeight(), 1); screenWidget.draw(screen, this); @@ -80,6 +86,26 @@ public class NanoVGGUI implements GUI { return inflater.inflateWindow(is, context, this); } + @Override + public boolean isVisible() { + return visible; + } + + @Override + public void setVisible(boolean visible) { + this.visible = visible; + } + + @Override + public void show() { + this.visible = true; + } + + @Override + public void hide() { + this.visible = false; + } + @Override public Widget getRoot() { return screenWidget.getRoot();