|
|
@ -247,6 +247,34 @@ public class BatchNode extends Node implements Savable { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//in case the detached spatial is a node, we unbatch all geometries in its subegraph
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public Spatial detachChildAt(int index) { |
|
|
|
|
|
|
|
Spatial s = super.detachChildAt(index); |
|
|
|
|
|
|
|
if (s instanceof Node) { |
|
|
|
|
|
|
|
unbatchSubGraph(s); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return s; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* recursively visit the subgraph and unbatch geometries |
|
|
|
|
|
|
|
* @param s |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private void unbatchSubGraph(Spatial s) { |
|
|
|
|
|
|
|
if (s instanceof Node) { |
|
|
|
|
|
|
|
for (Spatial sp : ((Node) s).getChildren()) { |
|
|
|
|
|
|
|
unbatchSubGraph(sp); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else if (s instanceof Geometry) { |
|
|
|
|
|
|
|
Geometry g = (Geometry) s; |
|
|
|
|
|
|
|
if (g.isBatched()) { |
|
|
|
|
|
|
|
g.unBatch(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void gatherGeomerties(Map<Material, List<Geometry>> map, Spatial n, boolean rebatch) { |
|
|
|
private void gatherGeomerties(Map<Material, List<Geometry>> map, Spatial n, boolean rebatch) { |
|
|
|
|
|
|
|
|
|
|
|
if (n instanceof Geometry) { |
|
|
|
if (n instanceof Geometry) { |
|
|
|