public class PhysicsSpace
extends java.lang.Object
PhysicsSpace - The central jbullet-jme physics space
Modifier and Type | Class and Description |
---|---|
static class |
PhysicsSpace.BroadphaseType
interface with Broadphase types
|
Modifier and Type | Field and Description |
---|---|
static int |
AXIS_X
index of the X axis
|
static int |
AXIS_Y
index of the Y axis
|
static int |
AXIS_Z
index of the Z axis
|
Constructor and Description |
---|
PhysicsSpace() |
PhysicsSpace(PhysicsSpace.BroadphaseType broadphaseType) |
PhysicsSpace(Vector3f worldMin,
Vector3f worldMax) |
PhysicsSpace(Vector3f worldMin,
Vector3f worldMax,
PhysicsSpace.BroadphaseType broadphaseType) |
Modifier and Type | Method and Description |
---|---|
void |
add(java.lang.Object obj)
adds an object to the physics space
|
void |
addAll(Spatial spatial)
adds all physics controls and joints in the given spatial node to the physics space
(e.g.
|
void |
addCollisionGroupListener(PhysicsCollisionGroupListener listener,
int collisionGroup)
Adds a listener for a specific collision group, such a listener can disable collisions when they happen.
There can be only one listener per collision group. |
void |
addCollisionListener(PhysicsCollisionListener listener)
Adds a CollisionListener that will be informed about collision events
|
void |
addCollisionObject(PhysicsCollisionObject obj) |
void |
addTickListener(PhysicsTickListener listener)
Adds the specified listener to the physics tick listeners.
|
void |
applyGravity()
applies gravity value to all objects
|
void |
clearForces()
clears forces of all objects
|
void |
create()
Has to be called from the (designated) physics thread
|
void |
destroy()
destroys the current PhysicsSpace so that a new one can be created
|
void |
distributeEvents() |
<V> java.util.concurrent.Future<V> |
enqueue(java.util.concurrent.Callable<V> callable)
calls the callable on the next physics tick (ensuring e.g.
|
static <V> java.util.concurrent.Future<V> |
enqueueOnThisThread(java.util.concurrent.Callable<V> callable) |
float |
getAccuracy()
get the current accuracy of the physics computation
|
PhysicsSpace.BroadphaseType |
getBroadphaseType() |
java.util.Collection<PhysicsCharacter> |
getCharacterList() |
com.bulletphysics.dynamics.DynamicsWorld |
getDynamicsWorld()
used internally
|
java.util.Collection<PhysicsGhostObject> |
getGhostObjectList() |
Vector3f |
getGravity(Vector3f gravity)
Gets the gravity of the PhysicsSpace
|
java.util.Collection<PhysicsJoint> |
getJointList() |
static PhysicsSpace |
getPhysicsSpace()
Get the current PhysicsSpace running on this thread
For parallel physics, this can also be called from the OpenGL thread to receive the PhysicsSpace |
java.util.Collection<PhysicsRigidBody> |
getRigidBodyList() |
int |
getSolverNumIterations() |
java.util.Collection<PhysicsVehicle> |
getVehicleList() |
Vector3f |
getWorldMax() |
Vector3f |
getWorldMin() |
java.util.List<PhysicsRayTestResult> |
rayTest(Vector3f from,
Vector3f to)
Performs a ray collision test and returns the results as a list of PhysicsRayTestResults
|
java.util.List<PhysicsRayTestResult> |
rayTest(Vector3f from,
Vector3f to,
java.util.List<PhysicsRayTestResult> results)
Performs a ray collision test and returns the results as a list of PhysicsRayTestResults
|
void |
remove(java.lang.Object obj)
removes an object from the physics space
|
void |
removeAll(Spatial spatial)
Removes all physics controls and joints in the given spatial from the physics space
(e.g.
|
void |
removeCollisionGroupListener(int collisionGroup) |
void |
removeCollisionListener(PhysicsCollisionListener listener)
Removes a CollisionListener from the list
|
void |
removeCollisionObject(PhysicsCollisionObject obj) |
void |
removeTickListener(PhysicsTickListener listener) |
void |
setAccuracy(float accuracy)
sets the accuracy of the physics computation, default=1/60s
|
void |
setBroadphaseType(PhysicsSpace.BroadphaseType broadphaseType) |
void |
setGravity(Vector3f gravity)
Sets the gravity of the PhysicsSpace, set before adding physics objects!
|
static void |
setLocalThreadPhysicsSpace(PhysicsSpace space)
Used internally
|
void |
setMaxSubSteps(int steps)
Sets the maximum amount of extra steps that will be used to step the physics
when the fps is below the physics fps.
|
void |
setSolverNumIterations(int numIterations)
Set the number of iterations used by the contact solver.
|
void |
setWorldMax(Vector3f worldMax)
only applies for AXIS_SWEEP broadphase
|
void |
setWorldMin(Vector3f worldMin)
only applies for AXIS_SWEEP broadphase
|
java.util.List<PhysicsSweepTestResult> |
sweepTest(CollisionShape shape,
Transform start,
Transform end)
Performs a sweep collision test and returns the results as a list of PhysicsSweepTestResults
You have to use different Transforms for start and end (at least distance greater than 0.4f). |
java.util.List<PhysicsSweepTestResult> |
sweepTest(CollisionShape shape,
Transform start,
Transform end,
java.util.List<PhysicsSweepTestResult> results)
Performs a sweep collision test and returns the results as a list of PhysicsSweepTestResults
You have to use different Transforms for start and end (at least distance greater than 0.4f). |
void |
update(float time)
updates the physics space
|
void |
update(float time,
int maxSteps)
updates the physics space, uses maxSteps
|
public static final int AXIS_X
public static final int AXIS_Y
public static final int AXIS_Z
public PhysicsSpace()
public PhysicsSpace(PhysicsSpace.BroadphaseType broadphaseType)
public PhysicsSpace(Vector3f worldMin, Vector3f worldMax, PhysicsSpace.BroadphaseType broadphaseType)
public static PhysicsSpace getPhysicsSpace()
public static void setLocalThreadPhysicsSpace(PhysicsSpace space)
space
- which space to simulate on the current threadpublic void create()
public void update(float time)
time
- the current time valuepublic void update(float time, int maxSteps)
time
- the current time valuemaxSteps
- the maximum number of steps of size accuracy (≥1) or 0
for a single step of size timeIntervalpublic void distributeEvents()
public static <V> java.util.concurrent.Future<V> enqueueOnThisThread(java.util.concurrent.Callable<V> callable)
public <V> java.util.concurrent.Future<V> enqueue(java.util.concurrent.Callable<V> callable)
V
- the return type of the Callablecallable
- the Callable to invokepublic void add(java.lang.Object obj)
obj
- the PhysicsControl or Spatial with PhysicsControl to addpublic void addCollisionObject(PhysicsCollisionObject obj)
public void remove(java.lang.Object obj)
obj
- the PhysicsControl or Spatial with PhysicsControl to removepublic void removeCollisionObject(PhysicsCollisionObject obj)
public void addAll(Spatial spatial)
spatial
- the rootnode containing the physics objectspublic void removeAll(Spatial spatial)
spatial
- the rootnode containing the physics objectspublic java.util.Collection<PhysicsRigidBody> getRigidBodyList()
public java.util.Collection<PhysicsGhostObject> getGhostObjectList()
public java.util.Collection<PhysicsCharacter> getCharacterList()
public java.util.Collection<PhysicsJoint> getJointList()
public java.util.Collection<PhysicsVehicle> getVehicleList()
public void setGravity(Vector3f gravity)
gravity
- the desired acceleration vector
(in physics-space coordinates, not null, unaffected, default=0,-10,0)public Vector3f getGravity(Vector3f gravity)
gravity
- storage for the result (modified if not null)public void applyGravity()
public void clearForces()
public void addTickListener(PhysicsTickListener listener)
listener
- the listener to register (not null, alias created)public void removeTickListener(PhysicsTickListener listener)
public void addCollisionListener(PhysicsCollisionListener listener)
listener
- the CollisionListener to addpublic void removeCollisionListener(PhysicsCollisionListener listener)
listener
- the CollisionListener to removepublic void addCollisionGroupListener(PhysicsCollisionGroupListener listener, int collisionGroup)
listener
- the listener to register (not null, alias created)collisionGroup
- which group it should listen for (bitmask with
exactly one bit set)public void removeCollisionGroupListener(int collisionGroup)
public java.util.List<PhysicsRayTestResult> rayTest(Vector3f from, Vector3f to)
from
- the starting location (physics-space coordinates, not null,
unaffected)to
- the ending location (in physics-space coordinates, not null,
unaffected)public java.util.List<PhysicsRayTestResult> rayTest(Vector3f from, Vector3f to, java.util.List<PhysicsRayTestResult> results)
from
- the starting location (in physics-space coordinates, not
null, unaffected)to
- the ending location (in physics-space coordinates, not null,
unaffected)results
- the list to hold results (not null, modified)public java.util.List<PhysicsSweepTestResult> sweepTest(CollisionShape shape, Transform start, Transform end)
shape
- the shape to sweep (not null, convex, unaffected)start
- the starting physics-space transform (not null, unaffected)end
- the ending physics-space transform (not null, unaffected)public java.util.List<PhysicsSweepTestResult> sweepTest(CollisionShape shape, Transform start, Transform end, java.util.List<PhysicsSweepTestResult> results)
shape
- the shape to sweep (not null, convex, unaffected)start
- the starting physics-space transform (not null, unaffected)end
- the ending physics-space transform (not null, unaffected)results
- the list to hold results (not null, modified)public void destroy()
public com.bulletphysics.dynamics.DynamicsWorld getDynamicsWorld()
public PhysicsSpace.BroadphaseType getBroadphaseType()
public void setBroadphaseType(PhysicsSpace.BroadphaseType broadphaseType)
public void setMaxSubSteps(int steps)
steps
- The maximum number of extra steps, default is 4.public float getAccuracy()
public void setAccuracy(float accuracy)
accuracy
- the desired time step (in seconds, default=1/60)public Vector3f getWorldMin()
public void setWorldMin(Vector3f worldMin)
worldMin
- the desired minimum coordinates values (not null,
unaffected, default=-10k,-10k,-10k)public Vector3f getWorldMax()
public void setWorldMax(Vector3f worldMax)
worldMax
- the desired maximum coordinates values (not null,
unaffected, default=10k,10k,10k)public void setSolverNumIterations(int numIterations)
numIterations
- The number of iterations used by the contact and constraint solver.public int getSolverNumIterations()