public class Bullet3Collision extends Bullet3Collision
| Modifier and Type | Field and Description |
|---|---|
static int |
B3_DBVT_BP_ACCURATESLEEPING |
static int |
B3_DBVT_BP_ENABLE_BENCHMARK |
static double |
B3_DBVT_BP_MARGIN |
static int |
B3_DBVT_BP_PREVENTFALSEUPDATE
b3DynamicBvhBroadphase implementation by Nathanael Presson
|
static int |
B3_DBVT_ENABLE_BENCHMARK |
static int |
B3_DBVT_IMPL_GENERIC
b3DynamicBvh implementation by Nathanael Presson
|
static int |
B3_DBVT_IMPL_SSE |
static int |
B3_DBVT_INT0_IMPL |
static int |
B3_DBVT_MERGE_IMPL |
static int |
B3_DBVT_SELECT_IMPL |
static int |
B3_DBVT_USE_INTRINSIC_SSE |
static int |
B3_DBVT_USE_MEMMOVE |
static int |
B3_MAX_NUM_PARTS_IN_BITS |
static int |
B3_MAX_VERTS |
static int |
B3_MPR_MAX_ITERATIONS |
static double |
B3_MPR_TOLERANCE
---------------------------------
Copyright (c)2012 Daniel Fiser
|
static int |
B3_NEW_PAIR_MARKER |
static int |
B3_REMOVED_PAIR_MARKER |
static int |
B3_USE_PLACEMENT_NEW
If the platform doesn't support placement new, you can disable B3_USE_PLACEMENT_NEW
then the b3AlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors
You can enable B3_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator=
see discussion here: https://bulletphysics.orgphpBB2/viewtopic.php?t=1231 and
http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240
|
static int |
MAX_NUM_SHAPE_TYPES
enum b3ShapeTypes
|
static int |
SHAPE_COMPOUND_OF_CONVEX_HULLS
enum b3ShapeTypes
|
static int |
SHAPE_CONCAVE_TRIMESH
enum b3ShapeTypes
|
static int |
SHAPE_CONVEX_HULL
enum b3ShapeTypes
|
static int |
SHAPE_HEIGHT_FIELD
enum b3ShapeTypes
|
static int |
SHAPE_PLANE
enum b3ShapeTypes
|
static int |
SHAPE_SPHERE
enum b3ShapeTypes
|
| Constructor and Description |
|---|
Bullet3Collision() |
| Modifier and Type | Method and Description |
|---|---|
static float |
_b3MprVec3PointSegmentDist2(b3Vector3 P,
b3Vector3 x0,
b3Vector3 b,
b3Vector3 witness) |
static int |
B3_NULL_PAIR() |
static int |
b3ClipFace(b3Vector3 pVtxIn,
int numVertsIn,
b3Vector3 planeNormalWS,
float planeEqWS,
b3Vector3 ppVtxOut) |
static int |
b3ClipFaceAgainstHull(b3Vector3 separatingNormal,
b3ConvexPolyhedronData hullA,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 worldVertsB1,
int numWorldVertsB1,
b3Vector3 worldVertsB2,
int capacityWorldVertsB2,
float minDist,
float maxDist,
b3Vector3Array verticesA,
b3GpuFaceArray facesA,
b3IntArray indicesA,
b3Vector3 contactsOut,
int contactCapacity) |
static int |
b3ClipHullAgainstHull(b3Vector3 separatingNormal,
b3ConvexPolyhedronData hullA,
b3ConvexPolyhedronData hullB,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 posB,
b3Quaternion ornB,
b3Vector3 worldVertsB1,
b3Vector3 worldVertsB2,
int capacityWorldVerts,
float minDist,
float maxDist,
b3Vector3Array verticesA,
b3GpuFaceArray facesA,
b3IntArray indicesA,
b3Vector3Array verticesB,
b3GpuFaceArray facesB,
b3IntArray indicesB,
b3Vector3 contactsOut,
int contactCapacity) |
static int |
b3ClipHullHullSingle(int bodyIndexA,
int bodyIndexB,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 posB,
b3Quaternion ornB,
int collidableIndexA,
int collidableIndexB,
b3RigidBodyDataArray bodyBuf,
b3Contact4DataArray globalContactOut,
int[] nContacts,
b3ConvexPolyhedronDataArray hostConvexDataA,
b3ConvexPolyhedronDataArray hostConvexDataB,
b3Vector3Array verticesA,
b3Vector3Array uniqueEdgesA,
b3GpuFaceArray facesA,
b3IntArray indicesA,
b3Vector3Array verticesB,
b3Vector3Array uniqueEdgesB,
b3GpuFaceArray facesB,
b3IntArray indicesB,
b3CollidableArray hostCollidablesA,
b3CollidableArray hostCollidablesB,
b3Vector3 sepNormalWorldSpace,
int maxContactCapacity) |
static int |
b3ClipHullHullSingle(int bodyIndexA,
int bodyIndexB,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 posB,
b3Quaternion ornB,
int collidableIndexA,
int collidableIndexB,
b3RigidBodyDataArray bodyBuf,
b3Contact4DataArray globalContactOut,
IntBuffer nContacts,
b3ConvexPolyhedronDataArray hostConvexDataA,
b3ConvexPolyhedronDataArray hostConvexDataB,
b3Vector3Array verticesA,
b3Vector3Array uniqueEdgesA,
b3GpuFaceArray facesA,
b3IntArray indicesA,
b3Vector3Array verticesB,
b3Vector3Array uniqueEdgesB,
b3GpuFaceArray facesB,
b3IntArray indicesB,
b3CollidableArray hostCollidablesA,
b3CollidableArray hostCollidablesB,
b3Vector3 sepNormalWorldSpace,
int maxContactCapacity) |
static int |
b3ClipHullHullSingle(int bodyIndexA,
int bodyIndexB,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 posB,
b3Quaternion ornB,
int collidableIndexA,
int collidableIndexB,
b3RigidBodyDataArray bodyBuf,
b3Contact4DataArray globalContactOut,
IntPointer nContacts,
b3ConvexPolyhedronDataArray hostConvexDataA,
b3ConvexPolyhedronDataArray hostConvexDataB,
b3Vector3Array verticesA,
b3Vector3Array uniqueEdgesA,
b3GpuFaceArray facesA,
b3IntArray indicesA,
b3Vector3Array verticesB,
b3Vector3Array uniqueEdgesB,
b3GpuFaceArray facesB,
b3IntArray indicesB,
b3CollidableArray hostCollidablesA,
b3CollidableArray hostCollidablesB,
b3Vector3 sepNormalWorldSpace,
int maxContactCapacity) |
static int |
b3Contact4Data_getNumPoints(b3Contact4Data contact) |
static void |
b3Contact4Data_setNumPoints(b3Contact4Data contact,
int numPoints) |
static int |
b3ContactConvexConvexSAT(int pairIndex,
int bodyIndexA,
int bodyIndexB,
int collidableIndexA,
int collidableIndexB,
b3RigidBodyDataArray rigidBodies,
b3CollidableArray collidables,
b3ConvexPolyhedronDataArray convexShapes,
b3Vector3Array convexVertices,
b3Vector3Array uniqueEdges,
b3IntArray convexIndices,
b3GpuFaceArray faces,
b3Contact4DataArray globalContactsOut,
int[] nGlobalContactsOut,
int maxContactCapacity) |
static int |
b3ContactConvexConvexSAT(int pairIndex,
int bodyIndexA,
int bodyIndexB,
int collidableIndexA,
int collidableIndexB,
b3RigidBodyDataArray rigidBodies,
b3CollidableArray collidables,
b3ConvexPolyhedronDataArray convexShapes,
b3Vector3Array convexVertices,
b3Vector3Array uniqueEdges,
b3IntArray convexIndices,
b3GpuFaceArray faces,
b3Contact4DataArray globalContactsOut,
IntBuffer nGlobalContactsOut,
int maxContactCapacity) |
static int |
b3ContactConvexConvexSAT(int pairIndex,
int bodyIndexA,
int bodyIndexB,
int collidableIndexA,
int collidableIndexB,
b3RigidBodyDataArray rigidBodies,
b3CollidableArray collidables,
b3ConvexPolyhedronDataArray convexShapes,
b3Vector3Array convexVertices,
b3Vector3Array uniqueEdges,
b3IntArray convexIndices,
b3GpuFaceArray faces,
b3Contact4DataArray globalContactsOut,
IntPointer nGlobalContactsOut,
int maxContactCapacity) |
static int |
b3DiscoverPortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
int[] hasSepAxis,
b3MprSimplex_t portal) |
static int |
b3DiscoverPortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntBuffer hasSepAxis,
b3MprSimplex_t portal) |
static int |
b3DiscoverPortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntPointer hasSepAxis,
b3MprSimplex_t portal) |
static void |
b3ExpandPortal(b3MprSimplex_t portal,
b3MprSupport_t v4) |
static void |
b3FindOrigin(int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3MprSupport_t center) |
static void |
b3FindPenetr(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal,
float[] depth,
b3Vector3 pdir,
b3Vector3 pos) |
static void |
b3FindPenetr(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal,
FloatBuffer depth,
b3Vector3 pdir,
b3Vector3 pos) |
static void |
b3FindPenetr(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal,
FloatPointer depth,
b3Vector3 pdir,
b3Vector3 pos) |
static void |
b3FindPenetrSegment(b3MprSimplex_t portal,
float[] depth,
b3Vector3 dir,
b3Vector3 pos) |
static void |
b3FindPenetrSegment(b3MprSimplex_t portal,
FloatBuffer depth,
b3Vector3 dir,
b3Vector3 pos) |
static void |
b3FindPenetrSegment(b3MprSimplex_t portal,
FloatPointer depth,
b3Vector3 dir,
b3Vector3 pos) |
static void |
b3FindPenetrTouch(b3MprSimplex_t portal,
float[] depth,
b3Vector3 dir,
b3Vector3 pos) |
static void |
b3FindPenetrTouch(b3MprSimplex_t portal,
FloatBuffer depth,
b3Vector3 dir,
b3Vector3 pos) |
static void |
b3FindPenetrTouch(b3MprSimplex_t portal,
FloatPointer depth,
b3Vector3 dir,
b3Vector3 pos) |
static void |
b3FindPos(b3MprSimplex_t portal,
b3Vector3 pos) |
static boolean |
b3FindSeparatingAxis(b3ConvexPolyhedronData hullA,
b3ConvexPolyhedronData hullB,
b3Vector3 posA1,
b3Quaternion ornA,
b3Vector3 posB1,
b3Quaternion ornB,
b3Vector3Array verticesA,
b3Vector3Array uniqueEdgesA,
b3GpuFaceArray facesA,
b3IntArray indicesA,
b3Vector3Array verticesB,
b3Vector3Array uniqueEdgesB,
b3GpuFaceArray facesB,
b3IntArray indicesB,
b3Vector3 sep) |
static int |
b3g_addedPairs() |
static void |
b3g_addedPairs(int setter) |
static int |
b3g_findPairs() |
static void |
b3g_findPairs(int setter) |
static int |
b3g_removePairs() |
static void |
b3g_removePairs(int setter) |
static int |
b3GetEscapeIndex(b3QuantizedBvhNodeData rootNode) |
static float |
b3GetInvMass(b3RigidBodyData body) |
static int |
b3GetTriangleIndex(b3QuantizedBvhNodeData rootNode) |
static boolean |
b3Intersect(b3DbvtAabbMm a,
b3DbvtAabbMm b) |
static boolean |
b3Intersect(b3DbvtAabbMm a,
b3Vector3 b) |
static int |
b3IsLeaf(b3QuantizedBvhNodeData rootNode) |
static b3Vector3 |
b3Lerp3(b3Vector3 a,
b3Vector3 b,
float t) |
static b3Vector3 |
b3LocalGetSupportVertex(b3Vector3 supportVec,
b3ConvexPolyhedronData hull,
b3Vector3 verticesA) |
static b3Int4 |
b3MakeBroadphasePair(int xx,
int yy) |
static void |
b3Merge(b3DbvtAabbMm a,
b3DbvtAabbMm b,
b3DbvtAabbMm r) |
static void |
b3MprConvexSupport(int pairIndex,
int bodyIndex,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3Vector3 _dir,
b3Vector3 outp,
int logme) |
static int |
b3MprEq(float _a,
float _b) |
static int |
b3MprIsZero(float val) |
static int |
b3MprPenetration(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
int[] hasSepAxis,
float[] depthOut,
b3Vector3 dirOut,
b3Vector3 posOut) |
static int |
b3MprPenetration(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntBuffer hasSepAxis,
FloatBuffer depthOut,
b3Vector3 dirOut,
b3Vector3 posOut) |
static int |
b3MprPenetration(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntPointer hasSepAxis,
FloatPointer depthOut,
b3Vector3 dirOut,
b3Vector3 posOut) |
static b3MprSupport_t |
b3MprSimplexPoint(b3MprSimplex_t s,
int idx) |
static b3MprSupport_t |
b3MprSimplexPointW(b3MprSimplex_t s,
int idx) |
static void |
b3MprSimplexSet(b3MprSimplex_t s,
long pos,
b3MprSupport_t a) |
static void |
b3MprSimplexSetSize(b3MprSimplex_t s,
int size) |
static int |
b3MprSimplexSize(b3MprSimplex_t s) |
static void |
b3MprSimplexSwap(b3MprSimplex_t s,
long pos1,
long pos2) |
static void |
b3MprSupport(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3Vector3 _dir,
b3MprSupport_t supp) |
static void |
b3MprSupportCopy(b3MprSupport_t d,
b3MprSupport_t s) |
static void |
b3MprVec3Add(b3Vector3 v,
b3Vector3 w) |
static void |
b3MprVec3Copy(b3Vector3 v,
b3Vector3 w) |
static void |
b3MprVec3Cross(b3Vector3 d,
b3Vector3 a,
b3Vector3 b) |
static float |
b3MprVec3Dist2(b3Vector3 a,
b3Vector3 b) |
static float |
b3MprVec3Dot(b3Vector3 a,
b3Vector3 b) |
static int |
b3MprVec3Eq(b3Vector3 a,
b3Vector3 b) |
static float |
b3MprVec3Len2(b3Vector3 v) |
static void |
b3MprVec3Normalize(b3Vector3 d) |
static float |
b3MprVec3PointTriDist2(b3Vector3 P,
b3Vector3 x0,
b3Vector3 B,
b3Vector3 C,
b3Vector3 witness) |
static void |
b3MprVec3Scale(b3Vector3 d,
float k) |
static void |
b3MprVec3Set(b3Vector3 v,
float x,
float y,
float z) |
static void |
b3MprVec3Sub2(b3Vector3 d,
b3Vector3 v,
b3Vector3 w) |
static boolean |
b3NotEqual(b3DbvtAabbMm a,
b3DbvtAabbMm b) |
static void |
b3PortalDir(b3MprSimplex_t portal,
b3Vector3 dir) |
static void |
b3ProjectAxis(b3ConvexPolyhedronData hull,
b3Vector3 pos,
b3Quaternion orn,
b3Vector3 dir,
b3Vector3Array vertices,
float[] min,
float[] max) |
static void |
b3ProjectAxis(b3ConvexPolyhedronData hull,
b3Vector3 pos,
b3Quaternion orn,
b3Vector3 dir,
b3Vector3Array vertices,
FloatBuffer min,
FloatBuffer max) |
static void |
b3ProjectAxis(b3ConvexPolyhedronData hull,
b3Vector3 pos,
b3Quaternion orn,
b3Vector3 dir,
b3Vector3Array vertices,
FloatPointer min,
FloatPointer max) |
static float |
b3Proximity(b3DbvtAabbMm a,
b3DbvtAabbMm b) |
static void |
b3QuantizeWithClamp(short[] out,
b3Vector3 point2,
int isMax,
b3Vector3 bvhAabbMin,
b3Vector3 bvhAabbMax,
b3Vector3 bvhQuantization) |
static void |
b3QuantizeWithClamp(ShortBuffer out,
b3Vector3 point2,
int isMax,
b3Vector3 bvhAabbMin,
b3Vector3 bvhAabbMax,
b3Vector3 bvhQuantization) |
static void |
b3QuantizeWithClamp(ShortPointer out,
b3Vector3 point2,
int isMax,
b3Vector3 bvhAabbMin,
b3Vector3 bvhAabbMax,
b3Vector3 bvhQuantization) |
static int |
b3ReduceContacts(b3Vector3 p,
int nPoints,
b3Vector3 nearNormal,
b3Int4 contactIdx) |
static int |
b3RefinePortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
b3RigidBodyData cpuBodyBuf,
b3ConvexPolyhedronData cpuConvexData,
b3Collidable cpuCollidables,
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal) |
static int |
b3Select(b3DbvtAabbMm o,
b3DbvtAabbMm a,
b3DbvtAabbMm b) |
static boolean |
b3TestAabbAgainstAabb(b3Vector3 aabbMin1,
b3Vector3 aabbMax1,
b3Vector3 aabbMin2,
b3Vector3 aabbMax2)
conservative test for overlap between two aabbs
|
static int |
b3TestQuantizedAabbAgainstQuantizedAabbSlow(short[] aabbMin1,
short[] aabbMax1,
short[] aabbMin2,
short[] aabbMax2) |
static int |
b3TestQuantizedAabbAgainstQuantizedAabbSlow(ShortBuffer aabbMin1,
ShortBuffer aabbMax1,
ShortBuffer aabbMin2,
ShortBuffer aabbMax2) |
static int |
b3TestQuantizedAabbAgainstQuantizedAabbSlow(ShortPointer aabbMin1,
ShortPointer aabbMax1,
ShortPointer aabbMin2,
ShortPointer aabbMax2) |
static boolean |
b3TestSepAxis(b3ConvexPolyhedronData hullA,
b3ConvexPolyhedronData hullB,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 posB,
b3Quaternion ornB,
b3Vector3 sep_axis,
b3Vector3Array verticesA,
b3Vector3Array verticesB,
float[] depth) |
static boolean |
b3TestSepAxis(b3ConvexPolyhedronData hullA,
b3ConvexPolyhedronData hullB,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 posB,
b3Quaternion ornB,
b3Vector3 sep_axis,
b3Vector3Array verticesA,
b3Vector3Array verticesB,
FloatBuffer depth) |
static boolean |
b3TestSepAxis(b3ConvexPolyhedronData hullA,
b3ConvexPolyhedronData hullB,
b3Vector3 posA,
b3Quaternion ornA,
b3Vector3 posB,
b3Quaternion ornB,
b3Vector3 sep_axis,
b3Vector3Array verticesA,
b3Vector3Array verticesB,
FloatPointer depth) |
static void |
b3TransformAabb2(b3Vector3 localAabbMin,
b3Vector3 localAabbMax,
float margin,
b3Vector3 pos,
b3Quaternion orn,
b3Vector3 aabbMinOut,
b3Vector3 aabbMaxOut) |
static boolean |
equals(b3Int4 a,
b3Int4 b) |
static int |
portalCanEncapsuleOrigin(b3MprSimplex_t portal,
b3MprSupport_t v4,
b3Vector3 dir) |
static int |
portalEncapsulesOrigin(b3MprSimplex_t portal,
b3Vector3 dir) |
static int |
portalReachTolerance(b3MprSimplex_t portal,
b3MprSupport_t v4,
b3Vector3 dir) |
mappublic static final int B3_USE_PLACEMENT_NEW
public static final int B3_DBVT_IMPL_GENERIC
public static final int B3_DBVT_IMPL_SSE
public static final int B3_DBVT_USE_INTRINSIC_SSE
public static final int B3_DBVT_USE_MEMMOVE
public static final int B3_DBVT_ENABLE_BENCHMARK
public static final int B3_DBVT_SELECT_IMPL
public static final int B3_DBVT_MERGE_IMPL
public static final int B3_DBVT_INT0_IMPL
public static final int B3_NEW_PAIR_MARKER
public static final int B3_REMOVED_PAIR_MARKER
public static final int B3_DBVT_BP_PREVENTFALSEUPDATE
public static final int B3_DBVT_BP_ACCURATESLEEPING
public static final int B3_DBVT_BP_ENABLE_BENCHMARK
public static final double B3_DBVT_BP_MARGIN
public static final int SHAPE_HEIGHT_FIELD
public static final int SHAPE_CONVEX_HULL
public static final int SHAPE_PLANE
public static final int SHAPE_CONCAVE_TRIMESH
public static final int SHAPE_COMPOUND_OF_CONVEX_HULLS
public static final int SHAPE_SPHERE
public static final int MAX_NUM_SHAPE_TYPES
public static final int B3_MAX_VERTS
public static final double B3_MPR_TOLERANCE
public static final int B3_MPR_MAX_ITERATIONS
public static final int B3_MAX_NUM_PARTS_IN_BITS
@Cast(value="bool") public static boolean b3Intersect(@Const @ByRef b3DbvtAabbMm a, @Const @ByRef b3DbvtAabbMm b)
@Cast(value="bool") public static boolean b3Intersect(@Const @ByRef b3DbvtAabbMm a, @Const @ByRef b3Vector3 b)
@Cast(value="b3Scalar") public static float b3Proximity(@Const @ByRef b3DbvtAabbMm a, @Const @ByRef b3DbvtAabbMm b)
public static int b3Select(@Const @ByRef b3DbvtAabbMm o, @Const @ByRef b3DbvtAabbMm a, @Const @ByRef b3DbvtAabbMm b)
public static void b3Merge(@Const @ByRef b3DbvtAabbMm a, @Const @ByRef b3DbvtAabbMm b, @ByRef b3DbvtAabbMm r)
@Cast(value="bool") public static boolean b3NotEqual(@Const @ByRef b3DbvtAabbMm a, @Const @ByRef b3DbvtAabbMm b)
@Cast(value="bool") @Name(value="operator ==") public static boolean equals(@Const @ByRef b3Int4 a, @Const @ByRef b3Int4 b)
public static int b3g_removePairs()
public static void b3g_removePairs(int setter)
public static int b3g_addedPairs()
public static void b3g_addedPairs(int setter)
public static int b3g_findPairs()
public static void b3g_findPairs(int setter)
@MemberGetter public static int B3_NULL_PAIR()
public static void b3TransformAabb2(@Const @ByRef b3Vector3 localAabbMin, @Const @ByRef b3Vector3 localAabbMax, float margin, @Const @ByRef b3Vector3 pos, @Const @ByRef b3Quaternion orn, b3Vector3 aabbMinOut, b3Vector3 aabbMaxOut)
@Cast(value="bool") public static boolean b3TestAabbAgainstAabb(@Const @ByRef b3Vector3 aabbMin1, @Const @ByRef b3Vector3 aabbMax1, @Const @ByRef b3Vector3 aabbMin2, @Const @ByRef b3Vector3 aabbMax2)
public static float b3GetInvMass(@Const @ByRef b3RigidBodyData body)
public static int b3Contact4Data_getNumPoints(@Const b3Contact4Data contact)
public static void b3Contact4Data_setNumPoints(b3Contact4Data contact, int numPoints)
@ByVal public static b3Vector3 b3Lerp3(@Const @ByRef b3Vector3 a, @Const @ByRef b3Vector3 b, float t)
public static int b3ClipFace(@Const b3Vector3 pVtxIn, int numVertsIn, @ByRef b3Vector3 planeNormalWS, float planeEqWS, b3Vector3 ppVtxOut)
public static int b3ClipFaceAgainstHull(@Const @ByRef b3Vector3 separatingNormal, @Const b3ConvexPolyhedronData hullA, @Const @ByRef b3Vector3 posA, @Const @ByRef b3Quaternion ornA, b3Vector3 worldVertsB1, int numWorldVertsB1, b3Vector3 worldVertsB2, int capacityWorldVertsB2, float minDist, float maxDist, @Const @ByRef b3Vector3Array verticesA, @Const @ByRef b3GpuFaceArray facesA, @Const @ByRef b3IntArray indicesA, b3Vector3 contactsOut, int contactCapacity)
public static int b3ClipHullAgainstHull(@Const @ByRef b3Vector3 separatingNormal, @Const @ByRef b3ConvexPolyhedronData hullA, @Const @ByRef b3ConvexPolyhedronData hullB, @Const @ByRef b3Vector3 posA, @Const @ByRef b3Quaternion ornA, @Const @ByRef b3Vector3 posB, @Const @ByRef b3Quaternion ornB, b3Vector3 worldVertsB1, b3Vector3 worldVertsB2, int capacityWorldVerts, float minDist, float maxDist, @Const @ByRef b3Vector3Array verticesA, @Const @ByRef b3GpuFaceArray facesA, @Const @ByRef b3IntArray indicesA, @Const @ByRef b3Vector3Array verticesB, @Const @ByRef b3GpuFaceArray facesB, @Const @ByRef b3IntArray indicesB, b3Vector3 contactsOut, int contactCapacity)
public static int b3ClipHullHullSingle(int bodyIndexA,
int bodyIndexB,
@Const @ByRef
b3Vector3 posA,
@Const @ByRef
b3Quaternion ornA,
@Const @ByRef
b3Vector3 posB,
@Const @ByRef
b3Quaternion ornB,
int collidableIndexA,
int collidableIndexB,
@Const
b3RigidBodyDataArray bodyBuf,
b3Contact4DataArray globalContactOut,
@ByRef
IntPointer nContacts,
@Const @ByRef
b3ConvexPolyhedronDataArray hostConvexDataA,
@Const @ByRef
b3ConvexPolyhedronDataArray hostConvexDataB,
@Const @ByRef
b3Vector3Array verticesA,
@Const @ByRef
b3Vector3Array uniqueEdgesA,
@Const @ByRef
b3GpuFaceArray facesA,
@Const @ByRef
b3IntArray indicesA,
@Const @ByRef
b3Vector3Array verticesB,
@Const @ByRef
b3Vector3Array uniqueEdgesB,
@Const @ByRef
b3GpuFaceArray facesB,
@Const @ByRef
b3IntArray indicesB,
@Const @ByRef
b3CollidableArray hostCollidablesA,
@Const @ByRef
b3CollidableArray hostCollidablesB,
@Const @ByRef
b3Vector3 sepNormalWorldSpace,
int maxContactCapacity)
public static int b3ClipHullHullSingle(int bodyIndexA,
int bodyIndexB,
@Const @ByRef
b3Vector3 posA,
@Const @ByRef
b3Quaternion ornA,
@Const @ByRef
b3Vector3 posB,
@Const @ByRef
b3Quaternion ornB,
int collidableIndexA,
int collidableIndexB,
@Const
b3RigidBodyDataArray bodyBuf,
b3Contact4DataArray globalContactOut,
@ByRef
IntBuffer nContacts,
@Const @ByRef
b3ConvexPolyhedronDataArray hostConvexDataA,
@Const @ByRef
b3ConvexPolyhedronDataArray hostConvexDataB,
@Const @ByRef
b3Vector3Array verticesA,
@Const @ByRef
b3Vector3Array uniqueEdgesA,
@Const @ByRef
b3GpuFaceArray facesA,
@Const @ByRef
b3IntArray indicesA,
@Const @ByRef
b3Vector3Array verticesB,
@Const @ByRef
b3Vector3Array uniqueEdgesB,
@Const @ByRef
b3GpuFaceArray facesB,
@Const @ByRef
b3IntArray indicesB,
@Const @ByRef
b3CollidableArray hostCollidablesA,
@Const @ByRef
b3CollidableArray hostCollidablesB,
@Const @ByRef
b3Vector3 sepNormalWorldSpace,
int maxContactCapacity)
public static int b3ClipHullHullSingle(int bodyIndexA,
int bodyIndexB,
@Const @ByRef
b3Vector3 posA,
@Const @ByRef
b3Quaternion ornA,
@Const @ByRef
b3Vector3 posB,
@Const @ByRef
b3Quaternion ornB,
int collidableIndexA,
int collidableIndexB,
@Const
b3RigidBodyDataArray bodyBuf,
b3Contact4DataArray globalContactOut,
@ByRef
int[] nContacts,
@Const @ByRef
b3ConvexPolyhedronDataArray hostConvexDataA,
@Const @ByRef
b3ConvexPolyhedronDataArray hostConvexDataB,
@Const @ByRef
b3Vector3Array verticesA,
@Const @ByRef
b3Vector3Array uniqueEdgesA,
@Const @ByRef
b3GpuFaceArray facesA,
@Const @ByRef
b3IntArray indicesA,
@Const @ByRef
b3Vector3Array verticesB,
@Const @ByRef
b3Vector3Array uniqueEdgesB,
@Const @ByRef
b3GpuFaceArray facesB,
@Const @ByRef
b3IntArray indicesB,
@Const @ByRef
b3CollidableArray hostCollidablesA,
@Const @ByRef
b3CollidableArray hostCollidablesB,
@Const @ByRef
b3Vector3 sepNormalWorldSpace,
int maxContactCapacity)
public static int b3ContactConvexConvexSAT(int pairIndex,
int bodyIndexA,
int bodyIndexB,
int collidableIndexA,
int collidableIndexB,
@Const @ByRef
b3RigidBodyDataArray rigidBodies,
@Const @ByRef
b3CollidableArray collidables,
@Const @ByRef
b3ConvexPolyhedronDataArray convexShapes,
@Const @ByRef
b3Vector3Array convexVertices,
@Const @ByRef
b3Vector3Array uniqueEdges,
@Const @ByRef
b3IntArray convexIndices,
@Const @ByRef
b3GpuFaceArray faces,
@ByRef
b3Contact4DataArray globalContactsOut,
@ByRef
IntPointer nGlobalContactsOut,
int maxContactCapacity)
public static int b3ContactConvexConvexSAT(int pairIndex,
int bodyIndexA,
int bodyIndexB,
int collidableIndexA,
int collidableIndexB,
@Const @ByRef
b3RigidBodyDataArray rigidBodies,
@Const @ByRef
b3CollidableArray collidables,
@Const @ByRef
b3ConvexPolyhedronDataArray convexShapes,
@Const @ByRef
b3Vector3Array convexVertices,
@Const @ByRef
b3Vector3Array uniqueEdges,
@Const @ByRef
b3IntArray convexIndices,
@Const @ByRef
b3GpuFaceArray faces,
@ByRef
b3Contact4DataArray globalContactsOut,
@ByRef
IntBuffer nGlobalContactsOut,
int maxContactCapacity)
public static int b3ContactConvexConvexSAT(int pairIndex,
int bodyIndexA,
int bodyIndexB,
int collidableIndexA,
int collidableIndexB,
@Const @ByRef
b3RigidBodyDataArray rigidBodies,
@Const @ByRef
b3CollidableArray collidables,
@Const @ByRef
b3ConvexPolyhedronDataArray convexShapes,
@Const @ByRef
b3Vector3Array convexVertices,
@Const @ByRef
b3Vector3Array uniqueEdges,
@Const @ByRef
b3IntArray convexIndices,
@Const @ByRef
b3GpuFaceArray faces,
@ByRef
b3Contact4DataArray globalContactsOut,
@ByRef
int[] nGlobalContactsOut,
int maxContactCapacity)
public static void b3ProjectAxis(@Const @ByRef b3ConvexPolyhedronData hull, @Const @ByRef b3Vector3 pos, @Const @ByRef b3Quaternion orn, @Const @ByRef b3Vector3 dir, @Const @ByRef b3Vector3Array vertices, @Cast(value="b3Scalar*") @ByRef FloatPointer min, @Cast(value="b3Scalar*") @ByRef FloatPointer max)
public static void b3ProjectAxis(@Const @ByRef b3ConvexPolyhedronData hull, @Const @ByRef b3Vector3 pos, @Const @ByRef b3Quaternion orn, @Const @ByRef b3Vector3 dir, @Const @ByRef b3Vector3Array vertices, @Cast(value="b3Scalar*") @ByRef FloatBuffer min, @Cast(value="b3Scalar*") @ByRef FloatBuffer max)
public static void b3ProjectAxis(@Const @ByRef b3ConvexPolyhedronData hull, @Const @ByRef b3Vector3 pos, @Const @ByRef b3Quaternion orn, @Const @ByRef b3Vector3 dir, @Const @ByRef b3Vector3Array vertices, @Cast(value="b3Scalar*") @ByRef float[] min, @Cast(value="b3Scalar*") @ByRef float[] max)
@Cast(value="bool") public static boolean b3TestSepAxis(@Const @ByRef b3ConvexPolyhedronData hullA, @Const @ByRef b3ConvexPolyhedronData hullB, @Const @ByRef b3Vector3 posA, @Const @ByRef b3Quaternion ornA, @Const @ByRef b3Vector3 posB, @Const @ByRef b3Quaternion ornB, @Const @ByRef b3Vector3 sep_axis, @Const @ByRef b3Vector3Array verticesA, @Const @ByRef b3Vector3Array verticesB, @Cast(value="b3Scalar*") @ByRef FloatPointer depth)
@Cast(value="bool") public static boolean b3TestSepAxis(@Const @ByRef b3ConvexPolyhedronData hullA, @Const @ByRef b3ConvexPolyhedronData hullB, @Const @ByRef b3Vector3 posA, @Const @ByRef b3Quaternion ornA, @Const @ByRef b3Vector3 posB, @Const @ByRef b3Quaternion ornB, @Const @ByRef b3Vector3 sep_axis, @Const @ByRef b3Vector3Array verticesA, @Const @ByRef b3Vector3Array verticesB, @Cast(value="b3Scalar*") @ByRef FloatBuffer depth)
@Cast(value="bool") public static boolean b3TestSepAxis(@Const @ByRef b3ConvexPolyhedronData hullA, @Const @ByRef b3ConvexPolyhedronData hullB, @Const @ByRef b3Vector3 posA, @Const @ByRef b3Quaternion ornA, @Const @ByRef b3Vector3 posB, @Const @ByRef b3Quaternion ornB, @Const @ByRef b3Vector3 sep_axis, @Const @ByRef b3Vector3Array verticesA, @Const @ByRef b3Vector3Array verticesB, @Cast(value="b3Scalar*") @ByRef float[] depth)
@Cast(value="bool") public static boolean b3FindSeparatingAxis(@Const @ByRef b3ConvexPolyhedronData hullA, @Const @ByRef b3ConvexPolyhedronData hullB, @Const @ByRef b3Vector3 posA1, @Const @ByRef b3Quaternion ornA, @Const @ByRef b3Vector3 posB1, @Const @ByRef b3Quaternion ornB, @Const @ByRef b3Vector3Array verticesA, @Const @ByRef b3Vector3Array uniqueEdgesA, @Const @ByRef b3GpuFaceArray facesA, @Const @ByRef b3IntArray indicesA, @Const @ByRef b3Vector3Array verticesB, @Const @ByRef b3Vector3Array uniqueEdgesB, @Const @ByRef b3GpuFaceArray facesB, @Const @ByRef b3IntArray indicesB, @ByRef b3Vector3 sep)
public static b3MprSupport_t b3MprSimplexPointW(b3MprSimplex_t s, int idx)
public static void b3MprSimplexSetSize(b3MprSimplex_t s, int size)
public static int b3MprSimplexSize(@Const b3MprSimplex_t s)
@Const public static b3MprSupport_t b3MprSimplexPoint(@Const b3MprSimplex_t s, int idx)
public static void b3MprSupportCopy(b3MprSupport_t d, @Const b3MprSupport_t s)
public static void b3MprSimplexSet(b3MprSimplex_t s, @Cast(value="size_t") long pos, @Const b3MprSupport_t a)
public static void b3MprSimplexSwap(b3MprSimplex_t s, @Cast(value="size_t") long pos1, @Cast(value="size_t") long pos2)
public static int b3MprIsZero(float val)
public static int b3MprEq(float _a,
float _b)
@ByVal public static b3Vector3 b3LocalGetSupportVertex(@Const @ByRef b3Vector3 supportVec, @Const b3ConvexPolyhedronData hull, @Const b3Vector3 verticesA)
public static void b3MprConvexSupport(int pairIndex,
int bodyIndex,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
@Const
b3Vector3 _dir,
b3Vector3 outp,
int logme)
public static void b3MprSupport(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
@Const
b3Vector3 _dir,
b3MprSupport_t supp)
public static void b3FindOrigin(int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
b3MprSupport_t center)
public static void b3MprVec3Set(b3Vector3 v, float x, float y, float z)
public static void b3MprVec3Scale(b3Vector3 d, float k)
public static void b3MprVec3Normalize(b3Vector3 d)
public static void b3MprVec3Cross(b3Vector3 d, @Const b3Vector3 a, @Const b3Vector3 b)
public static void b3PortalDir(@Const b3MprSimplex_t portal, b3Vector3 dir)
public static int portalEncapsulesOrigin(@Const b3MprSimplex_t portal, @Const b3Vector3 dir)
public static int portalReachTolerance(@Const b3MprSimplex_t portal, @Const b3MprSupport_t v4, @Const b3Vector3 dir)
public static int portalCanEncapsuleOrigin(@Const b3MprSimplex_t portal, @Const b3MprSupport_t v4, @Const b3Vector3 dir)
public static void b3ExpandPortal(b3MprSimplex_t portal, @Const b3MprSupport_t v4)
public static int b3DiscoverPortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntPointer hasSepAxis,
b3MprSimplex_t portal)
public static int b3DiscoverPortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntBuffer hasSepAxis,
b3MprSimplex_t portal)
public static int b3DiscoverPortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
int[] hasSepAxis,
b3MprSimplex_t portal)
public static int b3RefinePortal(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal)
public static void b3FindPos(@Const b3MprSimplex_t portal, b3Vector3 pos)
public static float _b3MprVec3PointSegmentDist2(@Const b3Vector3 P, @Const b3Vector3 x0, @Const b3Vector3 b, b3Vector3 witness)
public static float b3MprVec3PointTriDist2(@Const b3Vector3 P, @Const b3Vector3 x0, @Const b3Vector3 B, @Const b3Vector3 C, b3Vector3 witness)
public static void b3FindPenetr(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal,
FloatPointer depth,
b3Vector3 pdir,
b3Vector3 pos)
public static void b3FindPenetr(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal,
FloatBuffer depth,
b3Vector3 pdir,
b3Vector3 pos)
public static void b3FindPenetr(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
b3MprSimplex_t portal,
float[] depth,
b3Vector3 pdir,
b3Vector3 pos)
public static void b3FindPenetrTouch(b3MprSimplex_t portal, FloatPointer depth, b3Vector3 dir, b3Vector3 pos)
public static void b3FindPenetrTouch(b3MprSimplex_t portal, FloatBuffer depth, b3Vector3 dir, b3Vector3 pos)
public static void b3FindPenetrTouch(b3MprSimplex_t portal, float[] depth, b3Vector3 dir, b3Vector3 pos)
public static void b3FindPenetrSegment(b3MprSimplex_t portal, FloatPointer depth, b3Vector3 dir, b3Vector3 pos)
public static void b3FindPenetrSegment(b3MprSimplex_t portal, FloatBuffer depth, b3Vector3 dir, b3Vector3 pos)
public static void b3FindPenetrSegment(b3MprSimplex_t portal, float[] depth, b3Vector3 dir, b3Vector3 pos)
public static int b3MprPenetration(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntPointer hasSepAxis,
FloatPointer depthOut,
b3Vector3 dirOut,
b3Vector3 posOut)
public static int b3MprPenetration(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
IntBuffer hasSepAxis,
FloatBuffer depthOut,
b3Vector3 dirOut,
b3Vector3 posOut)
public static int b3MprPenetration(int pairIndex,
int bodyIndexA,
int bodyIndexB,
@Const
b3RigidBodyData cpuBodyBuf,
@Const
b3ConvexPolyhedronData cpuConvexData,
@Const
b3Collidable cpuCollidables,
@Const
b3Vector3 cpuVertices,
b3Vector3 sepAxis,
int[] hasSepAxis,
float[] depthOut,
b3Vector3 dirOut,
b3Vector3 posOut)
public static int b3GetTriangleIndex(@Const b3QuantizedBvhNodeData rootNode)
public static int b3IsLeaf(@Const b3QuantizedBvhNodeData rootNode)
public static int b3GetEscapeIndex(@Const b3QuantizedBvhNodeData rootNode)
public static void b3QuantizeWithClamp(@Cast(value="unsigned short*") ShortPointer out, @Const @ByRef b3Vector3 point2, int isMax, @Const @ByRef b3Vector3 bvhAabbMin, @Const @ByRef b3Vector3 bvhAabbMax, @Const @ByRef b3Vector3 bvhQuantization)
public static void b3QuantizeWithClamp(@Cast(value="unsigned short*") ShortBuffer out, @Const @ByRef b3Vector3 point2, int isMax, @Const @ByRef b3Vector3 bvhAabbMin, @Const @ByRef b3Vector3 bvhAabbMax, @Const @ByRef b3Vector3 bvhQuantization)
public static void b3QuantizeWithClamp(@Cast(value="unsigned short*") short[] out, @Const @ByRef b3Vector3 point2, int isMax, @Const @ByRef b3Vector3 bvhAabbMin, @Const @ByRef b3Vector3 bvhAabbMax, @Const @ByRef b3Vector3 bvhQuantization)
public static int b3TestQuantizedAabbAgainstQuantizedAabbSlow(@Cast(value="const unsigned short int*") ShortPointer aabbMin1, @Cast(value="const unsigned short int*") ShortPointer aabbMax1, @Cast(value="const unsigned short int*") ShortPointer aabbMin2, @Cast(value="const unsigned short int*") ShortPointer aabbMax2)
public static int b3TestQuantizedAabbAgainstQuantizedAabbSlow(@Cast(value="const unsigned short int*") ShortBuffer aabbMin1, @Cast(value="const unsigned short int*") ShortBuffer aabbMax1, @Cast(value="const unsigned short int*") ShortBuffer aabbMin2, @Cast(value="const unsigned short int*") ShortBuffer aabbMax2)
public static int b3TestQuantizedAabbAgainstQuantizedAabbSlow(@Cast(value="const unsigned short int*") short[] aabbMin1, @Cast(value="const unsigned short int*") short[] aabbMax1, @Cast(value="const unsigned short int*") short[] aabbMin2, @Cast(value="const unsigned short int*") short[] aabbMax2)
Copyright © 2024. All rights reserved.