Minor optimisations. Added several comments to unveil certain parts of the code.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9918 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
Kae..pl 12 years ago
parent 83caa059fb
commit 49f227b7cc
  1. 8
      engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinition.java
  2. 24
      engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLimit.java
  3. 4
      engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionNull.java
  4. 2
      engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLimit.java
  5. 2
      engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLimit.java
  6. 4
      engine/src/blender/com/jme3/scene/plugins/blender/curves/CurvesHelper.java
  7. 1
      engine/src/blender/com/jme3/scene/plugins/blender/exceptions/BlenderFileException.java
  8. 7
      engine/src/blender/com/jme3/scene/plugins/blender/file/BlenderInputStream.java

@ -215,9 +215,13 @@ public abstract class ConstraintDefinition {
}
}
public void write(JmeExporter ex) throws IOException { }
public void write(JmeExporter ex) throws IOException {
//no need to implement this one (the TrackWrapper is used internally and never serialized)
}
public void read(JmeImporter im) throws IOException { }
public void read(JmeImporter im) throws IOException {
//no need to implement this one (the TrackWrapper is used internally and never serialized)
}
public void setTime(float time, float weight, AnimControl control,
AnimChannel channel, TempVars vars) {

@ -53,35 +53,23 @@ import com.jme3.scene.plugins.blender.file.Structure;
public void bake(Transform ownerTransform, Transform targetTransform, float influence) {
Vector3f translation = ownerTransform.getTranslation();
if ((flag & LIMIT_XMIN) != 0) {
if (translation.x < limits[0][0]) {
if ((flag & LIMIT_XMIN) != 0 && translation.x < limits[0][0]) {
translation.x -= (translation.x - limits[0][0]) * influence;
}
}
if ((flag & LIMIT_XMAX) != 0) {
if (translation.x > limits[0][1]) {
if ((flag & LIMIT_XMAX) != 0 && translation.x > limits[0][1]) {
translation.x -= (translation.x - limits[0][1]) * influence;
}
}
if ((flag & LIMIT_YMIN) != 0) {
if (translation.y < limits[1][0]) {
if ((flag & LIMIT_YMIN) != 0 && translation.y < limits[1][0]) {
translation.y -= (translation.y - limits[1][0]) * influence;
}
}
if ((flag & LIMIT_YMAX) != 0) {
if (translation.y > limits[1][1]) {
if ((flag & LIMIT_YMAX) != 0 && translation.y > limits[1][1]) {
translation.y -= (translation.y - limits[1][1]) * influence;
}
}
if ((flag & LIMIT_ZMIN) != 0) {
if (translation.z < limits[2][0]) {
if ((flag & LIMIT_ZMIN) != 0 && translation.z < limits[2][0]) {
translation.z -= (translation.z - limits[2][0]) * influence;
}
}
if ((flag & LIMIT_ZMAX) != 0) {
if (translation.z > limits[2][1]) {
if ((flag & LIMIT_ZMAX) != 0 && translation.z > limits[2][1]) {
translation.z -= (translation.z - limits[2][1]) * influence;
}
}
}
}

@ -15,5 +15,7 @@ import com.jme3.scene.plugins.blender.file.Structure;
}
@Override
public void bake(Transform ownerTransform, Transform targetTransform, float influence) { }
public void bake(Transform ownerTransform, Transform targetTransform, float influence) {
//null constraint does nothing so no need to implement this one
}
}

@ -15,7 +15,7 @@ import com.jme3.scene.plugins.blender.file.Structure;
private static final int LIMIT_YROT = 0x02;
private static final int LIMIT_ZROT = 0x04;
private float[][] limits = new float[3][2];
private transient float[][] limits = new float[3][2];
private transient float[] angles = new float[3];
public ConstraintDefinitionRotLimit(Structure constraintData, BlenderContext blenderContext) {

@ -17,7 +17,7 @@ import com.jme3.scene.plugins.blender.file.Structure;
private static final int LIMIT_ZMIN = 0x10;
private static final int LIMIT_ZMAX = 0x20;
protected float[][] limits = new float[3][2];
protected transient float[][] limits = new float[3][2];
public ConstraintDefinitionSizeLimit(Structure constraintData, BlenderContext blenderContext) {
super(constraintData, blenderContext);

@ -461,6 +461,7 @@ public class CurvesHelper extends AbstractBlenderHelper {
protected List<Geometry> applyBevelAndTaper(Curve curve, List<Geometry> bevelObject, Spline taperObject,
boolean smooth, BlenderContext blenderContext) {
Vector3f[] curvePoints = BufferUtils.getVector3Array(curve.getFloatBuffer(Type.Position));
Vector3f subtractResult = new Vector3f();
float curveLength = curve.getLength();
FloatBuffer[] vertexBuffers = new FloatBuffer[bevelObject.size()];
@ -488,7 +489,6 @@ public class CurvesHelper extends AbstractBlenderHelper {
//equal to the distance between the points on curve that define the bevel position
//so instead doing complicated rotations on each point we will simply properly translate each of them
Vector3f subtractResult = new Vector3f();
int[][] pointIndexes = new int[][] { { 0, 1 }, { curvePoints.length - 1, curvePoints.length - 2 } };
for(int[] indexes : pointIndexes) {
float distance = curvePoints[indexes[1]].subtract(curvePoints[indexes[0]], subtractResult).length();
@ -506,7 +506,7 @@ public class CurvesHelper extends AbstractBlenderHelper {
float lengthAlongCurve = 0;
for(int i=0;i<curvePoints.length; ++i) {
if(i > 0) {
lengthAlongCurve += curvePoints[i].subtract(curvePoints[i - 1]).length();
lengthAlongCurve += curvePoints[i].subtract(curvePoints[i - 1], subtractResult).length();
}
float taperScale = this.getTaperScale(taperObject, i == 0 ? 0 : lengthAlongCurve / curveLength);
this.applyScale(bevels.get(i), curvePoints[i], taperScale);

@ -43,6 +43,7 @@ public class BlenderFileException extends Exception {
* Constructor. Creates an exception with no description.
*/
public BlenderFileException() {
//this constructor has no message
}
/**

@ -379,7 +379,12 @@ public class BlenderInputStream extends InputStream {
}
@Override
public void close() throws IOException { }
public void close() throws IOException {
//this method is unimplemented because some loaders (ie. TGALoader) have flaws that close the stream given from the outside
//because the images can be stored directly in the blender file then this stream is properly positioned and given to the loader
//to read the image file, that is why we do not want it to be closed before the reading is done
//to properly close the stream use forceClose() method
}
/**
* This method should be used to close the stream because some loaders may close the stream while reading resources from it.

Loading…
Cancel
Save