diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2024-11-14 14:46:23 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2024-11-14 14:46:23 -0500 |
| commit | b2548ba4ce295fcd94a50123fb543fac2ef2bc33 (patch) | |
| tree | 444a32abb4a094c4fa2f7bc9a95aa86963ad4110 /src/project.cpp | |
| parent | b1d926361b9d613ad712ad161f9a8b7ccab4551d (diff) | |
add pk.h and major pkmem refactor
Completely replaces the memory module with pkmem
pkmem is a newer implementation of the same
bucket memory structure.
Also includes replacing pkstr.h with pk.h's pkstr
Diffstat (limited to 'src/project.cpp')
| -rw-r--r-- | src/project.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/project.cpp b/src/project.cpp index 4412522..1c5572d 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -67,13 +67,13 @@ void Proj_SerializeEntityType(std::ofstream &stream, const EntityType &et) { NULL_CHAR_ARR(handleStr, 19); NULL_CHAR_ARR(modelAssetKey, AssetKeyLength + 1); NULL_CHAR_ARR(textureAssetKey, AssetKeyLength + 1); - snprintf(handleStr, 19, "0x%016lX", et.handle.hash); + snprintf(handleStr, 19, "0x%08X 0x%08X", et.handle.bucketIndex, et.handle.itemIndex); snprintf(modelAssetKey, AssetKeyLength + 1, "%s", et.modelAssetKey); EntityType e{}; if (modelAssetKey[0] != '\0') stream << PKE_PROJ_FILE_ENTITY_TYPE_MODEL_ASSET_KEY << modelAssetKey << std::endl; - if (et.entityTypeCode != e.entityTypeCode) - stream << PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE << et.entityTypeCode << std::endl; + if (et.entityTypeCode.val != e.entityTypeCode.val) + 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.createInstanceCallback.name[0] != '\0') { @@ -127,7 +127,7 @@ void Proj_ParseProjectSettings(std::ifstream &stream) { if (strncmp(projReadLine, PKE_PROJ_FILE_PROJ_SETTINGS_DEFAULT_SCENE_NAME, strlen(PKE_PROJ_FILE_PROJ_SETTINGS_DEFAULT_SCENE_NAME)) == 0) { uint64_t prefixLen = strlen(PKE_PROJ_FILE_PROJ_SETTINGS_DEFAULT_SCENE_NAME); uint64_t len = strlen(projReadLine + prefixLen) + 1; - char *val = Pke_New<char>(len); + char *val = pk_new<char>(len); memset(reinterpret_cast<void *>(val), '\0', len); memcpy(val, projReadLine + prefixLen, len); pkeProjectSettings.defaultSceneName = val; @@ -138,13 +138,13 @@ void Proj_ParseProjectSettings(std::ifstream &stream) { while (stream.getline(projReadLine, projReadLineLength)) { if (strcmp(PKE_PROJ_FILE_PROJ_SETTINGS_SCENES_END, projReadLine) == 0) { pkeProjectSettings.sceneCount = sceneFiles.Count(); - pkeProjectSettings.scenes = Pke_New<cpkstr>(sceneFiles.Count()); + pkeProjectSettings.scenes = pk_new<cpkstr>(sceneFiles.Count()); memcpy(reinterpret_cast<void *>(pkeProjectSettings.scenes), reinterpret_cast<void *>(sceneFiles.GetPtr()), sizeof(cpkstr) * sceneFiles.Count()); break; } pkeProjectSettings.sceneCount += 1; uint64_t len = strlen(projReadLine) + 1; - char *val = Pke_New<char>(len); + char *val = pk_new<char>(len); memset(val, '\0', len); memcpy(val, projReadLine, len - 1); auto &str = sceneFiles.Push(); @@ -165,7 +165,7 @@ void Proj_ParseEntityType(std::ifstream &stream) { int64_t detailCount = 0; while (stream.getline(projReadLine, projReadLineLength)) { if (strcmp(PKE_PROJ_FILE_OBJ_END, projReadLine) == 0) { - EntityType *existingPtr = EntityType_FindByTypeCode(et.entityTypeCode); + EntityType *existingPtr = EntityType_FindByTypeCode(et.entityTypeCode.val); if (existingPtr != nullptr) { // TODO leaks et.EntityTypeCode continue; @@ -203,16 +203,19 @@ void Proj_ParseEntityType(std::ifstream &stream) { if (strstr(projReadLine, PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE)) { uint64_t prefixLen = strlen(PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE); uint64_t len = strlen(projReadLine + prefixLen) + 1; - char *val = Pke_New<char>(len); + char *val = pk_new<char>(len); memset(reinterpret_cast<void *>(val), '\0', len); memcpy(val, projReadLine + prefixLen, len); - et.entityTypeCode = val; + et.entityTypeCode.val = val; continue; } if (strstr(projReadLine, PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_HANDLE)) { uint64_t prefixLen = strlen(PKE_PROJ_FILE_ENTITY_TYPE_ENTITY_HANDLE); - STR2NUM_ERROR result = str2num(et.handle.hash, projReadLine + prefixLen); - assert(result == STR2NUM_ERROR::SUCCESS); + // 0x00000000 0x00000000 + STR2NUM_ERROR result1 = str2num(et.handle.bucketIndex, projReadLine + prefixLen); + STR2NUM_ERROR result2 = str2num(et.handle.itemIndex, projReadLine + prefixLen + 11); + assert(result1 == STR2NUM_ERROR::SUCCESS); + assert(result2 == STR2NUM_ERROR::SUCCESS); continue; } if (strstr(projReadLine, PKE_PROJ_FILE_ENTITY_TYPE_CREATE_INSTANCE_CALLBACK_SIGNATURE)) { @@ -372,10 +375,10 @@ void PkeProject_Save(const char *filePath) { } const auto entBucketCount = EntityType_GetBucketCount(); - for (PkeHandleBucketIndex_T b = 0; b < entBucketCount; ++b) { - PkeHandleItemIndex_T itemCount = 0; + for (pk_handle_bucket_index_T b = 0; b < entBucketCount; ++b) { + pk_handle_item_index_T itemCount = 0; auto *entities = EntityType_GetEntityTypes(b, itemCount); - for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) { + for (pk_handle_item_index_T i = 0; i < itemCount; ++i) { if (entities[i].modelAssetKey[0] == '\0') { continue; } |
