Sha256: 6d335dc5d8e32a983e5754d9105ffe11a5fc3ab1b11874ed52ed44571627f06c

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

# The Nature of Code
# Daniel Shiffman
# http://natureofcode.com
require 'forwardable'

# A fixed boundary class
class Boundary
  extend Forwardable
  def_delegators(:@app, :box2d, :rect_mode, :rect, :fill, :stroke)
  # A boundary is a simple rectangle with x, y, width, and height
  attr_reader :x, :y, :w, :h
  
  def initialize(x, y, w, h)
    @x, @y, @w, @h = x, y, w, h
    @app = $app
    # Define the polygon
    sd = PolygonShape.new
    # Figure out the box2d coordinates
    box2dW = box2d.scale_to_world(w / 2)
    box2dH = box2d.scale_to_world(h / 2)
    # We're just a box
    sd.setAsBox(box2dW, box2dH)
    # Create the body
    bd = BodyDef.new
    bd.type = BodyType::STATIC
    bd.position.set(box2d.processing_to_world(x,y))
    b = box2d.createBody(bd)
    # Attached the shape to the body using a Fixture
    b.createFixture(sd,1)
  end

  # Draw the boundary, if it were at an angle we'd have to do something fancier
  def display
    fill(0)
    stroke(0)
    rect_mode(Java::ProcessingCore::PConstants::CENTER)
    rect(x, y, w, h)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pbox2d-0.4.1-java examples/distance_joint/boundary.rb
pbox2d-0.4.0-java examples/distance_joint/boundary.rb