Package com.github.stephengold.joltjni
Class Character
java.lang.Object
com.github.stephengold.joltjni.JoltPhysicsObject
com.github.stephengold.joltjni.NonCopyable
com.github.stephengold.joltjni.CharacterBase
com.github.stephengold.joltjni.Character
- All Implemented Interfaces:
ConstCharacter,ConstCharacterBase,ConstJoltPhysicsObject,RefTarget,AutoCloseable,Comparable<ConstJoltPhysicsObject>
A character implemented using a kinematic rigid body.
-
Constructor Summary
ConstructorsConstructorDescriptionCharacter(ConstCharacterSettings settings, RVec3Arg location, QuatArg orientation, long userData, PhysicsSystem system) Instantiate a character with the specified properties. -
Method Summary
Modifier and TypeMethodDescriptionvoidactivate()Wake up the character using the locking body interface.voidactivate(boolean lockBodies) Wake up the character.voidaddImpulse(Vec3Arg impulse) Apply an impulse to the character's center of mass, using the locking body interface.voidaddImpulse(Vec3Arg impulse, boolean lockBodies) Apply an impulse to the character's center of mass.voidaddLinearVelocity(Vec3Arg deltaV) Add to the character's linear velocity, using the locking body interface.voidaddLinearVelocity(Vec3Arg deltaV, boolean lockBodies) Add to the character's linear velocity.voidAdd the character to itsPhysicsSystemand activate it, using the locking body interface.voidaddToPhysicsSystem(EActivation activation) Add the character to itsPhysicsSystemusing the locking body interface.voidaddToPhysicsSystem(EActivation activation, boolean lockBodies) Add the character to itsPhysicsSystem.Return the ID of the body associated with this character.Return the location of the rigid body's center of mass using the locking body interface.getCenterOfMassPosition(boolean lockBodies) Return the location of the rigid body's center of mass.intgetLayer()Return the character's object layer, using the locking body interface.intgetLayer(boolean lockBodies) Return the character's object layer.Copy the linear velocity of the character using the locking body interface.getLinearVelocity(boolean lockBodies) Copy the linear velocity of the character.Copy the location of the character using the locking body interface.getPosition(boolean lockBodies) Copy the location of the character.voidgetPositionAndRotation(RVec3 storeLocation, Quat storeOrientation) Copy the position of the associated body using the locking body interface.voidgetPositionAndRotation(RVec3 storeLocation, Quat storeOrientation, boolean lockBodies) Copy the position of the associated body.intCount the active references to the nativeCharacter.Copy the orientation of the character using the locking body interface.getRotation(boolean lockBodies) Copy the orientation of the character.Calculate the character's local-to-system coordinate transform using the locking body interface.getWorldTransform(boolean lockBodies) Calculate the character's local-to-system coordinate transform.voidpostSimulation(float maxSeparation) Needs to be invoked after every physics update.voidpostSimulation(float maxSeparation, boolean lockBodies) Needs to be invoked after every physics update.voidRemove the character from itsPhysicsSystemusing the locking body interface.voidremoveFromPhysicsSystem(boolean lockBodies) Remove the character from itsPhysicsSystem.voidMark the nativeCharacteras embedded.voidsetLayer(int layer) Alter the character's object layer, using the locking body interface.voidsetLayer(int layer, boolean lockBodies) Alter the character's object layer.voidsetLinearAndAngularVelocity(Vec3Arg linearVelocity, Vec3Arg omega) Alter the character's motion using the locking body interface.voidsetLinearAndAngularVelocity(Vec3Arg linearVelocity, Vec3Arg omega, boolean lockBodies) Alter the character's motion.voidsetLinearVelocity(Vec3Arg velocity) Alter the character's linear velocity using the locking body interface.voidsetLinearVelocity(Vec3Arg velocity, boolean lockBodies) Alter the character's linear velocity.voidsetPosition(RVec3Arg location) Re-locate and activate the character using the locking body interface.voidsetPosition(RVec3Arg location, EActivation activation) Re-locate the character, optionally activating it, using the locking body interface.voidsetPosition(RVec3Arg location, EActivation activation, boolean lockBodies) Re-locate the character, optionally activating it.voidsetPositionAndRotation(RVec3Arg location, QuatArg orientation) Re-position and activate the character using the locking body interface.voidsetPositionAndRotation(RVec3Arg location, QuatArg orientation, EActivation activation) Re-position the character, optionally activating it.voidsetPositionAndRotation(RVec3Arg location, QuatArg orientation, EActivation activation, boolean lockBodies) Re-position the character, optionally activating it.voidsetRotation(QuatArg orientation) Re-orient and activate the character using the locking body interface.voidsetRotation(QuatArg orientation, EActivation activation) Re-orient the character, optionally activating it.voidsetRotation(QuatArg orientation, EActivation activation, boolean lockBodies) Re-orient the character, optionally activating it.booleansetShape(ConstShape shape, float maxPenetrationDepth) Attempt to alter the character's shape using the locking body interface.booleansetShape(ConstShape shape, float maxPenetrationDepth, boolean lockBodies) Attempt to alter the character's shape.toRef()Create a counted reference to the nativeCharacter.Methods inherited from class com.github.stephengold.joltjni.CharacterBase
getCosMaxSlopeAngle, getGroundBodyId, getGroundMaterial, getGroundNormal, getGroundPosition, getGroundState, getGroundSubShapeId, getGroundUserData, getGroundVelocity, getShape, getUp, isSlopeTooSteep, isSupported, restoreState, saveState, setMaxSlopeAngle, setUpMethods inherited from class com.github.stephengold.joltjni.JoltPhysicsObject
close, compareTo, equals, hasAssignedNativeObject, hashCode, ownsNativeObject, setVirtualAddress, startCleaner, toString, vaMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Comparable
compareToMethods inherited from interface com.github.stephengold.joltjni.readonly.ConstCharacterBase
getCosMaxSlopeAngle, getGroundBodyId, getGroundMaterial, getGroundNormal, getGroundPosition, getGroundState, getGroundSubShapeId, getGroundUserData, getGroundVelocity, getShape, getUp, isSlopeTooSteep, isSupported, saveStateMethods inherited from interface com.github.stephengold.joltjni.readonly.ConstJoltPhysicsObject
close, hasAssignedNativeObject, ownsNativeObject, va
-
Constructor Details
-
Character
public Character(ConstCharacterSettings settings, RVec3Arg location, QuatArg orientation, long userData, PhysicsSystem system) Instantiate a character with the specified properties.- Parameters:
settings- the settings to use (not null, unaffected)location- the desired initial location (in system coordinates, not null, unaffected)orientation- the desired initial orientation (in system coordinates, not null, unaffected)userData- the desired user-data valuesystem- the system to which the character will be added (not null)
-
-
Method Details
-
activate
public void activate()Wake up the character using the locking body interface. -
activate
public void activate(boolean lockBodies) Wake up the character.- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
addImpulse
Apply an impulse to the character's center of mass, using the locking body interface.- Parameters:
impulse- the impulse vector (kilogram.meters per second in system coordinates, not null, unaffected)
-
addImpulse
Apply an impulse to the character's center of mass.- Parameters:
impulse- the impulse vector (kilogram.meters per second in system coordinates, not null, unaffected)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
addLinearVelocity
Add to the character's linear velocity, using the locking body interface.- Parameters:
deltaV- the change in velocity (meters per second in system coordinates, not null, unaffected)
-
addLinearVelocity
Add to the character's linear velocity.- Parameters:
deltaV- the change in velocity (meters per second in system coordinates, not null, unaffected)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
addToPhysicsSystem
public void addToPhysicsSystem()Add the character to itsPhysicsSystemand activate it, using the locking body interface. -
addToPhysicsSystem
Add the character to itsPhysicsSystemusing the locking body interface.- Parameters:
activation- whether to activate the character (not null, default=Activate)
-
addToPhysicsSystem
Add the character to itsPhysicsSystem.- Parameters:
activation- whether to activate the character (not null, default=Activate)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
postSimulation
public void postSimulation(float maxSeparation) Needs to be invoked after every physics update.- Parameters:
maxSeparation- the max distance between the floor and the character for standing
-
postSimulation
public void postSimulation(float maxSeparation, boolean lockBodies) Needs to be invoked after every physics update.- Parameters:
maxSeparation- the max distance between the floor and the character for standinglockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
removeFromPhysicsSystem
public void removeFromPhysicsSystem()Remove the character from itsPhysicsSystemusing the locking body interface. -
removeFromPhysicsSystem
public void removeFromPhysicsSystem(boolean lockBodies) Remove the character from itsPhysicsSystem.- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
setLayer
public void setLayer(int layer) Alter the character's object layer, using the locking body interface.- Parameters:
layer- the index of the desired layer
-
setLayer
public void setLayer(int layer, boolean lockBodies) Alter the character's object layer.- Parameters:
layer- the index of the desired layerlockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
setLinearAndAngularVelocity
Alter the character's motion using the locking body interface.- Parameters:
linearVelocity- the desired linear velocity (meters per second in system coordinates, not null, unaffected)omega- the desired angular velocity (radians per second in system coordinates, not null, unaffected)
-
setLinearAndAngularVelocity
Alter the character's motion.- Parameters:
linearVelocity- the desired linear velocity (meters per second in system coordinates, not null, unaffected)omega- the desired angular velocity (radians per second in system coordinates, not null, unaffected)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
setLinearVelocity
Alter the character's linear velocity using the locking body interface.- Parameters:
velocity- the desired velocity (meters per second in system coordinates, not null, unaffected)
-
setLinearVelocity
Alter the character's linear velocity.- Parameters:
velocity- the desired velocity (meters per second in system coordinates, not null, unaffected)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
setPosition
Re-locate and activate the character using the locking body interface.- Parameters:
location- the desired location (in system coordinates, not null, unaffected)
-
setPosition
Re-locate the character, optionally activating it, using the locking body interface.- Parameters:
location- the desired location (in system coordinates, not null, unaffected)activation- whether to activate the character (not null, default=Activate)
-
setPosition
Re-locate the character, optionally activating it.- Parameters:
location- the desired location (in system coordinates, not null, unaffected)activation- whether to activate the character (not null, default=Activate)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
setPositionAndRotation
Re-position and activate the character using the locking body interface.- Parameters:
location- the desired location (in system coordinates, not null, unaffected)orientation- the desired orientation (in system coordinates, not null, unaffected)
-
setPositionAndRotation
Re-position the character, optionally activating it.- Parameters:
location- the desired location (in system coordinates, not null, unaffected)orientation- the desired orientation (in system coordinates, not null, unaffected)activation- whether to activate the character (not null, default=Activate)
-
setPositionAndRotation
public void setPositionAndRotation(RVec3Arg location, QuatArg orientation, EActivation activation, boolean lockBodies) Re-position the character, optionally activating it.- Parameters:
location- the desired location (in system coordinates, not null, unaffected)orientation- the desired orientation (in system coordinates, not null, unaffected)activation- whether to activate the character (not null, default=Activate)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
setRotation
Re-orient and activate the character using the locking body interface.- Parameters:
orientation- the desired orientation (in system coordinates, not null, unaffected)
-
setRotation
Re-orient the character, optionally activating it.- Parameters:
orientation- the desired orientation (in system coordinates, not null, unaffected)activation- whether to activate the character (not null, default=Activate)
-
setRotation
Re-orient the character, optionally activating it.- Parameters:
orientation- the desired orientation (in system coordinates, not null, unaffected)activation- whether to activate the character (not null, default=Activate)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
setShape
Attempt to alter the character's shape using the locking body interface.- Parameters:
shape- the desired shape (not null, unaffected)maxPenetrationDepth- the maximum penetration to allow, or MAX_VALUE to skip the penetration check- Returns:
- true if the alteration succeeded, otherwise false
-
setShape
Attempt to alter the character's shape.- Parameters:
shape- the desired shape (not null, unaffected)maxPenetrationDepth- the maximum penetration to allow, or MAX_VALUE to skip the penetration checklockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)- Returns:
- true if the alteration succeeded, otherwise false
-
getBodyId
Return the ID of the body associated with this character. The character is unaffected.- Specified by:
getBodyIdin interfaceConstCharacter- Returns:
- a new ID
-
getCenterOfMassPosition
Return the location of the rigid body's center of mass using the locking body interface. The character is unaffected.- Specified by:
getCenterOfMassPositionin interfaceConstCharacter- Returns:
- a new location vector (in system coordinates)
-
getCenterOfMassPosition
Return the location of the rigid body's center of mass. The character is unaffected.- Specified by:
getCenterOfMassPositionin interfaceConstCharacter- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)- Returns:
- a new location vector (in system coordinates)
-
getLayer
public int getLayer()Return the character's object layer, using the locking body interface. The character is unaffected.- Specified by:
getLayerin interfaceConstCharacter- Returns:
- a layer index (≥0)
-
getLayer
public int getLayer(boolean lockBodies) Return the character's object layer. The character is unaffected.- Specified by:
getLayerin interfaceConstCharacter- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)- Returns:
- a layer index (≥0)
-
getLinearVelocity
Copy the linear velocity of the character using the locking body interface. The character is unaffected.- Specified by:
getLinearVelocityin interfaceConstCharacter- Returns:
- a new velocity vector (meters per second in system coordinates)
-
getLinearVelocity
Copy the linear velocity of the character. The character is unaffected.- Specified by:
getLinearVelocityin interfaceConstCharacter- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)- Returns:
- a new velocity vector (meters per second in system coordinates)
-
getPosition
Copy the location of the character using the locking body interface. The character is unaffected.- Specified by:
getPositionin interfaceConstCharacter- Returns:
- a new location vector (in system coordinates)
-
getPosition
Copy the location of the character. The character is unaffected.- Specified by:
getPositionin interfaceConstCharacter- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)- Returns:
- a new location vector (in system coordinates)
-
getPositionAndRotation
Copy the position of the associated body using the locking body interface. The character is unaffected.- Specified by:
getPositionAndRotationin interfaceConstCharacter- Parameters:
storeLocation- the desired location (in system coordinates, not null, unaffected)storeOrientation- the desired orientation (in system coordinates, not null, unaffected)
-
getPositionAndRotation
Copy the position of the associated body. The character is unaffected.- Specified by:
getPositionAndRotationin interfaceConstCharacter- Parameters:
storeLocation- the desired location (in system coordinates, not null, unaffected)storeOrientation- the desired orientation (in system coordinates, not null, unaffected)lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)
-
getRotation
Copy the orientation of the character using the locking body interface. The character is unaffected.- Specified by:
getRotationin interfaceConstCharacter- Returns:
- a new rotation quaternion (in system coordinates)
-
getRotation
Copy the orientation of the character. The character is unaffected.- Specified by:
getRotationin interfaceConstCharacter- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)- Returns:
- a new rotation quaternion (in system coordinates)
-
getWorldTransform
Calculate the character's local-to-system coordinate transform using the locking body interface. The character is unaffected.- Specified by:
getWorldTransformin interfaceConstCharacter- Returns:
- a new coordinate transform matrix
-
getWorldTransform
Calculate the character's local-to-system coordinate transform. The character is unaffected.- Specified by:
getWorldTransformin interfaceConstCharacter- Parameters:
lockBodies- true→use the locking body interface, false→use the non-locking body interface (default=true)- Returns:
- a new transform matrix
-
getRefCount
public int getRefCount()Count the active references to the nativeCharacter. The character is unaffected.- Specified by:
getRefCountin interfaceRefTarget- Returns:
- the count (≥0)
-
setEmbedded
public void setEmbedded()Mark the nativeCharacteras embedded.- Specified by:
setEmbeddedin interfaceRefTarget
-
toRef
Create a counted reference to the nativeCharacter.- Specified by:
toRefin interfaceRefTarget- Specified by:
toRefin classCharacterBase- Returns:
- a new JVM object with a new native object assigned
-