Class: RubySketch::Context
- Inherits:
-
Processing::Context
- Object
- Processing::Context
- RubySketch::Context
- Includes:
- GraphicsContext
- Defined in:
- lib/rubysketch/context.rb
Constant Summary collapse
- Sprite =
RubySketch::Sprite
- SpriteWorld =
RubySketch::SpriteWorld
- Circle =
RubySketch::Circle
- Sound =
RubySketch::Sound
Instance Method Summary collapse
-
#addSprite(array = nil, sprite) ⇒ Sprite
Adds sprite to the physics engine.
-
#addWorld(*worlds) ⇒ SpriteWorld
Adds worlds.
-
#animate(seconds, id: nextTimerID__, easing: :expoOut, &block) ⇒ Object
Animate with easing functions.
-
#animateValue(seconds, from:, to:, id: nextTimerID__, easing: :expoOut, &block) ⇒ Object
Animate value with easing functions.
-
#clearTimer(id) ⇒ nil
(also: #clearTimeout, #clearInterval)
Stops timeout or interval timer by id.
-
#createSprite(*args, **kwargs) ⇒ Sprite
Creates a new sprite and add it to physics engine.
-
#createWorld(pixelsPerMeter: 0) ⇒ SpriteWorld
Creates a new world to calculate the physics of sprites.
-
#gravity ⇒ nil
Sets gravity for the physics engine.
-
#loadSound(path) ⇒ Sound
Loads sound file.
-
#removeSprite(array = nil, sprite) ⇒ Sprite
Removes sprite from the physics engine.
-
#removeWorld(*worlds) ⇒ SpriteWorld
Removes worlds.
-
#setInterval(seconds = 0, *args, id: nextTimerID__, now: false, &block) ⇒ Object
Repeats block call at each interval.
-
#setTimeout(seconds = 0, *args, id: nextTimerID__, &block) ⇒ Object
Calls block after specified seconds.
-
#vibrate ⇒ nil
Generates haptic feedback.
Methods included from GraphicsContext
Instance Method Details
#addSprite(array = nil, sprite) ⇒ Sprite
Adds sprite to the physics engine.
208 209 210 |
# File 'lib/rubysketch/context.rb', line 208 def addSprite(array = nil, sprite) @world__.addSprite array, sprite end |
#addWorld(*worlds) ⇒ SpriteWorld
Adds worlds
239 240 241 242 |
# File 'lib/rubysketch/context.rb', line 239 def addWorld(*worlds) worlds.each {@window__. _1.getInternal__} worlds.first end |
#animate(seconds, id: nextTimerID__, easing: :expoOut, &block) ⇒ Object
Animate with easing functions
112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/rubysketch/context.rb', line 112 def animate(seconds, id: nextTimerID__, easing: :expoOut, &block) fun = EASINGS[easing] or raise "'#{easing}' easing function not found" start = Time.now.to_f eachDrawBlock = lambda do t = (Time.now.to_f - start) / seconds if t >= 1.0 block.call fun.call(1.0), true else block.call fun.call(t), false setTimeout id: id, &eachDrawBlock end end setTimeout id: id, &eachDrawBlock end |
#animateValue(seconds, from:, to:, id: nextTimerID__, easing: :expoOut, &block) ⇒ Object
Animate value with easing functions
137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/rubysketch/context.rb', line 137 def animateValue(seconds, from:, to:, id: nextTimerID__, easing: :expoOut, &block) if from.is_a? Vector animate seconds, id: id, easing: easing do |t, finished| block.call Vector.lerp(from, to, t), finished end else animate seconds, id: id, easing: easing do |t, finished| block.call lerp(from, to, t), finished end end end |
#clearTimer(id) ⇒ nil Also known as: clearTimeout, clearInterval
Stops timeout or interval timer by id
80 81 82 83 |
# File 'lib/rubysketch/context.rb', line 80 def clearTimer(id) [@timers__, @firingTimers__].each {|timers| timers.delete id} nil end |
#createSprite(x, y, w, h) ⇒ Sprite #createSprite(image: img) ⇒ Sprite #createSprite(x, y, image: img) ⇒ Sprite #createSprite(x, y, image: img, offset: off) ⇒ Sprite #createSprite(x, y, image: img, shape: shp) ⇒ Sprite #createSprite(x, y, image: img, offset: off, shape: shp) ⇒ Sprite #createSprite(x, y, shape: shp) ⇒ Sprite
Creates a new sprite and add it to physics engine.
197 198 199 |
# File 'lib/rubysketch/context.rb', line 197 def createSprite(*args, **kwargs) @world__.createSprite(*args, context: self, **kwargs) end |
#createWorld(pixelsPerMeter: 0) ⇒ SpriteWorld
Creates a new world to calculate the physics of sprites.
229 230 231 |
# File 'lib/rubysketch/context.rb', line 229 def createWorld(pixelsPerMeter: 0) addWorld SpriteWorld.new pixelsPerMeter: pixelsPerMeter end |
#gravity(vec) ⇒ nil #gravity(ary) ⇒ nil #gravity(x, y) ⇒ nil
Sets gravity for the physics engine.
279 280 281 |
# File 'lib/rubysketch/context.rb', line 279 def gravity(...) @world__.gravity(...) end |
#loadSound(path) ⇒ Sound
Loads sound file.
261 262 263 |
# File 'lib/rubysketch/context.rb', line 261 def loadSound(path) Sound.load path end |
#removeSprite(array = nil, sprite) ⇒ Sprite
Removes sprite from the physics engine.
219 220 221 |
# File 'lib/rubysketch/context.rb', line 219 def removeSprite(array = nil, sprite) @world__.removeSprite array, sprite end |
#removeWorld(*worlds) ⇒ SpriteWorld
Removes worlds
250 251 252 253 |
# File 'lib/rubysketch/context.rb', line 250 def removeWorld(*worlds) worlds.each {@window__. _1.getInternal__} worlds.first end |
#setInterval(seconds = 0, *args, id: nextTimerID__, now: false, &block) ⇒ Object
Repeats block call at each interval
51 52 53 54 55 56 |
# File 'lib/rubysketch/context.rb', line 51 def setInterval(seconds = 0, *args, id: nextTimerID__, now: false, &block) return unless block time = Time.now.to_f block.call(*args) if now setInterval__ id, time, seconds, args, &block end |
#setTimeout(seconds = 0, *args, id: nextTimerID__, &block) ⇒ Object
Calls block after specified seconds
37 38 39 40 |
# File 'lib/rubysketch/context.rb', line 37 def setTimeout(seconds = 0, *args, id: nextTimerID__, &block) return unless block setTimeout__ id, Time.now.to_f + seconds, args, &block end |
#vibrate ⇒ nil
Generates haptic feedback
287 288 289 |
# File 'lib/rubysketch/context.rb', line 287 def vibrate() Reflex.vibrate end |