Class CharacterController

java.lang.Object
com.jme3.bullet.NativePhysicsObject
com.jme3.bullet.objects.infos.CharacterController
All Implemented Interfaces:
com.jme3.export.Savable, com.jme3.util.clone.JmeCloneable, Cloneable, Comparable<NativePhysicsObject>

public class CharacterController extends NativePhysicsObject implements com.jme3.util.clone.JmeCloneable, com.jme3.export.Savable
The "action" (controller) portion of a PhysicsCharacter, based on Bullet's btKinematicCharacterController.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Logger
    message logger for this class

    Fields inherited from class com.jme3.bullet.NativePhysicsObject

    loggerN
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    No-argument constructor needed by SavableClassUtil.
     
    Instantiate a controller for the specified collision object.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    cloneFields(com.jme3.util.clone.Cloner cloner, Object original)
    Callback from Cloner to convert this shallow-cloned character into a deep-cloned one, using the specified Cloner and original to resolve copied fields.
    void
    Copy all parameter values from the specified controller.
    float
    Determine the character's angular damping.
    com.jme3.math.Vector3f
    getAngularVelocity(com.jme3.math.Vector3f storeResult)
    Determine the character's angular velocity.
    float
    Determine the character's maximum fall speed (terminal velocity).
    com.jme3.math.Vector3f
    getGravity(com.jme3.math.Vector3f storeResult)
    Determine the character's gravitational acceleration.
    float
    Determine the character's jump speed.
    float
    Determine the character's linear damping.
    com.jme3.math.Vector3f
    getLinearVelocity(com.jme3.math.Vector3f storeResult)
    Determine the linear velocity of the character's center.
    float
    Determine the character's maximum penetration depth.
    float
    Determine the character's maximum slope angle.
    float
    Determine the character's step height.
    com.jme3.math.Vector3f
    getUpDirection(com.jme3.math.Vector3f storeResult)
    Determine the character's "up" direction.
    com.jme3.math.Vector3f
    getWalkDirection(com.jme3.math.Vector3f storeResult)
    Determine the character's walk offset.
    boolean
    Test whether the ghost's convex-sweep test is in use.
    Create a shallow clone for the JME cloner.
    void
    jump(com.jme3.math.Vector3f direction)
    Jump in the specified direction.
    boolean
    Test whether the character is on the ground.
    void
    read(com.jme3.export.JmeImporter importer)
    De-serialize this controller from the specified importer, for example when loading from a J3O file.
    void
    Reset this controller, including its velocity.
    void
    setAngularDamping(float damping)
    Alter the character's angular damping.
    void
    setAngularVelocity(com.jme3.math.Vector3f angularVelocity)
    Alter the character's angular velocity.
    void
    setFallSpeed(float fallSpeed)
    Alter the character's maximum fall speed (terminal velocity).
    void
    setGravity(com.jme3.math.Vector3f gravity)
    Alter the character's gravitational acceleration.
    void
    setJumpSpeed(float jumpSpeed)
    Alter the character's jump speed.
    void
    setLinearDamping(float damping)
    Alter the character's linear damping.
    void
    setLinearVelocity(com.jme3.math.Vector3f velocity)
    Alter the linear velocity of the character's center.
    void
    Alter the character's maximum penetration depth.
    void
    setMaxSlope(float slopeRadians)
    Alter the character's maximum slope angle.
    void
    setStepHeight(float height)
    Alter the character's step height.
    void
    setSweepTest(boolean useGhostSweepTest)
    Alter which convex-sweep test is used.
    void
    setUp(com.jme3.math.Vector3f direction)
    Alter the character's "up" direction.
    void
    setWalkDirection(com.jme3.math.Vector3f offset)
    Alter the character's walk offset.
    void
    warp(com.jme3.math.Vector3f location)
    Directly alter the location of the character's center.
    void
    warpDp(com.simsilica.mathd.Vec3d location)
    Directly alter the location of the character's center.
    void
    write(com.jme3.export.JmeExporter exporter)
    Serialize this controller to the specified exporter, for example when saving to a J3O file.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • logger

      public static final Logger logger
      message logger for this class
  • Constructor Details

    • CharacterController

      protected CharacterController()
      No-argument constructor needed by SavableClassUtil.
    • CharacterController

      public CharacterController(PhysicsCharacter character)
      Instantiate a controller for the specified collision object.
      Parameters:
      character - the collision object to control (not null)
  • Method Details

    • copyAll

      public void copyAll(CharacterController source)
      Copy all parameter values from the specified controller.
      Parameters:
      source - the controller to copy from (not null, unaffected)
    • getAngularDamping

      public float getAngularDamping()
      Determine the character's angular damping.
      Returns:
      the viscous damping ratio (0→no damping, 1→critically damped)
    • getAngularVelocity

      public com.jme3.math.Vector3f getAngularVelocity(com.jme3.math.Vector3f storeResult)
      Determine the character's angular velocity.
      Parameters:
      storeResult - storage for the result (modified if not null)
      Returns:
      the velocity vector (either storeResult or a new vector, not null)
    • getFallSpeed

      public float getFallSpeed()
      Determine the character's maximum fall speed (terminal velocity).
      Returns:
      the speed (in physics-space units per second)
    • getGravity

      public com.jme3.math.Vector3f getGravity(com.jme3.math.Vector3f storeResult)
      Determine the character's gravitational acceleration.
      Parameters:
      storeResult - storage for the result (modified if not null)
      Returns:
      an acceleration vector (in physics-space units per second squared, direction opposite the "up" vector, either storeResult or a new vector, not null)
    • getJumpSpeed

      public float getJumpSpeed()
      Determine the character's jump speed.
      Returns:
      the speed (in physics-space units per second)
    • getLinearDamping

      public float getLinearDamping()
      Determine the character's linear damping.
      Returns:
      the viscous damping ratio (0→no damping, 1→critically damped)
    • getLinearVelocity

      public com.jme3.math.Vector3f getLinearVelocity(com.jme3.math.Vector3f storeResult)
      Determine the linear velocity of the character's center.
      Parameters:
      storeResult - storage for the result (modified if not null)
      Returns:
      a vector (either storeResult or a new vector, not null)
    • getMaxPenetrationDepth

      public float getMaxPenetrationDepth()
      Determine the character's maximum penetration depth.
      Returns:
      the depth (in physics-space units)
    • getMaxSlope

      public float getMaxSlope()
      Determine the character's maximum slope angle.
      Returns:
      the angle relative to the horizontal (in radians)
    • getStepHeight

      public float getStepHeight()
      Determine the character's step height.
      Returns:
      the maximum amount of vertical movement without jumping or falling (in physics-space units)
    • getUpDirection

      public com.jme3.math.Vector3f getUpDirection(com.jme3.math.Vector3f storeResult)
      Determine the character's "up" direction.
      Parameters:
      storeResult - storage for the result (modified if not null)
      Returns:
      a unit vector (in physics-space coordinates, in the direction opposite the gravity vector, either storeResult or a new vector, not null)
    • getWalkDirection

      public com.jme3.math.Vector3f getWalkDirection(com.jme3.math.Vector3f storeResult)
      Determine the character's walk offset.
      Parameters:
      storeResult - storage for the result (modified if not null)
      Returns:
      an offset vector (either storeResult or a new vector, not null)
    • isUsingGhostSweepTest

      public boolean isUsingGhostSweepTest()
      Test whether the ghost's convex-sweep test is in use.
      Returns:
      true if using the ghost's convex-sweep test, otherwise false
    • jump

      public void jump(com.jme3.math.Vector3f direction)
      Jump in the specified direction.
      Parameters:
      direction - desired jump direction (not null, unaffected) or (0,0,0) to jump in the "up" direction
    • onGround

      public boolean onGround()
      Test whether the character is on the ground.
      Returns:
      true if on the ground, otherwise false
    • reset

      public void reset(PhysicsSpace space)
      Reset this controller, including its velocity.
      Parameters:
      space - (not null)
    • setAngularDamping

      public void setAngularDamping(float damping)
      Alter the character's angular damping.
      Parameters:
      damping - the desired viscous damping ratio (0→no damping, 1→critically damped, default=0)
    • setAngularVelocity

      public void setAngularVelocity(com.jme3.math.Vector3f angularVelocity)
      Alter the character's angular velocity.
      Parameters:
      angularVelocity - the desired angular velocity vector (not null, unaffected)
    • setFallSpeed

      public void setFallSpeed(float fallSpeed)
      Alter the character's maximum fall speed (terminal velocity).
      Parameters:
      fallSpeed - the desired speed (in physics-space units per second, default=55)
    • setGravity

      public void setGravity(com.jme3.math.Vector3f gravity)
      Alter the character's gravitational acceleration. This may also alter its "up" vector.
      Parameters:
      gravity - the desired acceleration vector (in physics-space units per second squared, not null, finite, unaffected, default=(0,-29.4,0))
    • setJumpSpeed

      public void setJumpSpeed(float jumpSpeed)
      Alter the character's jump speed.
      Parameters:
      jumpSpeed - the desired speed (in physics-space units per second, default=10)
    • setLinearDamping

      public void setLinearDamping(float damping)
      Alter the character's linear damping.
      Parameters:
      damping - the desired viscous damping ratio (0→no damping, 1→critically damped, default=0)
    • setLinearVelocity

      public void setLinearVelocity(com.jme3.math.Vector3f velocity)
      Alter the linear velocity of the character's center.
      Parameters:
      velocity - the desired velocity vector (not null, finite)
    • setMaxPenetrationDepth

      public void setMaxPenetrationDepth(float depth)
      Alter the character's maximum penetration depth.
      Parameters:
      depth - the desired depth (in physics-space units, default=0.2)
    • setMaxSlope

      public void setMaxSlope(float slopeRadians)
      Alter the character's maximum slope angle.
      Parameters:
      slopeRadians - the desired angle relative to the horizontal (in radians, default=Pi/4)
    • setStepHeight

      public void setStepHeight(float height)
      Alter the character's step height.
      Parameters:
      height - the desired maximum amount of vertical movement without jumping or falling (in physics-space units, default=1)
    • setSweepTest

      public void setSweepTest(boolean useGhostSweepTest)
      Alter which convex-sweep test is used.
      Parameters:
      useGhostSweepTest - true to use the ghost's test, false to use the world's test (default=true)
    • setUp

      public void setUp(com.jme3.math.Vector3f direction)
      Alter the character's "up" direction. This may also alter its gravity vector.
      Parameters:
      direction - the desired direction (not null, not zero, unaffected, default=(0,1,0))
    • setWalkDirection

      public void setWalkDirection(com.jme3.math.Vector3f offset)
      Alter the character's walk offset. The offset must be perpendicular to the "up" direction. It will continue to be applied until altered again.
      Parameters:
      offset - the desired location increment for each simulation step (in physics-space coordinates, not null, finite, unaffected, default=(0,0,0))
    • warp

      public void warp(com.jme3.math.Vector3f location)
      Directly alter the location of the character's center.
      Parameters:
      location - the desired physics location (not null, finite, unaffected)
    • warpDp

      public void warpDp(com.simsilica.mathd.Vec3d location)
      Directly alter the location of the character's center.
      Parameters:
      location - the desired physics location (not null, unaffected)
    • cloneFields

      public void cloneFields(com.jme3.util.clone.Cloner cloner, Object original)
      Callback from Cloner to convert this shallow-cloned character into a deep-cloned one, using the specified Cloner and original to resolve copied fields.
      Specified by:
      cloneFields in interface com.jme3.util.clone.JmeCloneable
      Parameters:
      cloner - the Cloner that's cloning this character (not null)
      original - the instance from which this character was shallow-cloned (not null, unaffected)
    • jmeClone

      public CharacterController jmeClone()
      Create a shallow clone for the JME cloner.
      Specified by:
      jmeClone in interface com.jme3.util.clone.JmeCloneable
      Returns:
      a new instance
    • read

      public void read(com.jme3.export.JmeImporter importer) throws IOException
      De-serialize this controller from the specified importer, for example when loading from a J3O file.
      Specified by:
      read in interface com.jme3.export.Savable
      Parameters:
      importer - (not null)
      Throws:
      IOException - from the importer
    • write

      public void write(com.jme3.export.JmeExporter exporter) throws IOException
      Serialize this controller to the specified exporter, for example when saving to a J3O file.
      Specified by:
      write in interface com.jme3.export.Savable
      Parameters:
      exporter - (not null)
      Throws:
      IOException - from the exporter