propane 0.8.0-java → 0.9.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -1
- data/README.md +1 -1
- data/lib/propane/app.rb +56 -55
- data/lib/propane/creators/sketch_writer.rb +7 -3
- data/lib/propane/helper_methods.rb +40 -29
- data/lib/propane/runner.rb +3 -2
- data/lib/propane/version.rb +1 -1
- data/pom.rb +1 -1
- data/pom.xml +1 -1
- data/vendors/Rakefile +31 -1
- metadata +2 -59
- data/examples/data_path/Rakefile +0 -32
- data/examples/data_path/bw_shader.rb +0 -47
- data/examples/data_path/data/Texture01.jpg +0 -0
- data/examples/data_path/data/Texture02.jpg +0 -0
- data/examples/data_path/data/Univers45.vlw +0 -0
- data/examples/data_path/data/bwfrag.glsl +0 -23
- data/examples/data_path/data/displaceFrag.glsl +0 -8
- data/examples/data_path/data/displaceVert.glsl +0 -201
- data/examples/data_path/data/lachoy.jpg +0 -0
- data/examples/data_path/data/landscape.glsl +0 -352
- data/examples/data_path/data/monjori.glsl +0 -30
- data/examples/data_path/data/moon.jpg +0 -0
- data/examples/data_path/data/sea.jpg +0 -0
- data/examples/data_path/edge_detection.rb +0 -49
- data/examples/data_path/glsl_heightmap_noise.rb +0 -125
- data/examples/data_path/kinetic_type.rb +0 -79
- data/examples/data_path/landscape.rb +0 -34
- data/examples/data_path/linear_image.rb +0 -51
- data/examples/data_path/monjori.rb +0 -35
- data/examples/regular/Rakefile +0 -30
- data/examples/regular/arcball_box.rb +0 -28
- data/examples/regular/arcball_constrain.rb +0 -29
- data/examples/regular/bezier_playground.rb +0 -206
- data/examples/regular/circle_collision.rb +0 -118
- data/examples/regular/colors_two.rb +0 -60
- data/examples/regular/creating_colors.rb +0 -64
- data/examples/regular/drawolver.rb +0 -93
- data/examples/regular/elegant_ball.rb +0 -159
- data/examples/regular/empathy.rb +0 -80
- data/examples/regular/fern.rb +0 -57
- data/examples/regular/fibonacci_sphere.rb +0 -91
- data/examples/regular/flight_patterns.rb +0 -64
- data/examples/regular/fractions.rb +0 -32
- data/examples/regular/grapher.rb +0 -40
- data/examples/regular/gravity.rb +0 -120
- data/examples/regular/grey_circles.rb +0 -28
- data/examples/regular/jwishy.rb +0 -99
- data/examples/regular/letters.rb +0 -42
- data/examples/regular/lib/boundary.rb +0 -38
- data/examples/regular/lib/particle.rb +0 -77
- data/examples/regular/lib/particle_system.rb +0 -111
- data/examples/regular/lib/rain_drops.rb +0 -54
- data/examples/regular/liquidy.rb +0 -41
- data/examples/regular/mouse_button_demo.rb +0 -32
- data/examples/regular/polyhedrons.rb +0 -249
- data/examples/regular/raining.rb +0 -60
- data/examples/regular/ribbon_doodle.rb +0 -89
- data/examples/regular/select_file.rb +0 -32
- data/examples/regular/select_image.rb +0 -40
- data/examples/regular/slider_demo.rb +0 -61
- data/examples/regular/slider_example.rb +0 -53
- data/examples/regular/slider_simple.rb +0 -47
- data/examples/regular/tree.rb +0 -76
- data/examples/regular/vector_math.rb +0 -37
- data/examples/regular/words.rb +0 -41
- data/lib/propane/helpers/string_extra.rb +0 -45
- data/lib/propane/underscorer.rb +0 -19
@@ -1,64 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -w
|
2
|
-
# Description:
|
3
|
-
# Flight Patterns is that ol' Euruko 2008 demo.
|
4
|
-
# Reworked version for Propane
|
5
|
-
# Usage:
|
6
|
-
# Drag mouse to steer 'invisible' flock attractor, use 'f' key to toggle flee
|
7
|
-
# Mouse 'click' to toggle 'sphere' or 'circle' display
|
8
|
-
require 'propane'
|
9
|
-
|
10
|
-
class FlightPatterns < Propane::App
|
11
|
-
load_library :boids
|
12
|
-
|
13
|
-
attr_reader :flee, :radius
|
14
|
-
|
15
|
-
def setup
|
16
|
-
size 1024, 768, P3D
|
17
|
-
sphere_detail 8
|
18
|
-
color_mode RGB, 1.0
|
19
|
-
no_stroke
|
20
|
-
shininess 1.0
|
21
|
-
specular 0.3, 0.1, 0.1
|
22
|
-
emissive 0.03, 0.03, 0.1
|
23
|
-
@radius = 0.02 * height
|
24
|
-
@click = false
|
25
|
-
@flee = false
|
26
|
-
@flocks = (0..3).map { Boids.flock(n: 20, x: 0, y: 0, w: width, h: height) }
|
27
|
-
end
|
28
|
-
|
29
|
-
def mouse_pressed
|
30
|
-
@click = !@click
|
31
|
-
end
|
32
|
-
|
33
|
-
def key_pressed
|
34
|
-
return unless key == 'f'
|
35
|
-
@flee = !@flee
|
36
|
-
end
|
37
|
-
|
38
|
-
def draw
|
39
|
-
background 0.05
|
40
|
-
ambient_light 0.01, 0.01, 0.01
|
41
|
-
light_specular 0.4, 0.2, 0.2
|
42
|
-
point_light 1.0, 1.0, 1.0, mouse_x, mouse_y, 190
|
43
|
-
@flocks.each_with_index do |flock, i|
|
44
|
-
flock.goal(target: Vec3D.new(mouse_x, mouse_y, 0), flee: @flee)
|
45
|
-
flock.update(goal: 185, limit: 13.5)
|
46
|
-
flock.each do |boid|
|
47
|
-
r = (0.15 * boid.pos.z) + radius
|
48
|
-
case i
|
49
|
-
when 0 then fill 0.85, 0.65, 0.65
|
50
|
-
when 1 then fill 0.65, 0.85, 0.65
|
51
|
-
when 2 then fill 0.65, 0.65, 0.85
|
52
|
-
end
|
53
|
-
push_matrix
|
54
|
-
point_array = (boid.pos.to_a).map { |p| p - (r / 2.0) }
|
55
|
-
translate(*point_array)
|
56
|
-
@click ? sphere(r / 2) : ellipse(0, 0, r, r)
|
57
|
-
@click ? hint(ENABLE_DEPTH_TEST) : hint(DISABLE_DEPTH_TEST)
|
58
|
-
pop_matrix
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
FlightPatterns.new title: 'Flight Patterns'
|
@@ -1,32 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -w
|
2
|
-
# fractions.rb, by Martin Prout
|
3
|
-
require 'propane'
|
4
|
-
|
5
|
-
class Fractions < Propane::App
|
6
|
-
attr_reader :f, :add, :subtract, :multiply
|
7
|
-
|
8
|
-
def setup
|
9
|
-
size 640, 250
|
10
|
-
@f = createFont('Arial', 24, true)
|
11
|
-
third = 1 / 3r # since ruby 2.1.0 (and jruby-9.0.0.0)
|
12
|
-
quarter = 1 / 4r
|
13
|
-
format_add = '%s + %s = %s'
|
14
|
-
format_sub = format_add.gsub('+', '-')
|
15
|
-
format_mult = format_add.gsub('+', '*')
|
16
|
-
@add = format(format_add, third, quarter, third + quarter)
|
17
|
-
@subtract = format(format_sub, third, quarter, third - quarter)
|
18
|
-
@multiply = format(format_mult, third, quarter, third * quarter)
|
19
|
-
end
|
20
|
-
|
21
|
-
def draw
|
22
|
-
background 10
|
23
|
-
text_font(f, 24)
|
24
|
-
fill(220)
|
25
|
-
text('Math Blackboard Propane', 80, 50)
|
26
|
-
text(add, 110, 100)
|
27
|
-
text(subtract, 110, 150)
|
28
|
-
text(multiply, 110, 200)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
Fractions.new(title: 'Fraction Sums')
|
data/examples/regular/grapher.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -w
|
2
|
-
require 'propane'
|
3
|
-
|
4
|
-
class Grapher < Propane::App
|
5
|
-
# Grapher is based on a context free art design
|
6
|
-
# by ColorMeImpressed (takes a bit of time to run)
|
7
|
-
# http://www.contextfreeart.org/gallery/view.php?id=2844
|
8
|
-
#
|
9
|
-
CMIN = -2.0 # Important to specify float else get random int from range?
|
10
|
-
CMAX = 2.0
|
11
|
-
FUZZ = 0.04
|
12
|
-
SZ = 5
|
13
|
-
|
14
|
-
def setup
|
15
|
-
size 600, 600
|
16
|
-
no_stroke
|
17
|
-
color_mode(HSB, 1.0)
|
18
|
-
background(0)
|
19
|
-
frame_rate(4_000)
|
20
|
-
end
|
21
|
-
|
22
|
-
def draw
|
23
|
-
translate(width / 2, height / 2)
|
24
|
-
dot(rand(-180..180), rand(-180..180), rand(CMIN..CMAX)) unless frame_count > 200_000
|
25
|
-
end
|
26
|
-
|
27
|
-
def dot(px, py, c)
|
28
|
-
func = DegLut.sin(px) + DegLut.sin(py) + c
|
29
|
-
# change function to change the graph eg.
|
30
|
-
# func = DegLut.cos(px) + DegLut.sin(py) + c
|
31
|
-
if func.abs <= FUZZ
|
32
|
-
fill(((CMIN - c) / (CMIN - CMAX)), 1, 1)
|
33
|
-
ellipse px * width / 360, py * height / 360, SZ, SZ
|
34
|
-
else
|
35
|
-
dot(rand(-180..180), rand(-180..180), rand(CMIN..CMAX))
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
Grapher.new title: 'Grapher'
|
data/examples/regular/gravity.rb
DELETED
@@ -1,120 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -w
|
2
|
-
# After Gravity by Christian Hahn
|
3
|
-
# mouse click on window
|
4
|
-
require 'propane'
|
5
|
-
|
6
|
-
class Gravity < Propane::App
|
7
|
-
attr_reader :particles, :grabbed
|
8
|
-
|
9
|
-
def setup
|
10
|
-
size 600, 500
|
11
|
-
@particles = []
|
12
|
-
@grabbed = nil
|
13
|
-
background 0
|
14
|
-
smooth 4
|
15
|
-
stroke_weight 4
|
16
|
-
ellipse_mode CENTER
|
17
|
-
color_mode RGB, 255
|
18
|
-
end
|
19
|
-
|
20
|
-
def draw
|
21
|
-
no_stroke
|
22
|
-
fill 0, 60
|
23
|
-
rect 0, 0, width, height
|
24
|
-
particles.each(&:run)
|
25
|
-
end
|
26
|
-
|
27
|
-
def mouse_pressed
|
28
|
-
return if mouse_x == 0 || mouse_y == 0
|
29
|
-
return if particle_grab
|
30
|
-
particles << Particle.new(mouse_x, mouse_y, rand(0.1..8))
|
31
|
-
end
|
32
|
-
|
33
|
-
def mouse_released
|
34
|
-
@grabbed = nil
|
35
|
-
end
|
36
|
-
|
37
|
-
def particle_grab
|
38
|
-
@grabbed = particles.detect { |p| dist(mouse_x, mouse_y, p.x1, p.y1) < p.diameter/2 }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
class Particle
|
43
|
-
include Math, Propane::Proxy
|
44
|
-
GRAVITY = 1.0
|
45
|
-
attr_reader :x0, :y0, :x1, :y1, :diameter, :mass_amount
|
46
|
-
|
47
|
-
def initialize(x, y, mass)
|
48
|
-
@x0, @y0, @x1, @y1 = x, y, x, y
|
49
|
-
@x_speed, @y_speed = 0, 0
|
50
|
-
@x_accel, @y_accel = 0, 0
|
51
|
-
@mass_amount = mass
|
52
|
-
@diameter = sqrt(mass_amount) * 20
|
53
|
-
end
|
54
|
-
|
55
|
-
def collect_force
|
56
|
-
@x_accel, @y_accel = 0, 0
|
57
|
-
@min_dist = 1000
|
58
|
-
$app.particles.each do |p|
|
59
|
-
next if p == self
|
60
|
-
g_dist = hypot(x0 - p.x0, y0 - p.y0)
|
61
|
-
g_theta = -angle_of(x0, y0, p.x0, p.y0)
|
62
|
-
@min_dist = g_dist if g_dist < @min_dist
|
63
|
-
force = (GRAVITY * mass_amount * p.mass_amount) / g_dist
|
64
|
-
if g_dist.abs > diameter
|
65
|
-
@x_accel += force / mass_amount * cos(g_theta)
|
66
|
-
@y_accel += force / mass_amount * sin(g_theta)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def move
|
72
|
-
@x_speed, @y_speed = 0, 0 if grabbed?
|
73
|
-
@x_speed += @x_accel
|
74
|
-
@y_speed += @y_accel
|
75
|
-
@x1, @y1 = x0 + @x_speed, y0 + @y_speed
|
76
|
-
end
|
77
|
-
|
78
|
-
def grabbed?
|
79
|
-
$app.grabbed == self
|
80
|
-
end
|
81
|
-
|
82
|
-
def run
|
83
|
-
collect_force
|
84
|
-
move
|
85
|
-
render
|
86
|
-
end
|
87
|
-
|
88
|
-
def render
|
89
|
-
no_stroke
|
90
|
-
grabbed? ? render_grabbed : render_free
|
91
|
-
end
|
92
|
-
|
93
|
-
def render_free
|
94
|
-
charge_col = 1000.0 / @min_dist / 50.0
|
95
|
-
tot_col_1 = 100 + charge_col * 6
|
96
|
-
tot_col_2 = 150 + charge_col * charge_col
|
97
|
-
tot_col_3 = diameter + 8 + charge_col
|
98
|
-
fill(tot_col_1, tot_col_1, 255, charge_col * 150 + 3)
|
99
|
-
ellipse(x1, y1, tot_col_3, tot_col_3)
|
100
|
-
fill 0, 255
|
101
|
-
stroke tot_col_2, tot_col_2, 255, charge_col * 255 + 3
|
102
|
-
ellipse x1, y1, diameter, diameter
|
103
|
-
@x0, @y0 = x1, y1
|
104
|
-
end
|
105
|
-
|
106
|
-
def render_grabbed
|
107
|
-
fill 150, 150, 255, 100
|
108
|
-
ellipse mouse_x, mouse_y, diameter + 8, diameter + 8
|
109
|
-
fill 0, 255
|
110
|
-
stroke 150, 150, 255, 255
|
111
|
-
ellipse mouse_x, mouse_y, diameter, diameter
|
112
|
-
@x0, @y0 = mouse_x, mouse_y
|
113
|
-
end
|
114
|
-
|
115
|
-
def angle_of(x1, y1, x2, y2)
|
116
|
-
Math::PI - atan2(y1 - y2, x1 - x2)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
Gravity.new title: 'Gravity'
|
@@ -1,28 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -w
|
2
|
-
# frozen_string_literal: true
|
3
|
-
# grey circles : borrowed from https://github.com/quil/quil
|
4
|
-
require 'propane'
|
5
|
-
|
6
|
-
class GreyCircles < Propane::App
|
7
|
-
|
8
|
-
def setup
|
9
|
-
size(323, 200)
|
10
|
-
smooth
|
11
|
-
frame_rate(1)
|
12
|
-
background(200)
|
13
|
-
end
|
14
|
-
|
15
|
-
def draw
|
16
|
-
stroke_setup
|
17
|
-
diameter = rand(100)
|
18
|
-
ellipse(rand(width), rand(height), diameter, diameter)
|
19
|
-
end
|
20
|
-
|
21
|
-
def stroke_setup
|
22
|
-
[:stroke, :stroke_weight, :fill].each do |method|
|
23
|
-
send(method, rand(255))
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
GreyCircles.new title: 'Oh so many circles'
|
data/examples/regular/jwishy.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
# frozen_string_literal: true
|
3
|
-
require 'propane'
|
4
|
-
# Iconic ruby-processing example for Propane
|
5
|
-
class JWishy < Propane::App
|
6
|
-
load_library :control_panel
|
7
|
-
|
8
|
-
attr_reader :alpha, :back_color, :bluish, :hide, :magnitude, :panel
|
9
|
-
attr_reader :x_wiggle, :y_wiggle, :go_big, :shape
|
10
|
-
|
11
|
-
def setup
|
12
|
-
size 600, 600
|
13
|
-
control_panel do |c|
|
14
|
-
c.title = 'Control Panel'
|
15
|
-
c.look_feel 'Nimbus'
|
16
|
-
c.slider :bluish, 0.0..1.0, 0.5
|
17
|
-
c.slider :alpha, 0.0..1.0, 0.5
|
18
|
-
c.checkbox :go_big, false
|
19
|
-
c.button :reset
|
20
|
-
c.menu :shape, %w(oval square triangle), 'oval'
|
21
|
-
@panel = c
|
22
|
-
end
|
23
|
-
@hide = false
|
24
|
-
@x_wiggle, @y_wiggle = 10.0, 0
|
25
|
-
@magnitude = 8.15
|
26
|
-
@back_color = [0.06, 0.03, 0.18]
|
27
|
-
color_mode RGB, 1
|
28
|
-
ellipse_mode CORNER
|
29
|
-
smooth
|
30
|
-
end
|
31
|
-
|
32
|
-
def draw_background
|
33
|
-
back_color[3] = alpha
|
34
|
-
fill(*back_color.to_java(:float))
|
35
|
-
rect 0, 0, width, height
|
36
|
-
end
|
37
|
-
|
38
|
-
def reset
|
39
|
-
@y_wiggle = 0
|
40
|
-
end
|
41
|
-
|
42
|
-
def draw
|
43
|
-
# only make control_panel visible once, or again when hide is false
|
44
|
-
unless hide
|
45
|
-
@hide = true
|
46
|
-
panel.set_visible(hide)
|
47
|
-
end
|
48
|
-
draw_background
|
49
|
-
# Seed the random numbers for consistent placement from frame to frame
|
50
|
-
srand(0)
|
51
|
-
horiz, vert, mag = x_wiggle, y_wiggle, magnitude
|
52
|
-
if go_big
|
53
|
-
mag *= 2
|
54
|
-
vert /= 2
|
55
|
-
end
|
56
|
-
blu = bluish
|
57
|
-
x, y = (width / 2), -27
|
58
|
-
c = 0.0
|
59
|
-
64.times do
|
60
|
-
x += cos(horiz) * mag
|
61
|
-
y += log10(vert) * mag + sin(vert) * 2
|
62
|
-
fill(sin(y_wiggle + c), rand * 0.2, rand * blu, 0.5)
|
63
|
-
s = 42 + cos(vert) * 17
|
64
|
-
args = [@shape, x - s / 2, y - s / 2, s, s]
|
65
|
-
draw_shape(args)
|
66
|
-
vert += rand * 0.25
|
67
|
-
horiz += rand * 0.25
|
68
|
-
c += 0.1
|
69
|
-
end
|
70
|
-
@x_wiggle += 0.05
|
71
|
-
@y_wiggle += 0.1
|
72
|
-
end
|
73
|
-
|
74
|
-
def mouse_pressed
|
75
|
-
return unless hide
|
76
|
-
@hide = false
|
77
|
-
end
|
78
|
-
|
79
|
-
def draw_shape(args)
|
80
|
-
case args[0]
|
81
|
-
when 'triangle'
|
82
|
-
draw_triangle(args)
|
83
|
-
when 'square'
|
84
|
-
rect(args[1], args[2], args[3], args[4])
|
85
|
-
else
|
86
|
-
ellipse(args[1], args[2], args[3], args[4]) # oval for Shoes
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def draw_triangle(args)
|
91
|
-
x2 = args[1] + (args[3] * 0.6)
|
92
|
-
y0 = args[2] + (args[4] * 0.396)
|
93
|
-
y1 = args[2] - (args[4] * 0.792)
|
94
|
-
y2 = args[2] + (args[4] * 0.396)
|
95
|
-
triangle(args[1] - (args[3] * 0.6), y0, args[1], y1, x2, y2)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
JWishy.new title: 'Wishy Worm'
|
data/examples/regular/letters.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
# frozen_string_literal: true
|
3
|
-
# Letters. Hit any key.
|
4
|
-
#
|
5
|
-
require 'propane'
|
6
|
-
|
7
|
-
LETTERS = ('A'..'Z').to_a + ('0'..'9').to_a + ('a'..'z').to_a
|
8
|
-
|
9
|
-
# Draws letters to the screen. This requires loading a font,
|
10
|
-
# setting the font, and then drawing the letters.
|
11
|
-
class Letters < Propane::App
|
12
|
-
def setup
|
13
|
-
size 640, 360
|
14
|
-
@font = create_font 'Georgia', 24
|
15
|
-
text_font @font
|
16
|
-
text_align CENTER, CENTER
|
17
|
-
end
|
18
|
-
|
19
|
-
def draw
|
20
|
-
background 0
|
21
|
-
translate 24, 32
|
22
|
-
x, y = 0.0, 0.0
|
23
|
-
gap = 30
|
24
|
-
# ranges -> arrays -> joined!
|
25
|
-
LETTERS.each do |letter|
|
26
|
-
fill 255
|
27
|
-
fill 204, 204, 0 if letter =~ /[AEIOU]/
|
28
|
-
fill 0, 204, 204 if letter =~ /[aeiou]/
|
29
|
-
fill 153 if letter =~ /[0-9]/
|
30
|
-
fill 255, 100, 0 if key_pressed? && (letter.downcase.eql? key)
|
31
|
-
fill 0, 100, 255 if key_pressed? && (letter.upcase.eql? key)
|
32
|
-
text letter, x, y
|
33
|
-
x += gap
|
34
|
-
if x > width - 30
|
35
|
-
x = 0
|
36
|
-
y += gap
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
Letters.new title: 'Letters'
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# Re-usable Boundary class
|
2
|
-
class Boundary
|
3
|
-
include Propane::Proxy
|
4
|
-
attr_reader :box2d, :b, :pos, :size, :a
|
5
|
-
|
6
|
-
def initialize(b2d, pos, sz, a = 0)
|
7
|
-
@box2d, @pos, @size, @a = b2d, pos, sz, a
|
8
|
-
# Define the polygon
|
9
|
-
sd = PolygonShape.new
|
10
|
-
# Figure out the box2d coordinates
|
11
|
-
box2d_w = box2d.scale_to_world(size.x / 2)
|
12
|
-
box2d_h = box2d.scale_to_world(size.y / 2)
|
13
|
-
# We're just a box
|
14
|
-
sd.set_as_box(box2d_w, box2d_h)
|
15
|
-
# Create the body
|
16
|
-
bd = BodyDef.new
|
17
|
-
bd.type = BodyType::STATIC
|
18
|
-
bd.angle = a
|
19
|
-
bd.position.set(box2d.processing_to_world(pos.x, pos.y))
|
20
|
-
@b = box2d.create_body(bd)
|
21
|
-
# Attached the shape to the body using a Fixture
|
22
|
-
b.create_fixture(sd, 1)
|
23
|
-
end
|
24
|
-
|
25
|
-
# Draw the boundary, it doesn't move so we don't ask for location
|
26
|
-
def display
|
27
|
-
fill(0)
|
28
|
-
stroke(0)
|
29
|
-
stroke_weight(1)
|
30
|
-
rect_mode(PConstants::CENTER)
|
31
|
-
a = b.get_angle
|
32
|
-
push_matrix
|
33
|
-
translate(pos.x, pos.y)
|
34
|
-
rotate(-a)
|
35
|
-
rect(0, 0, size.x, size.y)
|
36
|
-
pop_matrix
|
37
|
-
end
|
38
|
-
end
|