Bugfix: fixed a bug that caused the 'maintain volume' constraint to be badlu applied on objects.
git-svn-id: https://jmonkeyengine.googlecode.com/svn/branches/gradle-restructure@11104 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
bea196baa2
commit
64c732451a
@ -1,5 +1,6 @@
|
||||
package com.jme3.scene.plugins.blender.constraints.definitions;
|
||||
|
||||
import com.jme3.animation.Bone;
|
||||
import com.jme3.math.Transform;
|
||||
import com.jme3.scene.plugins.blender.BlenderContext;
|
||||
import com.jme3.scene.plugins.blender.constraints.ConstraintHelper.Space;
|
||||
@ -20,21 +21,25 @@ public class ConstraintDefinitionMaintainVolume extends ConstraintDefinition {
|
||||
@Override
|
||||
public void bake(Space ownerSpace, Space targetSpace, Transform targetTransform, float influence) {
|
||||
if (volume != 1 && influence > 0) {
|
||||
Transform ownerTransform = this.getOwnerTransform(ownerSpace);
|
||||
switch (flag) {
|
||||
case FLAG_MASK_X:
|
||||
ownerTransform.getScale().multLocal(1, volume, volume);
|
||||
break;
|
||||
case FLAG_MASK_Y:
|
||||
ownerTransform.getScale().multLocal(volume, 1, volume);
|
||||
break;
|
||||
case FLAG_MASK_Z:
|
||||
ownerTransform.getScale().multLocal(volume, volume, 1);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("Unknown flag value: " + flag);
|
||||
// the maintain volume constraint is applied directly to object's scale, so no need to do it again
|
||||
// but in case of bones we need to make computations
|
||||
if (this.getOwner() instanceof Bone) {
|
||||
Transform ownerTransform = this.getOwnerTransform(ownerSpace);
|
||||
switch (flag) {
|
||||
case FLAG_MASK_X:
|
||||
ownerTransform.getScale().multLocal(1, volume, volume);
|
||||
break;
|
||||
case FLAG_MASK_Y:
|
||||
ownerTransform.getScale().multLocal(volume, 1, volume);
|
||||
break;
|
||||
case FLAG_MASK_Z:
|
||||
ownerTransform.getScale().multLocal(volume, volume, 1);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("Unknown flag value: " + flag);
|
||||
}
|
||||
this.applyOwnerTransform(ownerTransform, ownerSpace);
|
||||
}
|
||||
this.applyOwnerTransform(ownerTransform, ownerSpace);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user