OSDN Git Service

reduced terrain save j3o file size
authorbrentowens <brentowens@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Tue, 19 Jul 2011 00:00:50 +0000 (00:00 +0000)
committerbrentowens <brentowens@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Tue, 19 Jul 2011 00:00:50 +0000 (00:00 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7883 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/nbproject/project.properties
engine/src/terrain/com/jme3/terrain/geomipmap/TerrainPatch.java
engine/src/terrain/com/jme3/terrain/geomipmap/TerrainQuad.java

index 811e47f..4046053 100644 (file)
@@ -86,7 +86,7 @@ platform.active=default_platform
 run.classpath=\\r
     ${javac.classpath}:\\r
     ${build.classes.dir}\r
-run.jvmargs=-Xms30m -Xmx30m -XX:MaxDirectMemorySize=256M\r
+run.jvmargs=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=256M\r
 run.test.classpath=\\r
     ${javac.test.classpath}:\\r
     ${build.test.classes.dir}\r
index 650d8b8..db34bcf 100644 (file)
@@ -1036,6 +1036,11 @@ public class TerrainPatch extends Geometry {
 \r
     @Override\r
     public void write(JmeExporter ex) throws IOException {\r
+        // the mesh is removed, and reloaded when read() is called\r
+        // this reduces the save size to 10% by not saving the mesh\r
+        Mesh temp = getMesh();\r
+        mesh = null;\r
+        \r
         super.write(ex);\r
         OutputCapsule oc = ex.getCapsule(this);\r
         oc.write(size, "size", 16);\r
@@ -1048,6 +1053,8 @@ public class TerrainPatch extends Geometry {
         oc.write(lodCalculatorFactory, "lodCalculatorFactory", null);\r
         oc.write(lodEntropy, "lodEntropy", null);\r
         oc.write(geomap, "geomap", null);\r
+        \r
+        setMesh(temp);\r
     }\r
 \r
     @Override\r
@@ -1065,6 +1072,10 @@ public class TerrainPatch extends Geometry {
         lodCalculatorFactory = (LodCalculatorFactory) ic.readSavable("lodCalculatorFactory", null);\r
         lodEntropy = ic.readFloatArray("lodEntropy", null);\r
         geomap = (LODGeomap) ic.readSavable("geomap", null);\r
+        \r
+        Mesh regen = geomap.createMesh(stepScale, new Vector2f(1,1), offset, offsetAmount, totalSize, false);\r
+        setMesh(regen);\r
+        TangentBinormalGenerator.generate(this); // note that this will be removed\r
     }\r
 \r
     @Override\r
index 41b80fb..7bee962 100644 (file)
@@ -1520,6 +1520,12 @@ public class TerrainQuad extends Node implements Terrain {
         quadrant = c.readInt("quadrant", 0);\r
         totalSize = c.readInt("totalSize", 0);\r
         lodCalculatorFactory = (LodCalculatorFactory) c.readSavable("lodCalculatorFactory", null);\r
+        \r
+        if ( !(getParent() instanceof TerrainQuad) ) {\r
+            BoundingBox all = new BoundingBox(getWorldTranslation(), totalSize, totalSize, totalSize);\r
+            affectedAreaBBox = all;\r
+            updateNormals();\r
+        }\r
     }\r
 \r
     @Override\r