summaryrefslogtreecommitdiff
path: root/src/project.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-03-27 11:58:47 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-03-27 11:58:47 -0400
commite4604d5b84a71ac3cc8fe1a148d0a6250c7a715c (patch)
tree0f768c8b5d0b96cb459f92c7795c6c9353710ed1 /src/project.cpp
parent11057d2aa423f9b565f3fead4c260999d1bdb53e (diff)
pke: generate uuid and save to project+scene files
Diffstat (limited to 'src/project.cpp')
-rw-r--r--src/project.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/project.cpp b/src/project.cpp
index e8679c8..d371f68 100644
--- a/src/project.cpp
+++ b/src/project.cpp
@@ -29,6 +29,7 @@ const char* const PKE_PROJ_FILE_PROJ_SETTINGS_SCENES_END = "PkeSet::Scenes: ]";
const char* const PKE_PROJ_FILE_ENTITY_TYPE_MODEL_ASSET_KEY = "ModelAssetKey: ";
const char* const PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE = "EntityTypeCode: ";
const char* const PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_HANDLE = "EntityHandle: ";
+const char* const PKE_PROJ_FILE_ENTITY_TYPE_UUID = "UUID: ";
const char* const PKE_PROJ_FILE_ENTITY_TYPE_CREATE_INSTANCE_CALLBACK_SIGNATURE = "InstanceCreateCallbackSignature: ";
const char* const PKE_PROJ_FILE_ENTITY_TYPE_COLLISION_CALLBACK_SIGNATURE = "CollisionCallbackSignature: ";
const char* const PKE_PROJ_FILE_ENTITY_TYPE_DETAILS_BEGIN = "EntityHandleDetails: {";
@@ -77,6 +78,9 @@ void Proj_SerializeEntityType(std::ostream &stream, const EntityType &et) {
stream << PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE << et.entityTypeCode.val << std::endl;
if (et.handle != e.handle)
stream << PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_HANDLE << handleStr << std::endl;
+ if (et.uuid != pk_uuid_zed && et.uuid != pk_uuid_max) {
+ stream << PKE_PROJ_FILE_ENTITY_TYPE_UUID << et.uuid << std::endl;
+ }
if (et.createInstanceCallback.name[0] != '\0') {
stream << PKE_PROJ_FILE_ENTITY_TYPE_CREATE_INSTANCE_CALLBACK_SIGNATURE << et.createInstanceCallback.name << std::endl;
}
@@ -404,7 +408,11 @@ void PkeProject_Save(const char *filePath) {
}
stream << PKE_PROJ_FILE_END << std::endl;
+ } catch (std::exception e) {
+ fprintf(stderr, "[%s][PkeProject_Save] Failed to serialize project file: %s\n", __FILE__, e.what());
+ failed = false;
} catch (...) {
+ fprintf(stderr, "[%s][PkeProject_Save] Failed to serialize project file, uncaught exception.\n", __FILE__);
failed = false;
}
@@ -412,6 +420,8 @@ void PkeProject_Save(const char *filePath) {
std::ofstream f(saveFilePath);
if (!f.is_open()) {
failed = true;
+ } else {
+ f << stream.str();
}
f.flush();
f.close();