diff --git a/src/CameraController.hx b/src/CameraController.hx index 2962ad36..a46ba40d 100644 --- a/src/CameraController.hx +++ b/src/CameraController.hx @@ -632,9 +632,10 @@ class CameraController extends Object { && (firstHit == null || (rayCastOrigin.distance(result.point) < firstHitDistance))) { firstHit = result; firstHitDistance = rayCastOrigin.distance(result.point); - processedShapes.push(result.object); } } + if (firstHit != null) + processedShapes.push(firstHit.object); if (firstHit != null) { if (firstHitDistance < CameraDistance) { @@ -647,7 +648,7 @@ class CameraController extends Object { var dist = plane.distance(camera.pos.toPoint()); if (dist >= closeness) - break; + continue; camera.pos = projected.toVector().add(normal.multiply(-closeness)); diff --git a/src/Marble.hx b/src/Marble.hx index 75daebcd..4bb9f9cf 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1381,7 +1381,8 @@ class Marble extends GameObject { var currentFinalPos = position.add(relVel.multiply(finalT)); // localpos.add(relLocalVel.multiply(finalT)); surfaceScratch.resize(0); - @:privateAccess obj.grid.boundingSearch(boundThing, surfaceScratch); + if (@:privateAccess obj.grid != null) + @:privateAccess obj.grid.boundingSearch(boundThing, surfaceScratch); var surfaces = surfaceScratch; for (surf in surfaces) {