diff options
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; } |
