From 3800db318c69f202cb4474b49575967bff5f24a4 Mon Sep 17 00:00:00 2001 From: "rem..om" Date: Sun, 15 Sep 2013 18:47:51 +0000 Subject: [PATCH] LodGenerator now properly shift short indexes so that there is no negative value when assigned to an int and used as an index in an array git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10783 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- engine/src/tools/jme3tools/optimize/LodGenerator.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/engine/src/tools/jme3tools/optimize/LodGenerator.java b/engine/src/tools/jme3tools/optimize/LodGenerator.java index 277a5a53a..41ee727a9 100644 --- a/engine/src/tools/jme3tools/optimize/LodGenerator.java +++ b/engine/src/tools/jme3tools/optimize/LodGenerator.java @@ -326,12 +326,14 @@ public class LodGenerator { while (b.remaining() != 0) { Triangle tri = new Triangle(); tri.isRemoved = false; - triangleList.add(tri); + triangleList.add(tri); for (int i = 0; i < 3; i++) { if (b instanceof IntBuffer) { tri.vertexId[i] = ((IntBuffer) b).get(); } else { - tri.vertexId[i] = ((ShortBuffer) b).get(); + //bit shift to avoid negative values due to conversion form short to int. + //we need an unsigned int here. + tri.vertexId[i] = ((ShortBuffer) b).get()& 0xffff; } // assert (tri.vertexId[i] < vertexLookup.size()); tri.vertex[i] = vertexLookup.get(tri.vertexId[i]);