Class: RubySketch::SpriteWorld

Inherits:
Object
  • Object
show all
Defined in:
lib/rubysketch/sprite.rb

Overview

A class Manages sprites.

Instance Method Summary collapse

Constructor Details

#initialize(pixelsPerMeter: 0) ⇒ SpriteWorld

Create a new physics world.



1070
1071
1072
# File 'lib/rubysketch/sprite.rb', line 1070

def initialize(pixelsPerMeter: 0)
  @view, @debug = View.new(pixelsPerMeter: pixelsPerMeter), false
end

Instance Method Details

#addSprite(array = nil, sprite) ⇒ Sprite

Adds sprite to the physics engine.

Parameters:

  • array (Array) (defaults to: nil)

    user array to store the sprite

  • sprite (Sprite)

    sprite object

Returns:

  • (Sprite)

    the added sprite



1135
1136
1137
1138
1139
# File 'lib/rubysketch/sprite.rb', line 1135

def addSprite(array = nil, sprite)
  @view.add sprite.getInternal__
  array&.push sprite
  sprite
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.

Overloads:

  • #createSprite(x, y, w, h) ⇒ Sprite

    pos(x, y), size: [w, h]

    Parameters:

    • x (Numeric)

      x of the sprite position

    • y (Numeric)

      y of the sprite position

    • w (Numeric)

      width of the sprite

    • h (Numeric)

      height of the sprite

  • #createSprite(image: img) ⇒ Sprite

    pos: [0, 0], size: [image.width, image.height]

    Parameters:

    • img (Image)

      sprite image

  • #createSprite(x, y, image: img) ⇒ Sprite

    pos: [x, y], size: [image.width, image.height]

    Parameters:

    • x (Numeric)

      x of the sprite position

    • y (Numeric)

      y of the sprite position

    • img (Image)

      sprite image

  • #createSprite(x, y, image: img, offset: off) ⇒ Sprite

    pos: [x, y], size: [image.width, image.height], offset: [offset.x, offset.x]

    Parameters:

    • x (Numeric)

      x of the sprite position

    • y (Numeric)

      y of the sprite position

    • img (Image)

      sprite image

    • off (Vector)

      offset of the sprite image

  • #createSprite(x, y, image: img, shape: shp) ⇒ Sprite

    pos: [x, y], size: [image.width, image.height]

    Parameters:

    • x (Numeric)

      x of the sprite position

    • y (Numeric)

      y of the sprite position

    • img (Image)

      sprite image

  • #createSprite(x, y, image: img, offset: off, shape: shp) ⇒ Sprite

    pos: [x, y], size: [image.width, image.height], offset: [offset.x, offset.x]

    Parameters:

    • x (Numeric)

      x of the sprite position

    • y (Numeric)

      y of the sprite position

    • img (Image)

      sprite image

    • off (Vector)

      offset of the sprite image

    • shp (Shape)

      shape of the sprite for physics calculations

  • #createSprite(x, y, shape: shp) ⇒ Sprite

    pos: [x, y], size: [shape.width, shape.height]

    Parameters:

    • x (Numeric)

      x of the sprite position

    • y (Numeric)

      y of the sprite position

    • shp (Shape)

      shape of the sprite for physics calculations

Returns:

  • (Sprite)

    the new sprite object



1122
1123
1124
1125
1126
# File 'lib/rubysketch/sprite.rb', line 1122

def createSprite(*args, klass: nil, context: nil, **kwargs)
  klass   ||= RubySketch::Sprite
  context ||= Context.context__
  addSprite klass.new(*args, context: context, **kwargs)
end

#debug=(state) ⇒ Object



1269
1270
1271
# File 'lib/rubysketch/sprite.rb', line 1269

def debug=(state)
  @view.debug = state
end

#debug?Boolean

Returns:

  • (Boolean)


1273
# File 'lib/rubysketch/sprite.rb', line 1273

def debug? = @view.debug?

#gravity(vec) ⇒ nil #gravity(ary) ⇒ nil #gravity(x, y) ⇒ nil

Sets gravity for the physics engine.

Overloads:

  • #gravity(vec) ⇒ nil

    Parameters:

    • vec (Vector)

      gracity vector

  • #gravity(ary) ⇒ nil

    Parameters:

    • ary (Array<Numeric>)

      gravityX, gravityY

  • #gravity(x, y) ⇒ nil

    Parameters:

    • x (Numeric)

      x of gravity vector

    • y (Numeric)

      y of gracity vector

Returns:

  • (nil)

    nil



1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
# File 'lib/rubysketch/sprite.rb', line 1168

def gravity(*args)
  x, y =
    case arg = args.first
    when Vector then arg.array
    when Array  then arg
    else args
    end
  @view.gravity x, y
  nil
end

#offsetVector

Returns the offset of the sprite world.

Returns:

  • (Vector)

    offset of the sprite world



1183
1184
1185
1186
# File 'lib/rubysketch/sprite.rb', line 1183

def offset()
  s, z = @view.scroll, zoom
  Vector.new -s.x / z, -s.y / z, -s.z / z
end

#offset=(vec) ⇒ Vector #offset=(ary) ⇒ Vector

Sets the offset of the sprite world.

Overloads:

  • #offset=(vec) ⇒ Vector

    Parameters:

  • #offset=(ary) ⇒ Vector

    Parameters:

    • ary (Array<Numeric>)

      an array of offsetX and offsetY

Returns:

  • (Vector)

    offset of the sprite world



1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
# File 'lib/rubysketch/sprite.rb', line 1198

def offset=(arg)
  zoom_   = zoom
  x, y, z =
    case arg
    when Vector then [arg.x,       arg.y,       arg.z]
    when Array  then [arg[0] || 0, arg[1] || 0, arg[2] || 0]
    when nil    then [0,           0,           0]
    else raise ArgumentError
    end
  @view.scroll_to -x * zoom_, -y * zoom_, -z * zoom_
  offset
end

#oxNumeric

Returns the x-axis offset of the sprite world.

Returns:

  • (Numeric)

    offset.x



1215
1216
1217
# File 'lib/rubysketch/sprite.rb', line 1215

def ox()
  offset.x
end

#ox=(x) ⇒ Numeric

Sets the x-axis offset of the sprite world.

Parameters:

  • x (Numeric)

    x-axis offset

Returns:

  • (Numeric)

    offset.x



1225
1226
1227
1228
1229
1230
# File 'lib/rubysketch/sprite.rb', line 1225

def ox=(x)
  o           = offset
  o.x         = x
  self.offset = o
  x
end

#oyNumeric

Returns the y-axis offset of the sprite world.

Returns:

  • (Numeric)

    offset.y



1236
1237
1238
# File 'lib/rubysketch/sprite.rb', line 1236

def oy()
  offset.y
end

#oy=(x) ⇒ Numeric

Sets the y-axis offset of the sprite world.

Parameters:

  • x (Numeric)

    y-axis offset

Returns:

  • (Numeric)

    offset.y



1246
1247
1248
1249
1250
1251
# File 'lib/rubysketch/sprite.rb', line 1246

def oy=(x)
  o           = offset
  o.y         = y
  self.offset = o
  y
end

#removeSprite(array = nil, sprite) ⇒ Sprite

Removes sprite from the physics engine.

Parameters:

  • array (Array) (defaults to: nil)

    user array to remove the sprite

  • sprite (Sprite)

    sprite object

Returns:

  • (Sprite)

    the removed sprite



1148
1149
1150
1151
1152
# File 'lib/rubysketch/sprite.rb', line 1148

def removeSprite(array = nil, sprite)
  @view.remove sprite.getInternal__
  array&.delete sprite
  sprite
end

#zoomNumeric

Returns the zoom value of the sprite world.

Returns:

  • (Numeric)

    zoom



1257
1258
1259
# File 'lib/rubysketch/sprite.rb', line 1257

def zoom()
  @view.zoom
end

#zoom=(zoom) ⇒ Numeric

Sets the zoom value of the sprite world.

Returns:

  • (Numeric)

    zoom



1265
1266
1267
# File 'lib/rubysketch/sprite.rb', line 1265

def zoom=(zoom)
  @view.zoom = zoom
end