com.jme3.bullet.objects
Class PhysicsRigidBody

java.lang.Object
  extended by com.jme3.bullet.collision.PhysicsCollisionObject
      extended by com.jme3.bullet.objects.PhysicsRigidBody
All Implemented Interfaces:
Savable
Direct Known Subclasses:
PhysicsVehicle, RigidBodyControl

public class PhysicsRigidBody
extends PhysicsCollisionObject

PhysicsRigidBody - Basic physics object


Field Summary
protected  java.util.ArrayList<PhysicsJoint> joints
           
protected  boolean kinematic
           
protected  float mass
           
protected  RigidBodyMotionState motionState
           
 
Fields inherited from class com.jme3.bullet.collision.PhysicsCollisionObject
COLLISION_GROUP_01, COLLISION_GROUP_02, COLLISION_GROUP_03, COLLISION_GROUP_04, COLLISION_GROUP_05, COLLISION_GROUP_06, COLLISION_GROUP_07, COLLISION_GROUP_08, COLLISION_GROUP_09, COLLISION_GROUP_10, COLLISION_GROUP_11, COLLISION_GROUP_12, COLLISION_GROUP_13, COLLISION_GROUP_14, COLLISION_GROUP_15, COLLISION_GROUP_16, COLLISION_GROUP_NONE, collisionGroup, collisionGroupsMask, collisionShape, debugArrow, debugArrowGeom, debugMaterialBlue, debugMaterialGreen, debugMaterialRed, debugMaterialYellow, debugShape, objectId
 
Constructor Summary
PhysicsRigidBody()
           
PhysicsRigidBody(CollisionShape shape)
          Creates a new PhysicsRigidBody with the supplied collision shape
PhysicsRigidBody(CollisionShape shape, float mass)
           
 
Method Summary
 void activate()
          reactivates this PhysicsRigidBody when it has been deactivated because it was not moving
 void addJoint(PhysicsJoint joint)
          do not use manually, joints are added automatically
 void applyCentralForce(Vector3f force)
          Apply a force to the PhysicsRigidBody, only applies force if the next physics update call updates the physics space.
To apply an impulse, use applyImpulse.
 void applyForce(Vector3f force, Vector3f location)
          Apply a force to the PhysicsRigidBody, only applies force if the next physics update call updates the physics space.
To apply an impulse, use applyImpulse, use applyContinuousForce to apply continuous force.
 void applyImpulse(Vector3f impulse, Vector3f rel_pos)
          Apply an impulse to the PhysicsRigidBody in the next physics update.
 void applyTorque(Vector3f torque)
          Apply a force to the PhysicsRigidBody, only applies force if the next physics update call updates the physics space.
To apply an impulse, use applyImpulse.
 void applyTorqueImpulse(Vector3f vec)
          Apply a torque impulse to the PhysicsRigidBody in the next physics update.
 void clearForces()
          Clear all forces from the PhysicsRigidBody
 float getAngularDamping()
           
 float getAngularFactor()
           
 float getAngularSleepingThreshold()
           
 Vector3f getAngularVelocity()
          Get the current angular velocity of this PhysicsRigidBody
 void getAngularVelocity(Vector3f vec)
          Get the current angular velocity of this PhysicsRigidBody
 float getCcdMotionThreshold()
           
 float getCcdSquareMotionThreshold()
           
 float getCcdSweptSphereRadius()
           
protected  Spatial getDebugShape()
           
 float getFriction()
           
 Vector3f getGravity()
           
 Vector3f getGravity(Vector3f gravity)
           
 java.util.List<PhysicsJoint> getJoints()
          Returns a list of connected joints.
 float getLinearDamping()
           
 float getLinearSleepingThreshold()
           
 Vector3f getLinearVelocity()
          Get the current linear velocity of this PhysicsRigidBody
 void getLinearVelocity(Vector3f vec)
          Get the current linear velocity of this PhysicsRigidBody
 float getMass()
           
 RigidBodyMotionState getMotionState()
           
 Vector3f getPhysicsLocation()
           
 Vector3f getPhysicsLocation(Vector3f trans)
           
 Quaternion getPhysicsRotation()
           
 Quaternion getPhysicsRotation(Quaternion rot)
           
 Matrix3f getPhysicsRotationMatrix()
           
 Matrix3f getPhysicsRotationMatrix(Matrix3f rot)
           
 float getRestitution()
           
 boolean isActive()
           
 boolean isInWorld()
           
 boolean isKinematic()
           
protected  void postRebuild()
           
protected  void preRebuild()
           
 void read(JmeImporter e)
           
protected  void rebuildRigidBody()
          Builds/rebuilds the phyiscs body when parameters have changed
 void removeJoint(PhysicsJoint joint)
           
 void setAngularDamping(float angularDamping)
           
 void setAngularFactor(float factor)
           
 void setAngularSleepingThreshold(float angularSleepingThreshold)
           
 void setAngularVelocity(Vector3f vec)
          Sets the angular velocity of this PhysicsRigidBody
 void setCcdMotionThreshold(float threshold)
          Sets the amount of motion that has to happen in one physics tick to trigger the continuous motion detection
This avoids the problem of fast objects moving through other objects, set to zero to disable (default)
 void setCcdSweptSphereRadius(float radius)
           
 void setCollisionShape(CollisionShape collisionShape)
          Sets a CollisionShape to this physics object, note that the object should not be in the physics space when adding a new collision shape as it is rebuilt on the physics side.
 void setDamping(float linearDamping, float angularDamping)
           
 void setFriction(float friction)
          Sets the friction of this physics object
 void setGravity(Vector3f gravity)
          Set the local gravity of this PhysicsRigidBody
Set this after adding the node to the PhysicsSpace, the PhysicsSpace assigns its current gravity to the physics node when its added.
 void setKinematic(boolean kinematic)
          Sets the node to kinematic mode.
 void setLinearDamping(float linearDamping)
           
 void setLinearSleepingThreshold(float linearSleepingThreshold)
           
 void setLinearVelocity(Vector3f vec)
          Sets the linear velocity of this PhysicsRigidBody
 void setMass(float mass)
          Sets the mass of this PhysicsRigidBody, objects with mass=0 are static.
 void setPhysicsLocation(Vector3f location)
          Sets the physics object location
 void setPhysicsRotation(Matrix3f rotation)
          Sets the physics object rotation
 void setPhysicsRotation(Quaternion rotation)
          Sets the physics object rotation
 void setRestitution(float restitution)
          The "bouncyness" of the PhysicsRigidBody, best performance if restitution=0
 void setSleepingThresholds(float linear, float angular)
          sets the sleeping thresholds, these define when the object gets deactivated to save ressources.
 void write(JmeExporter e)
           
 
Methods inherited from class com.jme3.bullet.collision.PhysicsCollisionObject
addCollideWithGroup, attachCollisionShape, attachDebugShape, attachDebugShape, attachDebugShape, createDebugShape, debugShape, detachDebugShape, finalize, finalizeNative, getCollideWithGroups, getCollisionGroup, getCollisionShape, getObjectId, getUserObject, initUserPointer, removeCollideWithGroup, setCollideWithGroups, setCollisionGroup, setUserObject, updateDebugShape
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

motionState

protected RigidBodyMotionState motionState

mass

protected float mass

kinematic

protected boolean kinematic

joints

protected java.util.ArrayList<PhysicsJoint> joints
Constructor Detail

PhysicsRigidBody

public PhysicsRigidBody()

PhysicsRigidBody

public PhysicsRigidBody(CollisionShape shape)
Creates a new PhysicsRigidBody with the supplied collision shape

Parameters:
child -
shape -

PhysicsRigidBody

public PhysicsRigidBody(CollisionShape shape,
                        float mass)
Method Detail

rebuildRigidBody

protected void rebuildRigidBody()
Builds/rebuilds the phyiscs body when parameters have changed


preRebuild

protected void preRebuild()

postRebuild

protected void postRebuild()

getMotionState

public RigidBodyMotionState getMotionState()
Returns:
the motionState

isInWorld

public boolean isInWorld()

setPhysicsLocation

public void setPhysicsLocation(Vector3f location)
Sets the physics object location

Parameters:
location - the location of the actual physics object

setPhysicsRotation

public void setPhysicsRotation(Matrix3f rotation)
Sets the physics object rotation

Parameters:
rotation - the rotation of the actual physics object

setPhysicsRotation

public void setPhysicsRotation(Quaternion rotation)
Sets the physics object rotation

Parameters:
rotation - the rotation of the actual physics object

getPhysicsLocation

public Vector3f getPhysicsLocation(Vector3f trans)
Returns:
the physicsLocation

getPhysicsRotation

public Quaternion getPhysicsRotation(Quaternion rot)
Returns:
the physicsLocation

getPhysicsRotationMatrix

public Matrix3f getPhysicsRotationMatrix(Matrix3f rot)
Returns:
the physicsLocation

getPhysicsLocation

public Vector3f getPhysicsLocation()
Returns:
the physicsLocation

getPhysicsRotation

public Quaternion getPhysicsRotation()
Returns:
the physicsLocation

getPhysicsRotationMatrix

public Matrix3f getPhysicsRotationMatrix()

setKinematic

public void setKinematic(boolean kinematic)
Sets the node to kinematic mode. in this mode the node is not affected by physics but affects other physics objects. Iits kinetic force is calculated by the amount of movement it is exposed to and its weight.

Parameters:
kinematic -

isKinematic

public boolean isKinematic()

setCcdSweptSphereRadius

public void setCcdSweptSphereRadius(float radius)

setCcdMotionThreshold

public void setCcdMotionThreshold(float threshold)
Sets the amount of motion that has to happen in one physics tick to trigger the continuous motion detection
This avoids the problem of fast objects moving through other objects, set to zero to disable (default)

Parameters:
threshold -

getCcdSweptSphereRadius

public float getCcdSweptSphereRadius()

getCcdMotionThreshold

public float getCcdMotionThreshold()

getCcdSquareMotionThreshold

public float getCcdSquareMotionThreshold()

getMass

public float getMass()

setMass

public void setMass(float mass)
Sets the mass of this PhysicsRigidBody, objects with mass=0 are static.

Parameters:
mass -

getGravity

public Vector3f getGravity()

getGravity

public Vector3f getGravity(Vector3f gravity)

setGravity

public void setGravity(Vector3f gravity)
Set the local gravity of this PhysicsRigidBody
Set this after adding the node to the PhysicsSpace, the PhysicsSpace assigns its current gravity to the physics node when its added.

Parameters:
gravity - the gravity vector to set

getFriction

public float getFriction()

setFriction

public void setFriction(float friction)
Sets the friction of this physics object

Parameters:
friction - the friction of this physics object

setDamping

public void setDamping(float linearDamping,
                       float angularDamping)

setLinearDamping

public void setLinearDamping(float linearDamping)

setAngularDamping

public void setAngularDamping(float angularDamping)

getLinearDamping

public float getLinearDamping()

getAngularDamping

public float getAngularDamping()

getRestitution

public float getRestitution()

setRestitution

public void setRestitution(float restitution)
The "bouncyness" of the PhysicsRigidBody, best performance if restitution=0

Parameters:
restitution -

getAngularVelocity

public Vector3f getAngularVelocity()
Get the current angular velocity of this PhysicsRigidBody

Returns:
the current linear velocity

getAngularVelocity

public void getAngularVelocity(Vector3f vec)
Get the current angular velocity of this PhysicsRigidBody

Parameters:
vec - the vector to store the velocity in

setAngularVelocity

public void setAngularVelocity(Vector3f vec)
Sets the angular velocity of this PhysicsRigidBody

Parameters:
vec - the angular velocity of this PhysicsRigidBody

getLinearVelocity

public Vector3f getLinearVelocity()
Get the current linear velocity of this PhysicsRigidBody

Returns:
the current linear velocity

getLinearVelocity

public void getLinearVelocity(Vector3f vec)
Get the current linear velocity of this PhysicsRigidBody

Parameters:
vec - the vector to store the velocity in

setLinearVelocity

public void setLinearVelocity(Vector3f vec)
Sets the linear velocity of this PhysicsRigidBody

Parameters:
vec - the linear velocity of this PhysicsRigidBody

applyForce

public void applyForce(Vector3f force,
                       Vector3f location)
Apply a force to the PhysicsRigidBody, only applies force if the next physics update call updates the physics space.
To apply an impulse, use applyImpulse, use applyContinuousForce to apply continuous force.

Parameters:
force - the force
location - the location of the force

applyCentralForce

public void applyCentralForce(Vector3f force)
Apply a force to the PhysicsRigidBody, only applies force if the next physics update call updates the physics space.
To apply an impulse, use applyImpulse.

Parameters:
force - the force

applyTorque

public void applyTorque(Vector3f torque)
Apply a force to the PhysicsRigidBody, only applies force if the next physics update call updates the physics space.
To apply an impulse, use applyImpulse.

Parameters:
torque - the torque

applyImpulse

public void applyImpulse(Vector3f impulse,
                         Vector3f rel_pos)
Apply an impulse to the PhysicsRigidBody in the next physics update.

Parameters:
impulse - applied impulse
rel_pos - location relative to object

applyTorqueImpulse

public void applyTorqueImpulse(Vector3f vec)
Apply a torque impulse to the PhysicsRigidBody in the next physics update.

Parameters:
vec -

clearForces

public void clearForces()
Clear all forces from the PhysicsRigidBody


setCollisionShape

public void setCollisionShape(CollisionShape collisionShape)
Description copied from class: PhysicsCollisionObject
Sets a CollisionShape to this physics object, note that the object should not be in the physics space when adding a new collision shape as it is rebuilt on the physics side.

Overrides:
setCollisionShape in class PhysicsCollisionObject
Parameters:
collisionShape - the CollisionShape to set

activate

public void activate()
reactivates this PhysicsRigidBody when it has been deactivated because it was not moving


isActive

public boolean isActive()

setSleepingThresholds

public void setSleepingThresholds(float linear,
                                  float angular)
sets the sleeping thresholds, these define when the object gets deactivated to save ressources. Low values keep the object active when it barely moves

Parameters:
linear - the linear sleeping threshold
angular - the angular sleeping threshold

setLinearSleepingThreshold

public void setLinearSleepingThreshold(float linearSleepingThreshold)

setAngularSleepingThreshold

public void setAngularSleepingThreshold(float angularSleepingThreshold)

getLinearSleepingThreshold

public float getLinearSleepingThreshold()

getAngularSleepingThreshold

public float getAngularSleepingThreshold()

getAngularFactor

public float getAngularFactor()

setAngularFactor

public void setAngularFactor(float factor)

addJoint

public void addJoint(PhysicsJoint joint)
do not use manually, joints are added automatically


removeJoint

public void removeJoint(PhysicsJoint joint)

getJoints

public java.util.List<PhysicsJoint> getJoints()
Returns a list of connected joints. This list is only filled when the PhysicsRigidBody is actually added to the physics space or loaded from disk.

Returns:
list of active joints connected to this PhysicsRigidBody

getDebugShape

protected Spatial getDebugShape()
Overrides:
getDebugShape in class PhysicsCollisionObject

write

public void write(JmeExporter e)
           throws java.io.IOException
Specified by:
write in interface Savable
Overrides:
write in class PhysicsCollisionObject
Throws:
java.io.IOException

read

public void read(JmeImporter e)
          throws java.io.IOException
Specified by:
read in interface Savable
Overrides:
read in class PhysicsCollisionObject
Throws:
java.io.IOException