diff options
Diffstat (limited to 'src/game.cpp')
| -rw-r--r-- | src/game.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/game.cpp b/src/game.cpp index f1f6612..24b98cd 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -150,14 +150,20 @@ void ParseCamera(PkeLevel *level, std::ifstream &stream) { PkeCamera cam{}; while (stream.getline(readLine, readLineLength)) { if (strcmp(readLine, PKE_FILE_OBJ_END) == 0) { - auto &rCam = PkeCamera_Register(); - rCam.pos = cam.pos; - rCam.rot = cam.rot; + InstPos instPos{}; + btVector3 pos; + btQuaternion quat; + GlmToBullet(cam.pos, pos); + GlmToBullet(cam.rot, quat); + instPos.mass = 1.f; + instPos.posRot.setOrigin(pos); + instPos.posRot.setRotation(quat); + auto &rCam = PkeCamera_Register(instPos); rCam.target = cam.target; rCam.type = cam.type; rCam.orientation = cam.orientation; rCam.isPrimary = cam.isPrimary; - PkeLevel_RegisterCamera(level->levelHandle, rCam.handle); + PkeLevel_RegisterCamera(level->levelHandle, rCam.camHandle); if (rCam.isPrimary == true) { ActiveCamera = &rCam; } @@ -269,8 +275,7 @@ void ParseInstance(Entity_Base *parentEntity, std::ifstream &stream) { } if (strstr(readLine, PKE_FILE_INSTANCE_ENTITY_TYPE_CODE)) { uint64_t prefixLen = strlen(PKE_FILE_INSTANCE_ENTITY_TYPE_CODE); - uint64_t len = strlen(readLine + prefixLen); - memcpy(entTypeCode, readLine + prefixLen, len); + strncpy(entTypeCode, readLine + prefixLen, 21); continue; } if (strstr(readLine, PKE_FILE_INSTANCE_POS_POS)) { @@ -522,6 +527,8 @@ void Game_Tick(double delta) { } } + PkeCamera_Tick(delta); + EntityType_Tick_Late(delta); ECS_Tick_Late(delta); } @@ -532,11 +539,11 @@ void Game_Main(PKEWindowProperties windowProps, const char *executablePath) { try { PkeThreads_Init(); AM_Init(); - PkeLevel_Init(); - PkeCamera_Init(); + ECS_Init(); Physics_Init(); + PkeCamera_Init(); + PkeLevel_Init(); Game_Init(); - ECS_Init(); CreateWindow(windowProps); EntityType_Init(); PkeProject_Load(pkeSettings.args.projectPath); |
