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
This commit is contained in:
rem..om 2013-01-20 09:00:55 +00:00
parent d127a7389e
commit 3a809e61f5

View File

@ -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) {