Interface CharacterContactListener

All Superinterfaces:
Comparable<ConstJoltPhysicsObject>, ConstJoltPhysicsObject
All Known Implementing Classes:
CustomCharacterContactListener

public interface CharacterContactListener extends ConstJoltPhysicsObject
Receive callbacks when a virtual character collides with something.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    onAdjustBodyVelocity(long characterVa, long body2Va, float[] velocities)
    Callback invoked (by native code) to adjust the velocity of the specified body as seen by the specified character.
    void
    onCharacterContactAdded(long characterVa, long otherCharacterVa, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, long settingsVa)
    Callback invoked (by native code) whenever 2 characters collide.
    void
    onCharacterContactSolve(long characterVa, long otherCharacterVa, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, float contactVelocityX, float contactVelocityY, float contactVelocityZ, long materialVa, float characterVelocityX, float characterVelocityY, float characterVelocityZ, float[] newCharacterVelocity)
    Callback invoked (by native code) whenever a character-versus-character contact is being solved.
    boolean
    onCharacterContactValidate(long characterVa, long otherCharacterVa, long subShapeId2Va)
    Callback invoked (by native code) to test whether the specified characters can collide.
    void
    onContactAdded(long characterVa, long bodyId2Va, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, long settingsVa)
    Callback invoked (by native code) whenever a character collides with a body.
    void
    onContactSolve(long characterVa, long bodyId2Va, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, float contactVelocityX, float contactVelocityY, float contactVelocityZ, long materialVa, float characterVelocityX, float characterVelocityY, float characterVelocityZ, float[] newCharacterVelocity)
    Callback invoked (by native code) whenever a character-versus-body contact is being solved.
    boolean
    onContactValidate(long characterVa, long bodyId2Va, long subShapeId2Va)
    Callback invoked (by native code) to test whether the specified character can collide with the specified body.

    Methods inherited from interface java.lang.Comparable

    compareTo

    Methods inherited from interface com.github.stephengold.joltjni.readonly.ConstJoltPhysicsObject

    close, hasAssignedNativeObject, ownsNativeObject, va
  • Method Details

    • onAdjustBodyVelocity

      void onAdjustBodyVelocity(long characterVa, long body2Va, float[] velocities)
      Callback invoked (by native code) to adjust the velocity of the specified body as seen by the specified character.
      Parameters:
      characterVa - the virtual address of the ConstCharacterVirtual (not zero)
      body2Va - the virtual address of the ConstBody (not zero)
      velocities - the components of the linear and angular velocities (length≥6, may be modified)
    • onCharacterContactAdded

      void onCharacterContactAdded(long characterVa, long otherCharacterVa, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, long settingsVa)
      Callback invoked (by native code) whenever 2 characters collide.
      Parameters:
      characterVa - the virtual address of the ConstCharacterVirtual being solved (not zero)
      otherCharacterVa - the virtual address of the other ConstCharacterVirtual (not zero)
      subShapeId2Va - the virtual address of the ConstSubShapeId of the shape that is being hit (not zero)
      contactLocationX - the X component of the contact location (in system coordinates)
      contactLocationY - the Y component of the contact location (in system coordinates)
      contactLocationZ - the Z component of the contact location (in system coordinates)
      contactNormalX - the X component of the contact normal (in system coordinates)
      contactNormalY - the Y component of the contact normal (in system coordinates)
      contactNormalZ - the Z component of the contact normal (in system coordinates)
      settingsVa - the virtual address of the CharacterContactSettings for storing the desired behavior
    • onCharacterContactSolve

      void onCharacterContactSolve(long characterVa, long otherCharacterVa, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, float contactVelocityX, float contactVelocityY, float contactVelocityZ, long materialVa, float characterVelocityX, float characterVelocityY, float characterVelocityZ, float[] newCharacterVelocity)
      Callback invoked (by native code) whenever a character-versus-character contact is being solved.
      Parameters:
      characterVa - the virtual address of the ConstCharacterVirtual being solved (not zero)
      otherCharacterVa - the virtual address of the other ConstCharacterVirtual (not zero)
      subShapeId2Va - the virtual address of the ConstSubShapeId of the shape that is being hit (not zero)
      contactLocationX - the X component of the contact location (in system coordinates)
      contactLocationY - the Y component of the contact location (in system coordinates)
      contactLocationZ - the Z component of the contact location (in system coordinates)
      contactNormalX - the X component of the contact normal (in system coordinates)
      contactNormalY - the Y component of the contact normal (in system coordinates)
      contactNormalZ - the Z component of the contact normal (in system coordinates)
      contactVelocityX - the X component of the velocity of the contact point (meters per second in system coordinates)
      contactVelocityY - the Y component of the velocity of the contact point (meters per second in system coordinates)
      contactVelocityZ - the Z component of the velocity of the contact point (meters per second in system coordinates)
      materialVa - the virtual address of the ConstPhysicsMaterial at the contact point (not zero)
      characterVelocityX - the X component of the character's prior velocity (in system coordinates)
      characterVelocityY - the Y component of the character's prior velocity (in system coordinates)
      characterVelocityZ - the Z component of the character's prior velocity (in system coordinates)
      newCharacterVelocity - storage for the new velocity vector (in system coordinates, length≥3)
    • onCharacterContactValidate

      boolean onCharacterContactValidate(long characterVa, long otherCharacterVa, long subShapeId2Va)
      Callback invoked (by native code) to test whether the specified characters can collide.
      Parameters:
      characterVa - the virtual address of the ConstCharacterVirtual being solved (not zero)
      otherCharacterVa - the virtual address of the other ConstCharacterVirtual (not zero)
      subShapeId2Va - the virtual address of the ConstSubShapeId of the shape that is being hit (not zero)
      Returns:
      true if the contact is valid, otherwise false
    • onContactAdded

      void onContactAdded(long characterVa, long bodyId2Va, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, long settingsVa)
      Callback invoked (by native code) whenever a character collides with a body.
      Parameters:
      characterVa - the virtual address of the ConstCharacterVirtual being solved (not zero)
      bodyId2Va - the virtual address of the ConstBody being solved (not zero)
      subShapeId2Va - the virtual address of the ConstSubShapeId of the shape that is being hit (not zero)
      contactLocationX - the X component of the contact location (in system coordinates)
      contactLocationY - the Y component of the contact location (in system coordinates)
      contactLocationZ - the Z component of the contact location (in system coordinates)
      contactNormalX - the X component of the contact normal (in system coordinates)
      contactNormalY - the Y component of the contact normal (in system coordinates)
      contactNormalZ - the Z component of the contact normal (in system coordinates)
      settingsVa - the virtual address of the CharacterContactSettings for storing the desired behavior
    • onContactSolve

      void onContactSolve(long characterVa, long bodyId2Va, long subShapeId2Va, double contactLocationX, double contactLocationY, double contactLocationZ, float contactNormalX, float contactNormalY, float contactNormalZ, float contactVelocityX, float contactVelocityY, float contactVelocityZ, long materialVa, float characterVelocityX, float characterVelocityY, float characterVelocityZ, float[] newCharacterVelocity)
      Callback invoked (by native code) whenever a character-versus-body contact is being solved.
      Parameters:
      characterVa - the virtual address of the ConstCharacterVirtual being solved (not zero)
      bodyId2Va - the virtual address of the ConstBody being solved (not zero)
      subShapeId2Va - the virtual address of the ConstSubShapeId of the shape that is being hit (not zero)
      contactLocationX - the X component of the contact location (in system coordinates)
      contactLocationY - the Y component of the contact location (in system coordinates)
      contactLocationZ - the Z component of the contact location (in system coordinates)
      contactNormalX - the X component of the contact normal (in system coordinates)
      contactNormalY - the Y component of the contact normal (in system coordinates)
      contactNormalZ - the Z component of the contact normal (in system coordinates)
      contactVelocityX - the X component of the velocity of the contact point (meters per second in system coordinates)
      contactVelocityY - the Y component of the velocity of the contact point (meters per second in system coordinates)
      contactVelocityZ - the Z component of the velocity of the contact point (meters per second in system coordinates)
      materialVa - the virtual address of the ConstPhysicsMaterial at the contact point (not zero)
      characterVelocityX - the X component of the character's prior velocity (meters per second in system coordinates)
      characterVelocityY - the Y component of the character's prior velocity (meters per second in system coordinates)
      characterVelocityZ - the Z component of the character's prior velocity (meters per second in system coordinates)
      newCharacterVelocity - storage for the new velocity vector (in system coordinates, length≥3)
    • onContactValidate

      boolean onContactValidate(long characterVa, long bodyId2Va, long subShapeId2Va)
      Callback invoked (by native code) to test whether the specified character can collide with the specified body.
      Parameters:
      characterVa - the virtual address of the ConstCharacterVirtual being solved (not zero)
      bodyId2Va - the virtual address of the ConstBody being solved (not zero)
      subShapeId2Va - the virtual address of the ConstSubShapeId of the shape that is being hit (not zero)
      Returns:
      true if the contact is valid, otherwise false