summaryrefslogtreecommitdiff
path: root/src/project.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-11-14 14:46:23 -0500
committerJonathan Bradley <jcb@pikum.xyz>2024-11-14 14:46:23 -0500
commitb2548ba4ce295fcd94a50123fb543fac2ef2bc33 (patch)
tree444a32abb4a094c4fa2f7bc9a95aa86963ad4110 /src/project.cpp
parentb1d926361b9d613ad712ad161f9a8b7ccab4551d (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.cpp31
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;
}