Skip to content

Commit ad0e50a

Browse files
committed
Clean up Rust example
1 parent 33b2cc8 commit ad0e50a

File tree

1 file changed

+53
-64
lines changed

1 file changed

+53
-64
lines changed

crates/hello-world-sys/src/main.rs

Lines changed: 53 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@ use std::ffi::{c_uint, c_void, CStr};
22
use std::mem::MaybeUninit;
33
use std::ptr;
44

5-
use jolt_sys::{
6-
JPC_BodyInterface_AddBody, JPC_BodyInterface_CreateBody,
7-
JPC_BodyInterface_GetCenterOfMassPosition, JPC_BodyInterface_GetLinearVelocity, JPC_Body_GetID,
8-
JPC_BroadPhaseLayer, JPC_ObjectLayer, Real, JPC_ACTIVATION_ACTIVATE,
9-
JPC_ACTIVATION_DONT_ACTIVATE, JPC_MOTION_TYPE_DYNAMIC, JPC_MOTION_TYPE_STATIC,
10-
};
5+
// Everything prefixed with `JPC_` comes from the jolt_sys crate.
6+
use jolt_sys::*;
117

128
const OL_NON_MOVING: JPC_ObjectLayer = 0;
139
const OL_MOVING: JPC_ObjectLayer = 1;
@@ -31,7 +27,7 @@ unsafe extern "C" fn bpl_get_broad_phase_layer(
3127
}
3228
}
3329

34-
const BPL: jolt_sys::JPC_BroadPhaseLayerInterfaceFns = jolt_sys::JPC_BroadPhaseLayerInterfaceFns {
30+
const BPL: JPC_BroadPhaseLayerInterfaceFns = JPC_BroadPhaseLayerInterfaceFns {
3531
GetNumBroadPhaseLayers: Some(bpl_get_num_broad_phase_layers as _),
3632
GetBroadPhaseLayer: Some(bpl_get_broad_phase_layer as _),
3733
};
@@ -48,10 +44,9 @@ unsafe extern "C" fn ovb_should_collide(
4844
}
4945
}
5046

51-
const OVB: jolt_sys::JPC_ObjectVsBroadPhaseLayerFilterFns =
52-
jolt_sys::JPC_ObjectVsBroadPhaseLayerFilterFns {
53-
ShouldCollide: Some(ovb_should_collide as _),
54-
};
47+
const OVB: JPC_ObjectVsBroadPhaseLayerFilterFns = JPC_ObjectVsBroadPhaseLayerFilterFns {
48+
ShouldCollide: Some(ovb_should_collide as _),
49+
};
5550

5651
unsafe extern "C" fn ovo_should_collide(
5752
_this: *const c_void,
@@ -65,48 +60,44 @@ unsafe extern "C" fn ovo_should_collide(
6560
}
6661
}
6762

68-
const OVO: jolt_sys::JPC_ObjectLayerPairFilterFns = jolt_sys::JPC_ObjectLayerPairFilterFns {
63+
const OVO: JPC_ObjectLayerPairFilterFns = JPC_ObjectLayerPairFilterFns {
6964
ShouldCollide: Some(ovo_should_collide as _),
7065
};
7166

72-
fn vec3(x: f32, y: f32, z: f32) -> jolt_sys::JPC_Vec3 {
73-
jolt_sys::JPC_Vec3 { x, y, z, _w: z }
67+
fn vec3(x: f32, y: f32, z: f32) -> JPC_Vec3 {
68+
JPC_Vec3 { x, y, z, _w: z }
7469
}
7570

76-
fn rvec3(x: Real, y: Real, z: Real) -> jolt_sys::JPC_RVec3 {
77-
jolt_sys::JPC_RVec3 { x, y, z, _w: z }
71+
fn rvec3(x: Real, y: Real, z: Real) -> JPC_RVec3 {
72+
JPC_RVec3 { x, y, z, _w: z }
7873
}
7974

8075
fn main() {
8176
unsafe {
82-
jolt_sys::JPC_RegisterDefaultAllocator();
83-
jolt_sys::JPC_FactoryInit();
84-
jolt_sys::JPC_RegisterTypes();
77+
JPC_RegisterDefaultAllocator();
78+
JPC_FactoryInit();
79+
JPC_RegisterTypes();
8580

86-
let temp_allocator = jolt_sys::JPC_TempAllocatorImpl_new(10 * 1024 * 1024);
81+
let temp_allocator = JPC_TempAllocatorImpl_new(10 * 1024 * 1024);
8782

88-
let job_system = jolt_sys::JPC_JobSystemThreadPool_new2(
89-
jolt_sys::JPC_MAX_PHYSICS_JOBS as _,
90-
jolt_sys::JPC_MAX_PHYSICS_BARRIERS as _,
91-
);
83+
let job_system =
84+
JPC_JobSystemThreadPool_new2(JPC_MAX_PHYSICS_JOBS as _, JPC_MAX_PHYSICS_BARRIERS as _);
9285

93-
let broad_phase_layer_interface =
94-
jolt_sys::JPC_BroadPhaseLayerInterface_new(ptr::null(), BPL);
86+
let broad_phase_layer_interface = JPC_BroadPhaseLayerInterface_new(ptr::null(), BPL);
9587

9688
let object_vs_broad_phase_layer_filter =
97-
jolt_sys::JPC_ObjectVsBroadPhaseLayerFilter_new(ptr::null_mut(), OVB);
89+
JPC_ObjectVsBroadPhaseLayerFilter_new(ptr::null_mut(), OVB);
9890

99-
let object_vs_object_layer_filter =
100-
jolt_sys::JPC_ObjectLayerPairFilter_new(ptr::null_mut(), OVO);
91+
let object_vs_object_layer_filter = JPC_ObjectLayerPairFilter_new(ptr::null_mut(), OVO);
10192

102-
let physics_system = jolt_sys::JPC_PhysicsSystem_new();
93+
let physics_system = JPC_PhysicsSystem_new();
10394

10495
let max_bodies = 1024;
10596
let num_body_mutexes = 0;
10697
let max_body_pairs = 1024;
10798
let max_contact_constraints = 1024;
10899

109-
jolt_sys::JPC_PhysicsSystem_Init(
100+
JPC_PhysicsSystem_Init(
110101
physics_system,
111102
max_bodies,
112103
num_body_mutexes,
@@ -120,25 +111,22 @@ fn main() {
120111
// TODO: register body activation listener
121112
// TODO: register contact listener
122113

123-
let body_interface = jolt_sys::JPC_PhysicsSystem_GetBodyInterface(physics_system);
114+
let body_interface = JPC_PhysicsSystem_GetBodyInterface(physics_system);
124115

125-
let floor_shape_settings = jolt_sys::JPC_BoxShapeSettings_new(vec3(100.0, 1.0, 100.0));
116+
let floor_shape_settings = JPC_BoxShapeSettings_new(vec3(100.0, 1.0, 100.0));
126117

127-
let mut floor_shape: *mut jolt_sys::JPC_Shape = ptr::null_mut();
128-
let mut err: *mut jolt_sys::JPC_String = ptr::null_mut();
129-
if !jolt_sys::JPC_ShapeSettings_Create(
130-
floor_shape_settings.cast::<jolt_sys::JPC_ShapeSettings>(),
118+
let mut floor_shape: *mut JPC_Shape = ptr::null_mut();
119+
let mut err: *mut JPC_String = ptr::null_mut();
120+
if !JPC_ShapeSettings_Create(
121+
floor_shape_settings.cast::<JPC_ShapeSettings>(),
131122
&mut floor_shape,
132123
&mut err,
133124
) {
134-
panic!(
135-
"Fatal error: {:?}",
136-
CStr::from_ptr(jolt_sys::JPC_String_c_str(err))
137-
);
125+
panic!("Fatal error: {:?}", CStr::from_ptr(JPC_String_c_str(err)));
138126
}
139127

140-
let mut floor_settings = MaybeUninit::<jolt_sys::JPC_BodyCreationSettings>::zeroed();
141-
jolt_sys::JPC_BodyCreationSettings_default(floor_settings.as_mut_ptr());
128+
let mut floor_settings = MaybeUninit::<JPC_BodyCreationSettings>::zeroed();
129+
JPC_BodyCreationSettings_default(floor_settings.as_mut_ptr());
142130
let mut floor_settings = floor_settings.assume_init();
143131
floor_settings.Position = rvec3(0.0, -1.0, 0.0);
144132
floor_settings.MotionType = JPC_MOTION_TYPE_STATIC;
@@ -152,23 +140,20 @@ fn main() {
152140
JPC_ACTIVATION_DONT_ACTIVATE,
153141
);
154142

155-
let sphere_shape_settings = jolt_sys::JPC_SphereShapeSettings_new(0.5);
143+
let sphere_shape_settings = JPC_SphereShapeSettings_new(0.5);
156144

157-
let mut sphere_shape: *mut jolt_sys::JPC_Shape = ptr::null_mut();
158-
let mut err: *mut jolt_sys::JPC_String = ptr::null_mut();
159-
if !jolt_sys::JPC_ShapeSettings_Create(
160-
sphere_shape_settings.cast::<jolt_sys::JPC_ShapeSettings>(),
145+
let mut sphere_shape: *mut JPC_Shape = ptr::null_mut();
146+
let mut err: *mut JPC_String = ptr::null_mut();
147+
if !JPC_ShapeSettings_Create(
148+
sphere_shape_settings.cast::<JPC_ShapeSettings>(),
161149
&mut sphere_shape,
162150
&mut err,
163151
) {
164-
panic!(
165-
"Fatal error: {:?}",
166-
CStr::from_ptr(jolt_sys::JPC_String_c_str(err))
167-
);
152+
panic!("Fatal error: {:?}", CStr::from_ptr(JPC_String_c_str(err)));
168153
}
169154

170-
let mut sphere_settings = MaybeUninit::<jolt_sys::JPC_BodyCreationSettings>::zeroed();
171-
jolt_sys::JPC_BodyCreationSettings_default(sphere_settings.as_mut_ptr());
155+
let mut sphere_settings = MaybeUninit::<JPC_BodyCreationSettings>::zeroed();
156+
JPC_BodyCreationSettings_default(sphere_settings.as_mut_ptr());
172157
let mut sphere_settings = sphere_settings.assume_init();
173158
sphere_settings.Position = rvec3(0.0, 2.0, 0.0);
174159
sphere_settings.MotionType = JPC_MOTION_TYPE_DYNAMIC;
@@ -193,7 +178,7 @@ fn main() {
193178
position.x, position.y, position.z, velocity.x, velocity.y, velocity.z
194179
);
195180

196-
jolt_sys::JPC_PhysicsSystem_Update(
181+
JPC_PhysicsSystem_Update(
197182
physics_system,
198183
delta_time,
199184
collision_steps,
@@ -202,18 +187,22 @@ fn main() {
202187
);
203188
}
204189

205-
// TODO: RemoveBody and DestroyBody
190+
JPC_BodyInterface_RemoveBody(body_interface, JPC_Body_GetID(floor));
191+
JPC_BodyInterface_DestroyBody(body_interface, JPC_Body_GetID(floor));
192+
193+
JPC_BodyInterface_RemoveBody(body_interface, sphere_id);
194+
JPC_BodyInterface_DestroyBody(body_interface, sphere_id);
206195

207-
jolt_sys::JPC_PhysicsSystem_delete(physics_system);
208-
jolt_sys::JPC_BroadPhaseLayerInterface_delete(broad_phase_layer_interface);
209-
jolt_sys::JPC_ObjectVsBroadPhaseLayerFilter_delete(object_vs_broad_phase_layer_filter);
210-
jolt_sys::JPC_ObjectLayerPairFilter_delete(object_vs_object_layer_filter);
196+
JPC_PhysicsSystem_delete(physics_system);
197+
JPC_BroadPhaseLayerInterface_delete(broad_phase_layer_interface);
198+
JPC_ObjectVsBroadPhaseLayerFilter_delete(object_vs_broad_phase_layer_filter);
199+
JPC_ObjectLayerPairFilter_delete(object_vs_object_layer_filter);
211200

212-
jolt_sys::JPC_JobSystemThreadPool_delete(job_system);
213-
jolt_sys::JPC_TempAllocatorImpl_delete(temp_allocator);
201+
JPC_JobSystemThreadPool_delete(job_system);
202+
JPC_TempAllocatorImpl_delete(temp_allocator);
214203

215-
jolt_sys::JPC_UnregisterTypes();
216-
jolt_sys::JPC_FactoryDelete();
204+
JPC_UnregisterTypes();
205+
JPC_FactoryDelete();
217206
}
218207

219208
println!("Hello, world!");

0 commit comments

Comments
 (0)