Removed code duplication in BatchNode

experimental
Nehon 10 years ago
parent 46c00c95b3
commit d6c6884066
  1. 73
      jme3-core/src/main/java/com/jme3/scene/BatchNode.java

@ -121,46 +121,59 @@ public class BatchNode extends GeometryGroupNode implements Savable {
@Override @Override
public void updateGeometricState() { public void updateGeometricState() {
if ((refreshFlags & RF_LIGHTLIST) != 0) { super.updateGeometricState();
updateWorldLightList();
}
if ((refreshFlags & RF_TRANSFORM) != 0) {
// combine with parent transforms- same for all spatial
// subclasses.
updateWorldTransforms();
}
refreshFlags &= ~RF_CHILD_LIGHTLIST;
if (!children.isEmpty()) { if (!children.isEmpty()) {
// the important part- make sure child geometric state is refreshed
// first before updating own world bound. This saves
// a round-trip later on.
// NOTE 9/19/09
// Although it does save a round trip,
for (Spatial child : children.getArray()) {
child.updateGeometricState();
}
for (Batch batch : batches.getArray()) { for (Batch batch : batches.getArray()) {
if (batch.needMeshUpdate) { if (batch.needMeshUpdate) {
batch.geometry.updateModelBound(); batch.geometry.updateModelBound();
batch.geometry.updateWorldBound(); batch.geometry.updateWorldBound();
batch.needMeshUpdate = false; batch.needMeshUpdate = false;
} }
} }
} }
if ((refreshFlags & RF_BOUND) != 0) {
updateWorldBound();
}
assert refreshFlags == 0;
} }
//
// @Override
// public void updateGeometricState() {
// if ((refreshFlags & RF_LIGHTLIST) != 0) {
// updateWorldLightList();
// }
//
// if ((refreshFlags & RF_TRANSFORM) != 0) {
// // combine with parent transforms- same for all spatial
// // subclasses.
// updateWorldTransforms();
// }
//
// refreshFlags &= ~RF_CHILD_LIGHTLIST;
// if (!children.isEmpty()) {
// // the important part- make sure child geometric state is refreshed
// // first before updating own world bound. This saves
// // a round-trip later on.
// // NOTE 9/19/09
// // Although it does save a round trip,
//
// for (Spatial child : children.getArray()) {
// child.updateGeometricState();
// }
//
// for (Batch batch : batches.getArray()) {
// if (batch.needMeshUpdate) {
// batch.geometry.updateModelBound();
// batch.geometry.updateWorldBound();
// batch.needMeshUpdate = false;
//
// }
// }
//
// }
//
// if ((refreshFlags & RF_BOUND) != 0) {
// updateWorldBound();
// }
//
// assert refreshFlags == 0;
// }
protected Matrix4f getTransformMatrix(Geometry g){ protected Matrix4f getTransformMatrix(Geometry g){
return g.cachedWorldMat; return g.cachedWorldMat;

Loading…
Cancel
Save