kitgit

tirbofish/dropbear · diff

b6a961c · Thribhu K

fix: got dropbear.h to stop regenerating on every since build(makes build times faster)

Unverified

diff --git a/crates/goanna-gen/src/lib.rs b/crates/goanna-gen/src/lib.rs
index 1945f99..7bd60b5 100644
--- a/crates/goanna-gen/src/lib.rs
+++ b/crates/goanna-gen/src/lib.rs
@@ -16,7 +16,16 @@ pub fn generate_c_header() -> anyhow::Result<()> {
     let mut enums = Vec::new();
     collect_exported_functions(&src_dir, &mut functions, &mut structs, &mut enums)?;
 
+    functions.sort_by(|a, b| a.name.cmp(&b.name));
+    enums.sort_by(|a, b| a.name.cmp(&b.name));
+
     let header = render_header(&functions, &structs, &enums);
+    if let Ok(existing) = std::fs::read_to_string(&output_path) {
+        if existing == header {
+            return Ok(());
+        }
+    }
+
     std::fs::write(&output_path, header)?;
 
     Ok(())
@@ -42,8 +51,12 @@ fn collect_exported_functions(
     enums: &mut Vec<EnumDef>,
 ) -> anyhow::Result<()> {
     if dir.is_dir() {
-        for entry in std::fs::read_dir(dir)? {
-            let entry = entry?;
+        let mut entries = std::fs::read_dir(dir)?
+            .filter_map(Result::ok)
+            .collect::<Vec<_>>();
+        entries.sort_by_key(|entry| entry.path());
+
+        for entry in entries {
             let path = entry.path();
             if path.is_dir() {
                 collect_exported_functions(&path, out, structs, enums)?;
@@ -536,7 +549,9 @@ fn render_header(
     for enm in enums {
         emit_repr_c_enum(enm, structs, &mut emitted, &mut out);
     }
-    for ty in needed {
+    let mut needed_list: Vec<String> = needed.into_iter().collect();
+    needed_list.sort();
+    for ty in needed_list {
         emit_structs_recursive(&ty, structs, &mut emitted, &mut out);
     }
 
diff --git a/include/dropbear.h b/include/dropbear.h
index d0051ff..1d988fe 100644
--- a/include/dropbear.h
+++ b/include/dropbear.h
@@ -179,72 +179,31 @@ typedef struct NShapeCastStatusFfi {
 
 typedef NShapeCastStatusFfi NShapeCastStatus;
 
-typedef void* PhysicsStatePtr;
-
-typedef struct NVector2 {
-    double x;
-    double y;
-} NVector2;
-
-typedef struct i32Array {
-    int32_t* values;
-    size_t length;
-    size_t capacity;
-} i32Array;
-
-typedef struct NNodeTransform {
-    NVector3 translation;
-    NQuaternion rotation;
-    NVector3 scale;
-} NNodeTransform;
-
-typedef struct NNode {
-    const char* name;
-    const int32_t* parent;
-    i32Array children;
-    NNodeTransform transform;
-} NNode;
+typedef void* AssetRegistryPtr;
 
-typedef struct NNodeArray {
-    NNode* values;
-    size_t length;
-    size_t capacity;
-} NNodeArray;
+typedef struct AxisLock {
+    bool x;
+    bool y;
+    bool z;
+} AxisLock;
 
 typedef struct IndexNative {
     uint32_t index;
     uint32_t generation;
 } IndexNative;
 
-typedef struct RigidBodyContext {
-    IndexNative index;
-    uint64_t entity_id;
-} RigidBodyContext;
-
-typedef struct f64ArrayArray {
-    double* values;
+typedef struct IndexNativeArray {
+    IndexNative* values;
     size_t length;
     size_t capacity;
-} f64ArrayArray;
-
-typedef struct NSkin {
-    const char* name;
-    i32Array joints;
-    f64ArrayArray inverse_bind_matrices;
-    const int32_t* skeleton_root;
-} NSkin;
+} IndexNativeArray;
 
-typedef struct NSkinArray {
-    NSkin* values;
-    size_t length;
-    size_t capacity;
-} NSkinArray;
+typedef struct CharacterCollisionArray {
+    uint64_t entity_id;
+    IndexNativeArray collisions;
+} CharacterCollisionArray;
 
-typedef struct NTransform {
-    NVector3 position;
-    NQuaternion rotation;
-    NVector3 scale;
-} NTransform;
+typedef void* CommandBufferPtr;
 
 typedef struct u64Array {
     uint64_t* values;
@@ -252,35 +211,44 @@ typedef struct u64Array {
     size_t capacity;
 } u64Array;
 
-typedef struct NCollider {
-    IndexNative index;
-    uint64_t entity_id;
-    uint32_t id;
-} NCollider;
-
-typedef struct RayHit {
-    NCollider collider;
-    double distance;
-} RayHit;
+typedef struct ConnectedGamepadIds {
+    u64Array ids;
+} ConnectedGamepadIds;
 
 typedef void* GraphicsContextPtr;
 
-typedef struct IndexNativeArray {
-    IndexNative* values;
+typedef void* InputStatePtr;
+
+typedef struct f64Array {
+    double* values;
     size_t length;
     size_t capacity;
-} IndexNativeArray;
+} f64Array;
 
-typedef struct CharacterCollisionArray {
-    uint64_t entity_id;
-    IndexNativeArray collisions;
-} CharacterCollisionArray;
+typedef struct NAnimationChannel {
+    int32_t target_node;
+    f64Array times;
+    NChannelValues values;
+    NAnimationInterpolation interpolation;
+} NAnimationChannel;
 
-typedef struct Progress {
-    size_t current;
-    size_t total;
-    const char* message;
-} Progress;
+typedef struct NAnimationChannelArray {
+    NAnimationChannel* values;
+    size_t length;
+    size_t capacity;
+} NAnimationChannelArray;
+
+typedef struct NAnimation {
+    const char* name;
+    NAnimationChannelArray channels;
+    float duration;
+} NAnimation;
+
+typedef struct NAnimationArray {
+    NAnimation* values;
+    size_t length;
+    size_t capacity;
+} NAnimationArray;
 
 typedef struct NAttenuation {
     float constant;
@@ -288,32 +256,18 @@ typedef struct NAttenuation {
     float quadratic;
 } NAttenuation;
 
+typedef struct NCollider {
+    IndexNative index;
+    uint64_t entity_id;
+    uint32_t id;
+} NCollider;
+
 typedef struct NColliderArray {
     NCollider* values;
     size_t length;
     size_t capacity;
 } NColliderArray;
 
-typedef void* WorldPtr;
-
-typedef void* CommandBufferPtr;
-
-typedef struct ConnectedGamepadIds {
-    u64Array ids;
-} ConnectedGamepadIds;
-
-typedef void* InputStatePtr;
-
-typedef struct NShapeCastHit {
-    NCollider collider;
-    double distance;
-    NVector3 witness1;
-    NVector3 witness2;
-    NVector3 normal1;
-    NVector3 normal2;
-    NShapeCastStatus status;
-} NShapeCastHit;
-
 typedef struct NColour {
     uint8_t r;
     uint8_t g;
@@ -328,6 +282,11 @@ typedef struct NVector4 {
     double w;
 } NVector4;
 
+typedef struct NVector2 {
+    double x;
+    double y;
+} NVector2;
+
 typedef struct NMaterial {
     const char* name;
     uint64_t diffuse_texture;
@@ -352,10 +311,11 @@ typedef struct NMaterialArray {
     size_t capacity;
 } NMaterialArray;
 
-typedef struct NRange {
-    float start;
-    float end;
-} NRange;
+typedef struct i32Array {
+    int32_t* values;
+    size_t length;
+    size_t capacity;
+} i32Array;
 
 typedef struct NModelVertex {
     NVector3 position;
@@ -387,216 +347,256 @@ typedef struct NMeshArray {
     size_t capacity;
 } NMeshArray;
 
-typedef struct f64Array {
-    double* values;
+typedef struct NNodeTransform {
+    NVector3 translation;
+    NQuaternion rotation;
+    NVector3 scale;
+} NNodeTransform;
+
+typedef struct NNode {
+    const char* name;
+    const int32_t* parent;
+    i32Array children;
+    NNodeTransform transform;
+} NNode;
+
+typedef struct NNodeArray {
+    NNode* values;
     size_t length;
     size_t capacity;
-} f64Array;
+} NNodeArray;
 
-typedef struct NAnimationChannel {
-    int32_t target_node;
-    f64Array times;
-    NChannelValues values;
-    NAnimationInterpolation interpolation;
-} NAnimationChannel;
+typedef struct NRange {
+    float start;
+    float end;
+} NRange;
 
-typedef struct NAnimationChannelArray {
-    NAnimationChannel* values;
+typedef struct NShapeCastHit {
+    NCollider collider;
+    double distance;
+    NVector3 witness1;
+    NVector3 witness2;
+    NVector3 normal1;
+    NVector3 normal2;
+    NShapeCastStatus status;
+} NShapeCastHit;
+
+typedef struct f64ArrayArray {
+    double* values;
     size_t length;
     size_t capacity;
-} NAnimationChannelArray;
+} f64ArrayArray;
 
-typedef struct NAnimation {
+typedef struct NSkin {
     const char* name;
-    NAnimationChannelArray channels;
-    float duration;
-} NAnimation;
+    i32Array joints;
+    f64ArrayArray inverse_bind_matrices;
+    const int32_t* skeleton_root;
+} NSkin;
 
-typedef struct NAnimationArray {
-    NAnimation* values;
+typedef struct NSkinArray {
+    NSkin* values;
     size_t length;
     size_t capacity;
-} NAnimationArray;
+} NSkinArray;
 
-typedef void* AssetRegistryPtr;
+typedef struct NTransform {
+    NVector3 position;
+    NQuaternion rotation;
+    NVector3 scale;
+} NTransform;
+
+typedef void* PhysicsStatePtr;
+
+typedef struct Progress {
+    size_t current;
+    size_t total;
+    const char* message;
+} Progress;
+
+typedef struct RayHit {
+    NCollider collider;
+    double distance;
+} RayHit;
+
+typedef struct RigidBodyContext {
+    IndexNative index;
+    uint64_t entity_id;
+} RigidBodyContext;
 
 typedef void* SceneLoaderPtr;
 
-typedef struct AxisLock {
-    bool x;
-    bool y;
-    bool z;
-} AxisLock;
+typedef void* WorldPtr;
 
-int32_t dropbear_gamepad_is_button_pressed(InputStatePtr input, uint64_t gamepad_id, int32_t button_ordinal, bool* out0);
-int32_t dropbear_gamepad_get_left_stick_position(InputStatePtr input, uint64_t gamepad_id, NVector2* out0);
-int32_t dropbear_gamepad_get_right_stick_position(InputStatePtr input, uint64_t gamepad_id, NVector2* out0);
-int32_t dropbear_collider_group_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
-int32_t dropbear_collider_group_get_colliders(WorldPtr world, PhysicsStatePtr physics, uint64_t entity, NColliderArray* out0);
+int32_t dropbear_asset_model_get_animations(AssetRegistryPtr asset, uint64_t model_handle, NAnimationArray* out0);
+int32_t dropbear_asset_model_get_label(AssetRegistryPtr asset, uint64_t model_handle, char** out0);
+int32_t dropbear_asset_model_get_materials(AssetRegistryPtr asset, uint64_t model_handle, NMaterialArray* out0);
+int32_t dropbear_asset_model_get_meshes(AssetRegistryPtr asset, uint64_t model_handle, NMeshArray* out0);
+int32_t dropbear_asset_model_get_nodes(AssetRegistryPtr asset, uint64_t model_handle, NNodeArray* out0);
+int32_t dropbear_asset_model_get_skins(AssetRegistryPtr asset, uint64_t model_handle, NSkinArray* out0);
+int32_t dropbear_asset_texture_get_height(AssetRegistryPtr asset_manager, uint64_t texture_handle, uint32_t* out0);
+int32_t dropbear_asset_texture_get_label(AssetRegistryPtr asset_manager, uint64_t texture_handle, char** out0, bool* out0_present);
+int32_t dropbear_asset_texture_get_width(AssetRegistryPtr asset_manager, uint64_t texture_handle, uint32_t* out0);
+int32_t dropbear_camera_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_camera_get_aspect(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_get_eye(WorldPtr world, uint64_t entity, NVector3* out0);
+int32_t dropbear_camera_get_fovy(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_get_pitch(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_get_sensitivity(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_get_speed(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_get_target(WorldPtr world, uint64_t entity, NVector3* out0);
+int32_t dropbear_camera_get_up(WorldPtr world, uint64_t entity, NVector3* out0);
+int32_t dropbear_camera_get_yaw(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_get_zfar(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_get_znear(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_camera_set_eye(WorldPtr world, uint64_t entity, const NVector3* eye);
+int32_t dropbear_camera_set_fovy(WorldPtr world, uint64_t entity, double fovy);
+int32_t dropbear_camera_set_pitch(WorldPtr world, uint64_t entity, double pitch);
+int32_t dropbear_camera_set_sensitivity(WorldPtr world, uint64_t entity, double sensitivity);
+int32_t dropbear_camera_set_speed(WorldPtr world, uint64_t entity, double speed);
+int32_t dropbear_camera_set_target(WorldPtr world, uint64_t entity, const NVector3* target);
+int32_t dropbear_camera_set_up(WorldPtr world, uint64_t entity, const NVector3* up);
+int32_t dropbear_camera_set_yaw(WorldPtr world, uint64_t entity, double yaw);
+int32_t dropbear_camera_set_zfar(WorldPtr world, uint64_t entity, double zfar);
+int32_t dropbear_camera_set_znear(WorldPtr world, uint64_t entity, double znear);
 int32_t dropbear_character_collision_get_character_collision_collider(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NCollider* out0);
+int32_t dropbear_character_collision_get_character_collision_normal1(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
+int32_t dropbear_character_collision_get_character_collision_normal2(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
 int32_t dropbear_character_collision_get_character_collision_position(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NTransform* out0);
+int32_t dropbear_character_collision_get_character_collision_status(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NShapeCastStatus* out0);
+int32_t dropbear_character_collision_get_character_collision_time_of_impact(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, double* out0);
 int32_t dropbear_character_collision_get_character_collision_translation_applied(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
 int32_t dropbear_character_collision_get_character_collision_translation_remaining(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
-int32_t dropbear_character_collision_get_character_collision_time_of_impact(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, double* out0);
 int32_t dropbear_character_collision_get_character_collision_witness1(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
 int32_t dropbear_character_collision_get_character_collision_witness2(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
-int32_t dropbear_character_collision_get_character_collision_normal1(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
-int32_t dropbear_character_collision_get_character_collision_normal2(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NVector3* out0);
-int32_t dropbear_character_collision_get_character_collision_status(WorldPtr world, uint64_t entity, const IndexNative* collision_handle, NShapeCastStatus* out0);
-int32_t dropbear_collider_get_collider_shape(PhysicsStatePtr physics, const NCollider* collider, ColliderShape* out0);
-int32_t dropbear_collider_set_collider_shape(PhysicsStatePtr physics, const NCollider* collider, const ColliderShape* shape);
 int32_t dropbear_collider_get_collider_density(PhysicsStatePtr physics, const NCollider* collider, double* out0);
-int32_t dropbear_collider_set_collider_density(PhysicsStatePtr physics, const NCollider* collider, double density);
 int32_t dropbear_collider_get_collider_friction(PhysicsStatePtr physics, const NCollider* collider, double* out0);
-int32_t dropbear_collider_set_collider_friction(PhysicsStatePtr physics, const NCollider* collider, double friction);
-int32_t dropbear_collider_get_collider_restitution(PhysicsStatePtr physics, const NCollider* collider, double* out0);
-int32_t dropbear_collider_set_collider_restitution(PhysicsStatePtr physics, const NCollider* collider, double restitution);
-int32_t dropbear_collider_get_collider_mass(PhysicsStatePtr physics, const NCollider* collider, double* out0);
-int32_t dropbear_collider_set_collider_mass(PhysicsStatePtr physics, const NCollider* collider, double mass);
 int32_t dropbear_collider_get_collider_is_sensor(PhysicsStatePtr physics, const NCollider* collider, bool* out0);
-int32_t dropbear_collider_set_collider_is_sensor(PhysicsStatePtr physics, const NCollider* collider, bool is_sensor);
-int32_t dropbear_collider_get_collider_translation(PhysicsStatePtr physics, const NCollider* collider, NVector3* out0);
-int32_t dropbear_collider_set_collider_translation(PhysicsStatePtr physics, const NCollider* collider, const NVector3* translation);
+int32_t dropbear_collider_get_collider_mass(PhysicsStatePtr physics, const NCollider* collider, double* out0);
+int32_t dropbear_collider_get_collider_restitution(PhysicsStatePtr physics, const NCollider* collider, double* out0);
 int32_t dropbear_collider_get_collider_rotation(PhysicsStatePtr physics, const NCollider* collider, NVector3* out0);
+int32_t dropbear_collider_get_collider_shape(PhysicsStatePtr physics, const NCollider* collider, ColliderShape* out0);
+int32_t dropbear_collider_get_collider_translation(PhysicsStatePtr physics, const NCollider* collider, NVector3* out0);
+int32_t dropbear_collider_group_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_collider_group_get_colliders(WorldPtr world, PhysicsStatePtr physics, uint64_t entity, NColliderArray* out0);
+int32_t dropbear_collider_set_collider_density(PhysicsStatePtr physics, const NCollider* collider, double density);
+int32_t dropbear_collider_set_collider_friction(PhysicsStatePtr physics, const NCollider* collider, double friction);
+int32_t dropbear_collider_set_collider_is_sensor(PhysicsStatePtr physics, const NCollider* collider, bool is_sensor);
+int32_t dropbear_collider_set_collider_mass(PhysicsStatePtr physics, const NCollider* collider, double mass);
+int32_t dropbear_collider_set_collider_restitution(PhysicsStatePtr physics, const NCollider* collider, double restitution);
 int32_t dropbear_collider_set_collider_rotation(PhysicsStatePtr physics, const NCollider* collider, const NVector3* rotation);
-int32_t dropbear_kcc_kcc_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
-int32_t dropbear_kcc_move_character(WorldPtr world, PhysicsStatePtr physics_state, uint64_t entity, const NVector3* translation, double delta_time);
-int32_t dropbear_kcc_set_rotation(WorldPtr world, PhysicsStatePtr physics_state, uint64_t entity, const NQuaternion* rotation);
-int32_t dropbear_kcc_get_hit(WorldPtr world, uint64_t entity, CharacterCollisionArray* out0);
-int32_t dropbear_rigidbody_exists_for_entity(WorldPtr world, PhysicsStatePtr physics, uint64_t entity, IndexNative* out0, bool* out0_present);
-int32_t dropbear_rigidbody_get_rigidbody_mode(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, int32_t* out0);
-int32_t dropbear_rigidbody_set_rigidbody_mode(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, int32_t mode);
-int32_t dropbear_rigidbody_get_rigidbody_gravity_scale(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double* out0);
-int32_t dropbear_rigidbody_set_rigidbody_gravity_scale(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double gravity_scale);
-int32_t dropbear_rigidbody_get_rigidbody_linear_damping(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double* out0);
-int32_t dropbear_rigidbody_set_rigidbody_linear_damping(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double linear_damping);
-int32_t dropbear_rigidbody_get_rigidbody_angular_damping(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double* out0);
-int32_t dropbear_rigidbody_set_rigidbody_angular_damping(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double angular_damping);
-int32_t dropbear_rigidbody_get_rigidbody_sleep(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool* out0);
-int32_t dropbear_rigidbody_set_rigidbody_sleep(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool sleep);
-int32_t dropbear_rigidbody_get_rigidbody_ccd_enabled(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool* out0);
-int32_t dropbear_rigidbody_set_rigidbody_ccd_enabled(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool ccd_enabled);
-int32_t dropbear_rigidbody_get_rigidbody_linear_velocity(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, NVector3* out0);
-int32_t dropbear_rigidbody_set_rigidbody_linear_velocity(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const NVector3* linear_velocity);
-int32_t dropbear_rigidbody_get_rigidbody_angular_velocity(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, NVector3* out0);
-int32_t dropbear_rigidbody_set_rigidbody_angular_velocity(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const NVector3* angular_velocity);
-int32_t dropbear_rigidbody_get_rigidbody_lock_translation(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, AxisLock* out0);
-int32_t dropbear_rigidbody_set_rigidbody_lock_translation(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const AxisLock* lock_translation);
-int32_t dropbear_rigidbody_get_rigidbody_lock_rotation(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, AxisLock* out0);
-int32_t dropbear_rigidbody_set_rigidbody_lock_rotation(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const AxisLock* lock_rotation);
-int32_t dropbear_rigidbody_get_rigidbody_children(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, NColliderArray* out0);
-int32_t dropbear_rigidbody_apply_impulse(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double x, double y, double z);
-int32_t dropbear_rigidbody_apply_torque_impulse(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double x, double y, double z);
-int32_t dropbear_scripting_load_scene_async(CommandBufferPtr command_buffer, SceneLoaderPtr scene_loader, const char* scene_name, uint64_t* out0);
-int32_t dropbear_scripting_load_scene_async_with_loading(CommandBufferPtr command_buffer, SceneLoaderPtr scene_loader, const char* scene_name, const char* loading_scene, uint64_t* out0);
-int32_t dropbear_scripting_switch_to_scene_immediate(CommandBufferPtr command_buffer, const char* scene_name);
-int32_t dropbear_scripting_get_scene_load_handle_scene_name(SceneLoaderPtr scene_loader, uint64_t scene_id, char** out0);
-int32_t dropbear_scripting_switch_to_scene_async(CommandBufferPtr command_buffer, SceneLoaderPtr scene_loader, uint64_t scene_id);
-int32_t dropbear_scripting_get_scene_load_progress(SceneLoaderPtr scene_loader, uint64_t scene_id, Progress* out0);
-int32_t dropbear_scripting_get_scene_load_status(SceneLoaderPtr scene_loader, uint64_t scene_id, uint32_t* out0);
+int32_t dropbear_collider_set_collider_shape(PhysicsStatePtr physics, const NCollider* collider, const ColliderShape* shape);
+int32_t dropbear_collider_set_collider_translation(PhysicsStatePtr physics, const NCollider* collider, const NVector3* translation);
 int32_t dropbear_engine_get_asset(AssetRegistryPtr asset, const char* label, const AssetKind* kind, uint64_t* out0, bool* out0_present);
-int32_t dropbear_asset_model_get_label(AssetRegistryPtr asset, uint64_t model_handle, char** out0);
-int32_t dropbear_asset_model_get_meshes(AssetRegistryPtr asset, uint64_t model_handle, NMeshArray* out0);
-int32_t dropbear_asset_model_get_materials(AssetRegistryPtr asset, uint64_t model_handle, NMaterialArray* out0);
-int32_t dropbear_asset_model_get_skins(AssetRegistryPtr asset, uint64_t model_handle, NSkinArray* out0);
-int32_t dropbear_asset_model_get_animations(AssetRegistryPtr asset, uint64_t model_handle, NAnimationArray* out0);
-int32_t dropbear_asset_model_get_nodes(AssetRegistryPtr asset, uint64_t model_handle, NNodeArray* out0);
-int32_t dropbear_asset_texture_get_label(AssetRegistryPtr asset_manager, uint64_t texture_handle, char** out0, bool* out0_present);
-int32_t dropbear_asset_texture_get_width(AssetRegistryPtr asset_manager, uint64_t texture_handle, uint32_t* out0);
-int32_t dropbear_asset_texture_get_height(AssetRegistryPtr asset_manager, uint64_t texture_handle, uint32_t* out0);
 int32_t dropbear_engine_get_entity(WorldPtr world, const char* label, uint64_t* out0);
 int32_t dropbear_engine_quit(CommandBufferPtr command_buffer);
-int32_t dropbear_entity_label_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
-int32_t dropbear_entity_get_label(WorldPtr world, uint64_t entity, char** out0);
-int32_t dropbear_entity_get_children(WorldPtr world, uint64_t entity, u64Array* out0);
 int32_t dropbear_entity_get_child_by_label(WorldPtr world, uint64_t entity, const char* target, uint64_t* out0, bool* out0_present);
+int32_t dropbear_entity_get_children(WorldPtr world, uint64_t entity, u64Array* out0);
+int32_t dropbear_entity_get_label(WorldPtr world, uint64_t entity, char** out0);
 int32_t dropbear_entity_get_parent(WorldPtr world, uint64_t entity, uint64_t* out0, bool* out0_present);
-int32_t dropbear_input_print_input_state(InputStatePtr input);
-int32_t dropbear_input_is_key_pressed(InputStatePtr input, int32_t key_code, bool* out0);
-int32_t dropbear_input_get_mouse_position(InputStatePtr input, NVector2* out0);
-int32_t dropbear_input_is_mouse_button_pressed(InputStatePtr input, int32_t button_ordinal, bool* out0);
-int32_t dropbear_input_get_mouse_delta(InputStatePtr input, NVector2* out0);
-int32_t dropbear_input_is_cursor_locked(InputStatePtr input, bool* out0);
-int32_t dropbear_input_set_cursor_locked(CommandBufferPtr command_buffer, InputStatePtr input, bool locked);
+int32_t dropbear_entity_label_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_gamepad_get_left_stick_position(InputStatePtr input, uint64_t gamepad_id, NVector2* out0);
+int32_t dropbear_gamepad_get_right_stick_position(InputStatePtr input, uint64_t gamepad_id, NVector2* out0);
+int32_t dropbear_gamepad_is_button_pressed(InputStatePtr input, uint64_t gamepad_id, int32_t button_ordinal, bool* out0);
+int32_t dropbear_input_get_connected_gamepads(InputStatePtr input, ConnectedGamepadIds* out0);
 int32_t dropbear_input_get_last_mouse_pos(InputStatePtr input, NVector2* out0);
+int32_t dropbear_input_get_mouse_delta(InputStatePtr input, NVector2* out0);
+int32_t dropbear_input_get_mouse_position(InputStatePtr input, NVector2* out0);
 int32_t dropbear_input_is_cursor_hidden(InputStatePtr input, bool* out0);
+int32_t dropbear_input_is_cursor_locked(InputStatePtr input, bool* out0);
+int32_t dropbear_input_is_key_pressed(InputStatePtr input, int32_t key_code, bool* out0);
+int32_t dropbear_input_is_mouse_button_pressed(InputStatePtr input, int32_t button_ordinal, bool* out0);
+int32_t dropbear_input_print_input_state(InputStatePtr input);
 int32_t dropbear_input_set_cursor_hidden(CommandBufferPtr command_buffer, InputStatePtr input, bool hidden);
-int32_t dropbear_input_get_connected_gamepads(InputStatePtr input, ConnectedGamepadIds* out0);
-int32_t dropbear_physics_get_gravity(PhysicsStatePtr physics, NVector3* out0);
-int32_t dropbear_physics_set_gravity(PhysicsStatePtr physics, const NVector3* gravity);
-int32_t dropbear_physics_raycast(PhysicsStatePtr physics, const NVector3* origin, const NVector3* dir, double time_of_impact, bool solid, RayHit* out0, bool* out0_present);
-int32_t dropbear_physics_shape_cast(PhysicsStatePtr physics, const NVector3* origin, const NVector3* direction, const ColliderShape* shape, double time_of_impact, bool solid, NShapeCastHit* out0, bool* out0_present);
-int32_t dropbear_physics_is_overlapping(PhysicsStatePtr physics, const NCollider* collider1, const NCollider* collider2, bool* out0);
-int32_t dropbear_physics_is_triggering(PhysicsStatePtr physics, const NCollider* collider1, const NCollider* collider2, bool* out0);
-int32_t dropbear_physics_is_touching(PhysicsStatePtr physics, uint64_t entity1, uint64_t entity2, bool* out0);
-int32_t dropbear_mesh_get_texture(WorldPtr world, AssetRegistryPtr asset, uint64_t entity, const char* material_name, uint64_t* out0, bool* out0_present);
-int32_t dropbear_mesh_set_texture_override(WorldPtr world, AssetRegistryPtr asset, uint64_t entity, const char* material_name, uint64_t texture_handle);
-int32_t dropbear_mesh_set_material_tint(WorldPtr world, AssetRegistryPtr asset, GraphicsContextPtr graphics, uint64_t entity, const char* material_name, float r, float g, float b, float a);
-int32_t dropbear_camera_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
-int32_t dropbear_camera_get_eye(WorldPtr world, uint64_t entity, NVector3* out0);
-int32_t dropbear_camera_set_eye(WorldPtr world, uint64_t entity, const NVector3* eye);
-int32_t dropbear_camera_get_target(WorldPtr world, uint64_t entity, NVector3* out0);
-int32_t dropbear_camera_set_target(WorldPtr world, uint64_t entity, const NVector3* target);
-int32_t dropbear_camera_get_up(WorldPtr world, uint64_t entity, NVector3* out0);
-int32_t dropbear_camera_set_up(WorldPtr world, uint64_t entity, const NVector3* up);
-int32_t dropbear_camera_get_aspect(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_get_fovy(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_set_fovy(WorldPtr world, uint64_t entity, double fovy);
-int32_t dropbear_camera_get_znear(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_set_znear(WorldPtr world, uint64_t entity, double znear);
-int32_t dropbear_camera_get_zfar(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_set_zfar(WorldPtr world, uint64_t entity, double zfar);
-int32_t dropbear_camera_get_yaw(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_set_yaw(WorldPtr world, uint64_t entity, double yaw);
-int32_t dropbear_camera_get_pitch(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_set_pitch(WorldPtr world, uint64_t entity, double pitch);
-int32_t dropbear_camera_get_speed(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_set_speed(WorldPtr world, uint64_t entity, double speed);
-int32_t dropbear_camera_get_sensitivity(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_camera_set_sensitivity(WorldPtr world, uint64_t entity, double sensitivity);
-int32_t dropbear_lighting_light_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
-int32_t dropbear_lighting_get_position(WorldPtr world, uint64_t entity, NVector3* out0);
-int32_t dropbear_lighting_set_position(WorldPtr world, uint64_t entity, const NVector3* position);
-int32_t dropbear_lighting_get_direction(WorldPtr world, uint64_t entity, NVector3* out0);
-int32_t dropbear_lighting_set_direction(WorldPtr world, uint64_t entity, const NVector3* direction);
-int32_t dropbear_lighting_get_colour(WorldPtr world, uint64_t entity, NColour* out0);
-int32_t dropbear_lighting_set_colour(WorldPtr world, uint64_t entity, const NColour* colour);
-int32_t dropbear_lighting_get_light_type(WorldPtr world, uint64_t entity, int32_t* out0);
-int32_t dropbear_lighting_set_light_type(WorldPtr world, uint64_t entity, int32_t light_type);
-int32_t dropbear_lighting_get_intensity(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_lighting_set_intensity(WorldPtr world, uint64_t entity, double intensity);
+int32_t dropbear_input_set_cursor_locked(CommandBufferPtr command_buffer, InputStatePtr input, bool locked);
+int32_t dropbear_kcc_get_hit(WorldPtr world, uint64_t entity, CharacterCollisionArray* out0);
+int32_t dropbear_kcc_kcc_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_kcc_move_character(WorldPtr world, PhysicsStatePtr physics_state, uint64_t entity, const NVector3* translation, double delta_time);
+int32_t dropbear_kcc_set_rotation(WorldPtr world, PhysicsStatePtr physics_state, uint64_t entity, const NQuaternion* rotation);
 int32_t dropbear_lighting_get_attenuation(WorldPtr world, uint64_t entity, NAttenuation* out0);
-int32_t dropbear_lighting_set_attenuation(WorldPtr world, uint64_t entity, const NAttenuation* attenuation);
-int32_t dropbear_lighting_get_enabled(WorldPtr world, uint64_t entity, bool* out0);
-int32_t dropbear_lighting_set_enabled(WorldPtr world, uint64_t entity, bool enabled);
+int32_t dropbear_lighting_get_casts_shadows(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_lighting_get_colour(WorldPtr world, uint64_t entity, NColour* out0);
 int32_t dropbear_lighting_get_cutoff_angle(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_lighting_set_cutoff_angle(WorldPtr world, uint64_t entity, double cutoff_angle);
+int32_t dropbear_lighting_get_depth(WorldPtr world, uint64_t entity, NRange* out0);
+int32_t dropbear_lighting_get_direction(WorldPtr world, uint64_t entity, NVector3* out0);
+int32_t dropbear_lighting_get_enabled(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_lighting_get_intensity(WorldPtr world, uint64_t entity, double* out0);
+int32_t dropbear_lighting_get_light_type(WorldPtr world, uint64_t entity, int32_t* out0);
 int32_t dropbear_lighting_get_outer_cutoff_angle(WorldPtr world, uint64_t entity, double* out0);
-int32_t dropbear_lighting_set_outer_cutoff_angle(WorldPtr world, uint64_t entity, double outer_cutoff_angle);
-int32_t dropbear_lighting_get_casts_shadows(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_lighting_get_position(WorldPtr world, uint64_t entity, NVector3* out0);
+int32_t dropbear_lighting_light_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
+int32_t dropbear_lighting_set_attenuation(WorldPtr world, uint64_t entity, const NAttenuation* attenuation);
 int32_t dropbear_lighting_set_casts_shadows(WorldPtr world, uint64_t entity, bool casts_shadows);
-int32_t dropbear_lighting_get_depth(WorldPtr world, uint64_t entity, NRange* out0);
+int32_t dropbear_lighting_set_colour(WorldPtr world, uint64_t entity, const NColour* colour);
+int32_t dropbear_lighting_set_cutoff_angle(WorldPtr world, uint64_t entity, double cutoff_angle);
 int32_t dropbear_lighting_set_depth(WorldPtr world, uint64_t entity, const NRange* depth);
+int32_t dropbear_lighting_set_direction(WorldPtr world, uint64_t entity, const NVector3* direction);
+int32_t dropbear_lighting_set_enabled(WorldPtr world, uint64_t entity, bool enabled);
+int32_t dropbear_lighting_set_intensity(WorldPtr world, uint64_t entity, double intensity);
+int32_t dropbear_lighting_set_light_type(WorldPtr world, uint64_t entity, int32_t light_type);
+int32_t dropbear_lighting_set_outer_cutoff_angle(WorldPtr world, uint64_t entity, double outer_cutoff_angle);
+int32_t dropbear_lighting_set_position(WorldPtr world, uint64_t entity, const NVector3* position);
+int32_t dropbear_mesh_get_texture(WorldPtr world, AssetRegistryPtr asset, uint64_t entity, const char* material_name, uint64_t* out0, bool* out0_present);
+int32_t dropbear_mesh_set_material_tint(WorldPtr world, AssetRegistryPtr asset, GraphicsContextPtr graphics, uint64_t entity, const char* material_name, float r, float g, float b, float a);
+int32_t dropbear_mesh_set_texture_override(WorldPtr world, AssetRegistryPtr asset, uint64_t entity, const char* material_name, uint64_t texture_handle);
+int32_t dropbear_physics_get_gravity(PhysicsStatePtr physics, NVector3* out0);
+int32_t dropbear_physics_is_overlapping(PhysicsStatePtr physics, const NCollider* collider1, const NCollider* collider2, bool* out0);
+int32_t dropbear_physics_is_touching(PhysicsStatePtr physics, uint64_t entity1, uint64_t entity2, bool* out0);
+int32_t dropbear_physics_is_triggering(PhysicsStatePtr physics, const NCollider* collider1, const NCollider* collider2, bool* out0);
+int32_t dropbear_physics_raycast(PhysicsStatePtr physics, const NVector3* origin, const NVector3* dir, double time_of_impact, bool solid, RayHit* out0, bool* out0_present);
+int32_t dropbear_physics_set_gravity(PhysicsStatePtr physics, const NVector3* gravity);
+int32_t dropbear_physics_shape_cast(PhysicsStatePtr physics, const NVector3* origin, const NVector3* direction, const ColliderShape* shape, double time_of_impact, bool solid, NShapeCastHit* out0, bool* out0_present);
 int32_t dropbear_properties_custom_properties_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
-int32_t dropbear_properties_get_string_property(WorldPtr world, uint64_t entity, const char* key, char** out0, bool* out0_present);
-int32_t dropbear_properties_get_int_property(WorldPtr world, uint64_t entity, const char* key, int32_t* out0, bool* out0_present);
-int32_t dropbear_properties_get_long_property(WorldPtr world, uint64_t entity, const char* key, int64_t* out0, bool* out0_present);
+int32_t dropbear_properties_get_bool_property(WorldPtr world, uint64_t entity, const char* key, bool* out0, bool* out0_present);
 int32_t dropbear_properties_get_double_property(WorldPtr world, uint64_t entity, const char* key, double* out0, bool* out0_present);
 int32_t dropbear_properties_get_float_property(WorldPtr world, uint64_t entity, const char* key, float* out0, bool* out0_present);
-int32_t dropbear_properties_get_bool_property(WorldPtr world, uint64_t entity, const char* key, bool* out0, bool* out0_present);
+int32_t dropbear_properties_get_int_property(WorldPtr world, uint64_t entity, const char* key, int32_t* out0, bool* out0_present);
+int32_t dropbear_properties_get_long_property(WorldPtr world, uint64_t entity, const char* key, int64_t* out0, bool* out0_present);
+int32_t dropbear_properties_get_string_property(WorldPtr world, uint64_t entity, const char* key, char** out0, bool* out0_present);
 int32_t dropbear_properties_get_vec3_property(WorldPtr world, uint64_t entity, const char* key, NVector3* out0, bool* out0_present);
-int32_t dropbear_properties_set_string_property(WorldPtr world, uint64_t entity, const char* key, const char* value);
-int32_t dropbear_properties_set_int_property(WorldPtr world, uint64_t entity, const char* key, int32_t value);
-int32_t dropbear_properties_set_long_property(WorldPtr world, uint64_t entity, const char* key, int64_t value);
+int32_t dropbear_properties_set_bool_property(WorldPtr world, uint64_t entity, const char* key, bool value);
 int32_t dropbear_properties_set_double_property(WorldPtr world, uint64_t entity, const char* key, double value);
 int32_t dropbear_properties_set_float_property(WorldPtr world, uint64_t entity, const char* key, double value);
-int32_t dropbear_properties_set_bool_property(WorldPtr world, uint64_t entity, const char* key, bool value);
+int32_t dropbear_properties_set_int_property(WorldPtr world, uint64_t entity, const char* key, int32_t value);
+int32_t dropbear_properties_set_long_property(WorldPtr world, uint64_t entity, const char* key, int64_t value);
+int32_t dropbear_properties_set_string_property(WorldPtr world, uint64_t entity, const char* key, const char* value);
 int32_t dropbear_properties_set_vec3_property(WorldPtr world, uint64_t entity, const char* key, const NVector3* value);
+int32_t dropbear_rigidbody_apply_impulse(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double x, double y, double z);
+int32_t dropbear_rigidbody_apply_torque_impulse(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double x, double y, double z);
+int32_t dropbear_rigidbody_exists_for_entity(WorldPtr world, PhysicsStatePtr physics, uint64_t entity, IndexNative* out0, bool* out0_present);
+int32_t dropbear_rigidbody_get_rigidbody_angular_damping(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double* out0);
+int32_t dropbear_rigidbody_get_rigidbody_angular_velocity(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, NVector3* out0);
+int32_t dropbear_rigidbody_get_rigidbody_ccd_enabled(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool* out0);
+int32_t dropbear_rigidbody_get_rigidbody_children(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, NColliderArray* out0);
+int32_t dropbear_rigidbody_get_rigidbody_gravity_scale(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double* out0);
+int32_t dropbear_rigidbody_get_rigidbody_linear_damping(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double* out0);
+int32_t dropbear_rigidbody_get_rigidbody_linear_velocity(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, NVector3* out0);
+int32_t dropbear_rigidbody_get_rigidbody_lock_rotation(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, AxisLock* out0);
+int32_t dropbear_rigidbody_get_rigidbody_lock_translation(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, AxisLock* out0);
+int32_t dropbear_rigidbody_get_rigidbody_mode(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, int32_t* out0);
+int32_t dropbear_rigidbody_get_rigidbody_sleep(WorldPtr _world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool* out0);
+int32_t dropbear_rigidbody_set_rigidbody_angular_damping(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double angular_damping);
+int32_t dropbear_rigidbody_set_rigidbody_angular_velocity(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const NVector3* angular_velocity);
+int32_t dropbear_rigidbody_set_rigidbody_ccd_enabled(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool ccd_enabled);
+int32_t dropbear_rigidbody_set_rigidbody_gravity_scale(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double gravity_scale);
+int32_t dropbear_rigidbody_set_rigidbody_linear_damping(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, double linear_damping);
+int32_t dropbear_rigidbody_set_rigidbody_linear_velocity(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const NVector3* linear_velocity);
+int32_t dropbear_rigidbody_set_rigidbody_lock_rotation(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const AxisLock* lock_rotation);
+int32_t dropbear_rigidbody_set_rigidbody_lock_translation(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, const AxisLock* lock_translation);
+int32_t dropbear_rigidbody_set_rigidbody_mode(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, int32_t mode);
+int32_t dropbear_rigidbody_set_rigidbody_sleep(WorldPtr world, PhysicsStatePtr physics, const RigidBodyContext* rigidbody, bool sleep);
+int32_t dropbear_scripting_get_scene_load_handle_scene_name(SceneLoaderPtr scene_loader, uint64_t scene_id, char** out0);
+int32_t dropbear_scripting_get_scene_load_progress(SceneLoaderPtr scene_loader, uint64_t scene_id, Progress* out0);
+int32_t dropbear_scripting_get_scene_load_status(SceneLoaderPtr scene_loader, uint64_t scene_id, uint32_t* out0);
+int32_t dropbear_scripting_load_scene_async(CommandBufferPtr command_buffer, SceneLoaderPtr scene_loader, const char* scene_name, uint64_t* out0);
+int32_t dropbear_scripting_load_scene_async_with_loading(CommandBufferPtr command_buffer, SceneLoaderPtr scene_loader, const char* scene_name, const char* loading_scene, uint64_t* out0);
+int32_t dropbear_scripting_switch_to_scene_async(CommandBufferPtr command_buffer, SceneLoaderPtr scene_loader, uint64_t scene_id);
+int32_t dropbear_scripting_switch_to_scene_immediate(CommandBufferPtr command_buffer, const char* scene_name);
 int32_t dropbear_transform_exists_for_entity(WorldPtr world, uint64_t entity, bool* out0);
 int32_t dropbear_transform_get_local_transform(WorldPtr world, uint64_t entity, NTransform* out0);
-int32_t dropbear_transform_set_local_transform(WorldPtr world, uint64_t entity, const NTransform* transform);
 int32_t dropbear_transform_get_world_transform(WorldPtr world, uint64_t entity, NTransform* out0);
-int32_t dropbear_transform_set_world_transform(WorldPtr world, uint64_t entity, const NTransform* transform);
 int32_t dropbear_transform_propogate_transform(WorldPtr world, uint64_t entity, NTransform* out0);
+int32_t dropbear_transform_set_local_transform(WorldPtr world, uint64_t entity, const NTransform* transform);
+int32_t dropbear_transform_set_world_transform(WorldPtr world, uint64_t entity, const NTransform* transform);
 
 #endif /* DROPBEAR_H */