* Fixed crash in MeshLoader when loading LOD levels
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9012 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
95efa5b2ff
commit
c30bc66f76
@ -513,21 +513,31 @@ public class MeshLoader extends DefaultHandler implements AssetLoader {
|
||||
|
||||
private void startLodFaceList(String submeshindex, String numfaces) {
|
||||
int index = Integer.parseInt(submeshindex);
|
||||
mesh = geoms.get(index).getMesh();
|
||||
int faceCount = Integer.parseInt(numfaces);
|
||||
|
||||
|
||||
VertexBuffer originalIndexBuffer = mesh.getBuffer(Type.Index);
|
||||
vb = new VertexBuffer(VertexBuffer.Type.Index);
|
||||
sb = BufferUtils.createShortBuffer(faceCount * 3);
|
||||
ib = null;
|
||||
vb.setupData(Usage.Static, 3, Format.UnsignedShort, sb);
|
||||
if (originalIndexBuffer.getFormat() == Format.UnsignedInt){
|
||||
// LOD buffer should also be integer
|
||||
ib = BufferUtils.createIntBuffer(faceCount * 3);
|
||||
sb = null;
|
||||
vb.setupData(Usage.Static, 3, Format.UnsignedInt, ib);
|
||||
}else{
|
||||
sb = BufferUtils.createShortBuffer(faceCount * 3);
|
||||
ib = null;
|
||||
vb.setupData(Usage.Static, 3, Format.UnsignedShort, sb);
|
||||
}
|
||||
|
||||
List<VertexBuffer> levels = lodLevels.get(index);
|
||||
if (levels == null) {
|
||||
// Create the LOD levels list
|
||||
levels = new ArrayList<VertexBuffer>();
|
||||
Mesh submesh = geoms.get(index).getMesh();
|
||||
levels.add(submesh.getBuffer(Type.Index));
|
||||
|
||||
// Add the first LOD level (always the original index buffer)
|
||||
levels.add(originalIndexBuffer);
|
||||
lodLevels.put(index, levels);
|
||||
}
|
||||
|
||||
levels.add(vb);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user