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.
-
#noteFrequency ⇒ Numeric
Returns the last note frequency that was pressed or released.
-
#noteNumber ⇒ Numeric
Returns the last note number that was pressed or released.
-
#notePressed(&block) ⇒ nil
Defines notePressed block.
-
#noteReleased(&block) ⇒ nil
Defines noteReleased block.
-
#noteVelocity ⇒ Numeric
Returns the last note velocity that was pressed or released.
-
#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.
255 256 257 |
# File 'lib/rubysketch/context.rb', line 255 def addSprite(array = nil, sprite) @world__.addSprite array, sprite end |
#addWorld(*worlds) ⇒ SpriteWorld
Adds worlds
286 287 288 289 |
# File 'lib/rubysketch/context.rb', line 286 def addWorld(*worlds) worlds.each {@window__. _1.getInternal__} worlds.first end |
#animate(seconds, id: nextTimerID__, easing: :expoOut, &block) ⇒ Object
Animate with easing functions
159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/rubysketch/context.rb', line 159 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
184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/rubysketch/context.rb', line 184 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
127 128 129 130 |
# File 'lib/rubysketch/context.rb', line 127 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.
244 245 246 |
# File 'lib/rubysketch/context.rb', line 244 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.
276 277 278 |
# File 'lib/rubysketch/context.rb', line 276 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.
350 351 352 |
# File 'lib/rubysketch/context.rb', line 350 def gravity(...) @world__.gravity(...) end |
#loadSound(path) ⇒ Sound
Loads sound file.
308 309 310 |
# File 'lib/rubysketch/context.rb', line 308 def loadSound(path) Sound.load path end |
#noteFrequency ⇒ Numeric
Returns the last note frequency that was pressed or released.
324 325 326 |
# File 'lib/rubysketch/context.rb', line 324 def noteFrequency() @noteFrequency__ end |
#noteNumber ⇒ Numeric
Returns the last note number that was pressed or released.
316 317 318 |
# File 'lib/rubysketch/context.rb', line 316 def noteNumber() @noteNumber__ end |
#notePressed(&block) ⇒ nil
Defines notePressed block.
62 63 64 65 |
# File 'lib/rubysketch/context.rb', line 62 def notePressed(&block) @notePressedBlock__ = block if block nil end |
#noteReleased(&block) ⇒ nil
Defines noteReleased block.
71 72 73 74 |
# File 'lib/rubysketch/context.rb', line 71 def noteReleased(&block) @noteReleasedBlock__ = block if block nil end |
#noteVelocity ⇒ Numeric
Returns the last note velocity that was pressed or released.
332 333 334 |
# File 'lib/rubysketch/context.rb', line 332 def noteVelocity() @noteVelocity__ end |
#removeSprite(array = nil, sprite) ⇒ Sprite
Removes sprite from the physics engine.
266 267 268 |
# File 'lib/rubysketch/context.rb', line 266 def removeSprite(array = nil, sprite) @world__.removeSprite array, sprite end |
#removeWorld(*worlds) ⇒ SpriteWorld
Removes worlds
297 298 299 300 |
# File 'lib/rubysketch/context.rb', line 297 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
98 99 100 101 102 103 |
# File 'lib/rubysketch/context.rb', line 98 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
84 85 86 87 |
# File 'lib/rubysketch/context.rb', line 84 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
358 359 360 |
# File 'lib/rubysketch/context.rb', line 358 def vibrate() Reflex.vibrate end |