diff options
Diffstat (limited to 'lib/ruby2d/camera.rb')
| -rw-r--r-- | lib/ruby2d/camera.rb | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/ruby2d/camera.rb b/lib/ruby2d/camera.rb index 8037b4d..3213e16 100644 --- a/lib/ruby2d/camera.rb +++ b/lib/ruby2d/camera.rb @@ -16,6 +16,16 @@ module Ruby2D def objects @objects ||= [] end + + end + + def self._sort_by_z + @sort_by_z = true + end + + def self._resolve_z_sorting + objects.sort_by!(&:z) if @sort_by_z + @sort_by_z = false end def self.debug_x @@ -37,9 +47,9 @@ module Ruby2D # Adding objects so they are # tracked by the Camera def self.<<(item) - objects.push(item) unless objects.include?(item) - objects.sort_by! do |n| - n.z + unless objects.include?(item) + objects.push(item) + self._sort_by_z end end @@ -50,6 +60,7 @@ module Ruby2D # Redraw all objects that # are tracked by the Camera def self._redraw(auto_purge: false) + self._resolve_z_sorting objects.each(&:_draw) end |
