git-svn-id: https://jmonkeyengine.googlecode.com/svn/branches/gradle-restructure@11068 75d07b2b-3a1a-0410-a2c5-0572b91ccdcaexperimental
parent
bc6c3cd93e
commit
4972fad991
@ -0,0 +1,45 @@ |
|||||||
|
package com.jme3.scene.plugins.blender.constraints.definitions; |
||||||
|
|
||||||
|
import com.jme3.math.Transform; |
||||||
|
import com.jme3.scene.plugins.blender.BlenderContext; |
||||||
|
import com.jme3.scene.plugins.blender.constraints.ConstraintHelper.Space; |
||||||
|
import com.jme3.scene.plugins.blender.file.Structure; |
||||||
|
|
||||||
|
public class ConstraintDefinitionMaintainVolume extends ConstraintDefinition { |
||||||
|
private static final int FLAG_MASK_X = 0; |
||||||
|
private static final int FLAG_MASK_Y = 1; |
||||||
|
private static final int FLAG_MASK_Z = 2; |
||||||
|
|
||||||
|
private float volume; |
||||||
|
|
||||||
|
public ConstraintDefinitionMaintainVolume(Structure constraintData, Long ownerOMA, BlenderContext blenderContext) { |
||||||
|
super(constraintData, ownerOMA, blenderContext); |
||||||
|
volume = (float) Math.sqrt(((Number) constraintData.getFieldValue("volume")).floatValue()); |
||||||
|
} |
||||||
|
|
||||||
|
@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); |
||||||
|
} |
||||||
|
this.applyOwnerTransform(ownerTransform, ownerSpace); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getConstraintTypeName() { |
||||||
|
return "Maintain volume"; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue