Ver código fonte

SkyFactory: Remove duplicate code, remove use of Image.getEfficientData()

shadowislord 10 anos atrás
pai
commit
663225c71f
1 arquivos alterados com 9 adições e 35 exclusões
  1. 9 35
      jme3-core/src/main/java/com/jme3/util/SkyFactory.java

+ 9 - 35
jme3-core/src/main/java/com/jme3/util/SkyFactory.java

@@ -176,7 +176,7 @@ public class SkyFactory {
      * scene graph     
      */
      public static Spatial createSky(AssetManager assetManager, Texture texture,
-            Vector3f normalScale, EnvMapType envMapType, int sphereRadius) {
+            Vector3f normalScale, EnvMapType envMapType, float sphereRadius) {
         if (texture == null) {
             throw new IllegalArgumentException("texture cannot be null");
         }
@@ -188,14 +188,15 @@ public class SkyFactory {
         sky.setModelBound(new BoundingSphere(Float.POSITIVE_INFINITY, Vector3f.ZERO));
 
         Material skyMat = new Material(assetManager, "Common/MatDefs/Misc/Sky.j3md");
-
         skyMat.setVector3("NormalScale", normalScale);
         switch (envMapType){
             case CubeMap : 
                 // make sure its a cubemap
-                Image img = texture.getImage();
-                texture = new TextureCubeMap();
-                texture.setImage(img);
+                if (!(texture instanceof TextureCubeMap)) {
+                    Image img = texture.getImage();
+                    texture = new TextureCubeMap();
+                    texture.setImage(img);
+                }
                 break;
             case SphereMap :     
                 skyMat.setBoolean("SphereMap", true);
@@ -206,6 +207,8 @@ public class SkyFactory {
         }
         texture.setMagFilter(Texture.MagFilter.Bilinear);
         texture.setMinFilter(Texture.MinFilter.BilinearNoMipMaps);
+        texture.setAnisotropicFilter(0);
+        texture.setWrap(Texture.WrapMode.EdgeClamp);
         skyMat.setTexture("Texture", texture);
         sky.setMaterial(skyMat);
 
@@ -383,11 +386,6 @@ public class SkyFactory {
     public static Spatial createSky(AssetManager assetManager, Texture west,
             Texture east, Texture north, Texture south, Texture up,
             Texture down, Vector3f normalScale, float sphereRadius) {
-        final Sphere sphereMesh = new Sphere(10, 10, sphereRadius, false, true);
-        Geometry sky = new Geometry("Sky", sphereMesh);
-        sky.setQueueBucket(Bucket.Sky);
-        sky.setCullHint(Spatial.CullHint.Never);
-        sky.setModelBound(new BoundingSphere(Float.POSITIVE_INFINITY, Vector3f.ZERO));
 
         Image westImg = west.getImage();
         Image eastImg = east.getImage();
@@ -402,37 +400,13 @@ public class SkyFactory {
 
         cubeImage.addData(westImg.getData(0));
         cubeImage.addData(eastImg.getData(0));
-
         cubeImage.addData(downImg.getData(0));
         cubeImage.addData(upImg.getData(0));
-
         cubeImage.addData(southImg.getData(0));
         cubeImage.addData(northImg.getData(0));
         
-        if (westImg.getEfficentData() != null){
-            // also consilidate efficient data
-            ArrayList<Object> efficientData = new ArrayList<Object>(6);
-            efficientData.add(westImg.getEfficentData());
-            efficientData.add(eastImg.getEfficentData());
-            efficientData.add(downImg.getEfficentData());
-            efficientData.add(upImg.getEfficentData());
-            efficientData.add(southImg.getEfficentData());
-            efficientData.add(northImg.getEfficentData());
-            cubeImage.setEfficentData(efficientData);
-        }
-
         TextureCubeMap cubeMap = new TextureCubeMap(cubeImage);
-        cubeMap.setAnisotropicFilter(0);
-        cubeMap.setMagFilter(Texture.MagFilter.Bilinear);
-        cubeMap.setMinFilter(Texture.MinFilter.BilinearNoMipMaps);
-        cubeMap.setWrap(Texture.WrapMode.EdgeClamp);
-
-        Material skyMat = new Material(assetManager, "Common/MatDefs/Misc/Sky.j3md");
-        skyMat.setTexture("Texture", cubeMap);
-        skyMat.setVector3("NormalScale", normalScale);
-        sky.setMaterial(skyMat);
-
-        return sky;
+        return createSky(assetManager, cubeMap, normalScale, EnvMapType.CubeMap, sphereRadius);
     }
 
     /**