Class: SpriteKit::DrawBuffer
- Inherits:
-
Object
- Object
- SpriteKit::DrawBuffer
- Defined in:
- mygame/lib/sprite_kit/draw_buffer.rb
Overview
gist.github.com/KonnorRogers/6337311772ee53733d14a520d79ca4d5 A simple output buffer designed to limit the number of draw calls and “buffer” everything into arrays before drawing.
Defined Under Namespace
Classes: RenderTargetArgumentError
Instance Attribute Summary collapse
-
#outputs ⇒ Object
Returns the value of attribute outputs.
-
#primitives ⇒ Object
Returns the value of attribute primitives.
-
#render_targets ⇒ Object
Returns the value of attribute render_targets.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #add(*renderables, target: nil) ⇒ Object
-
#clear ⇒ Object
Clears arrays / hashes without rendering.
-
#flush ⇒ Object
Renders each render target and output.
-
#initialize ⇒ DrawBuffer
constructor
A new instance of DrawBuffer.
Constructor Details
#initialize ⇒ DrawBuffer
Returns a new instance of DrawBuffer.
9 10 11 12 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 9 def initialize @primitives = [] @render_targets = {} end |
Instance Attribute Details
#outputs ⇒ Object
Returns the value of attribute outputs.
5 6 7 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 5 def outputs @outputs end |
#primitives ⇒ Object
Returns the value of attribute primitives.
5 6 7 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 5 def primitives @primitives end |
#render_targets ⇒ Object
Returns the value of attribute render_targets.
5 6 7 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 5 def render_targets @render_targets end |
Instance Method Details
#[](key) ⇒ Object
32 33 34 35 36 37 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 32 def [](key) raise RenderTargetArgumentError.new(key.inspect + " is not a string or symbol") if !(key.is_a?(String) || key.is_a?(Symbol)) @render_targets[key] = [] if !@render_targets.key?(key) @render_targets[key] end |
#[]=(key, value) ⇒ Object
39 40 41 42 43 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 39 def []=(key, value) raise RenderTargetArgumentError.new(key.inspect + " is not a string or symbol") if !(key.is_a?(String) || key.is_a?(Symbol)) @render_targets[key] = value end |
#add(*renderables, target: nil) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 14 def add(*renderables, target: nil) Array(renderables).each do |renderable| if renderable.is_a?(Array) if !target @primitives.concat(renderable) else @render_targets[target].concat(renderable) end else if !target @primitives << renderable else @render_targets[target] << renderable end end end end |
#clear ⇒ Object
Clears arrays / hashes without rendering.
56 57 58 59 60 61 62 63 64 65 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 56 def clear # force nil to allow GC to run # @primitives = nil # @render_targets = nil # @primitives = [] # @render_targets = {} @render_targets.clear @primitives.clear end |
#flush ⇒ Object
Renders each render target and output.
46 47 48 49 50 51 52 53 |
# File 'mygame/lib/sprite_kit/draw_buffer.rb', line 46 def flush @render_targets.each do |key, value| @outputs[key].primitives.concat(value) end @outputs.primitives.concat(@primitives) clear end |