Procházet zdrojové kódy

* Fix OBJ/MTL parsing bug when using linux line breaks

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7644 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
sha..rd před 14 roky
rodič
revize
17af890e86

+ 8 - 4
engine/src/core-plugins/com/jme3/scene/plugins/MTLLoader.java

@@ -87,6 +87,10 @@ public class MTLLoader implements AssetLoader {
         return result;
     }
     
+    protected void skipLine(){
+        scan.skip(".*\r{0,1}\n");
+    }
+    
     protected void resetMaterial(){
         ambient.set(ColorRGBA.Black);
         diffuse.set(ColorRGBA.Black);
@@ -173,7 +177,7 @@ public class MTLLoader implements AssetLoader {
         String cmd = scan.next().toLowerCase();
         if (cmd.startsWith("#")){
             // skip entire comment until next line
-            nextStatement();
+            skipLine();
         }else if (cmd.equals("newmtl")){
             String name = scan.next();
             startMaterial(name);
@@ -190,7 +194,7 @@ public class MTLLoader implements AssetLoader {
             transparent = true;
         }else if (cmd.equals("map_ka")){
             // ignore it for now
-            nextStatement();
+            skipLine();
         }else if (cmd.equals("map_kd")){
             String path = nextStatement();
             diffuseMap = loadTexture(path);
@@ -233,10 +237,10 @@ public class MTLLoader implements AssetLoader {
         }else if (cmd.equals("ke") || cmd.equals("ni")){
             // Ni: index of refraction - unsupported in jME
             // Ke: emission color
-            nextStatement();
+            skipLine();
         }else{
             System.out.println("Unknown statement in MTL! "+cmd);
-            nextStatement();
+            skipLine();
         }
         
         return true;

+ 2 - 7
engine/src/core-plugins/com/jme3/scene/plugins/OBJLoader.java

@@ -334,13 +334,8 @@ public final class OBJLoader implements AssetLoader {
         }
     }
 
-    private static final Pattern nl = Pattern.compile("\n");
-    private static final Pattern ws = Pattern.compile("\\p{javaWhitespace}+");
-
     protected void nextStatement(){
-        scan.useDelimiter(nl);
-        scan.next();
-        scan.useDelimiter(ws);
+        scan.skip(".*\r{0,1}\n");
     }
 
     protected boolean readLine() throws IOException{
@@ -586,5 +581,5 @@ public final class OBJLoader implements AssetLoader {
         else
             return objNode;
     }
-
+ 
 }