diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-06-11 16:04:48 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-06-11 16:04:54 -0400 |
| commit | 0f89d12e747b380b35143815a2c8e87c6ee752d4 (patch) | |
| tree | 78617e7cb819093aa9c0ad107b5dc79891e8ff55 /src/scene.cpp | |
| parent | e478bae42cf886a12433331937887de4c4e85ce2 (diff) | |
pke: serialize PkeInput first-pass
Diffstat (limited to 'src/scene.cpp')
| -rw-r--r-- | src/scene.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/scene.cpp b/src/scene.cpp index ad6b502..2c47356 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -89,12 +89,17 @@ pk_bkt_arr *pke_scene_get_scenes() { } void pke_scene_remove(SceneHandle handle) { + uint32_t i; pke_scene *scn = &scene_mstr.bc[handle]; assert(scn != nullptr && "[pke_scene_remove] Failed to find scene by requested SceneHandle"); ECS_MarkForRemoval(scn); - for (long i = 0; i < scn->cameras.next; ++i) { + for (i = 0; i < scn->cameras.next; ++i) { PkeCamera_Destroy(scn->cameras[i]); } + for (i = 0; i < scn->input_handles.next; ++i) { + PkeInput_DeactivateSet(scn->input_handles[i]); + PkeInput_UnregisterSet(scn->input_handles[i]); + } if (scn->file_path.reserved > 0) { pk_delete<char>(scn->file_path.val, scn->file_path.reserved); } @@ -102,6 +107,7 @@ void pke_scene_remove(SceneHandle handle) { scn->name[0] = '\0'; scn->scene_handle = SceneHandle_MAX; pk_arr_reset(&scn->cameras); + pk_arr_reset(&scn->input_handles); pk_bkt_arr_free_handle(&scene_mstr.bc, handle); } @@ -112,3 +118,11 @@ void pke_scene_register_camera(SceneHandle scene_handle, CameraHandle cameraHand assert(scene != nullptr && "Failed to find scene by requested SceneHandle"); pk_arr_append(&scene->cameras, &cameraHandle); } + +void pke_scene_register_input_action_set(SceneHandle scene_handle, InputActionSetHandle handle) { + assert(scene_handle != SceneHandle_MAX); + assert(handle != InputActionSetHandle_MAX); + pke_scene *scene = pke_scene_get_by_handle(scene_handle); + assert(scene != nullptr && "Failed to find scene by requested SceneHandle"); + pk_arr_append_t(&scene->input_handles, handle); +} |
