From 05de3b0797ea2e41462a3a419bccc998c77a30dd Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Mon, 10 Apr 2023 06:05:41 +0200 Subject: GraphUI: Container (Group, Scene): Add removeAllShapes() and expose frustum-culling get/set --- .../classes/com/jogamp/graph/ui/Container.java | 9 +++++++++ src/graphui/classes/com/jogamp/graph/ui/Group.java | 21 ++++++++++++++++++++- src/graphui/classes/com/jogamp/graph/ui/Scene.java | 16 ++++++++++++++-- 3 files changed, 43 insertions(+), 3 deletions(-) (limited to 'src/graphui/classes/com/jogamp/graph/ui') diff --git a/src/graphui/classes/com/jogamp/graph/ui/Container.java b/src/graphui/classes/com/jogamp/graph/ui/Container.java index e48476fcf..3cc8e2ce4 100644 --- a/src/graphui/classes/com/jogamp/graph/ui/Container.java +++ b/src/graphui/classes/com/jogamp/graph/ui/Container.java @@ -56,10 +56,19 @@ public interface Container { /** Removes all given shapes, w/o {@link Shape#destroy(com.jogamp.opengl.GL2ES2, com.jogamp.graph.curve.opengl.RegionRenderer) destroying} them. */ void removeShapes(Collection shapes); + /** Removes all contained shapes, w/o {@link Shape#destroy(com.jogamp.opengl.GL2ES2, com.jogamp.graph.curve.opengl.RegionRenderer) destroying} them. */ + void removeAllShapes(); + boolean contains(Shape s); AABBox getBounds(final PMVMatrix pmv, Shape shape); + /** Enable or disable {@link PMVMatrix#getFrustum()} culling per {@link Shape}. Default is disabled. */ + void setFrustumCullingEnabled(final boolean v); + + /** Return whether {@link #setFrustumCullingEnabled(boolean) frustum culling} is enabled. */ + boolean isFrustumCullingEnabled(); + /** * Traverses through the graph up until {@code shape} and apply {@code action} on it. * @param pmv diff --git a/src/graphui/classes/com/jogamp/graph/ui/Group.java b/src/graphui/classes/com/jogamp/graph/ui/Group.java index aa6952031..ea4a15e67 100644 --- a/src/graphui/classes/com/jogamp/graph/ui/Group.java +++ b/src/graphui/classes/com/jogamp/graph/ui/Group.java @@ -120,6 +120,19 @@ public class Group extends Shape implements Container { } } + @Override + public void removeAllShapes() { + shapes.clear(); + } + + /** Removes all given shapes and destroys them. */ + public void removeAllShapes(final GL2ES2 gl, final RegionRenderer renderer) { + final int count = shapes.size(); + for(int i=count-1; i>=0; --i) { + removeShape(gl, renderer, shapes.get(i)); + } + } + @Override public boolean hasColorChannel() { return false; // FIXME @@ -147,7 +160,13 @@ public class Group extends Shape implements Container { } } - private final boolean doFrustumCulling = false; // FIXME + private boolean doFrustumCulling = false; + + @Override + public final void setFrustumCullingEnabled(final boolean v) { doFrustumCulling = v; } + + @Override + public final boolean isFrustumCullingEnabled() { return doFrustumCulling; } @Override protected final void drawImpl0(final GL2ES2 gl, final RegionRenderer renderer, final int[] sampleCount, final float[] rgba) { diff --git a/src/graphui/classes/com/jogamp/graph/ui/Scene.java b/src/graphui/classes/com/jogamp/graph/ui/Scene.java index e1ee538ab..d4c981e62 100644 --- a/src/graphui/classes/com/jogamp/graph/ui/Scene.java +++ b/src/graphui/classes/com/jogamp/graph/ui/Scene.java @@ -180,10 +180,10 @@ public final class Scene implements Container, GLEventListener { /** Returns the {@link GL#glClear(int) glClear(..)} mask, see {@link #setClearParams(float[], int)}. */ public final int getClearMask() { return clearMask; } - /** Enable or disable {@link PMVMatrix#getFrustum()} culling per {@link Shape}. Default is disabled. */ + @Override public final void setFrustumCullingEnabled(final boolean v) { doFrustumCulling = v; } - /** Return whether {@link #setFrustumCullingEnabled(boolean) frustum culling} is enabled. */ + @Override public final boolean isFrustumCullingEnabled() { return doFrustumCulling; } public void attachInputListenerTo(final GLWindow window) { @@ -246,6 +246,18 @@ public final class Scene implements Container, GLEventListener { removeShape(gl, s); } } + @Override + public void removeAllShapes() { + shapes.clear(); + } + /** Removes all given shapes and destroys them. */ + public void removeAllShapes(final GL2ES2 gl) { + final int count = shapes.size(); + for(int i=count-1; i>=0; --i) { + removeShape(gl, shapes.get(i)); + } + } + @Override public boolean contains(final Shape s) { return false; -- cgit v1.2.3