diff options
| author | realtradam <[email protected]> | 2021-04-25 19:47:41 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-04-25 19:47:41 -0400 |
| commit | 3c6267d6452fa47c84791e82008a74e76764ce1c (patch) | |
| tree | bcd52f93a42780255b388abc6da25a5d3e55ab19 | |
| parent | 1e5deba7f865fff9f3e680669552c7437939a84b (diff) | |
| download | ruby2d-camera-3c6267d6452fa47c84791e82008a74e76764ce1c.tar.gz ruby2d-camera-3c6267d6452fa47c84791e82008a74e76764ce1c.zip | |
Camera automatically removes nil objects
| -rw-r--r-- | house.rb | 1 | ||||
| -rw-r--r-- | lib/camera/camera.rb | 14 | ||||
| -rw-r--r-- | run.rb | 2 |
3 files changed, 14 insertions, 3 deletions
@@ -82,6 +82,7 @@ class House @objects.each do |item| Camera.remove item item.remove + puts item end end diff --git a/lib/camera/camera.rb b/lib/camera/camera.rb index 6a6dd3d..7079d56 100644 --- a/lib/camera/camera.rb +++ b/lib/camera/camera.rb @@ -65,8 +65,18 @@ module Camera # Redraw all objects that # are tracked by the Camera - def self.redraw - objects.each(&:redraw) + def self.redraw(auto_purge: true) + if auto_purge + objects.each do |item| + if item.nil? + objects.delete(obj) + else + item.redraw + end + end + else + objects.each(&:redraw) + end end # Variables changing Camera properties @@ -164,7 +164,7 @@ update do if !@scene_transition_into && !@scene_transition_out Camera.zoom += ((-[Math.sqrt(((@player.x + (@player.width / 2) - Camera.x)**2) + ((@player.y + (@player.width / 2) - Camera.y)**2)), 350].min * 0.004) + 2 - Camera.zoom) * 0.25 Camera.x += (@player.x + (@player.width / 2) - Camera.x) * 0.025 - Camera.y += (@player.y + (@player.height / 2)- Camera.y) * 0.025 + Camera.y += (@player.y + (@player.height / 2) - Camera.y) * 0.025 elsif @scene_transition_into if Camera.zoom < 250 Camera.zoom *= 1.05 |
