Bugfix: fixed NullPointerExceptions and IndexOutOfBoundExceptions in

Inverse Kinematics and several other constraints.
This commit is contained in:
jmekaelthas 2014-11-24 20:53:06 +01:00
parent 64b3be5334
commit 40c942ff66
6 changed files with 19 additions and 1 deletions

View File

@ -34,6 +34,9 @@ import com.jme3.scene.plugins.blender.file.Structure;
// distance limit does not work on bones who are connected to their parent // distance limit does not work on bones who are connected to their parent
return; return;
} }
if(influence == 0 || targetTransform == null) {
return ;// no need to do anything
}
Transform ownerTransform = this.getOwnerTransform(ownerSpace); Transform ownerTransform = this.getOwnerTransform(ownerSpace);

View File

@ -53,12 +53,15 @@ public class ConstraintDefinitionIK extends ConstraintDefinition {
@Override @Override
public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) { public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) {
if (influence == 0 || !needToCompute) { if (influence == 0 || !needToCompute || targetTransform == null) {
return;// no need to do anything return;// no need to do anything
} }
Quaternion q = new Quaternion(); Quaternion q = new Quaternion();
Vector3f t = targetTransform.getTranslation(); Vector3f t = targetTransform.getTranslation();
List<BoneContext> bones = this.loadBones(); List<BoneContext> bones = this.loadBones();
if(bones.size() == 0) {
return;// no need to do anything
}
float distanceFromTarget = Float.MAX_VALUE; float distanceFromTarget = Float.MAX_VALUE;
int iterations = this.iterations; int iterations = this.iterations;

View File

@ -49,6 +49,9 @@ import com.jme3.scene.plugins.blender.file.Structure;
// location copy does not work on bones who are connected to their parent // location copy does not work on bones who are connected to their parent
return; return;
} }
if(influence == 0 || targetTransform == null) {
return ;// no need to do anything
}
Transform ownerTransform = this.getOwnerTransform(ownerSpace); Transform ownerTransform = this.getOwnerTransform(ownerSpace);

View File

@ -29,6 +29,9 @@ import com.jme3.scene.plugins.blender.file.Structure;
@Override @Override
public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) { public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) {
if(influence == 0 || targetTransform == null) {
return ;// no need to do anything
}
Transform ownerTransform = this.getOwnerTransform(ownerSpace); Transform ownerTransform = this.getOwnerTransform(ownerSpace);
Quaternion ownerRotation = ownerTransform.getRotation(); Quaternion ownerRotation = ownerTransform.getRotation();

View File

@ -32,6 +32,9 @@ import com.jme3.scene.plugins.blender.file.Structure;
@Override @Override
public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) { public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) {
if(influence == 0 || targetTransform == null) {
return;// no need to do anything
}
Transform ownerTransform = this.getOwnerTransform(ownerSpace); Transform ownerTransform = this.getOwnerTransform(ownerSpace);
Vector3f ownerScale = ownerTransform.getScale(); Vector3f ownerScale = ownerTransform.getScale();

View File

@ -35,6 +35,9 @@ public class ConstraintDefinitionTransLike extends ConstraintDefinition {
@Override @Override
public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) { public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) {
if(influence == 0 || targetTransform == null) {
return ;// no need to do anything
}
Object target = this.getTarget();// Bone or Node Object target = this.getTarget();// Bone or Node
Object owner = this.getOwner();// Bone or Node Object owner = this.getOwner();// Bone or Node
if (!target.getClass().equals(owner.getClass())) { if (!target.getClass().equals(owner.getClass())) {