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