summaryrefslogtreecommitdiff
path: root/src/scene.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-06-11 16:04:48 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-06-11 16:04:54 -0400
commit0f89d12e747b380b35143815a2c8e87c6ee752d4 (patch)
tree78617e7cb819093aa9c0ad107b5dc79891e8ff55 /src/scene.cpp
parente478bae42cf886a12433331937887de4c4e85ce2 (diff)
pke: serialize PkeInput first-pass
Diffstat (limited to 'src/scene.cpp')
-rw-r--r--src/scene.cpp16
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);
+}