Fixed issue where the BAtchNode was throwing an ArrayIndexOutOfBound exception when batch was called twice in a row
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10496 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
05e080100e
commit
0186a20983
@ -185,8 +185,7 @@ public class BatchNode extends Node implements Savable {
|
||||
}
|
||||
|
||||
protected void doBatch() {
|
||||
Map<Material, List<Geometry>> matMap = new HashMap<Material, List<Geometry>>();
|
||||
maxVertCount = 0;
|
||||
Map<Material, List<Geometry>> matMap = new HashMap<Material, List<Geometry>>();
|
||||
int nbGeoms = 0;
|
||||
|
||||
gatherGeomerties(matMap, this, needsFullRebatch);
|
||||
@ -196,7 +195,12 @@ public class BatchNode extends Node implements Savable {
|
||||
}
|
||||
batches.clear();
|
||||
batchesByGeom.clear();
|
||||
}
|
||||
//only reset maxVertCount if there is something new to batch
|
||||
if (matMap.size() > 0) {
|
||||
maxVertCount = 0;
|
||||
}
|
||||
|
||||
for (Map.Entry<Material, List<Geometry>> entry : matMap.entrySet()) {
|
||||
Mesh m = new Mesh();
|
||||
Material material = entry.getKey();
|
||||
@ -238,12 +242,15 @@ public class BatchNode extends Node implements Savable {
|
||||
|
||||
logger.log(Level.FINE, "Batched {0} geometries in {1} batches.", new Object[]{nbGeoms, batches.size()});
|
||||
|
||||
|
||||
//init temp float arrays
|
||||
tmpFloat = new float[maxVertCount * 3];
|
||||
tmpFloatN = new float[maxVertCount * 3];
|
||||
if (useTangents) {
|
||||
tmpFloatT = new float[maxVertCount * 4];
|
||||
//init the temp arrays if something has been batched only.
|
||||
if(matMap.size()>0){
|
||||
//TODO these arrays should be allocated by chunk instead to avoid recreating them each time the batch is changed.
|
||||
//init temp float arrays
|
||||
tmpFloat = new float[maxVertCount * 3];
|
||||
tmpFloatN = new float[maxVertCount * 3];
|
||||
if (useTangents) {
|
||||
tmpFloatT = new float[maxVertCount * 4];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user