ruby-processing 2.4.3 → 2.4.4

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.
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