summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp25
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);