Merge pull request #455 from MeFisto94/SplineIssue

Fixed a NPE when Serializing a Spline without points.
cleanup_build_scripts
Rémy Bouquet 9 years ago
commit 911b4be868
  1. 30
      jme3-core/src/main/java/com/jme3/math/Spline.java

@ -90,7 +90,7 @@ public class Spline implements Savable {
type = splineType; type = splineType;
this.curveTension = curveTension; this.curveTension = curveTension;
this.cycle = cycle; this.cycle = cycle;
this.computeTotalLentgh(); this.computeTotalLength();
} }
/** /**
@ -116,7 +116,7 @@ public class Spline implements Savable {
this.controlPoints.addAll(controlPoints); this.controlPoints.addAll(controlPoints);
this.curveTension = curveTension; this.curveTension = curveTension;
this.cycle = cycle; this.cycle = cycle;
this.computeTotalLentgh(); this.computeTotalLength();
} }
/** /**
@ -144,7 +144,7 @@ public class Spline implements Savable {
this.weights[i] = controlPoint.w; this.weights[i] = controlPoint.w;
} }
CurveAndSurfaceMath.prepareNurbsKnots(knots, basisFunctionDegree); CurveAndSurfaceMath.prepareNurbsKnots(knots, basisFunctionDegree);
this.computeTotalLentgh(); this.computeTotalLength();
} }
private void initCatmullRomWayPoints(List<Vector3f> list) { private void initCatmullRomWayPoints(List<Vector3f> list) {
@ -186,7 +186,7 @@ public class Spline implements Savable {
controlPoints.add(controlPoints.get(0).clone()); controlPoints.add(controlPoints.get(0).clone());
} }
if (controlPoints.size() > 1) { if (controlPoints.size() > 1) {
this.computeTotalLentgh(); this.computeTotalLength();
} }
} }
@ -197,7 +197,7 @@ public class Spline implements Savable {
public void removeControlPoint(Vector3f controlPoint) { public void removeControlPoint(Vector3f controlPoint) {
controlPoints.remove(controlPoint); controlPoints.remove(controlPoint);
if (controlPoints.size() > 1) { if (controlPoints.size() > 1) {
this.computeTotalLentgh(); this.computeTotalLength();
} }
} }
@ -209,7 +209,7 @@ public class Spline implements Savable {
/** /**
* This method computes the total length of the curve. * This method computes the total length of the curve.
*/ */
private void computeTotalLentgh() { private void computeTotalLength() {
totalLength = 0; totalLength = 0;
float l = 0; float l = 0;
if (segmentsLength == null) { if (segmentsLength == null) {
@ -317,7 +317,7 @@ public class Spline implements Savable {
public void setCurveTension(float curveTension) { public void setCurveTension(float curveTension) {
this.curveTension = curveTension; this.curveTension = curveTension;
if(type==SplineType.CatmullRom && !getControlPoints().isEmpty()) { if(type==SplineType.CatmullRom && !getControlPoints().isEmpty()) {
this.computeTotalLentgh(); this.computeTotalLength();
} }
} }
@ -342,7 +342,7 @@ public class Spline implements Savable {
controlPoints.add(controlPoints.get(0)); controlPoints.add(controlPoints.get(0));
} }
this.cycle = cycle; this.cycle = cycle;
this.computeTotalLentgh(); this.computeTotalLength();
} else { } else {
this.cycle = cycle; this.cycle = cycle;
} }
@ -369,7 +369,7 @@ public class Spline implements Savable {
*/ */
public void setType(SplineType type) { public void setType(SplineType type) {
this.type = type; this.type = type;
this.computeTotalLentgh(); this.computeTotalLength();
} }
/** /**
@ -435,9 +435,13 @@ public class Spline implements Savable {
OutputCapsule oc = ex.getCapsule(this); OutputCapsule oc = ex.getCapsule(this);
oc.writeSavableArrayList((ArrayList) controlPoints, "controlPoints", null); oc.writeSavableArrayList((ArrayList) controlPoints, "controlPoints", null);
oc.write(type, "type", SplineType.CatmullRom); oc.write(type, "type", SplineType.CatmullRom);
float list[] = new float[segmentsLength.size()];
for (int i = 0; i < segmentsLength.size(); i++) { float list[] = null;
list[i] = segmentsLength.get(i); if (segmentsLength != null) {
list = new float[segmentsLength.size()];
for (int i = 0; i < segmentsLength.size(); i++) {
list[i] = segmentsLength.get(i);
}
} }
oc.write(list, "segmentsLength", null); oc.write(list, "segmentsLength", null);
@ -454,7 +458,7 @@ public class Spline implements Savable {
public void read(JmeImporter im) throws IOException { public void read(JmeImporter im) throws IOException {
InputCapsule in = im.getCapsule(this); InputCapsule in = im.getCapsule(this);
controlPoints = (ArrayList<Vector3f>) in.readSavableArrayList("wayPoints", null); controlPoints = (ArrayList<Vector3f>) in.readSavableArrayList("controlPoints", new ArrayList<Vector3f>()); /* Empty List as default, prevents null pointers */
float list[] = in.readFloatArray("segmentsLength", null); float list[] = in.readFloatArray("segmentsLength", null);
if (list != null) { if (list != null) {
segmentsLength = new ArrayList<Float>(); segmentsLength = new ArrayList<Float>();

Loading…
Cancel
Save