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

experimental
shadowislord 10 years ago
parent 43fcd01114
commit 663225c71f
  1. 44
      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);
}
/**

Loading…
Cancel
Save