ruby-processing 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+ v1.0.7 Stability...
2
+ * Added preliminary support for embedding Ruby-Processing in the Processing
3
+ IDE (see the ruby-processing-plugin project).
4
+ * Added 'width' and 'height' as methods that should get proxied down
5
+ to inner classes and classes that include the Processing::Proxy.
6
+ * Fixed a padding bug that put tiny gray margins on Windows and Linux.
7
+ * Updated JRuby to 1.2.0 final as well as the Processing libraries.
8
+ * Got a little bit better at detecting full-screen support on Linux.
9
+ * Fixed some applet and app exporting problems on Windows.
10
+ * The Boids library had a speed limit fix that should make 'em less flighty.
11
+ * Peter Krenn contributed a simple Pong example.
12
+
1
13
  v1.0.6 Inner Classes...
2
14
  * Java-style inner classes. Any inner class of a sketch will now have the
3
15
  Processing methods and constants proxied down for convenience.
Binary file
Binary file
@@ -14,13 +14,24 @@ require 'ruby-processing/helpers/numeric'
14
14
 
15
15
  # The top-level namespace, a home for all Ruby-Processing classes.
16
16
  module Processing
17
- VERSION = [1,0,6] unless defined? Processing::VERSION
17
+ VERSION = [1,0,7] unless defined? Processing::VERSION
18
18
 
19
19
  # Returns the current version of Ruby-Processing.
20
20
  def self.version
21
21
  VERSION.join('.')
22
22
  end
23
23
 
24
+ # Are we online -- inside an applet?
25
+ def self.online?
26
+ @online ||= defined?(JRUBY_APPLET)
27
+ end
28
+
29
+ # Are we embedded -- inside the Processing IDE?
30
+ def self.embedded?
31
+ @embedded ||= defined?(RP5_EMBEDDED)
32
+ end
33
+
34
+ # Autoload a number of constants that we may end up using.
24
35
  autoload :App, 'ruby-processing/app'
25
36
  autoload :Runner, 'ruby-processing/runner'
26
37
  autoload :Watcher, 'ruby-processing/runners/watch'
@@ -4,10 +4,10 @@
4
4
 
5
5
  require 'java'
6
6
 
7
- module Processing
7
+ module Processing
8
8
 
9
9
  # Conditionally load core.jar
10
- require "#{RP5_ROOT}/lib/core/core.jar" unless Object.const_defined?(:JRUBY_APPLET)
10
+ require "#{RP5_ROOT}/lib/core/core.jar" unless Processing.online? || Processing.embedded?
11
11
  import "processing.core"
12
12
 
13
13
  # This is the main Ruby-Processing class, and is what you'll
@@ -79,13 +79,6 @@ module Processing
79
79
  super(subclass)
80
80
  @sketch_class = subclass
81
81
  end
82
-
83
-
84
- # Are we running inside an applet?
85
- def self.online?
86
- @online ||= Object.const_defined?(:JRUBY_APPLET)
87
- end
88
- def online?; self.class.online?; end
89
82
 
90
83
 
91
84
  # Detect if a library has been loaded (for conditional loading)
@@ -113,7 +106,7 @@ module Processing
113
106
  def self.load_ruby_library(dir)
114
107
  dir = dir.to_sym
115
108
  return true if @@loaded_libraries[dir]
116
- if online?
109
+ if Processing.online?
117
110
  begin
118
111
  return @@loaded_libraries[dir] = (require "library/#{dir}/#{dir}")
119
112
  rescue LoadError => e
@@ -137,7 +130,7 @@ module Processing
137
130
  def self.load_java_library(dir)
138
131
  dir = dir.to_sym
139
132
  return true if @@loaded_libraries[dir]
140
- return @@loaded_libraries[dir] = !!(JRUBY_APPLET.get_parameter("archive").match(%r(#{dir}))) if online?
133
+ return @@loaded_libraries[dir] = !!(JRUBY_APPLET.get_parameter("archive").match(%r(#{dir}))) if Processing.online?
141
134
  local_path = "#{SKETCH_ROOT}/library/#{dir}"
142
135
  gem_path = "#{RP5_ROOT}/library/#{dir}"
143
136
  path = File.exists?(local_path) ? local_path : gem_path
@@ -172,8 +165,8 @@ module Processing
172
165
  super()
173
166
  $app = self
174
167
  proxy_java_fields
175
- set_sketch_path unless online?
176
- make_accessible_to_the_browser if online?
168
+ set_sketch_path unless Processing.online?
169
+ # make_accessible_to_the_browser if Processing.online?
177
170
  default_title = File.basename(Processing::SKETCH_PATH).sub(/(\.rb|\.pde)$/, '').titleize
178
171
  @width = options[:width] || DEFAULT_WIDTH
179
172
  @height = options[:height] || DEFAULT_HEIGHT
@@ -203,9 +196,7 @@ module Processing
203
196
  # If you'd like to do something fancy, feel free.
204
197
  def set_sketch_path(path=nil)
205
198
  field = @declared_fields['sketchPath']
206
- local = SKETCH_ROOT
207
- default = $__windows_app_mode__ ? "#{local}/lib" : local
208
- field.set_value(java_self, path || default)
199
+ field.set_value(java_self, path || SKETCH_ROOT)
209
200
  end
210
201
 
211
202
 
@@ -337,8 +328,8 @@ module Processing
337
328
  # Cleanly close and shutter a running sketch.
338
329
  def close
339
330
  $app = nil
340
- control_panel.remove if respond_to?(:control_panel) && !online?
341
- container = online? ? JRUBY_APPLET : @frame
331
+ control_panel.remove if respond_to?(:control_panel) && !Processing.online?
332
+ container = Processing.online? ? JRUBY_APPLET : @frame
342
333
  container.remove(self)
343
334
  self.destroy
344
335
  container.dispose
@@ -374,14 +365,13 @@ module Processing
374
365
  # Wait for init to get its grey tracksuit on and run a few laps.
375
366
  sleep 0.02 while default_size? && !finished? && !@@full_screen
376
367
 
377
- if online?
368
+ if Processing.online?
378
369
  display_in_an_applet
379
370
  elsif full_screen?
380
- # linux doesn't support full screen exclusive mode, but don't worry, it works very well
381
- display = java.awt.GraphicsEnvironment.get_local_graphics_environment.get_default_screen_device
371
+ display = java.awt.GraphicsEnvironment.local_graphics_environment.default_screen_device
382
372
  linux = java.lang.System.get_property("os.name") == "Linux"
383
- supported = display.full_screen_supported?
384
- supported || linux ? display_full_screen(display) : display_in_a_window
373
+ supported = display.full_screen_supported? || linux
374
+ supported ? display_full_screen(display) : display_in_a_window
385
375
  else
386
376
  display_in_a_window
387
377
  end
@@ -391,8 +381,8 @@ module Processing
391
381
 
392
382
  def display_full_screen(display)
393
383
  @frame = java.awt.Frame.new(display.default_configuration)
394
- mode = display.display_mode
395
- @width, @height = mode.get_width, mode.get_height
384
+ dimension = java.awt.Toolkit.default_toolkit.screen_size
385
+ @width, @height = dimension.width, dimension.height
396
386
  @frame.set_undecorated true
397
387
  @frame.set_ignore_repaint true
398
388
  @frame.set_background java.awt.Color.black
@@ -411,14 +401,15 @@ module Processing
411
401
  @frame.set_layout nil
412
402
  @frame.add self
413
403
  @frame.pack
414
- @frame.set_default_close_operation(javax.swing.JFrame::EXIT_ON_CLOSE)
415
- @frame.set_resizable(false)
416
- ins = @frame.get_insets
417
- hpad, vpad = ins.left + ins.right, ins.top + ins.bottom
418
- frame_width = [width, MIN_WINDOW_WIDTH].max + hpad
419
- frame_height = [height, MIN_WINDOW_HEIGHT].max + vpad
404
+ @frame.set_resizable false
405
+ @frame.set_default_close_operation Processing.embedded? ?
406
+ javax.swing.JFrame::DISPOSE_ON_CLOSE : javax.swing.JFrame::EXIT_ON_CLOSE
407
+ ins = @frame.get_insets
408
+ hpad, vpad = ins.left + ins.right, ins.top + ins.bottom
409
+ frame_width = [width, MIN_WINDOW_WIDTH].max + hpad
410
+ frame_height = [height, MIN_WINDOW_HEIGHT].max + vpad
420
411
  @frame.set_size(frame_width, frame_height)
421
- set_bounds((frame_width - width) / 2.0, (frame_height - vpad - height) / 2.0, width, height)
412
+ set_bounds((frame_width - hpad - width) / 2.0, (frame_height - vpad - height) / 2.0, width, height)
422
413
  @frame.show
423
414
  end
424
415
 
@@ -437,14 +428,15 @@ module Processing
437
428
  # When the net library is included, we make the Ruby interpreter
438
429
  # accessible to javascript as the 'ruby' variable. From javascript,
439
430
  # you can call evalScriptlet() to run code against the sketch.
440
- def make_accessible_to_the_browser
441
- return unless library_loaded?('net')
442
- field = java.lang.Class.for_name("org.jruby.JRubyApplet").get_declared_field("runtime")
443
- field.set_accessible true
444
- ruby = field.get(JRUBY_APPLET)
445
- window = Java::netscape.javascript.JSObject.get_window(JRUBY_APPLET)
446
- window.set_member('ruby', ruby)
447
- end
431
+ #
432
+ # def make_accessible_to_the_browser
433
+ # return unless library_loaded?('net')
434
+ # field = java.lang.Class.for_name("org.jruby.JRubyApplet").get_declared_field("runtime")
435
+ # field.set_accessible true
436
+ # ruby = field.get(JRUBY_APPLET)
437
+ # window = Java::netscape.javascript.JSObject.get_window(JRUBY_APPLET)
438
+ # window.set_member('ruby', ruby)
439
+ # end
448
440
 
449
441
  end # Processing::App
450
442
 
@@ -459,6 +451,7 @@ module Processing
459
451
  def self.desired_method_names
460
452
  bad_method = /__/ # Internal JRuby methods.
461
453
  unwanted = PApplet.superclass.instance_methods + Object.instance_methods
454
+ unwanted -= ['width', 'height']
462
455
  methods = Processing::App.public_instance_methods
463
456
  methods.reject {|m| unwanted.include?(m) || bad_method.match(m) }
464
457
  end
@@ -122,7 +122,7 @@ module Processing
122
122
  def spin_up(starter_script, sketch)
123
123
  runner = "#{RP5_ROOT}/lib/ruby-processing/runners/#{starter_script}"
124
124
  java_args = discover_java_args(sketch)
125
- command = "java #{java_args} -cp #{jruby_complete} #{dock_icon} org.jruby.Main #{runner} #{sketch}"
125
+ command = "java #{java_args} -cp \"#{jruby_complete}\" #{dock_icon} org.jruby.Main \"#{runner}\" #{sketch}"
126
126
  exec(command)
127
127
  # exec replaces the Ruby process with the JRuby one.
128
128
  end
@@ -45,7 +45,7 @@ module Processing
45
45
 
46
46
  # Read in the sketch source code. Needs to work both online and offline.
47
47
  def self.read_sketch_source
48
- if Processing::App.online?
48
+ if Processing.online?
49
49
  # Fuck the following lines. Fucking Java can go sit on broken glass.
50
50
  source = ''
51
51
  url = java.net.URL.new(JRUBY_APPLET.get_code_base, Processing::SKETCH_PATH)
@@ -1,11 +1,7 @@
1
- # Windows apps start life in the wrong folder.
2
- # TODO: Fix this crud as soon as possible.
3
- if ARGV[1] == '--windows-app'
4
- ARGV[1] = nil
5
- Dir.chdir('lib')
6
- $__windows_app_mode__ = true
7
- end
1
+ # TODO: this is crud. Windows applets are having serious
2
+ # trouble with absolute paths.
8
3
 
9
- require "#{File.dirname(__FILE__)}/base.rb"
4
+ root = defined?(JRUBY_APPLET) ? 'ruby-processing/runners' : File.dirname(__FILE__)
5
+ require "#{root}/base.rb"
10
6
 
11
7
  Processing.load_and_run_sketch
@@ -77,7 +77,6 @@
77
77
  <param name="archive" value="<%= @file_list %>" />
78
78
  <param name="jruby.eval" value="ARGV[0] = '<%= @main_file %>'; require 'ruby-processing/runners/run.rb'" />
79
79
  <param name="image" value="images/ruby.jpg" />
80
- <param name="centerimage" value="true" />
81
80
  <param name="boxmessage" value="Loading <%= @title %>..." />
82
81
  <param name="lang" value="en" />
83
82
  <param name="mayscript" value="true" />
@@ -1,3 +1,3 @@
1
1
 
2
- org.jruby.Main lib/ruby-processing/runners/run.rb <%= @main_file %> --windows-app
2
+ org.jruby.Main lib/ruby-processing/runners/run.rb lib/<%= @main_file %>
3
3
  <%= @windows_class_path %>
@@ -55,9 +55,12 @@ class Boid
55
55
 
56
56
  def limit(max=30.0)
57
57
  # Tweet, Tweet! The boid police will bust you for breaking the speed limit.
58
- @vx = (@vx/@vx.abs) * max if @vx.abs > max
59
- @vy = (@vy/@vy.abs) * max if @vy.abs > max
60
- @vz = (@vz/@vz.abs) * max if @vz.abs > max
58
+ most = [@vx.abs, @vy.abs, @vz.abs].max
59
+ return if most < max
60
+ scale = max / most.to_f
61
+ @vx *= scale
62
+ @vy *= scale
63
+ @vz *= scale
61
64
  end
62
65
 
63
66
  def angle
@@ -145,7 +145,7 @@ module ControlPanel
145
145
 
146
146
  module InstanceMethods
147
147
  def control_panel
148
- return if Processing::App.online?
148
+ return if Processing.online?
149
149
  @control_panel = ControlPanel::Panel.new unless @control_panel
150
150
  return @control_panel unless block_given?
151
151
  yield(@control_panel)
Binary file
Binary file
File without changes
Binary file
@@ -12,7 +12,7 @@
12
12
  # -- omygawshkenas
13
13
 
14
14
  class Sketch < Processing::App
15
- load_libraries :control_panel, :net
15
+ load_library :control_panel
16
16
 
17
17
  attr_accessor :x_wiggle, :y_wiggle, :magnitude, :bluish
18
18
 
@@ -0,0 +1,175 @@
1
+ # Simple pong clone to demonstrate keyboard input and basic collision detection
2
+ # Left paddle is controlled with 'a' and 'z', right with ''' and '/'
3
+
4
+ class Sketch < Processing::App
5
+ def setup
6
+ smooth
7
+ ellipse_mode(CENTER)
8
+ no_fill
9
+ stroke(255)
10
+ frame_rate(60)
11
+
12
+ @left_paddle = Paddle.new(width / 4, height / 2)
13
+ @right_paddle = Paddle.new(width / 4 * 3, height / 2)
14
+ @ball = Ball.new(width / 2, height / 2)
15
+ end
16
+
17
+ def draw
18
+ background(0)
19
+
20
+ paddles.each { |paddle| paddle.update }
21
+
22
+ @ball.collide_with_boundaries
23
+ paddles.each { |paddle| @ball.collide_with_paddle(paddle) }
24
+ @ball.move
25
+
26
+ paddles.each { |paddle| paddle.draw }
27
+ @ball.draw
28
+ end
29
+
30
+ def paddles
31
+ return @left_paddle, @right_paddle
32
+ end
33
+
34
+ def key_pressed
35
+ case key
36
+ when 'a' then @left_paddle.direction = -1
37
+ when 'z' then @left_paddle.direction = 1
38
+ when '\'' then @right_paddle.direction = -1
39
+ when '/' then @right_paddle.direction = 1
40
+ end
41
+ end
42
+
43
+ def key_released
44
+ case key
45
+ when 'a', 'z' then @left_paddle.direction = 0
46
+ when '\'', '/' then @right_paddle.direction = 0
47
+ end
48
+ end
49
+
50
+ class Paddle
51
+ attr_accessor :position, :radius, :direction
52
+
53
+ def initialize(x, y)
54
+ @position = Vector.new(x, y)
55
+ @radius = 20
56
+ @direction = 0
57
+ @speed = 2
58
+ end
59
+
60
+ def draw
61
+ stroke_weight(2)
62
+ ellipse(@position.x, @position.y, @radius * 2, @radius * 2)
63
+ end
64
+
65
+ def update
66
+ move
67
+ collide_with_boundaries
68
+ end
69
+
70
+ def move
71
+ @position.y += @direction * @speed
72
+ end
73
+
74
+ def collide_with_boundaries
75
+ @position.y = @position.y < @radius ? @radius : @position.y > height - @radius ? height - @radius : @position.y
76
+ end
77
+ end
78
+
79
+ class Ball
80
+ attr_accessor :position, :velocity, :radius
81
+
82
+ def initialize(x, y)
83
+ @position = Vector.new(x, y)
84
+ @velocity = Vector.new(2, 0)
85
+ @radius = 5
86
+ end
87
+
88
+ def draw
89
+ stroke_weight(1)
90
+ ellipse(@position.x, @position.y, @radius * 2, @radius * 2)
91
+ end
92
+
93
+ def move
94
+ @position += @velocity
95
+ end
96
+
97
+ def collide_with_boundaries
98
+ if position.x <= radius || position.x >= width - radius
99
+ velocity.x *= -1
100
+ elsif position.y <= radius || position.y >= height - radius
101
+ velocity.y *= -1
102
+ end
103
+ end
104
+
105
+ def collide_with_paddle(paddle)
106
+ # Check for collision
107
+ distance_vector = position - paddle.position
108
+ return unless distance_vector.squared_length <= (radius + paddle.radius) ** 2
109
+
110
+ # Calculate new velocity
111
+ normal = distance_vector.normal.normalized
112
+ @velocity = normal * (velocity * normal) * 2 - velocity
113
+
114
+ # Move ball to correct position
115
+ @position = paddle.position + distance_vector.normalized * (2 * (radius + paddle.radius) - distance_vector.length)
116
+ end
117
+ end
118
+
119
+ class Vector
120
+ attr_accessor :x, :y
121
+
122
+ def initialize(x, y)
123
+ @x, @y = x, y
124
+ end
125
+
126
+ def +(other)
127
+ if other.is_a?(Numeric)
128
+ Vector.new(@x + other, @y + other)
129
+ elsif other.is_a?(Vector)
130
+ Vector.new(@x + other.x, @y + other.y)
131
+ else
132
+ self
133
+ end
134
+ end
135
+
136
+ def -(other)
137
+ if other.is_a?(Numeric)
138
+ Vector.new(@x - other, @y - other)
139
+ elsif other.is_a?(Vector)
140
+ Vector.new(@x - other.x, @y - other.y)
141
+ else
142
+ self
143
+ end
144
+ end
145
+
146
+ def *(other)
147
+ if other.is_a?(Numeric)
148
+ Vector.new(@x * other, @y * other)
149
+ elsif other.is_a?(Vector)
150
+ @x * other.x + @y * other.y
151
+ else
152
+ self
153
+ end
154
+ end
155
+
156
+ def length
157
+ Math::sqrt(@x * @x + @y * @y)
158
+ end
159
+
160
+ def squared_length
161
+ @x * @x + @y * @y
162
+ end
163
+
164
+ def normal
165
+ Vector.new(-@y, @x)
166
+ end
167
+
168
+ def normalized
169
+ length = self.length
170
+ Vector.new(@x / length, @y / length)
171
+ end
172
+ end
173
+ end
174
+
175
+ Sketch.new :width => 800, :height => 400
@@ -4,9 +4,40 @@
4
4
  # time. A ParticleSystem (Array) object manages a variable size list of
5
5
  # particles.
6
6
 
7
- require 'ruby-processing'
7
+ module Runnable
8
+ def run
9
+ self.reject! { |particle| particle.dead? }
10
+ self.each { |particle| particle.run }
11
+ end
12
+ end
13
+
14
+ class Vector
15
+ attr_accessor :x, :y
16
+
17
+ def initialize(x, y)
18
+ @x, @y = x, y
19
+ end
20
+
21
+ def +(other)
22
+ if other.is_a?(Numeric)
23
+ Vector.new(@x + other, @y + other)
24
+ elsif other.is_a?(Vector)
25
+ Vector.new(@x + other.x, @y + other.y)
26
+ else
27
+ self
28
+ end
29
+ end
30
+
31
+ def heading
32
+ -1 * Math::atan2(-@y, @x)
33
+ end
8
34
 
9
- class SimpleParticleSystem < Processing::App
35
+ def magnitude
36
+ @x * @x + @y * @y
37
+ end
38
+ end
39
+
40
+ class Sketch < Processing::App
10
41
  def setup
11
42
  smooth
12
43
  color_mode(RGB, 255, 255, 255, 100)
@@ -22,13 +53,6 @@ class SimpleParticleSystem < Processing::App
22
53
  @particles << Particle.new(Vector.new(mouse_x, mouse_y))
23
54
  end
24
55
 
25
- module Runnable
26
- def run
27
- self.reject! { |particle| particle.dead? }
28
- self.each { |particle| particle.run }
29
- end
30
- end
31
-
32
56
  class Particle
33
57
  def initialize(origin)
34
58
  @origin = origin
@@ -59,55 +83,29 @@ class SimpleParticleSystem < Processing::App
59
83
  end
60
84
 
61
85
  def render
62
- $app.stroke(255, @lifespan)
63
- $app.fill(100, @lifespan)
64
- $app.ellipse(@origin.x, @origin.y, @radius, @radius)
86
+ stroke(255, @lifespan)
87
+ fill(100, @lifespan)
88
+ ellipse(@origin.x, @origin.y, @radius, @radius)
65
89
  end
66
90
 
67
91
  def render_velocity_vector
68
92
  scale = 10
69
93
  arrow_size = 4
70
94
 
71
- $app.push_matrix
95
+ push_matrix
72
96
 
73
- $app.translate(@origin.x, @origin.y)
74
- $app.rotate(@velocity.heading)
97
+ translate(@origin.x, @origin.y)
98
+ rotate(@velocity.heading)
75
99
 
76
100
  length = @velocity.magnitude * scale
77
101
 
78
- $app.line 0, 0, length, 0
79
- $app.line length, 0, length - arrow_size, arrow_size / 2
80
- $app.line length, 0, length - arrow_size, -arrow_size / 2
81
-
82
- $app.pop_matrix
83
- end
84
- end
85
-
86
- class Vector
87
- attr_accessor :x, :y
88
-
89
- def initialize(x, y)
90
- @x, @y = x, y
91
- end
92
-
93
- def +(other)
94
- if other.is_a?(Numeric)
95
- Vector.new(@x + other, @y + other)
96
- elsif other.is_a?(Vector)
97
- Vector.new(@x + other.x, @y + other.y)
98
- else
99
- self
100
- end
101
- end
102
-
103
- def heading
104
- -1 * Math::atan2(-@y, @x)
105
- end
102
+ line 0, 0, length, 0
103
+ line length, 0, length - arrow_size, arrow_size / 2
104
+ line length, 0, length - arrow_size, -arrow_size / 2
106
105
 
107
- def magnitude
108
- @x * @x + @y * @y
106
+ pop_matrix
109
107
  end
110
108
  end
111
109
  end
112
110
 
113
- $app = SimpleParticleSystem.new :width => 640, :height => 340, :title => 'SimpleParticleSystem'
111
+ Sketch.new :width => 640, :height => 340
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-processing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Ashkenas
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2009-04-05 00:00:00 -04:00
20
+ date: 2009-04-22 00:00:00 -04:00
21
21
  default_executable: rp5
22
22
  dependencies: []
23
23
 
@@ -89,11 +89,6 @@ files:
89
89
  - library/control_panel
90
90
  - library/control_panel/control_panel.rb
91
91
  - library/dxf
92
- - library/dxf/bin
93
- - library/dxf/bin/processing
94
- - library/dxf/bin/processing/dxf
95
- - library/dxf/bin/processing/dxf/RawDXF.class
96
- - library/dxf/dxfviewer.jar
97
92
  - library/dxf/library
98
93
  - library/dxf/library/dxf.jar
99
94
  - library/javascript
@@ -112,11 +107,6 @@ files:
112
107
  - library/minim/license.txt
113
108
  - library/minim/version.txt
114
109
  - library/net
115
- - library/net/bin
116
- - library/net/bin/processing
117
- - library/net/bin/processing/net
118
- - library/net/bin/processing/net/Client.class
119
- - library/net/bin/processing/net/Server.class
120
110
  - library/net/library
121
111
  - library/net/library/net.jar
122
112
  - library/opengl
@@ -157,10 +147,6 @@ files:
157
147
  - library/pdf/library/pdf.jar
158
148
  - library/pdf/notes.txt
159
149
  - library/serial
160
- - library/serial/bin
161
- - library/serial/bin/processing
162
- - library/serial/bin/processing/serial
163
- - library/serial/bin/processing/serial/Serial.class
164
150
  - library/serial/library
165
151
  - library/serial/library/export.txt
166
152
  - library/serial/library/librxtxSerial.jnilib
@@ -169,12 +155,6 @@ files:
169
155
  - library/serial/library/rxtxSerial.dll
170
156
  - library/serial/library/serial.jar
171
157
  - library/video
172
- - library/video/bin
173
- - library/video/bin/processing
174
- - library/video/bin/processing/video
175
- - library/video/bin/processing/video/Capture.class
176
- - library/video/bin/processing/video/Movie.class
177
- - library/video/bin/processing/video/MovieMaker.class
178
158
  - library/video/library
179
159
  - library/video/library/video.jar
180
160
  - samples/animator.rb
@@ -186,6 +166,7 @@ files:
186
166
  - samples/getting_started.rb
187
167
  - samples/jwishy.rb
188
168
  - samples/orbit.rb
169
+ - samples/pong.rb
189
170
  - samples/processing_app
190
171
  - samples/processing_app/3D
191
172
  - samples/processing_app/3D/camera
Binary file