Sfoglia il codice sorgente

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
rem..om 12 anni fa
parent
commit
3800db318c
1 ha cambiato i file con 4 aggiunte e 2 eliminazioni
  1. 4 2
      engine/src/tools/jme3tools/optimize/LodGenerator.java

+ 4 - 2
engine/src/tools/jme3tools/optimize/LodGenerator.java

@@ -326,12 +326,14 @@ public class LodGenerator {
         while (b.remaining() != 0) {
         while (b.remaining() != 0) {
             Triangle tri = new Triangle();
             Triangle tri = new Triangle();
             tri.isRemoved = false;
             tri.isRemoved = false;
-            triangleList.add(tri);
+            triangleList.add(tri);            
             for (int i = 0; i < 3; i++) {
             for (int i = 0; i < 3; i++) {
                 if (b instanceof IntBuffer) {
                 if (b instanceof IntBuffer) {
                     tri.vertexId[i] = ((IntBuffer) b).get();
                     tri.vertexId[i] = ((IntBuffer) b).get();
                 } else {
                 } 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());
                // assert (tri.vertexId[i] < vertexLookup.size());
                 tri.vertex[i] = vertexLookup.get(tri.vertexId[i]);
                 tri.vertex[i] = vertexLookup.get(tri.vertexId[i]);