|
|
@@ -61,7 +61,7 @@ import com.jme3.texture.Texture;
|
|
|
|
|
|
/**
|
|
|
* Blender key. Contains path of the blender file and its loading properties.
|
|
|
- * @author Marcin Roguski
|
|
|
+ * @author Marcin Roguski (Kaelthas)
|
|
|
*/
|
|
|
public class BlenderKey extends ModelKey {
|
|
|
protected static final int DEFAULT_FPS = 25;
|
|
|
@@ -102,7 +102,12 @@ public class BlenderKey extends ModelKey {
|
|
|
protected Material defaultMaterial;
|
|
|
/** Face cull mode. By default it is disabled. */
|
|
|
protected FaceCullMode faceCullMode = FaceCullMode.Off;
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Variable describes which layers will be loaded. N-th bit set means N-th layer will be loaded.
|
|
|
+ * If set to -1 then the current layer will be loaded.
|
|
|
+ */
|
|
|
+ protected int layersToLoad = -1;
|
|
|
+
|
|
|
/**
|
|
|
* Constructor used by serialization mechanisms.
|
|
|
*/
|
|
|
@@ -252,6 +257,22 @@ public class BlenderKey extends ModelKey {
|
|
|
this.faceCullMode = faceCullMode;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * This method sets layers to be loaded.
|
|
|
+ * @param layersToLoad layers to be loaded
|
|
|
+ */
|
|
|
+ public void setLayersToLoad(int layersToLoad) {
|
|
|
+ this.layersToLoad = layersToLoad;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This method returns layers to be loaded.
|
|
|
+ * @return layers to be loaded
|
|
|
+ */
|
|
|
+ public int getLayersToLoad() {
|
|
|
+ return layersToLoad;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* This method sets the asset root path.
|
|
|
* @param assetRootPath
|
|
|
@@ -387,6 +408,7 @@ public class BlenderKey extends ModelKey {
|
|
|
oc.write(usedWorld, "used-world", null);
|
|
|
oc.write(defaultMaterial, "default-material", null);
|
|
|
oc.write(faceCullMode, "face-cull-mode", FaceCullMode.Off);
|
|
|
+ oc.write(layersToLoad, "layers-to-load", -1);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -422,6 +444,7 @@ public class BlenderKey extends ModelKey {
|
|
|
usedWorld = ic.readString("used-world", null);
|
|
|
defaultMaterial = (Material)ic.readSavable("default-material", null);
|
|
|
faceCullMode = ic.readEnum("face-cull-mode", FaceCullMode.class, FaceCullMode.Off);
|
|
|
+ layersToLoad = ic.readInt("layers-to=load", -1);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -435,60 +458,72 @@ public class BlenderKey extends ModelKey {
|
|
|
result = prime * result + featuresToLoad;
|
|
|
result = prime * result + (fixUpAxis ? 1231 : 1237);
|
|
|
result = prime * result + fps;
|
|
|
+ result = prime * result + generatedTextureHeight;
|
|
|
+ result = prime * result + generatedTextureWidth;
|
|
|
+ result = prime * result + layersToLoad;
|
|
|
result = prime * result + (usedWorld == null ? 0 : usedWorld.hashCode());
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean equals(Object obj) {
|
|
|
- if(this == obj) {
|
|
|
+ if (this == obj) {
|
|
|
return true;
|
|
|
}
|
|
|
- if(!super.equals(obj)) {
|
|
|
+ if (!super.equals(obj)) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(this.getClass() != obj.getClass()) {
|
|
|
+ if (this.getClass() != obj.getClass()) {
|
|
|
return false;
|
|
|
}
|
|
|
- BlenderKey other = (BlenderKey)obj;
|
|
|
- if(animations == null) {
|
|
|
- if(other.animations != null) {
|
|
|
+ BlenderKey other = (BlenderKey) obj;
|
|
|
+ if (animations == null) {
|
|
|
+ if (other.animations != null) {
|
|
|
return false;
|
|
|
}
|
|
|
- } else if(!animations.equals(other.animations)) {
|
|
|
+ } else if (!animations.equals(other.animations)) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(assetRootPath == null) {
|
|
|
- if(other.assetRootPath != null) {
|
|
|
+ if (assetRootPath == null) {
|
|
|
+ if (other.assetRootPath != null) {
|
|
|
return false;
|
|
|
}
|
|
|
- } else if(!assetRootPath.equals(other.assetRootPath)) {
|
|
|
+ } else if (!assetRootPath.equals(other.assetRootPath)) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(defaultMaterial == null) {
|
|
|
- if(other.defaultMaterial != null) {
|
|
|
+ if (defaultMaterial == null) {
|
|
|
+ if (other.defaultMaterial != null) {
|
|
|
return false;
|
|
|
}
|
|
|
- } else if(!defaultMaterial.equals(other.defaultMaterial)) {
|
|
|
+ } else if (!defaultMaterial.equals(other.defaultMaterial)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (faceCullMode != other.faceCullMode) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (featuresToLoad != other.featuresToLoad) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (fixUpAxis != other.fixUpAxis) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(faceCullMode != other.faceCullMode) {
|
|
|
+ if (fps != other.fps) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(featuresToLoad != other.featuresToLoad) {
|
|
|
+ if (generatedTextureHeight != other.generatedTextureHeight) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(fixUpAxis != other.fixUpAxis) {
|
|
|
+ if (generatedTextureWidth != other.generatedTextureWidth) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(fps != other.fps) {
|
|
|
+ if (layersToLoad != other.layersToLoad) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(usedWorld == null) {
|
|
|
- if(other.usedWorld != null) {
|
|
|
+ if (usedWorld == null) {
|
|
|
+ if (other.usedWorld != null) {
|
|
|
return false;
|
|
|
}
|
|
|
- } else if(!usedWorld.equals(other.usedWorld)) {
|
|
|
+ } else if (!usedWorld.equals(other.usedWorld)) {
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
@@ -496,7 +531,7 @@ public class BlenderKey extends ModelKey {
|
|
|
|
|
|
/**
|
|
|
* This interface describes the features of the scene that are to be loaded.
|
|
|
- * @author Marcin Roguski
|
|
|
+ * @author Marcin Roguski (Kaelthas)
|
|
|
*/
|
|
|
public static interface FeaturesToLoad {
|
|
|
int SCENES = 0x0000FFFF;
|
|
|
@@ -511,7 +546,7 @@ public class BlenderKey extends ModelKey {
|
|
|
|
|
|
/**
|
|
|
* This class holds the loading results according to the given loading flag.
|
|
|
- * @author Marcin Roguski
|
|
|
+ * @author Marcin Roguski (Kaelthas)
|
|
|
*/
|
|
|
public static class LoadingResults extends Spatial {
|
|
|
/** Bitwise mask of features that are to be loaded. */
|
|
|
@@ -730,7 +765,7 @@ public class BlenderKey extends ModelKey {
|
|
|
/**
|
|
|
* The WORLD file block contains various data that could be added to the scene. The contained data includes: ambient
|
|
|
* light.
|
|
|
- * @author Marcin Roguski
|
|
|
+ * @author Marcin Roguski (Kaelthas)
|
|
|
*/
|
|
|
public static class WorldData {
|
|
|
/** The ambient light. */
|