// SPDX-License-Identifier: BSD-3-Clause // // Generated by boxnd-gen. By-value struct arguments/returns of the // Box3D API are wrapped here as pointers (GHC's FFI cannot pass // structs by value). A returned struct is written through a trailing out // pointer; a by-value struct argument is taken through a const in pointer. // Prefix hsg_ keeps these distinct from the hand-written hs_ shim. #pragma once #include "box3d/box3d.h" void hsg_b3World_GetBounds(b3WorldId a0, b3AABB* out); void hsg_b3World_GetBodyEvents(b3WorldId a0, b3BodyEvents* out); void hsg_b3World_GetSensorEvents(b3WorldId a0, b3SensorEvents* out); void hsg_b3World_GetContactEvents(b3WorldId a0, b3ContactEvents* out); void hsg_b3World_GetJointEvents(b3WorldId a0, b3JointEvents* out); void hsg_b3World_OverlapAABB(b3WorldId a0, const b3AABB* a1, const b3QueryFilter* a2, b3OverlapResultFcn* a3, void* a4, b3TreeStats* out); void hsg_b3World_OverlapShape(b3WorldId a0, const b3Pos* a1, const b3ShapeProxy* a2, const b3QueryFilter* a3, b3OverlapResultFcn* a4, void* a5, b3TreeStats* out); void hsg_b3World_CastRay(b3WorldId a0, const b3Pos* a1, const b3Vec3* a2, const b3QueryFilter* a3, b3CastResultFcn* a4, void* a5, b3TreeStats* out); void hsg_b3World_CastRayClosest(b3WorldId a0, const b3Pos* a1, const b3Vec3* a2, const b3QueryFilter* a3, b3RayResult* out); void hsg_b3World_CastShape(b3WorldId a0, const b3Pos* a1, const b3ShapeProxy* a2, const b3Vec3* a3, const b3QueryFilter* a4, b3CastResultFcn* a5, void* a6, b3TreeStats* out); float hsg_b3World_CastMover(b3WorldId a0, const b3Pos* a1, const b3Capsule* a2, const b3Vec3* a3, const b3QueryFilter* a4, b3MoverFilterFcn* a5, void* a6); void hsg_b3World_CollideMover(b3WorldId a0, const b3Pos* a1, const b3Capsule* a2, const b3QueryFilter* a3, b3PlaneResultFcn* a4, void* a5); void hsg_b3World_SetGravity(b3WorldId a0, const b3Vec3* a1); void hsg_b3World_GetGravity(b3WorldId a0, b3Vec3* out); void hsg_b3World_GetProfile(b3WorldId a0, b3Profile* out); void hsg_b3World_GetCounters(b3WorldId a0, b3Counters* out); void hsg_b3World_GetMaxCapacity(b3WorldId a0, b3Capacity* out); void hsg_b3RecPlayer_GetInfo(const b3RecPlayer* a0, b3RecPlayerInfo* out); void hsg_b3RecPlayer_GetFrameQuery(const b3RecPlayer* a0, int a1, b3RecQueryInfo* out); void hsg_b3RecPlayer_GetFrameQueryHit(const b3RecPlayer* a0, int a1, int a2, b3RecQueryHit* out); void hsg_b3Body_GetPosition(b3BodyId a0, b3Pos* out); void hsg_b3Body_GetRotation(b3BodyId a0, b3Quat* out); void hsg_b3Body_GetTransform(b3BodyId a0, b3WorldTransform* out); void hsg_b3Body_SetTransform(b3BodyId a0, const b3Pos* a1, const b3Quat* a2); void hsg_b3Body_GetLocalPoint(b3BodyId a0, const b3Pos* a1, b3Vec3* out); void hsg_b3Body_GetWorldPoint(b3BodyId a0, const b3Vec3* a1, b3Pos* out); void hsg_b3Body_GetLocalVector(b3BodyId a0, const b3Vec3* a1, b3Vec3* out); void hsg_b3Body_GetWorldVector(b3BodyId a0, const b3Vec3* a1, b3Vec3* out); void hsg_b3Body_GetLinearVelocity(b3BodyId a0, b3Vec3* out); void hsg_b3Body_GetAngularVelocity(b3BodyId a0, b3Vec3* out); void hsg_b3Body_SetLinearVelocity(b3BodyId a0, const b3Vec3* a1); void hsg_b3Body_SetAngularVelocity(b3BodyId a0, const b3Vec3* a1); void hsg_b3Body_SetTargetTransform(b3BodyId a0, const b3WorldTransform* a1, float a2, bool a3); void hsg_b3Body_GetLocalPointVelocity(b3BodyId a0, const b3Vec3* a1, b3Vec3* out); void hsg_b3Body_GetWorldPointVelocity(b3BodyId a0, const b3Pos* a1, b3Vec3* out); void hsg_b3Body_ApplyForce(b3BodyId a0, const b3Vec3* a1, const b3Pos* a2, bool a3); void hsg_b3Body_ApplyForceToCenter(b3BodyId a0, const b3Vec3* a1, bool a2); void hsg_b3Body_ApplyTorque(b3BodyId a0, const b3Vec3* a1, bool a2); void hsg_b3Body_ApplyLinearImpulse(b3BodyId a0, const b3Vec3* a1, const b3Pos* a2, bool a3); void hsg_b3Body_ApplyLinearImpulseToCenter(b3BodyId a0, const b3Vec3* a1, bool a2); void hsg_b3Body_ApplyAngularImpulse(b3BodyId a0, const b3Vec3* a1, bool a2); void hsg_b3Body_GetLocalRotationalInertia(b3BodyId a0, b3Matrix3* out); void hsg_b3Body_GetWorldInverseRotationalInertia(b3BodyId a0, b3Matrix3* out); void hsg_b3Body_GetLocalCenterOfMass(b3BodyId a0, b3Vec3* out); void hsg_b3Body_GetWorldCenterOfMass(b3BodyId a0, b3Pos* out); void hsg_b3Body_SetMassData(b3BodyId a0, const b3MassData* a1); void hsg_b3Body_GetMassData(b3BodyId a0, b3MassData* out); void hsg_b3Body_SetMotionLocks(b3BodyId a0, const b3MotionLocks* a1); void hsg_b3Body_GetMotionLocks(b3BodyId a0, b3MotionLocks* out); void hsg_b3Body_ComputeAABB(b3BodyId a0, b3AABB* out); float hsg_b3Body_GetClosestPoint(b3BodyId a0, b3Vec3* a1, const b3Vec3* a2); void hsg_b3Body_CastRay(b3BodyId a0, const b3Pos* a1, const b3Vec3* a2, const b3QueryFilter* a3, float a4, const b3WorldTransform* a5, b3BodyCastResult* out); void hsg_b3Body_CastShape(b3BodyId a0, const b3Pos* a1, const b3ShapeProxy* a2, const b3Vec3* a3, const b3QueryFilter* a4, float a5, bool a6, const b3WorldTransform* a7, b3BodyCastResult* out); bool hsg_b3Body_OverlapShape(b3BodyId a0, const b3Pos* a1, const b3ShapeProxy* a2, const b3QueryFilter* a3, const b3WorldTransform* a4); int hsg_b3Body_CollideMover(b3BodyId a0, b3BodyPlaneResult* a1, int a2, const b3Pos* a3, const b3Capsule* a4, const b3QueryFilter* a5, const b3WorldTransform* a6); b3ShapeId hsg_b3CreateTransformedHullShape(b3BodyId a0, const b3ShapeDef* a1, const b3HullData* a2, const b3Transform* a3, const b3Vec3* a4); b3ShapeId hsg_b3CreateMeshShape(b3BodyId a0, const b3ShapeDef* a1, const b3MeshData* a2, const b3Vec3* a3); void hsg_b3Shape_SetSurfaceMaterial(b3ShapeId a0, const b3SurfaceMaterial* a1); void hsg_b3Shape_GetSurfaceMaterial(b3ShapeId a0, b3SurfaceMaterial* out); void hsg_b3Shape_SetMeshMaterial(b3ShapeId a0, const b3SurfaceMaterial* a1, int a2); void hsg_b3Shape_GetMeshSurfaceMaterial(b3ShapeId a0, int a1, b3SurfaceMaterial* out); void hsg_b3Shape_GetFilter(b3ShapeId a0, b3Filter* out); void hsg_b3Shape_SetFilter(b3ShapeId a0, const b3Filter* a1, bool a2); void hsg_b3Shape_RayCast(b3ShapeId a0, const b3Pos* a1, const b3Vec3* a2, b3WorldCastOutput* out); void hsg_b3Shape_GetSphere(b3ShapeId a0, b3Sphere* out); void hsg_b3Shape_GetCapsule(b3ShapeId a0, b3Capsule* out); void hsg_b3Shape_GetMesh(b3ShapeId a0, b3Mesh* out); void hsg_b3Shape_SetMesh(b3ShapeId a0, const b3MeshData* a1, const b3Vec3* a2); void hsg_b3Shape_GetAABB(b3ShapeId a0, b3AABB* out); void hsg_b3Shape_ComputeMassData(b3ShapeId a0, b3MassData* out); void hsg_b3Shape_GetClosestPoint(b3ShapeId a0, const b3Vec3* a1, b3Vec3* out); void hsg_b3Shape_ApplyWind(b3ShapeId a0, const b3Vec3* a1, float a2, float a3, float a4, bool a5); void hsg_b3Joint_SetLocalFrameA(b3JointId a0, const b3Transform* a1); void hsg_b3Joint_GetLocalFrameA(b3JointId a0, b3Transform* out); void hsg_b3Joint_SetLocalFrameB(b3JointId a0, const b3Transform* a1); void hsg_b3Joint_GetLocalFrameB(b3JointId a0, b3Transform* out); void hsg_b3Joint_GetConstraintForce(b3JointId a0, b3Vec3* out); void hsg_b3Joint_GetConstraintTorque(b3JointId a0, b3Vec3* out); void hsg_b3MotorJoint_SetLinearVelocity(b3JointId a0, const b3Vec3* a1); void hsg_b3MotorJoint_GetLinearVelocity(b3JointId a0, b3Vec3* out); void hsg_b3MotorJoint_SetAngularVelocity(b3JointId a0, const b3Vec3* a1); void hsg_b3MotorJoint_GetAngularVelocity(b3JointId a0, b3Vec3* out); void hsg_b3SphericalJoint_SetTargetRotation(b3JointId a0, const b3Quat* a1); void hsg_b3SphericalJoint_GetTargetRotation(b3JointId a0, b3Quat* out); void hsg_b3SphericalJoint_SetMotorVelocity(b3JointId a0, const b3Vec3* a1); void hsg_b3SphericalJoint_GetMotorVelocity(b3JointId a0, b3Vec3* out); void hsg_b3SphericalJoint_GetMotorTorque(b3JointId a0, b3Vec3* out); bool hsg_b3Contact_IsValid(const b3ContactId* a0); void hsg_b3Contact_GetData(const b3ContactId* a0, b3ContactData* out); void hsg_b3DynamicTree_Create(int a0, b3DynamicTree* out); int hsg_b3DynamicTree_CreateProxy(b3DynamicTree* a0, const b3AABB* a1, uint64_t a2, uint64_t a3); void hsg_b3DynamicTree_MoveProxy(b3DynamicTree* a0, int a1, const b3AABB* a2); void hsg_b3DynamicTree_EnlargeProxy(b3DynamicTree* a0, int a1, const b3AABB* a2); void hsg_b3DynamicTree_Query(const b3DynamicTree* a0, const b3AABB* a1, uint64_t a2, bool a3, b3TreeQueryCallbackFcn* a4, void* a5, b3TreeStats* out); void hsg_b3DynamicTree_QueryClosest(const b3DynamicTree* a0, const b3Vec3* a1, uint64_t a2, bool a3, b3TreeQueryClosestCallbackFcn* a4, void* a5, float* a6, b3TreeStats* out); void hsg_b3DynamicTree_RayCast(const b3DynamicTree* a0, const b3RayCastInput* a1, uint64_t a2, bool a3, b3TreeRayCastCallbackFcn* a4, void* a5, b3TreeStats* out); void hsg_b3DynamicTree_BoxCast(const b3DynamicTree* a0, const b3BoxCastInput* a1, uint64_t a2, bool a3, b3TreeBoxCastCallbackFcn* a4, void* a5, b3TreeStats* out); void hsg_b3DynamicTree_GetRootBounds(const b3DynamicTree* a0, b3AABB* out); void hsg_b3DynamicTree_Load(const char* a0, float a1, b3DynamicTree* out); b3HullData* hsg_b3CloneAndTransformHull(const b3HullData* a0, const b3Transform* a1, const b3Vec3* a2); void hsg_b3MakeCubeHull(float a0, b3BoxHull* out); void hsg_b3MakeBoxHull(float a0, float a1, float a2, b3BoxHull* out); void hsg_b3MakeOffsetBoxHull(float a0, float a1, float a2, const b3Vec3* a3, b3BoxHull* out); void hsg_b3MakeTransformedBoxHull(float a0, float a1, float a2, const b3Transform* a3, b3BoxHull* out); void hsg_b3MakeScaledBoxHull(const b3Vec3* a0, const b3Transform* a1, const b3Vec3* a2, b3BoxHull* out); void hsg_b3ScaleBox(b3Vec3* a0, b3Transform* a1, const b3Vec3* a2, float a3); b3MeshData* hsg_b3CreateBoxMesh(const b3Vec3* a0, const b3Vec3* a1, bool a2); b3MeshData* hsg_b3CreateHollowBoxMesh(const b3Vec3* a0, const b3Vec3* a1); b3MeshData* hsg_b3CreatePlatformMesh(const b3Vec3* a0, float a1, float a2, float a3); b3HeightFieldData* hsg_b3CreateGrid(int a0, int a1, const b3Vec3* a2, bool a3); b3HeightFieldData* hsg_b3CreateWave(int a0, int a1, const b3Vec3* a2, float a3, float a4, bool a5); void hsg_b3GetCompoundChild(const b3CompoundData* a0, int a1, b3ChildShape* out); void hsg_b3QueryCompound(const b3CompoundData* a0, const b3AABB* a1, b3CompoundQueryFcn* a2, void* a3); void hsg_b3GetCompoundCapsule(const b3CompoundData* a0, int a1, b3CompoundCapsule* out); void hsg_b3GetCompoundHull(const b3CompoundData* a0, int a1, b3CompoundHull* out); void hsg_b3GetCompoundMesh(const b3CompoundData* a0, int a1, b3CompoundMesh* out); void hsg_b3GetCompoundSphere(const b3CompoundData* a0, int a1, b3CompoundSphere* out); void hsg_b3ComputeSphereMass(const b3Sphere* a0, float a1, b3MassData* out); void hsg_b3ComputeCapsuleMass(const b3Capsule* a0, float a1, b3MassData* out); void hsg_b3ComputeHullMass(const b3HullData* a0, float a1, b3MassData* out); void hsg_b3ComputeSphereAABB(const b3Sphere* a0, const b3Transform* a1, b3AABB* out); void hsg_b3ComputeCapsuleAABB(const b3Capsule* a0, const b3Transform* a1, b3AABB* out); void hsg_b3ComputeHullAABB(const b3HullData* a0, const b3Transform* a1, b3AABB* out); void hsg_b3ComputeMeshAABB(const b3MeshData* a0, const b3Transform* a1, const b3Vec3* a2, b3AABB* out); void hsg_b3ComputeHeightFieldAABB(const b3HeightFieldData* a0, const b3Transform* a1, b3AABB* out); void hsg_b3ComputeCompoundAABB(const b3CompoundData* a0, const b3Transform* a1, b3AABB* out); bool hsg_b3OverlapCapsule(const b3Capsule* a0, const b3Transform* a1, const b3ShapeProxy* a2); bool hsg_b3OverlapCompound(const b3CompoundData* a0, const b3Transform* a1, const b3ShapeProxy* a2); bool hsg_b3OverlapHeightField(const b3HeightFieldData* a0, const b3Transform* a1, const b3ShapeProxy* a2); bool hsg_b3OverlapHull(const b3HullData* a0, const b3Transform* a1, const b3ShapeProxy* a2); bool hsg_b3OverlapMesh(const b3Mesh* a0, const b3Transform* a1, const b3ShapeProxy* a2); bool hsg_b3OverlapSphere(const b3Sphere* a0, const b3Transform* a1, const b3ShapeProxy* a2); void hsg_b3RayCastSphere(const b3Sphere* a0, const b3RayCastInput* a1, b3CastOutput* out); void hsg_b3RayCastHollowSphere(const b3Sphere* a0, const b3RayCastInput* a1, b3CastOutput* out); void hsg_b3RayCastCapsule(const b3Capsule* a0, const b3RayCastInput* a1, b3CastOutput* out); void hsg_b3RayCastCompound(const b3CompoundData* a0, const b3RayCastInput* a1, b3CastOutput* out); void hsg_b3RayCastHull(const b3HullData* a0, const b3RayCastInput* a1, b3CastOutput* out); void hsg_b3RayCastMesh(const b3Mesh* a0, const b3RayCastInput* a1, b3CastOutput* out); void hsg_b3RayCastHeightField(const b3HeightFieldData* a0, const b3RayCastInput* a1, b3CastOutput* out); void hsg_b3ShapeCastSphere(const b3Sphere* a0, const b3ShapeCastInput* a1, b3CastOutput* out); void hsg_b3ShapeCastCapsule(const b3Capsule* a0, const b3ShapeCastInput* a1, b3CastOutput* out); void hsg_b3ShapeCastCompound(const b3CompoundData* a0, const b3ShapeCastInput* a1, b3CastOutput* out); void hsg_b3ShapeCastHull(const b3HullData* a0, const b3ShapeCastInput* a1, b3CastOutput* out); void hsg_b3ShapeCastMesh(const b3Mesh* a0, const b3ShapeCastInput* a1, b3CastOutput* out); void hsg_b3ShapeCastHeightField(const b3HeightFieldData* a0, const b3ShapeCastInput* a1, b3CastOutput* out); void hsg_b3QueryMesh(const b3Mesh* a0, const b3AABB* a1, b3MeshQueryFcn* a2, void* a3); void hsg_b3QueryHeightField(const b3HeightFieldData* a0, const b3AABB* a1, b3MeshQueryFcn* a2, void* a3); void hsg_b3ShapeDistance(const b3DistanceInput* a0, b3SimplexCache* a1, b3Simplex* a2, int a3, b3DistanceOutput* out); void hsg_b3ShapeCast(const b3ShapeCastPairInput* a0, b3CastOutput* out); void hsg_b3GetSweepTransform(const b3Sweep* a0, float a1, b3Transform* out); void hsg_b3TimeOfImpact(const b3TOIInput* a0, b3TOIOutput* out); void hsg_b3CollideSpheres(b3LocalManifold* a0, int a1, const b3Sphere* a2, const b3Sphere* a3, const b3Transform* a4); void hsg_b3CollideCapsuleAndSphere(b3LocalManifold* a0, int a1, const b3Capsule* a2, const b3Sphere* a3, const b3Transform* a4); void hsg_b3CollideHullAndSphere(b3LocalManifold* a0, int a1, const b3HullData* a2, const b3Sphere* a3, const b3Transform* a4, b3SimplexCache* a5); void hsg_b3CollideCapsules(b3LocalManifold* a0, int a1, const b3Capsule* a2, const b3Capsule* a3, const b3Transform* a4); void hsg_b3CollideHullAndCapsule(b3LocalManifold* a0, int a1, const b3HullData* a2, const b3Capsule* a3, const b3Transform* a4, b3SimplexCache* a5); void hsg_b3CollideHulls(b3LocalManifold* a0, int a1, const b3HullData* a2, const b3HullData* a3, const b3Transform* a4, b3SATCache* a5); void hsg_b3CollideHullAndTriangle(b3LocalManifold* a0, int a1, const b3HullData* a2, const b3Vec3* a3, const b3Vec3* a4, const b3Vec3* a5, int a6, b3SATCache* a7); void hsg_b3SolvePlanes(const b3Vec3* a0, b3CollisionPlane* a1, int a2, b3PlaneSolverResult* out); void hsg_b3ClipVector(const b3Vec3* a0, const b3CollisionPlane* a1, int a2, b3Vec3* out);