BatchNode now properly unbatch subgraph when a Node is removed from it

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10112 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
rem..om 12 years ago
parent d127a7389e
commit 3a809e61f5
  1. 28
      engine/src/core/com/jme3/scene/BatchNode.java

@ -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) {
if (n instanceof Geometry) {

Loading…
Cancel
Save