org.ode4j.ode
Class OdeHelper

java.lang.Object
  extended by org.ode4j.ode.OdeHelper

public abstract class OdeHelper
extends java.lang.Object

This is the general helper class for ode4j.

It provides:

  • Factory methods for most of the classes in ode4j
  • Initialisation methods (initOde2()
  • Collision methods
  • Other helper methods

  • Constructor Summary
    OdeHelper()
               
     
    Method Summary
    static int allocateODEDataForThread(int uiAllocateFlags)
              Deprecated. TZ I guess this can be removed?
    static boolean areConnected(DBody b1, DBody b2)
              Utility function.
    static boolean areConnectedExcluding(DBody body1, DBody body2, java.lang.Class<? extends DJoint>... jointType)
              Utility function.
    static boolean checkConfiguration(java.lang.String extension)
              Helper to check for a token in the ODE configuration string.
    static void closeODE()
              Close ODE after it is not needed any more.
    static int collide(DGeom o1, DGeom o2, int flags, DContactGeomBuffer contacts)
              Given two geoms o1 and o2 that potentially intersect, generate contact information for them.
    static DJoint connectingJoint(DBody b1, DBody b2)
               
    static java.util.List<DJoint> connectingJointList(DBody b1, DBody b2)
               
    static DAMotorJoint createAMotorJoint(DWorld world)
              Create a new joint of the A-motor type.
    static DAMotorJoint createAMotorJoint(DWorld world, DJointGroup group)
              Create a new joint of the A-motor type.
    static DBallJoint createBallJoint(DWorld world)
              Create a new joint of the ball type.
    static DBallJoint createBallJoint(DWorld world, DJointGroup group)
              Create a new joint of the ball type.
    static DBody createBody(DWorld w)
              Create a body in given world.
    static DBox createBox(double lx, double ly, double lz)
              Create a box geom with the provided side lengths.
    static DBox createBox(DSpace space, double lx, double ly, double lz)
              Create a box geom with the provided side lengths.
    static DCapsule createCapsule(double radius, double length)
               
    static DCapsule createCapsule(DSpace space, double radius, double length)
               
    static DContactJoint createContactJoint(DWorld world, DContact c)
              Create a new joint of the contact type.
    static DContactJoint createContactJoint(DWorld world, DJointGroup group, DContact c)
              Create a new joint of the contact type.
    static DConvex createConvex(double[] planes, int planecount, double[] points, int pointcount, int[] polygons)
               
    static DConvex createConvex(DSpace space, double[] planes, int planecount, double[] points, int pointcount, int[] polygons)
               
    static DCylinder createCylinder(double radius, double length)
               
    static DCylinder createCylinder(DSpace space, double radius, double length)
               
    static DFixedJoint createFixedJoint(DWorld world)
              Create a new joint of the fixed type.
    static DFixedJoint createFixedJoint(DWorld world, DJointGroup group)
              Create a new joint of the fixed type.
    static DGeomTransform createGeomTransform()
              Deprecated. TZ: Please do not use DGeomTransform.
    static DGeomTransform createGeomTransform(DSpace space)
              Deprecated. TZ: Please do not use DGeomTransform.
    static DHashSpace createHashSpace()
               
    static DHashSpace createHashSpace(DSpace space)
               
    static DHeightfield createHeightfield(DSpace space, DHeightfieldData data, boolean bPlaceable)
              Creates a heightfield geom.
    static DHeightfieldData createHeightfieldData()
              Creates a new empty dHeightfieldData.
    static DHinge2Joint createHinge2Joint(DWorld world)
              Create a new joint of the hinge2 type.
    static DHinge2Joint createHinge2Joint(DWorld world, DJointGroup group)
              Create a new joint of the hinge2 type.
    static DHingeJoint createHingeJoint(DWorld world)
              Create a new joint of the hinge type.
    static DHingeJoint createHingeJoint(DWorld world, DJointGroup group)
              Create a new joint of the hinge type.
    static DJoint.DJointFeedback createJointFeedback()
              Create a new joint feedback.
    static DJointGroup createJointGroup()
              Create a joint group.
    static DLMotorJoint createLMotorJoint(DWorld world)
              Create a new joint of the L-motor type.
    static DLMotorJoint createLMotorJoint(DWorld world, DJointGroup group)
              Create a new joint of the L-motor type.
    static DMass createMass()
               
    static DNullJoint createNullJoint(DWorld world)
               
    static DNullJoint createNullJoint(DWorld world, DJointGroup group)
               
    static DPistonJoint createPistonJoint(DWorld world)
              Create a new joint of the Piston type.
    static DPistonJoint createPistonJoint(DWorld world, DJointGroup group)
              Create a new joint of the Piston type.
    static DPlane createPlane(DSpace space, double a, double b, double c, double d)
               
    static DPlane2DJoint createPlane2DJoint(DWorld world)
              Create a new joint of the plane-2d type.
    static DPlane2DJoint createPlane2DJoint(DWorld world, DJointGroup group)
              Create a new joint of the plane-2d type.
    static DPRJoint createPRJoint(DWorld world)
              Create a new joint of the PR (Prismatic and Rotoide) type.
    static DPRJoint createPRJoint(DWorld world, DJointGroup group)
              Create a new joint of the PR (Prismatic and Rotoide) type.
    static DPUJoint createPUJoint(DWorld world)
              Create a new joint of the PU (Prismatic and Universal) type.
    static DPUJoint createPUJoint(DWorld world, DJointGroup group)
              Create a new joint of the PU (Prismatic and Universal) type.
    static DQuadTreeSpace createQuadTreeSpace(DSpace space, DVector3C Center, DVector3C Extents, int Depth)
               
    static DQuadTreeSpace createQuadTreeSpace(DVector3C Center, DVector3C Extents, int Depth)
               
    static DRay createRay(DSpace space, double length)
               
    static DRay createRay(int length)
               
    static DSapSpace createSapSpace(DSapSpace.AXES axes)
               
    static DSapSpace createSapSpace(DSpace space, DSapSpace.AXES axes)
               
    static DSimpleSpace createSimpleSpace()
               
    static DSimpleSpace createSimpleSpace(DSpace space)
               
    static DSliderJoint createSliderJoint(DWorld world)
              Create a new joint of the slider type.
    static DSliderJoint createSliderJoint(DWorld world, DJointGroup group)
              Create a new joint of the slider type.
    static DSphere createSphere(double radius)
              Create a sphere geom of the given radius, and return its ID.
    static DSphere createSphere(DSpace space, double radius)
              Create a sphere geom of the given radius, and return its ID.
    static DTriMesh createTriMesh(DSpace space, DTriMeshData Data, DTriMesh.DTriCallback Callback, DTriMesh.DTriArrayCallback ArrayCallback, DTriMesh.DTriRayCallback RayCallback)
              Trimesh class Construction.
    static DTriMeshData createTriMeshData()
              These don't make much sense now, but they will later when we add more features.
    static DUniversalJoint createUniversalJoint(DWorld world)
              Create a new joint of the universal type.
    static DUniversalJoint createUniversalJoint(DWorld world, DJointGroup group)
              Create a new joint of the universal type.
    static DWorld createWorld()
              Create a new, empty world and return its ID number.
    static java.lang.String getConfiguration()
              getConfiguration returns the specific ODE build configuration as a string of tokens.
    static java.lang.String getVersion()
               
    static void initODE()
              Deprecated. Please use initOde2() instead.
    static int initODE2(int uiInitFlags)
              Initializes ODE library.
    static void setColliderOverride(int i, int j, DColliderFn fn)
              Sets a custom collider function for two geom classes.
    static void spaceCollide(DSpace space, java.lang.Object data, DGeom.DNearCallback callback)
              Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair.
    static void spaceCollide2(DGeom space1, DGeom space2, java.lang.Object data, DGeom.DNearCallback callback)
              Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair.
    static void worldExportDIF(DWorld world, java.io.File f, java.lang.String string)
              Deprecated. TZ: Currently not implemented.
     
    Methods inherited from class java.lang.Object
    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Constructor Detail

    OdeHelper

    public OdeHelper()
    Method Detail

    createJointGroup

    public static DJointGroup createJointGroup()
    Create a joint group.


    createJointFeedback

    public static DJoint.DJointFeedback createJointFeedback()
    Create a new joint feedback.


    createAMotorJoint

    public static DAMotorJoint createAMotorJoint(DWorld world,
                                                 DJointGroup group)
    Create a new joint of the A-motor type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createAMotorJoint

    public static DAMotorJoint createAMotorJoint(DWorld world)
    Create a new joint of the A-motor type.


    createBallJoint

    public static DBallJoint createBallJoint(DWorld world,
                                             DJointGroup group)
    Create a new joint of the ball type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
    Remark:
    The joint is initially in "limbo" (i.e. it has no effect on the simulation) because it does not connect to any bodies.

    createBallJoint

    public static DBallJoint createBallJoint(DWorld world)
    Create a new joint of the ball type.

    Remark:
    The joint is initially in "limbo" (i.e. it has no effect on the simulation) because it does not connect to any bodies.

    createContactJoint

    public static DContactJoint createContactJoint(DWorld world,
                                                   DJointGroup group,
                                                   DContact c)
    Create a new joint of the contact type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createContactJoint

    public static DContactJoint createContactJoint(DWorld world,
                                                   DContact c)
    Create a new joint of the contact type.


    createFixedJoint

    public static DFixedJoint createFixedJoint(DWorld world,
                                               DJointGroup group)
    Create a new joint of the fixed type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createFixedJoint

    public static DFixedJoint createFixedJoint(DWorld world)
    Create a new joint of the fixed type.


    createHingeJoint

    public static DHingeJoint createHingeJoint(DWorld world,
                                               DJointGroup group)
    Create a new joint of the hinge type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createHingeJoint

    public static DHingeJoint createHingeJoint(DWorld world)
    Create a new joint of the hinge type.


    createHinge2Joint

    public static DHinge2Joint createHinge2Joint(DWorld world,
                                                 DJointGroup group)
    Create a new joint of the hinge2 type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createHinge2Joint

    public static DHinge2Joint createHinge2Joint(DWorld world)
    Create a new joint of the hinge2 type.


    createLMotorJoint

    public static DLMotorJoint createLMotorJoint(DWorld world,
                                                 DJointGroup group)
    Create a new joint of the L-motor type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createLMotorJoint

    public static DLMotorJoint createLMotorJoint(DWorld world)
    Create a new joint of the L-motor type.


    createNullJoint

    public static DNullJoint createNullJoint(DWorld world,
                                             DJointGroup group)

    createNullJoint

    public static DNullJoint createNullJoint(DWorld world)

    createPistonJoint

    public static DPistonJoint createPistonJoint(DWorld world,
                                                 DJointGroup group)
    Create a new joint of the Piston type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createPistonJoint

    public static DPistonJoint createPistonJoint(DWorld world)
    Create a new joint of the Piston type.


    createPlane2DJoint

    public static DPlane2DJoint createPlane2DJoint(DWorld world,
                                                   DJointGroup group)
    Create a new joint of the plane-2d type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createPlane2DJoint

    public static DPlane2DJoint createPlane2DJoint(DWorld world)
    Create a new joint of the plane-2d type.


    createPRJoint

    public static DPRJoint createPRJoint(DWorld world,
                                         DJointGroup group)
    Create a new joint of the PR (Prismatic and Rotoide) type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createPRJoint

    public static DPRJoint createPRJoint(DWorld world)
    Create a new joint of the PR (Prismatic and Rotoide) type.


    createPUJoint

    public static DPUJoint createPUJoint(DWorld world,
                                         DJointGroup group)
    Create a new joint of the PU (Prismatic and Universal) type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createPUJoint

    public static DPUJoint createPUJoint(DWorld world)
    Create a new joint of the PU (Prismatic and Universal) type.


    createSliderJoint

    public static DSliderJoint createSliderJoint(DWorld world,
                                                 DJointGroup group)
    Create a new joint of the slider type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createSliderJoint

    public static DSliderJoint createSliderJoint(DWorld world)
    Create a new joint of the slider type.


    createUniversalJoint

    public static DUniversalJoint createUniversalJoint(DWorld world,
                                                       DJointGroup group)
    Create a new joint of the universal type.

    Parameters:
    group - set to null to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.

    createUniversalJoint

    public static DUniversalJoint createUniversalJoint(DWorld world)
    Create a new joint of the universal type.


    createWorld

    public static DWorld createWorld()
    Create a new, empty world and return its ID number.

    Returns:
    an identifier

    createMass

    public static DMass createMass()

    createBody

    public static DBody createBody(DWorld w)
    Create a body in given world.

    Remark:
    Default mass parameters are at position (0,0,0).

    createSimpleSpace

    public static DSimpleSpace createSimpleSpace()

    createSimpleSpace

    public static DSimpleSpace createSimpleSpace(DSpace space)

    createSapSpace

    public static DSapSpace createSapSpace(DSapSpace.AXES axes)
    Parameters:
    axes - DSapSpace.AXES
    Returns:
    SAP Space

    createSapSpace

    public static DSapSpace createSapSpace(DSpace space,
                                           DSapSpace.AXES axes)
    Parameters:
    space -
    axes - DSapSpace.AXES
    Returns:
    SAP space

    createHashSpace

    public static DHashSpace createHashSpace()

    createHashSpace

    public static DHashSpace createHashSpace(DSpace space)

    createQuadTreeSpace

    public static DQuadTreeSpace createQuadTreeSpace(DVector3C Center,
                                                     DVector3C Extents,
                                                     int Depth)

    createQuadTreeSpace

    public static DQuadTreeSpace createQuadTreeSpace(DSpace space,
                                                     DVector3C Center,
                                                     DVector3C Extents,
                                                     int Depth)

    createBox

    public static DBox createBox(double lx,
                                 double ly,
                                 double lz)
    Create a box geom with the provided side lengths.

    Parameters:
    lx - the length of the box along the X axis
    ly - the length of the box along the Y axis
    lz - the length of the box along the Z axis
    Returns:
    A new box geom.
    See Also:
    DGeom.destroy(), DBox.setLengths(DVector3C), DBox.setLengths(double, double, double)
    Remark:
    The point of reference for a box is its center.

    createBox

    public static DBox createBox(DSpace space,
                                 double lx,
                                 double ly,
                                 double lz)
    Create a box geom with the provided side lengths.

    Parameters:
    space - a space to contain the new geom. May be null.
    lx - the length of the box along the X axis
    ly - the length of the box along the Y axis
    lz - the length of the box along the Z axis
    Returns:
    A new box geom.
    See Also:
    DGeom.destroy(), DBox.setLengths(DVector3C), DBox.setLengths(double, double, double)
    Remark:
    The point of reference for a box is its center.

    createCapsule

    public static DCapsule createCapsule(double radius,
                                         double length)

    createCapsule

    public static DCapsule createCapsule(DSpace space,
                                         double radius,
                                         double length)

    createConvex

    public static DConvex createConvex(double[] planes,
                                       int planecount,
                                       double[] points,
                                       int pointcount,
                                       int[] polygons)

    createConvex

    public static DConvex createConvex(DSpace space,
                                       double[] planes,
                                       int planecount,
                                       double[] points,
                                       int pointcount,
                                       int[] polygons)

    createCylinder

    public static DCylinder createCylinder(double radius,
                                           double length)

    createCylinder

    public static DCylinder createCylinder(DSpace space,
                                           double radius,
                                           double length)

    createGeomTransform

    public static DGeomTransform createGeomTransform()
    Deprecated. TZ: Please do not use DGeomTransform.


    createGeomTransform

    public static DGeomTransform createGeomTransform(DSpace space)
    Deprecated. TZ: Please do not use DGeomTransform.


    createPlane

    public static DPlane createPlane(DSpace space,
                                     double a,
                                     double b,
                                     double c,
                                     double d)

    createRay

    public static DRay createRay(int length)

    createRay

    public static DRay createRay(DSpace space,
                                 double length)

    createSphere

    public static DSphere createSphere(double radius)
    Create a sphere geom of the given radius, and return its ID.

    Parameters:
    radius - the radius of the sphere.
    Returns:
    A new sphere geom.
    See Also:
    DGeom.destroy(), DSphere.setRadius(double)
    Remark:
    The point of reference for a sphere is its center.

    createSphere

    public static DSphere createSphere(DSpace space,
                                       double radius)
    Create a sphere geom of the given radius, and return its ID.

    Parameters:
    space - a space to contain the new geom. May be null.
    radius - the radius of the sphere.
    Returns:
    A new sphere geom.
    See Also:
    DGeom.destroy(), DSphere.setRadius(double)
    Remark:
    The point of reference for a sphere is its center.

    initODE

    public static void initODE()
    Deprecated. Please use initOde2() instead.

    Initializes ODE library.

    dInitODE is obsolete. dInitODE2 is to be used for library initialization. A call to dInitODE is equal to the following initialization sequence


    initODE2(0);
    allocateODEDataForThread(dAllocateMaskAll);

    See Also:
    initODE2(int), allocateODEDataForThread(int)

    initODE2

    public static int initODE2(int uiInitFlags)
    Initializes ODE library.

    This function must be called to initialize ODE library before first use. If initialization succeeds the function may not be called again until library is closed with a call to dCloseODE.

    The uiInitFlags parameter specifies initialization options to be used. These can be combination of zero or more dInitODEFlags flags.

    Parameters:
    uiInitFlags - Initialization options bitmask
    Returns:
    A nonzero if initialization succeeded and zero otherwise.
    See Also:
    #initODEFlags, closeODE(), DSpace.setManualCleanup(int)
    Note:
    If dInitFlagManualThreadCleanup flag is used for initialization, dSpaceSetManualCleanup must be called to set manual cleanup mode for every space object right after creation. Failure to do so may lead to resource leaks.

    closeODE

    public static void closeODE()
    Close ODE after it is not needed any more.

    The function is required to be called when program does not need ODE features any more. The call to dCloseODE releases all the resources allocated for library including all the thread local data that might be allocated for all the threads that were using ODE.

    dCloseODE is a paired function for dInitODE2 and must only be called after successful library initialization.

    See Also:
    initODE2(int), #dCleanupODEAllDataForThread
    Note:
    Important! Make sure that all the threads that were using ODE have already terminated before calling dCloseODE. In particular it is not allowed to call dCleanupODEAllDataForThread after dCloseODE.

    collide

    public static int collide(DGeom o1,
                              DGeom o2,
                              int flags,
                              DContactGeomBuffer contacts)
    Given two geoms o1 and o2 that potentially intersect, generate contact information for them.

    Internally, this just calls the correct class-specific collision functions for o1 and o2.

    Parameters:
    o1 - The first geom to test.
    o2 - The second geom to test.
    flags - The flags specify how contacts should be generated if the geoms touch. The lower 16 bits of flags is an integer that specifies the maximum number of contact points to generate. You must ask for at least one contact. Additionally, following bits may be set: CONTACTS_UNIMPORTANT -- just generate any contacts (skip contact refining). All other bits in flags must be set to zero. In the future the other bits may be used to select from different contact generation strategies.
    contacts - Points to an array of dContactGeom structures. The array must be able to hold at least the maximum number of contacts. These dContactGeom structures may be embedded within larger structures in the array -- the skip parameter is the byte offset from one dContactGeom to the next in the array. If skip is sizeof(dContactGeom) then contact points to a normal (C-style) array. It is an error for skip to be smaller than sizeof(dContactGeom).
    Returns:
    If the geoms intersect, this function returns the number of contact points generated (and updates the contact array), otherwise it returns 0 (and the contact array is not touched).
    Remark:
    If a space is passed as o1 or o2 then this function will collide all objects contained in o1 with all objects contained in o2, and return the resulting contact points. This method for colliding spaces with geoms (or spaces with spaces) provides no user control over the individual collisions. To get that control, use dSpaceCollide or dSpaceCollide2 instead., If o1 and o2 are the same geom then this function will do nothing and return 0. Technically speaking an object intersects with itself, but it is not useful to find contact points in this case., This function does not care if o1 and o2 are in the same space or not (or indeed if they are in any space at all).

    areConnected

    public static boolean areConnected(DBody b1,
                                       DBody b2)
    Utility function.

    Returns:
    true if the two bodies are connected together by a joint, otherwise return 0.

    areConnectedExcluding

    public static boolean areConnectedExcluding(DBody body1,
                                                DBody body2,
                                                java.lang.Class<? extends DJoint>... jointType)
    Utility function.

    Parameters:
    body1 - A body to check.
    body2 - A body to check.
    jointType - is a set of subclasses of DJoint. This is useful for deciding whether to add contact joints between two bodies: if they are already connected by non-contact joints then it may not be appropriate to add contacts, however it is okay to add more contact between- bodies that already have contacts.
    Returns:
    true if the two bodies are connected together by a joint that does not have type @arg{joint_type}, otherwise return 0.

    checkConfiguration

    public static boolean checkConfiguration(java.lang.String extension)
    Helper to check for a token in the ODE configuration string. Caution, this function is case sensitive.

    Parameters:
    extension - A configuration token, see dGetConfiguration for details
    Returns:
    true if exact token is present, false if not present

    getConfiguration

    public static java.lang.String getConfiguration()
    getConfiguration returns the specific ODE build configuration as a string of tokens. The string can be parsed in a similar way to the OpenGL extension mechanism, the naming convention should be familiar too. The following extensions are reported: ODE ODE_single_precision ODE_double_precision ODE_EXT_no_debug ODE_EXT_trimesh ODE_EXT_opcode ODE_EXT_gimpact ODE_EXT_malloc_not_alloca ODE_EXT_gyroscopic ODE_OPC_16bit_indices ODE_OPC_new_collider


    getVersion

    public static java.lang.String getVersion()
    Returns:
    The version String.

    worldExportDIF

    public static void worldExportDIF(DWorld world,
                                      java.io.File f,
                                      java.lang.String string)
    Deprecated. TZ: Currently not implemented.

    Parameters:
    world -
    f -
    string -

    allocateODEDataForThread

    public static int allocateODEDataForThread(int uiAllocateFlags)
    Deprecated. TZ I guess this can be removed?

    Allocate thread local data to allow the thread calling ODE. The function is required to be called for every thread that is going to use ODE. This function allocates the data that is required for accessing ODE from current thread along with optional data required for particular ODE subsystems. uiAllocateFlags parameter can contain zero or more flags from dAllocateODEDataFlags enumerated type. Multiple calls with different allocation flags are allowed. The flags that are already allocated are ignored in subsequent calls. If zero is passed as the parameter, it means to only allocate the set of most important data the library can not operate without. If the function returns failure status it means that none of the requested data has been allocated. The client may retry allocation attempt with the same flags when more system resources are available.

    Parameters:
    uiAllocateFlags - Allocation options bitmask.
    Returns:
    A nonzero if allocation succeeded and zero otherwise.
    See Also:
    #dAllocateODEDataFlags, #dCleanupODEAllDataForThread

    createHeightfield

    public static DHeightfield createHeightfield(DSpace space,
                                                 DHeightfieldData data,
                                                 boolean bPlaceable)
    Creates a heightfield geom.

    Uses the information in the given dHeightfieldData to construct a geom representing a heightfield in a collision space.

    Parameters:
    space - The space to add the geom to.
    data - The dHeightfieldData created by dGeomHeightfieldDataCreate and setup by dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat.
    bPlaceable - If non-zero this geom can be transformed in the world using the usual functions such as dGeomSetPosition and dGeomSetRotation. If the geom is not set as placeable, then it uses a fixed orientation where the global y axis represents the dynamic 'height' of the heightfield.
    Returns:
    A geom id to reference this geom in other calls.

    createHeightfieldData

    public static DHeightfieldData createHeightfieldData()
    Creates a new empty dHeightfieldData.

    Allocates a new dHeightfieldData and returns it. You must call dGeomHeightfieldDataDestroy to destroy it after the geom has been removed. The dHeightfieldData value is used when specifying a data format type.

    Returns:
    A dHeightfieldData for use with dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat.

    createTriMesh

    public static DTriMesh createTriMesh(DSpace space,
                                         DTriMeshData Data,
                                         DTriMesh.DTriCallback Callback,
                                         DTriMesh.DTriArrayCallback ArrayCallback,
                                         DTriMesh.DTriRayCallback RayCallback)
    Trimesh class Construction. Callbacks are optional.


    createTriMeshData

    public static DTriMeshData createTriMeshData()
    These don't make much sense now, but they will later when we add more features.


    spaceCollide

    public static void spaceCollide(DSpace space,
                                    java.lang.Object data,
                                    DGeom.DNearCallback callback)
    Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair. This is equivalent to DSpace.collide(...).

    Parameters:
    space - The space to test.
    data - Passed from dSpaceCollide directly to the callback function. Its meaning is user defined. The o1 and o2 arguments are the geoms that may be near each other.
    callback - A callback function is of type @ref dNearCallback.
    See Also:
    #spaceCollide2(DGeom, DGeom, Object, DNearCallback), DSpace#collide(Object, DNearCallback)
    Remark:
    Other spaces that are contained within the colliding space are not treated specially, i.e. they are not recursed into. The callback function may be passed these contained spaces as one or both geom arguments., dSpaceCollide() is guaranteed to pass all intersecting geom pairs to the callback function, but may also pass close but non-intersecting pairs. The number of these calls depends on the internal algorithms used by the space. Thus you should not expect that dCollide will return contacts for every pair passed to the callback.

    spaceCollide2

    public static void spaceCollide2(DGeom space1,
                                     DGeom space2,
                                     java.lang.Object data,
                                     DGeom.DNearCallback callback)
    Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair.

    Parameters:
    space1 - The first space to test.
    space2 - The second space to test.
    data - Passed from dSpaceCollide directly to the callback function. Its meaning is user defined. The o1 and o2 arguments are the geoms that may be near each other.
    callback - A callback function is of type @ref dNearCallback.
    See Also:
    #spaceCollide(DSpace, Object, DNearCallback), DSpace.setSublevel(int)
    Remark:
    This function can also test a single non-space geom against a space. This function is useful when there is a collision hierarchy, i.e. when there are spaces that contain other spaces., Other spaces that are contained within the colliding space are not treated specially, i.e. they are not recursed into. The callback function may be passed these contained spaces as one or both geom arguments., Sublevel value of space affects how the spaces are iterated. Both spaces are recursed only if their sublevels match. Otherwise, only the space with greater sublevel is recursed and the one with lesser sublevel is used as a geom itself., dSpaceCollide2() is guaranteed to pass all intersecting geom pairs to the callback function, but may also pass close but non-intersecting pairs. The number of these calls depends on the internal algorithms used by the space. Thus you should not expect that dCollide will return contacts for every pair passed to the callback.

    setColliderOverride

    public static void setColliderOverride(int i,
                                           int j,
                                           DColliderFn fn)
    Sets a custom collider function for two geom classes.

    Parameters:
    i - The first geom class handled by this collider
    j - The second geom class handled by this collider
    fn - The collider function to use to determine collisions.

    connectingJoint

    public static DJoint connectingJoint(DBody b1,
                                         DBody b2)

    connectingJointList

    public static java.util.List<DJoint> connectingJointList(DBody b1,
                                                             DBody b2)