From 557b6da7defa56bcb3f6a9fcf8a4283448b1c673 Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 29 May 2025 18:57:00 -0400 Subject: [PATCH] potential window fix --- docs/src/progress/renderertodo.md | 1 + .../renderer/ui/elements/Window.java | 30 +++++++++++-------- .../renderer/ui/elementtypes/Element.java | 5 ++++ 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 8f944bb0..bc8870c1 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -2068,6 +2068,7 @@ Fix string carousels Fix sprint animation data Color uniform on meshes Fall and gravity tree fixes +Potential window fix diff --git a/src/main/java/electrosphere/renderer/ui/elements/Window.java b/src/main/java/electrosphere/renderer/ui/elements/Window.java index d3322ca3..24d3cfff 100644 --- a/src/main/java/electrosphere/renderer/ui/elements/Window.java +++ b/src/main/java/electrosphere/renderer/ui/elements/Window.java @@ -94,13 +94,24 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme * NOTE: It should always be set to the current size of the window (width, height) * NOTE: It is updated every time the applyYoga function is called */ - long parentWindowYogaNode = -1; + long parentWindowYogaNode = Element.UNINITIALIZED_ID; /** * The frame decoration texture path */ String frameDecoration = AssetDataStrings.UI_FRAME_TEXTURE_DEFAULT_1; + public int width = 1; + public int height = 1; + + public int absoluteX = 0; + public int absoluteY = 0; + + public boolean visible = false; + + //the yoga node id + long yogaNode = Element.UNINITIALIZED_ID; + /** * Constructor * @param showDecorations @@ -376,14 +387,6 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme Yoga.YGNodeStyleSetMinHeightPercent(yogaNode, percent); } - public int width = 1; - public int height = 1; - - public int absoluteX = 0; - public int absoluteY = 0; - - public boolean visible = false; - public int getWidth() { return width; } @@ -432,9 +435,6 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme Yoga.YGNodeStyleSetMargin(this.yogaNode, Yoga.YGEdgeLeft, marginLeft); } - //the yoga node id - long yogaNode = -1; - @Override public long getYogaNode() { return yogaNode; @@ -634,6 +634,12 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme if(child.getParent() != null){ throw new Error("Child has a parent!"); } + if(parentWindowYogaNode == Element.UNINITIALIZED_ID){ + throw new Error("parent id undefined! " + parentWindowYogaNode); + } + if(yogaNode == Element.UNINITIALIZED_ID){ + throw new Error("window yoga id undefined! " + yogaNode); + } childList.add(child); child.setParent(this); if(child instanceof DrawableElement){ diff --git a/src/main/java/electrosphere/renderer/ui/elementtypes/Element.java b/src/main/java/electrosphere/renderer/ui/elementtypes/Element.java index 391e079b..4a7dc2a2 100644 --- a/src/main/java/electrosphere/renderer/ui/elementtypes/Element.java +++ b/src/main/java/electrosphere/renderer/ui/elementtypes/Element.java @@ -6,6 +6,11 @@ import electrosphere.renderer.ui.events.Event; public interface Element { + /** + * An uninitialized yoga node + */ + public static final long UNINITIALIZED_ID = -1; + /** * A yoga element that either hasn't been created or has already been destroyed */