|
|
|
@ -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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|