ruby-processing 2.4.3 → 2.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/CHANGELOG +5 -0
  4. data/README.md +4 -2
  5. data/lib/ruby-processing/exporters/application_exporter.rb +1 -0
  6. data/lib/ruby-processing/version.rb +1 -1
  7. data/library/boids/boids.rb +14 -13
  8. data/library/vecmath/lib/vec.rb +20 -4
  9. data/samples/contributed/circle_collision.rb +92 -149
  10. data/samples/contributed/drawolver.rb +13 -27
  11. data/samples/contributed/elegant_ball.rb +158 -0
  12. data/samples/contributed/fern.rb +16 -3
  13. data/samples/contributed/flight_patterns.rb +16 -4
  14. data/samples/external_library/java_processing/{pbox2d → box2d_processing}/bumpy_surface_noise.rb +4 -9
  15. data/samples/external_library/java_processing/{pbox2d → box2d_processing}/data/java_args.txt +0 -0
  16. data/samples/external_library/java_processing/{pbox2d → box2d_processing}/library/custom_shape/custom_shape.rb +1 -1
  17. data/samples/external_library/java_processing/{pbox2d → box2d_processing}/library/particle_system/particle_system.rb +7 -10
  18. data/samples/external_library/java_processing/{pbox2d → box2d_processing}/library/surface/surface.rb +2 -2
  19. data/samples/external_library/java_processing/{pbox2d → box2d_processing}/liquidy.rb +7 -7
  20. data/samples/external_library/java_processing/{pbox2d → box2d_processing}/polygons.rb +4 -9
  21. data/samples/external_library/java_processing/custom/README.md +15 -0
  22. data/samples/external_library/java_processing/custom/Rakefile +28 -0
  23. data/samples/external_library/java_processing/custom/landscape.rb +58 -0
  24. data/samples/external_library/java_processing/custom/src/nn/Connection.java +47 -0
  25. data/samples/external_library/java_processing/custom/src/nn/HiddenNeuron.java +20 -0
  26. data/samples/external_library/java_processing/custom/src/nn/InputNeuron.java +23 -0
  27. data/samples/external_library/java_processing/custom/src/nn/Network.java +136 -0
  28. data/samples/external_library/java_processing/custom/src/nn/Neuron.java +79 -0
  29. data/samples/external_library/java_processing/custom/src/nn/OutputNeuron.java +7 -0
  30. data/samples/external_library/java_processing/custom/xor.rb +88 -0
  31. data/samples/external_library/ruby_gem/README +1 -1
  32. data/samples/external_library/ruby_gem/data/data.json +8 -0
  33. data/samples/external_library/ruby_gem/draw_test.rb +171 -0
  34. data/samples/processing_app/basics/form/icosahedra.rb +39 -0
  35. data/samples/processing_app/basics/form/library/icosahedron/icosahedron.rb +60 -0
  36. data/samples/processing_app/basics/form/toroid.rb +78 -92
  37. data/samples/processing_app/basics/transform/birds.rb +6 -12
  38. data/samples/processing_app/basics/transform/cubes_in_cube.rb +25 -22
  39. data/samples/processing_app/basics/transform/library/cube/cube.rb +16 -16
  40. data/samples/processing_app/basics/transform/rotate_push_pop.rb +1 -1
  41. data/samples/processing_app/demos/graphics/bezier_patch.rb +18 -31
  42. data/samples/processing_app/demos/graphics/trefoil.rb +15 -15
  43. data/samples/processing_app/library/vecmath/acceleration_with_vectors.rb +3 -3
  44. data/samples/processing_app/library/vecmath/hilbert_fractal.rb +2 -2
  45. data/samples/processing_app/library/vecmath/library/flock/flock.rb +18 -21
  46. data/samples/processing_app/library/vecmath/library/hilbert/hilbert.rb +11 -8
  47. data/samples/processing_app/library/vecmath/library/wiggler/wiggler.rb +7 -15
  48. data/samples/processing_app/library/vecmath/seeking_neural.rb +172 -0
  49. data/samples/processing_app/topics/animation/animated_sprite.rb +5 -8
  50. data/samples/processing_app/topics/animation/sequential.rb +2 -3
  51. data/samples/processing_app/topics/create_shapes/library/particle/particle_system.rb +7 -7
  52. data/samples/processing_app/topics/create_shapes/particle_system_pshape.rb +2 -2
  53. data/samples/processing_app/topics/create_shapes/wiggle_pshape.rb +2 -1
  54. data/samples/processing_app/topics/lsystems/koch.rb +1 -1
  55. data/samples/processing_app/topics/lsystems/library/koch/koch_fractal.rb +24 -23
  56. data/samples/processing_app/topics/motion/circle_collision.rb +117 -160
  57. data/samples/processing_app/topics/motion/library/cube/cube.rb +1 -1
  58. data/samples/processing_app/topics/motion/morph.rb +1 -1
  59. data/samples/processing_app/topics/motion/reflection1.rb +17 -16
  60. data/samples/processing_app/topics/shaders/conway.rb +2 -2
  61. data/samples/processing_app/topics/shaders/data/conway.glsl +10 -10
  62. data/samples/processing_app/topics/shaders/glsl_heightmap_noise.rb +9 -8
  63. data/samples/processing_app/topics/shaders/landscape.rb +1 -1
  64. data/samples/processing_app/topics/simulate/flocking.rb +1 -1
  65. data/samples/processing_app/topics/simulate/library/flock/flock.rb +62 -57
  66. data/samples/processing_app/topics/simulate/multiple_particle_systems.rb +8 -28
  67. data/samples/processing_app/topics/simulate/simple_particle_system.rb +9 -7
  68. data/samples/processing_app/topics/simulate/smoke_particle_system.rb +12 -11
  69. data/vendors/Rakefile +2 -2
  70. metadata +26 -21
  71. data/samples/contributed/pong.rb +0 -177
  72. data/samples/contributed/simple_buffer.rb +0 -44
  73. data/samples/external_library/java_processing/pbox2d/contact_test.rb +0 -23
  74. data/samples/processing_app/basics/form/icosahedra/icosahedra.rb +0 -72
  75. data/samples/processing_app/basics/form/icosahedra/icosahedron.rb +0 -116
  76. data/samples/processing_app/basics/form/icosahedra/shape_3D.rb +0 -25
@@ -1,33 +1,17 @@
1
1
  # Drawolver: draw 2D & revolve 3D
2
2
 
3
- # This example demonstrates the use of the `vecmath` library (a ruby-processing
4
- # replacement for PVector). Also demonstrated is how to extend an instance of a
5
- # here an instance of a core ruby class. In this case the ruby Array class,
6
- # is extended to yield one_of_each pair of pts (see ExtendedArray module). This
7
- # examples also includes a possibly rare use of the each_cons Enumerable method?
8
- # For simpler illustrations of `vecmath` usage see the library examples.
9
- # 2010-03-22 - fjenett (last revised by monkstone 2014-02-18)
3
+ # Example to show how to use the VecMath library.
4
+ # ruby replacement for PVector. Also features
5
+ # the use each_cons, possibly a rare use for this
6
+ # ruby Enumerable method?
7
+ # 2010-03-22 - fjenett (last revised by monkstone 2014-03-21)
8
+ # now uses 'zip' and 'each', in place of a custom Array object
9
+ # with a 'one_of_each' method
10
10
 
11
11
  load_library :vecmath
12
-
12
+ import 'vecmath'
13
13
  attr_reader :drawing_mode, :points, :rot_x, :rot_y, :vertices
14
14
 
15
- module ExtendedArray
16
- # send one item from each array, expects array to be 2D:
17
- # array [[1,2,3], [a,b,c]] sends
18
- # [1,a] , [2,b] , [3,c]
19
- def one_of_each( &block )
20
- i = 0
21
- one = self[0]
22
- two = self[1]
23
- mi = one.length > two.length ? two.length : one.length
24
- while i < mi do
25
- yield( one[i], two[i] )
26
- i += 1
27
- end
28
- end
29
- end
30
-
31
15
  def setup
32
16
  size 1024, 768, P3D
33
17
  frame_rate 30
@@ -55,8 +39,7 @@ def draw
55
39
  ambient_light 120, 120, 120
56
40
  vertices.each_cons(2) do |r1, r2|
57
41
  begin_shape(TRIANGLE_STRIP)
58
- ext_array = [r1,r2].extend ExtendedArray # extend an instance of Array
59
- ext_array.one_of_each do |v1, v2|
42
+ r1.zip(r2).each do |v1, v2|
60
43
  vertex v1.x, v1.y, v1.z
61
44
  vertex v2.x, v2.y, v2.z
62
45
  end
@@ -94,7 +77,7 @@ def recalculate_shape
94
77
  b.normalize!
95
78
  a = ps - points.first
96
79
  dot = a.dot b
97
- b *= dot
80
+ b = b * dot
98
81
  normal = points.first + b
99
82
  c = ps - normal
100
83
  # nlen = c.mag
@@ -108,3 +91,6 @@ def recalculate_shape
108
91
  @drawing_mode = false
109
92
  end
110
93
 
94
+
95
+
96
+
@@ -0,0 +1,158 @@
1
+ # elegant_ball.rb
2
+ # After a vanilla processing sketch by
3
+ # Ben Notorianni aka lazydog
4
+ #
5
+
6
+ load_library :vecmath
7
+
8
+ def setup
9
+ size(800, 800, P3D)
10
+ color_mode(RGB, 1)
11
+ end
12
+
13
+ def draw
14
+ #background(0.25)
15
+ background(0)
16
+ # Move the origin so that the scene is centered on the screen.
17
+ translate(width/2, height/2, 0.0)
18
+ # Set up the lighting.
19
+ setup_lights
20
+ # Rotate the local coordinate system.
21
+ smooth_rotation(5.0, 6.7, 7.3)
22
+ # Draw the inner object.
23
+ no_stroke
24
+ fill(smooth_colour(10.0, 12.0, 7.0))
25
+ draw_icosahedron(5, 60.0, false)
26
+ # Rotate the local coordinate system again.
27
+ smooth_rotation(4.5, 3.7, 7.3)
28
+ # Draw the outer object.
29
+ stroke(0.2)
30
+ fill(smooth_colour(6.0, 9.2, 0.7))
31
+ draw_icosahedron(5, 200.0, true)
32
+ end
33
+
34
+ def setup_lights
35
+ ambient_light(0.025, 0.025, 0.025)
36
+ directional_light(0.2, 0.2, 0.2, -1, -1, -1)
37
+ spot_light(1.0, 1.0, 1.0, -200, 0, 300, 1, 0, -1, PI/4, 20)
38
+ end
39
+
40
+ ##
41
+ # Generate a vector whose components change smoothly over time in the range [ 0, 1 ].
42
+ # Each component uses a Math.sin function to map the current time in milliseconds somewhere
43
+ # in the range [ 0, 1 ].A 'speed' factor is specified for each component.
44
+ #
45
+ def smooth_vector(s1, s2, s3)
46
+ mills = millis * 0.00003
47
+ rot = ->(a){0.5 * Math.sin(mills * a) + 0.5}
48
+ Vec3D.new(rot.call(s1), rot.call(s2), rot.call(s3))
49
+ end
50
+
51
+ ##
52
+ # Generate a colour which smoothly changes over time.
53
+ # The speed of each component is controlled by the parameters s1, s2 and s3.
54
+ #
55
+ def smooth_colour(s1, s2, s3)
56
+ v = smooth_vector(s1, s2, s3)
57
+ color(v.x, v.y, v.z)
58
+ end
59
+
60
+ ##
61
+ # Rotate the current coordinate system.
62
+ # Uses smooth_vector to smoothly animate the rotation.
63
+ #
64
+ def smooth_rotation(s1, s2, s3)
65
+ r1 = smooth_vector(s1, s2, s3)
66
+ rotate_x(2.0 * PI * r1.x)
67
+ rotate_y(2.0 * PI * r1.y)
68
+ rotate_x(2.0 * PI * r1.z)
69
+ end
70
+
71
+ ##
72
+ # Draw an icosahedron defined by a radius r and recursive depth d.
73
+ # Geometry data will be saved into dst. If spherical is true then the icosahedron
74
+ # is projected onto the sphere with radius r.
75
+ #
76
+ def draw_icosahedron(depth, r, spherical)
77
+ # Calculate the vertex data for an icosahedron inscribed by a sphere radius 'r'.
78
+ # Use 4 Golden Ratio rectangles as the basis.
79
+ gr = (1.0 + Math.sqrt(5.0)) / 2.0
80
+ h = r / Math.sqrt(1.0 + gr * gr)
81
+ v =
82
+ [
83
+ Vec3D.new(0, -h, h*gr), Vec3D.new(0, -h, -h*gr), Vec3D.new(0, h, -h*gr), Vec3D.new(0, h, h*gr),
84
+ Vec3D.new(h, -h*gr, 0), Vec3D.new(h, h*gr, 0), Vec3D.new(-h, h*gr, 0), Vec3D.new(-h, -h*gr, 0),
85
+ Vec3D.new(-h*gr, 0, h), Vec3D.new(-h*gr, 0, -h), Vec3D.new(h*gr, 0, -h), Vec3D.new(h*gr, 0, h)
86
+ ]
87
+
88
+ # Draw the 20 triangular faces of the icosahedron.
89
+ unless spherical then
90
+ r = 0.0
91
+ end
92
+
93
+ begin_shape(TRIANGLES)
94
+
95
+ draw_triangle(depth, r, v[0], v[7],v[4])
96
+ draw_triangle(depth, r, v[0], v[4], v[11])
97
+ draw_triangle(depth, r, v[0], v[11], v[3])
98
+ draw_triangle(depth, r, v[0], v[3], v[8])
99
+ draw_triangle(depth, r, v[0], v[8], v[7])
100
+
101
+ draw_triangle(depth, r, v[1], v[4], v[7])
102
+ draw_triangle(depth, r, v[1], v[10], v[4])
103
+ draw_triangle(depth, r, v[10], v[11], v[4])
104
+ draw_triangle(depth, r, v[11], v[5], v[10])
105
+ draw_triangle(depth, r, v[5], v[3], v[11])
106
+ draw_triangle(depth, r, v[3], v[6], v[5])
107
+ draw_triangle(depth, r, v[6], v[8], v[3])
108
+ draw_triangle(depth, r, v[8], v[9], v[6])
109
+ draw_triangle(depth, r, v[9], v[7], v[8])
110
+ draw_triangle(depth, r, v[7], v[1], v[9])
111
+
112
+ draw_triangle(depth, r, v[2], v[1], v[9])
113
+ draw_triangle(depth, r, v[2], v[10], v[1])
114
+ draw_triangle(depth, r, v[2], v[5], v[10])
115
+ draw_triangle(depth, r, v[2], v[6], v[5])
116
+ draw_triangle(depth, r, v[2], v[9], v[6])
117
+
118
+ end_shape
119
+ end
120
+
121
+ ##
122
+ # Draw a triangle either immediately or subdivide it first.
123
+ # If depth is 1 then draw the triangle otherwise subdivide first.
124
+ #
125
+ def draw_triangle(depth, r, p1, p2, p3)
126
+
127
+ if (depth == 1) then
128
+ vertex(p1.x, p1.y, p1.z)
129
+ vertex(p2.x, p2.y, p2.z)
130
+ vertex(p3.x, p3.y, p3.z)
131
+ else
132
+ # Calculate the mid points of this triangle.
133
+ v1 = (p1 + p2) * 0.5
134
+ v2 = (p2 + p3) * 0.5
135
+ v3 = (p3 + p1) * 0.5
136
+ unless (r == 0.0) then
137
+ # Project the verticies out onto the sphere with radius r.
138
+ v1.normalize!
139
+ v1 *= r
140
+ v2.normalize!
141
+ v2 *= r
142
+ v3.normalize!
143
+ v3 *= r
144
+ end
145
+ ## Generate the next level of detail
146
+ depth -= 1
147
+ draw_triangle(depth, r, p1, v1, v3)
148
+ draw_triangle(depth, r, v1, p2, v2)
149
+ draw_triangle(depth, r, v2, p3, v3)
150
+ # Uncomment out the next line to include the central part of the triangle.
151
+ # draw_triangle(depth, r, v1, v2, v3)
152
+ end
153
+
154
+ end
155
+
156
+
157
+
158
+
@@ -1,8 +1,11 @@
1
1
  # The Fern Fractal
2
2
  # by Luis Correia
3
+
4
+ attr_reader :boundary
3
5
 
4
6
  def setup
5
7
  size 500, 500
8
+ @boundary = Boundary.new(0, width )
6
9
  no_loop
7
10
  puts "Be patient. This takes about 10 seconds to render."
8
11
  end
@@ -16,7 +19,7 @@ def draw
16
19
  max_iterations = 200000
17
20
 
18
21
  max_iterations.times do
19
- r = rand(100.0)
22
+ r = rand(0 .. 100.0)
20
23
  if r <= 1
21
24
  x = 0.0
22
25
  y = 0.16 * y0
@@ -33,9 +36,19 @@ def draw
33
36
 
34
37
  i = height - (y * 45).to_i
35
38
  j = width / 2 + (x * 45).to_i
36
- pixels[i * height + j] += 2560 if (i >=0 && i < height && j >= 0 && j < width)
39
+ pixels[i * height + j] += 2560 if (boundary.include?(i) && boundary.include?(j))
37
40
  x0, y0 = x, y
38
41
  end
39
42
 
40
43
  update_pixels
41
- end
44
+ end
45
+
46
+ # Abstract boundary checking to this
47
+ # lightweight class
48
+ #
49
+
50
+ Boundary = Struct.new(:lower, :upper) do
51
+ def include? x
52
+ (lower ... upper).cover? x
53
+ end
54
+ end
@@ -29,9 +29,6 @@ end
29
29
 
30
30
  def draw
31
31
  background 0.05
32
- ambient_light 0.01, 0.01, 0.01
33
- light_specular 0.4, 0.2, 0.2
34
- point_light 1.0, 1.0, 1.0, mouse_x, mouse_y, width / 4.0
35
32
  @flocks.each_with_index do |flock, i|
36
33
  flock.goal mouse_x, mouse_y, 0, @flee
37
34
  flock.update(goal: 185, limit: 13.5)
@@ -44,8 +41,23 @@ def draw
44
41
  end
45
42
  push_matrix
46
43
  translate boid.x-r/2, boid.y-r/2, boid.z-r/2
47
- @click ? sphere(r/2) : oval(0, 0, r, r)
44
+ if @click
45
+ lights_on
46
+ hint ENABLE_DEPTH_TEST
47
+ sphere(r/2)
48
+ else
49
+ no_lights
50
+ hint DISABLE_DEPTH_TEST
51
+ oval(0, 0, r, r)
52
+ end
48
53
  pop_matrix
49
54
  end
50
55
  end
51
56
  end
57
+
58
+ def lights_on
59
+ lights
60
+ ambient_light 0.01, 0.01, 0.01
61
+ light_specular 0.4, 0.2, 0.2
62
+ point_light 1.0, 1.0, 1.0, mouse_x, mouse_y, width / 4.0
63
+ end
@@ -1,12 +1,11 @@
1
1
  # The Nature of Code
2
- # <http:#www.shiffman.net/teaching/nature>
2
+ # <http://www.shiffman.net/teaching/nature>
3
3
  # Spring 2010
4
4
  # PBox2D example
5
5
 
6
6
  # An uneven surface
7
7
 
8
- load_library :pbox2d
9
- load_library :surface
8
+ load_libraries :box2d_processing, :surface
10
9
 
11
10
  include SB
12
11
 
@@ -17,7 +16,7 @@ def setup
17
16
  smooth
18
17
 
19
18
  # Initialize box2d physics and create the world
20
- @box2d = PBox2D.new(self)
19
+ @box2d = SB::Box2DProcessing.new(self)
21
20
  box2d.create_world
22
21
  # We are setting a custom gravity
23
22
  box2d.set_gravity(0, -20)
@@ -46,11 +45,7 @@ def draw
46
45
  end
47
46
  # Particles that leave the screen, we delete them
48
47
  # (note they have to be deleted from both the box2d world and our list
49
- particles.each_with_index do |p, i|
50
- if (p.done)
51
- particles.delete_at(i)
52
- end
53
- end
48
+ particles.reject! {|p| p.done}
54
49
  # Just drawing the framerate to see how many particles it can handle
55
50
  fill(0)
56
51
  text("framerate: #{frame_rate.to_i}", 12, 16)
@@ -3,7 +3,7 @@ module B2D
3
3
  include_package 'org.jbox2d.collision.shapes'
4
4
  include_package 'org.jbox2d.common'
5
5
  include_package 'org.jbox2d.dynamics'
6
- java_import 'pbox2d.PBox2D'
6
+ include_package 'shiffman.box2d'
7
7
 
8
8
 
9
9
  # The Nature of Code
@@ -2,22 +2,22 @@ module PS
2
2
  include_package 'org.jbox2d.collision.shapes'
3
3
  include_package 'org.jbox2d.common'
4
4
  include_package 'org.jbox2d.dynamics'
5
- java_import 'pbox2d.PBox2D'
6
-
7
-
5
+ include_package 'shiffman.box2d'
6
+
8
7
  # Box2D Particle System
9
8
  # <http://www.shiffman.net/teaching/nature>
10
9
  # Spring 2010
10
+ # translated to ruby-processing Martin Prout
11
11
 
12
12
  # A class to describe a group of Particles
13
- # An ArrayList is used to manage the list of Particles
13
+ # An Array is used to manage the list of Particles
14
14
 
15
15
  class ParticleSystem
16
16
 
17
17
  attr_reader :particles, :x, :y
18
18
 
19
19
  def initialize(bd, num, x, y)
20
- @particles = [] # Initialize the ArrayList
20
+ @particles = [] # Initialize the Array
21
21
  @x, @y = x, y # Store the origin point
22
22
  num.times do
23
23
  particles << PS::Particle.new(bd, x, y)
@@ -32,11 +32,8 @@ module PS
32
32
  # Particles that leave the screen, we delete them
33
33
  # (note they have to be deleted from both the box2d world and our list
34
34
 
35
- particles.each_with_index do |p, i|
36
- if (p.done)
37
- particles.delete_at(i)
38
- end
39
- end
35
+ particles.reject! { |p| p.done}
36
+
40
37
  end
41
38
 
42
39
  def add_particles(bd, n)
@@ -1,5 +1,5 @@
1
1
  # The Nature of Code
2
- # <http:#www.shiffman.net/teaching/nature>
2
+ # <http://www.shiffman.net/teaching/nature>
3
3
  # Spring 2010
4
4
  # PBox2D example
5
5
 
@@ -9,7 +9,7 @@ module SB
9
9
  include_package 'org.jbox2d.collision.shapes'
10
10
  include_package 'org.jbox2d.common'
11
11
  include_package 'org.jbox2d.dynamics'
12
- java_import 'pbox2d.PBox2D'
12
+ include_package 'shiffman.box2d'
13
13
 
14
14
 
15
15
 
@@ -1,14 +1,14 @@
1
1
  # The Nature of Code
2
2
  # <http:#www.shiffman.net/teaching/nature>
3
3
  # Spring 2011
4
- # PBox2D example
4
+ # Updated to use the updated library
5
+ # translated to ruby-processing 2 March 2014 by Martin Prout
6
+ # Box2DProcessing example
5
7
 
6
- # Box2D particle system example
8
+ load_libraries :box2d_processing, :particle_system
7
9
 
8
- load_library :pbox2d
9
- load_library :particle_system
10
10
 
11
- # module PS is a wrapper for java imports, and Boundary and Particle classes
11
+ # module PS is a wrapper for java packages, and Boundary and Particle classes
12
12
  include PS
13
13
 
14
14
  attr_reader :box2d, :boundaries, :systems
@@ -17,11 +17,11 @@ def setup
17
17
  size(400,300)
18
18
  smooth
19
19
  # Initialize box2d physics and create the world
20
- @box2d = PBox2D.new(self)
20
+ @box2d = PS::Box2DProcessing.new(self)
21
21
  box2d.create_world
22
22
  # We are setting a custom gravity
23
23
  box2d.set_gravity(0, -20)
24
- # Create ArrayLists
24
+ # Create Arrays
25
25
  @systems = []
26
26
  @boundaries = []
27
27
  # Add a bunch of fixed boundaries
@@ -1,11 +1,10 @@
1
1
  # The Nature of Code
2
2
  # <http://www.shiffman.net/teaching/nature>
3
3
  # Spring 2011
4
- # PBox2D example
4
+ # Box2DProcessing example
5
5
 
6
6
  # Basic example of falling rectangles
7
- load_library :pbox2d
8
- load_library :custom_shape
7
+ load_libraries :box2d_processing, :custom_shape
9
8
 
10
9
  # module B2D is a wrapper for java imports, and Boundary and CustomShape classes
11
10
  include B2D
@@ -16,7 +15,7 @@ def setup
16
15
  size(640,360)
17
16
  smooth
18
17
  # Initialize box2d physics and create the world
19
- @box2d = PBox2D.new(self)
18
+ @box2d = B2D::Box2DProcessing.new(self)
20
19
  box2d.create_world
21
20
  # We are setting a custom gravity
22
21
  box2d.set_gravity(0, -20)
@@ -46,11 +45,7 @@ def draw
46
45
 
47
46
  # polygons that leave the screen, we delete them
48
47
  # (note they have to be deleted from both the box2d world and our list
49
- polygons.each_with_index do |polygon, i|
50
- if polygon.done
51
- polygons.delete_at(i)
52
- end
53
- end
48
+ polygons.reject! { |p| p.done}
54
49
  end
55
50
 
56
51
  def mouse_pressed