JSim 2026.06.01-p(1)
Loading...
Searching...
No Matches
driverheader.h
Go to the documentation of this file.
1// Copyright (c) JSim contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the LGPLv3 license file in the root directory of this project.
4
5#pragma once
6
7#include <stdint.h>
8
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
49void c_doThing(void);
50
57uint64_t c_rsCreateWorld(double fixed_dt_s, int enable_gravity);
58
68void c_rsDestroyWorld(uint64_t world_handle);
69
76int c_rsCreateBody(uint64_t world_handle, double mass_kg);
77
86int c_rsCreateGamepiece(uint64_t world_handle, double radius_m,
87 double mass_kg, double restitution);
88
98int c_rsCreateGamepieceWithType(uint64_t world_handle, int type, double radius_m,
99 double mass_kg, double restitution);
100
118int c_rsCreateGamepieceWithTypeName(uint64_t world_handle, const char* type_name,
119 double radius_m, double mass_kg, double restitution);
120
127const char* c_rsGetGamepieceTypeName(uint64_t world_handle, int gamepiece_index);
128
142int c_rsPickGamepiece(uint64_t world_handle, int gamepiece_index,
143 double intake_x, double intake_y, double intake_z,
144 double capture_radius,
145 double carry_offset_x, double carry_offset_y,
146 double carry_offset_z);
147
151int c_rsPlaceGamepiece(uint64_t world_handle, int gamepiece_index,
152 double x_m, double y_m, double z_m);
153
157int c_rsOuttakeGamepiece(uint64_t world_handle, int gamepiece_index,
158 double px, double py, double pz,
159 double vx, double vy, double vz);
160
170int c_rsSetBodyPosition(uint64_t world_handle, int body_index,
171 double x_m, double y_m, double z_m);
172
182int c_rsSetBodyLinearVelocity(uint64_t world_handle, int body_index,
183 double vx_mps, double vy_mps, double vz_mps);
184
190int c_rsSetBodyOrientation(uint64_t world_handle, int body_index,
191 double qw, double qx, double qy, double qz);
192
198int c_rsGetBodyOrientation(uint64_t world_handle, int body_index,
199 double* out_qw, double* out_qx,
200 double* out_qy, double* out_qz);
201
207int c_rsSetBodyOrientation(uint64_t world_handle, int body_index,
208 double qw, double qx, double qy, double qz);
209
215int c_rsGetBodyOrientation(uint64_t world_handle, int body_index,
216 double* out_qw, double* out_qx,
217 double* out_qy, double* out_qz);
218
226int c_rsSetBodyGravityEnabled(uint64_t world_handle, int body_index,
227 int enabled);
228
239int c_rsSetBodyMaterial(uint64_t world_handle, int body_index,
240 double restitution, double friction_kinetic,
241 double friction_static, double collision_damping);
242
253int c_rsSetBodyMaterialId(uint64_t world_handle, int body_index,
254 int32_t material_id);
255
268int c_rsSetBodyCollisionFilter(uint64_t world_handle, int body_index,
269 uint32_t collision_layer_bits,
270 uint32_t collision_mask_bits);
271
280int c_rsSetBodyAerodynamicSphere(uint64_t world_handle, int body_index,
281 double radius_m, double drag_coefficient);
282
293int c_rsSetBodyAerodynamicBox(uint64_t world_handle, int body_index,
294 double x_m, double y_m, double z_m,
295 double drag_coefficient);
296
306int c_rsSetGamepiecePosition(uint64_t world_handle, int gamepiece_index,
307 double x_m, double y_m, double z_m);
308
318int c_rsSetGamepieceLinearVelocity(uint64_t world_handle, int gamepiece_index,
319 double vx_mps, double vy_mps, double vz_mps);
320
330int c_rsGetGamepiecePosition(uint64_t world_handle, int gamepiece_index,
331 double* x_m, double* y_m, double* z_m);
332
342int c_rsGetGamepieceLinearVelocity(uint64_t world_handle, int gamepiece_index,
343 double* vx_mps, double* vy_mps, double* vz_mps);
344
356int c_rsSetWorldAerodynamics(uint64_t world_handle, int enabled,
357 double air_density_kgpm3,
358 double linear_drag_coefficient_n_per_mps,
359 double magnus_coefficient,
360 double default_drag_coefficient,
361 double default_drag_reference_area_m2);
362
375int c_rsSetMaterialInteraction(uint64_t world_handle, int32_t material_a_id,
376 int32_t material_b_id, double restitution,
377 double friction, int enabled);
378
385int c_rsStepWorld(uint64_t world_handle, int steps);
386
395int c_rsSetWorldGravity(uint64_t world_handle, double gx_mps2,
396 double gy_mps2, double gz_mps2);
397
407int c_rsGetBodyPosition(uint64_t world_handle, int body_index,
408 double* x_m, double* y_m, double* z_m);
409
419int c_rsGetBodyLinearVelocity(uint64_t world_handle, int body_index,
420 double* vx_mps, double* vy_mps, double* vz_mps);
421
438int c_rsGetBodyPose7Array(uint64_t world_handle, double* out_pose7,
439 int max_bodies);
440
456int c_rsGetBodyVelocity6Array(uint64_t world_handle, double* out_velocity6,
457 int max_bodies);
458
481int c_rsGetBodyState13Array(uint64_t world_handle, double* out_state13,
482 int max_bodies);
483
489int c_rsCreateAssembly(uint64_t world_handle);
490
491#ifdef __cplusplus
492} // extern "C"
493#endif
int c_rsOuttakeGamepiece(uint64_t world_handle, int gamepiece_index, double px, double py, double pz, double vx, double vy, double vz)
Outtake a gamepiece from a muzzle pose with velocity (launch).
int c_rsPickGamepiece(uint64_t world_handle, int gamepiece_index, double intake_x, double intake_y, double intake_z, double capture_radius, double carry_offset_x, double carry_offset_y, double carry_offset_z)
Request pickup of a gamepiece into a carrier.
int c_rsSetBodyMaterial(uint64_t world_handle, int body_index, double restitution, double friction_kinetic, double friction_static, double collision_damping)
Sets per-body material coefficients used in contact response.
int c_rsSetGamepieceLinearVelocity(uint64_t world_handle, int gamepiece_index, double vx_mps, double vy_mps, double vz_mps)
Sets a gamepiece's world-space linear velocity.
void c_doThing(void)
No-op sanity probe for link/load validation.
int c_rsCreateAssembly(uint64_t world_handle)
Creates and registers a rigid assembly container.
int c_rsGetBodyLinearVelocity(uint64_t world_handle, int body_index, double *vx_mps, double *vy_mps, double *vz_mps)
Reads a body's world-space linear velocity.
int c_rsGetBodyOrientation(uint64_t world_handle, int body_index, double *out_qw, double *out_qx, double *out_qy, double *out_qz)
Read a rigid body's orientation quaternion.
const char * c_rsGetGamepieceTypeName(uint64_t world_handle, int gamepiece_index)
Reads the registered type name for a gamepiece.
int c_rsSetGamepiecePosition(uint64_t world_handle, int gamepiece_index, double x_m, double y_m, double z_m)
Sets a gamepiece's world-space position.
int c_rsCreateGamepieceWithTypeName(uint64_t world_handle, const char *type_name, double radius_m, double mass_kg, double restitution)
Creates a new generic gamepiece with a human-readable type name.
int c_rsGetBodyState13Array(uint64_t world_handle, double *out_state13, int max_bodies)
Exports full body state as a tightly packed 13-tuple array.
int c_rsSetBodyOrientation(uint64_t world_handle, int body_index, double qw, double qx, double qy, double qz)
Set a rigid body's orientation.
int c_rsCreateGamepieceWithType(uint64_t world_handle, int type, double radius_m, double mass_kg, double restitution)
Creates a new generic gamepiece with an explicit type tag.
int c_rsSetBodyAerodynamicBox(uint64_t world_handle, int body_index, double x_m, double y_m, double z_m, double drag_coefficient)
Configures box aerodynamic metadata for a body.
int c_rsStepWorld(uint64_t world_handle, int steps)
Advances the world by steps fixed timesteps.
int c_rsSetMaterialInteraction(uint64_t world_handle, int32_t material_a_id, int32_t material_b_id, double restitution, double friction, int enabled)
Adds or updates a material-pair interaction override.
int c_rsGetBodyPosition(uint64_t world_handle, int body_index, double *x_m, double *y_m, double *z_m)
Reads a body's world-space position.
int c_rsCreateGamepiece(uint64_t world_handle, double radius_m, double mass_kg, double restitution)
Creates a new generic gamepiece using sphere hitbox parameters.
int c_rsSetWorldGravity(uint64_t world_handle, double gx_mps2, double gy_mps2, double gz_mps2)
Sets world gravity acceleration vector.
int c_rsGetGamepiecePosition(uint64_t world_handle, int gamepiece_index, double *x_m, double *y_m, double *z_m)
Reads a gamepiece's world-space position.
uint64_t c_rsCreateWorld(double fixed_dt_s, int enable_gravity)
Creates a new physics world and returns its opaque handle.
void c_rsDestroyWorld(uint64_t world_handle)
Destroys a previously created world and releases all associated resources.
int c_rsSetBodyAerodynamicSphere(uint64_t world_handle, int body_index, double radius_m, double drag_coefficient)
Configures spherical aerodynamic metadata for a body.
int c_rsSetBodyLinearVelocity(uint64_t world_handle, int body_index, double vx_mps, double vy_mps, double vz_mps)
Sets a body's world-space linear velocity.
int c_rsCreateBody(uint64_t world_handle, double mass_kg)
Creates a new rigid body in a world.
int c_rsSetBodyCollisionFilter(uint64_t world_handle, int body_index, uint32_t collision_layer_bits, uint32_t collision_mask_bits)
Sets broad-phase collision filtering for a body.
int c_rsPlaceGamepiece(uint64_t world_handle, int gamepiece_index, double x_m, double y_m, double z_m)
Place a gamepiece at a world position and mark grounded.
int c_rsSetWorldAerodynamics(uint64_t world_handle, int enabled, double air_density_kgpm3, double linear_drag_coefficient_n_per_mps, double magnus_coefficient, double default_drag_coefficient, double default_drag_reference_area_m2)
Configures world-level aerodynamic constants and feature toggle.
int c_rsSetBodyMaterialId(uint64_t world_handle, int body_index, int32_t material_id)
Assigns a numeric material id to a body.
int c_rsSetBodyGravityEnabled(uint64_t world_handle, int body_index, int enabled)
Enables or disables gravity for a single body.
int c_rsGetBodyPose7Array(uint64_t world_handle, double *out_pose7, int max_bodies)
Exports body poses as a tightly packed 7-tuple array.
int c_rsGetGamepieceLinearVelocity(uint64_t world_handle, int gamepiece_index, double *vx_mps, double *vy_mps, double *vz_mps)
Reads a gamepiece's world-space linear velocity.
int c_rsGetBodyVelocity6Array(uint64_t world_handle, double *out_velocity6, int max_bodies)
Exports body velocities as a tightly packed 6-tuple array.
int c_rsSetBodyPosition(uint64_t world_handle, int body_index, double x_m, double y_m, double z_m)
Sets a body's world-space position.