@ -126,7 +126,6 @@ public class KinematicRagdollControl implements PhysicsControl, PhysicsCollision
protected float totalMass = 0 ;
protected float totalMass = 0 ;
protected boolean added = false ;
protected boolean added = false ;
public static enum Mode {
public static enum Mode {
Kinetmatic ,
Kinetmatic ,
@ -234,7 +233,7 @@ public class KinematicRagdollControl implements PhysicsControl, PhysicsCollision
tmpRot1 . set ( link . startBlendingRot ) ;
tmpRot1 . set ( link . startBlendingRot ) ;
//interpolating between ragdoll position/rotation and keyframed position/rotation
//interpolating between ragdoll position/rotation and keyframed position/rotation
tmpRot2 . set ( tmpRot1 ) . s lerp( link . bone . getModelSpaceRotation ( ) , blendStart / blendTime ) ;
tmpRot2 . set ( tmpRot1 ) . n lerp( link . bone . getModelSpaceRotation ( ) , blendStart / blendTime ) ;
position2 . set ( position ) . interpolate ( link . bone . getModelSpacePosition ( ) , blendStart / blendTime ) ;
position2 . set ( position ) . interpolate ( link . bone . getModelSpacePosition ( ) , blendStart / blendTime ) ;
tmpRot1 . set ( tmpRot2 ) ;
tmpRot1 . set ( tmpRot2 ) ;
position . set ( position2 ) ;
position . set ( position2 ) ;
@ -395,6 +394,7 @@ public class KinematicRagdollControl implements PhysicsControl, PhysicsCollision
}
}
PhysicsRigidBody shapeNode = new PhysicsRigidBody ( shape , rootMass / ( float ) reccount ) ;
PhysicsRigidBody shapeNode = new PhysicsRigidBody ( shape , rootMass / ( float ) reccount ) ;
shapeNode . setKinematic ( mode = = Mode . Kinetmatic ) ;
shapeNode . setKinematic ( mode = = Mode . Kinetmatic ) ;
totalMass + = rootMass / ( float ) reccount ;
totalMass + = rootMass / ( float ) reccount ;
@ -809,4 +809,50 @@ public class KinematicRagdollControl implements PhysicsControl, PhysicsCollision
public void setEventDispatchImpulseThreshold ( float eventDispatchImpulseThreshold ) {
public void setEventDispatchImpulseThreshold ( float eventDispatchImpulseThreshold ) {
this . eventDispatchImpulseThreshold = eventDispatchImpulseThreshold ;
this . eventDispatchImpulseThreshold = eventDispatchImpulseThreshold ;
}
}
/ * *
* Set the CcdMotionThreshold of all the bone ' s rigidBodies of the ragdoll
* @see PhysicsRigidBody # setCcdMotionThreshold ( float )
* @param value
* /
public void setCcdMotionThreshold ( float value ) {
for ( PhysicsBoneLink link : boneLinks . values ( ) ) {
link . rigidBody . setCcdMotionThreshold ( value ) ;
}
}
/ * *
* Set the CcdSweptSphereRadius of all the bone ' s rigidBodies of the ragdoll
* @see PhysicsRigidBody # setCcdSweptSphereRadius ( float )
* @param value
* /
public void setCcdSweptSphereRadius ( float value ) {
for ( PhysicsBoneLink link : boneLinks . values ( ) ) {
link . rigidBody . setCcdSweptSphereRadius ( value ) ;
}
}
/ * *
* Set the CcdMotionThreshold of the given bone ' s rigidBodies of the ragdoll
* @see PhysicsRigidBody # setCcdMotionThreshold ( float )
* @param value
* /
public void setBoneCcdMotionThreshold ( String boneName , float value ) {
PhysicsBoneLink link = boneLinks . get ( boneName ) ;
if ( link ! = null ) {
link . rigidBody . setCcdMotionThreshold ( value ) ;
}
}
/ * *
* Set the CcdSweptSphereRadius of the given bone ' s rigidBodies of the ragdoll
* @see PhysicsRigidBody # setCcdSweptSphereRadius ( float )
* @param value
* /
public void setBoneCcdSweptSphereRadius ( String boneName , float value ) {
PhysicsBoneLink link = boneLinks . get ( boneName ) ;
if ( link ! = null ) {
link . rigidBody . setCcdSweptSphereRadius ( value ) ;
}
}
}
}