From e4604d5b84a71ac3cc8fe1a148d0a6250c7a715c Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 27 Mar 2025 11:58:47 -0400 Subject: pke: generate uuid and save to project+scene files --- src/scene.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/scene.cpp') diff --git a/src/scene.cpp b/src/scene.cpp index 0e5a22c..f4df916 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -2,7 +2,10 @@ #include "scene.hpp" #include "bucketed-array.hpp" #include "ecs.hpp" -#include + +#include + +#include struct pke_scene_master { BucketContainer bc; @@ -17,7 +20,11 @@ void pke_scene_master_teardown() { } pke_scene *pke_scene_create(const char *scene_name) { - struct pke_scene *scene = pke_scene_get_by_name(scene_name); + NULL_CHAR_ARR(safe_scene_name, SCENE_NAME_MAX_LEN); + size_t offset; + std::filesystem::path p(scene_name); + sprintf(safe_scene_name, "%.15s", p.stem().c_str()); + struct pke_scene *scene = pke_scene_get_by_name(safe_scene_name); if (scene != nullptr) { fprintf(stderr, "[pke_scene_create] failed to create scene: pke_scene::name already in use."); return nullptr; @@ -31,9 +38,9 @@ pke_scene *pke_scene_create(const char *scene_name) { ECS_CreateEntity(scene); scene->scene_handle = scene_handle; - size_t offset = (strlen(scene_name) > SCENE_NAME_MAX_LEN ? strlen(scene_name) - SCENE_NAME_MAX_LEN : 0); + offset = (strlen(safe_scene_name) > SCENE_NAME_MAX_LEN ? strlen(safe_scene_name) - SCENE_NAME_MAX_LEN : 0); for (int i = 0; i < SCENE_NAME_MAX_LEN; ++i) { - scene->name[i] = scene_name[i + offset]; + scene->name[i] = safe_scene_name[i + offset]; } return scene; } -- cgit v1.2.3