diff options
Diffstat (limited to 'src/camera.cpp')
| -rw-r--r-- | src/camera.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/camera.cpp b/src/camera.cpp index 8635211..ca2c11f 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -170,13 +170,6 @@ void PkeCamera_Destroy(CameraHandle cameraHandle) { } ECS_MarkForRemoval(camPtr); - cam.camHandle = CameraHandle_MAX; - cam.type = PkeCameraType_MAX; - cam.view = PkeCameraView_MAX; - cam.stale = PkeCameraStaleFlags_MAX; - cam.phys.instHandle = InstanceHandle_MAX; - cam.phys.target_inst_uuid = pk_uuid_zed; - cam.phys.constraint = CAFE_BABE(btTypedConstraint); } pk_bkt_arr &PkeCamera_GetPkBktArr() { @@ -219,11 +212,21 @@ void PkeCamera_Tick(double delta) { * See the camera serializer for more. */ (void)delta; - bool b; + CompInstance *inst; pk_iter_t<PkeCamera> iter_cam{}; + bool b; b = pk_bkt_arr_iter_begin(&cam_mstr.bktc_cameras, &iter_cam); while (b == true) { - CompInstance *inst = ECS_GetInstance(iter_cam->phys.instHandle); + if (iter_cam->isMarkedForRemoval == true) { + pk_bkt_arr_free_handle(&cam_mstr.bktc_cameras, iter_cam->camHandle); + if (ActiveCamera == iter_cam.data) { + ActiveCamera = &NullCamera; + } + new (iter_cam.data) PkeCamera{}; + b = pk_bkt_arr_iter_increment(&cam_mstr.bktc_cameras, &iter_cam); + continue; + } + inst = ECS_GetInstance(iter_cam->phys.instHandle); assert(inst != nullptr); if (inst->isNeedingUpdated == true) { iter_cam->stale = iter_cam->stale | PKE_CAMERA_STALE_POSROT; |
