summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp165
1 files changed, 2 insertions, 163 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 6c47381..98962d7 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -12,6 +12,7 @@
#include "physics.hpp"
#include "player-input.hpp"
#include "plugins.hpp"
+#include "project.hpp"
#include "vendor/glm_include.hpp"
#include "window.hpp"
@@ -32,23 +33,9 @@ const char *PKE_FILE_BEGIN = ":PKFB:";
const char *PKE_FILE_END = ":PKFE:";
const char *PKE_FILE_VERSION = ":0:";
const char *PKE_FILE_OBJ_END = "";
-const char *PKE_FILE_OBJ_ENTITY_TYPE = "EntityType:";
const char *PKE_FILE_OBJ_INSTANCE = "Instance:";
const char *PKE_FILE_OBJ_CAMERA = "Camera:";
-const char *PKE_FILE_ENTITY_TYPE_MODELS_DIR = "ModelsDir: ";
-const char *PKE_FILE_ENTITY_TYPE_MODEL_FILE = "ModelFile: ";
-const char *PKE_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE = "EntityTypeCode: ";
-const char *PKE_FILE_ENTITY_TYPE_ENTITY_HANDLE = "EntityHandle: ";
-const char *PKE_FILE_ENTITY_TYPE_STARTING_INSTANCE_COUNT = "StartingInstanceCount: ";
-const char *PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_VERTEX = "Importer_GLTF::AccessorIndexVertex: ";
-const char *PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_NORMAL = "Importer_GLTF::AccessorIndexNormal: ";
-const char *PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_UV = "Importer_GLTF::AccessorIndexUV: ";
-const char *PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_INDEX = "Importer_GLTF::AccessorIndexIndex: ";
-const char *PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_MASS = "BT::StartingMass: ";
-const char *PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_LAYER = "BT::StartingCollisionLayer: ";
-const char *PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_MASK = "BT::StartingCollisionMask: ";
-
const char *PKE_FILE_INSTANCE_ENTITY_HANDLE = "EntityHandle: ";
const char *PKE_FILE_INSTANCE_ENTITY_TYPE_CODE = "EntityTypeCode: ";
const char *PKE_FILE_INSTANCE_POS_POS = "InstPos::Pos: ";
@@ -93,36 +80,6 @@ void SerializeCamera(std::ofstream &stream, const PkeCamera &cam) {
}
}
-void SerializeEntityType(std::ofstream &stream, const EntityType &et) {
- char handleStr[19] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' };
- snprintf(handleStr, 19, "0x%016lX",static_cast<EntityHandle_T>(et.entityHandle));
- EntityType e{};
- if (et.modelsDir != e.modelsDir)
- stream << PKE_FILE_ENTITY_TYPE_MODELS_DIR << et.modelsDir << std::endl;
- if (et.modelFile != e.modelFile)
- stream << PKE_FILE_ENTITY_TYPE_MODEL_FILE << et.modelFile << std::endl;
- if (et.entityTypeCode != e.entityTypeCode)
- stream << PKE_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE << et.entityTypeCode << std::endl;
- if (et.entityHandle != e.entityHandle)
- stream << PKE_FILE_ENTITY_TYPE_ENTITY_HANDLE << handleStr << std::endl;
- if (et.startingInstanceCount != e.startingInstanceCount)
- stream << PKE_FILE_ENTITY_TYPE_STARTING_INSTANCE_COUNT << et.startingInstanceCount << std::endl;
- if (et.Importer_GLTF.AccessorIndexVertex != e.Importer_GLTF.AccessorIndexVertex)
- stream << PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_VERTEX << et.Importer_GLTF.AccessorIndexVertex << std::endl;
- if (et.Importer_GLTF.AccessorIndexNormal != e.Importer_GLTF.AccessorIndexNormal)
- stream << PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_NORMAL << et.Importer_GLTF.AccessorIndexNormal << std::endl;
- if (et.Importer_GLTF.AccessorIndexUV != e.Importer_GLTF.AccessorIndexUV)
- stream << PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_UV << et.Importer_GLTF.AccessorIndexUV << std::endl;
- if (et.Importer_GLTF.AccessorIndexIndex != e.Importer_GLTF.AccessorIndexIndex)
- stream << PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_INDEX << et.Importer_GLTF.AccessorIndexIndex << std::endl;
- if (et.bt.startingMass != e.bt.startingMass)
- stream << PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_MASS << et.bt.startingMass << std::endl;
- if (et.bt.startingCollisionLayer != e.bt.startingCollisionLayer)
- stream << PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_LAYER << static_cast<PhysicsCollision_T>(et.bt.startingCollisionLayer) << std::endl;
- if (et.bt.startingCollisionMask != e.bt.startingCollisionMask)
- stream << PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_MASK << static_cast<PhysicsCollision_T>(et.bt.startingCollisionMask) << std::endl;
-}
-
void SerializeInstance(std::ofstream &stream, const CompInstance &comp) {
char handleStr[19] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' };
snprintf(handleStr, 19, "0x%016lX",static_cast<EntityHandle_T>(comp.entHandle));
@@ -252,109 +209,6 @@ void ParseCamera(std::ifstream &stream) {
}
}
-void ParseEntityType(std::ifstream &stream) {
- EntityType et{};
- while (stream.getline(readLine, readLineLength)) {
- if (strcmp(PKE_FILE_OBJ_END, readLine) == 0) {
- int64_t existingEntityTypeIndex = EntityType_FindByTypeCode(et.entityTypeCode);
- if (existingEntityTypeIndex != -1) {
- continue;
- }
- et.entityHandle = ECS_CreateEntity();
- EntityType_Load(et);
- GlobalEntityTypes.Push(et);
- return;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_MODELS_DIR)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_MODELS_DIR);
- uint64_t len = strlen(readLine + prefixLen) + 1;
- char *val = Pke_New<char>(len);
- memset(reinterpret_cast<void *>(val), '\0', len);
- memcpy(val, readLine + prefixLen, len);
- et.modelsDir = val;
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_MODEL_FILE)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_MODEL_FILE);
- uint64_t len = strlen(readLine + prefixLen) + 1;
- char *val = Pke_New<char>(len);
- memset(reinterpret_cast<void *>(val), '\0', len);
- memcpy(val, readLine + prefixLen, len);
- et.modelFile = val;
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_ENTITY_TYPE_CODE);
- uint64_t len = strlen(readLine + prefixLen) + 1;
- char *val = Pke_New<char>(len);
- memset(reinterpret_cast<void *>(val), '\0', len);
- memcpy(val, readLine + prefixLen, len);
- et.entityTypeCode = val;
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_ENTITY_HANDLE)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_ENTITY_HANDLE);
- EntityHandle_T handle_t;
- STR2NUM_ERROR result = str2num(handle_t, readLine + prefixLen);
- assert(result == STR2NUM_ERROR::SUCCESS);
- et.entityHandle = EntityHandle{handle_t};
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_STARTING_INSTANCE_COUNT)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_STARTING_INSTANCE_COUNT);
- STR2NUM_ERROR result = str2num(et.startingInstanceCount, readLine + prefixLen);
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_VERTEX)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_VERTEX);
- STR2NUM_ERROR result = str2num(et.Importer_GLTF.AccessorIndexVertex, readLine + prefixLen);
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_NORMAL)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_NORMAL);
- STR2NUM_ERROR result = str2num(et.Importer_GLTF.AccessorIndexNormal, readLine + prefixLen);
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_UV)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_UV);
- STR2NUM_ERROR result = str2num(et.Importer_GLTF.AccessorIndexUV, readLine + prefixLen);
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_INDEX)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_IMPORTER_GLTF_ACCESSOR_INDEX_INDEX);
- STR2NUM_ERROR result = str2num(et.Importer_GLTF.AccessorIndexIndex, readLine + prefixLen);
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_MASS)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_MASS);
- STR2NUM_ERROR result = str2num(et.bt.startingMass, readLine + prefixLen);
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_LAYER)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_LAYER);
- PhysicsCollision_T val = static_cast<PhysicsCollision_T>(et.bt.startingCollisionLayer);
- STR2NUM_ERROR result = str2num(val, readLine + prefixLen);
- et.bt.startingCollisionLayer = PhysicsCollision{val};
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- if (strstr(readLine, PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_MASK)) {
- uint64_t prefixLen = strlen(PKE_FILE_ENTITY_TYPE_PHYSICS_STARTING_COLLISION_MASK);
- PhysicsCollision_T val = static_cast<PhysicsCollision_T>(et.bt.startingCollisionMask);
- STR2NUM_ERROR result = str2num(val, readLine + prefixLen);
- et.bt.startingCollisionMask = PhysicsCollision{val};
- assert(result == STR2NUM_ERROR::SUCCESS);
- continue;
- }
- }
-}
-
void ParseInstance(std::ifstream &stream) {
CompInstance comp{};
InstPos instPos{};
@@ -507,18 +361,6 @@ void Game_SaveSceneFile(const char *sceneFilePath) {
}
}
- for (long i = 0; i < GlobalEntityTypes.Count(); ++i) {
- f << PKE_FILE_OBJ_ENTITY_TYPE << std::endl;
- const auto &et = GlobalEntityTypes[i];
- const CompGrBinds *grBinds = ECS_GetGrBinds(et.entityHandle);
- // TODO ignore if no instances
- if (grBinds == nullptr) {
- continue;
- }
- SerializeEntityType(f, et);
- f << PKE_FILE_OBJ_END << std::endl;
- }
-
int64_t instanceBucketCount = ECS_GetInstances_BucketCount();
for (long b = 0; b < instanceBucketCount; ++b) {
uint64_t count;
@@ -552,10 +394,6 @@ void Game_LoadSceneFile(const char *sceneFilePath) {
ParseCamera(f);
continue;
}
- if (strcmp(PKE_FILE_OBJ_ENTITY_TYPE, readLine) == 0) {
- ParseEntityType(f);
- continue;
- }
if (strcmp(PKE_FILE_OBJ_INSTANCE, readLine) == 0) {
ParseInstance(f);
continue;
@@ -637,6 +475,7 @@ void Game_Main(PKEWindowProperties windowProps, const char *executablePath) {
if (pkePlugin.OnInit) {
pkePlugin.OnInit();
}
+ PkeProject_Load();
GameTimePoint lastTimePoint = pkeSettings.steadyClock.now();
double deltaTillNextRender = pkeSettings.deltaPerFrame;