2
0
Riccardo Balbo 2 жил өмнө
parent
commit
0c8801fcc1

+ 10 - 0
jme3-core/src/main/java/com/jme3/renderer/RenderManager.java

@@ -66,6 +66,7 @@ import com.jme3.util.SafeArrayList;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.function.Function;
 import java.util.logging.Logger;
 
 /**
@@ -104,7 +105,15 @@ public class RenderManager {
     private TechniqueDef.LightMode preferredLightMode = TechniqueDef.LightMode.MultiPass;
     private int singlePassLightBatchSize = 1;
     private MatParamOverride boundDrawBufferId=new MatParamOverride(VarType.Int,"BoundDrawBuffer",0);
+    private Function<Geometry,Boolean> renderFilter;
 
+    public void setRenderFilter(Function<Geometry,Boolean> filter){
+        renderFilter=filter;
+    }
+    
+    public Function<Geometry,Boolean> getRenderFilter(){
+        return renderFilter;
+    }
 
     /**
      * Creates a high-level rendering interface over the
@@ -626,6 +635,7 @@ public class RenderManager {
      * @see com.jme3.material.Material#render(com.jme3.scene.Geometry, com.jme3.renderer.RenderManager)
      */
     public void renderGeometry(Geometry geom) {
+        if (renderFilter != null && !renderFilter.apply(geom)) return;
         this.renderer.pushDebugGroup(geom.getName());
         if (geom.isIgnoreTransform()) {
             setWorldMatrix(Matrix4f.IDENTITY);