public void performRaycast(TriangleCallback callback, Vector3f raySource, Vector3f rayTarget) {
    MyNodeOverlapCallback myNodeCallback = myNodeCallbacks.get();
    myNodeCallback.init(callback, meshInterface);

    bvh.reportRayOverlappingNodex(myNodeCallback, raySource, rayTarget);

    myNodeCallbacks.release(myNodeCallback);
  }
  public void performConvexcast(
      TriangleCallback callback,
      Vector3f raySource,
      Vector3f rayTarget,
      Vector3f aabbMin,
      Vector3f aabbMax) {
    MyNodeOverlapCallback myNodeCallback = myNodeCallbacks.get();
    myNodeCallback.init(callback, meshInterface);

    bvh.reportBoxCastOverlappingNodex(myNodeCallback, raySource, rayTarget, aabbMin, aabbMax);

    myNodeCallbacks.release(myNodeCallback);
  }
  /** Perform bvh tree traversal and report overlapping triangles to 'callback'. */
  @Override
  public void processAllTriangles(TriangleCallback callback, Vector3f aabbMin, Vector3f aabbMax) {
    // #ifdef DISABLE_BVH
    // // brute force traverse all triangles
    // btTriangleMeshShape::processAllTriangles(callback,aabbMin,aabbMax);
    // #else

    // first get all the nodes
    MyNodeOverlapCallback myNodeCallback = myNodeCallbacks.get();
    myNodeCallback.init(callback, meshInterface);

    bvh.reportAabbOverlappingNodex(myNodeCallback, aabbMin, aabbMax);

    myNodeCallbacks.release(myNodeCallback);
    // #endif//DISABLE_BVH
  }