rubysketch 0.5.2 → 0.5.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ccbb3ec25a88b53bba2570b98bce4e809f6e4cbe68ffe9d3ecd0632934d75e2c
4
- data.tar.gz: 47bc1c14d77513954b4bae6a5611b802c99836ad2474d2232d35ef92def908a1
3
+ metadata.gz: 2aae68b50056538ec9f1de57091af05176af8b629331d40e16b640de83d4a610
4
+ data.tar.gz: 8929fd46a62eeb5457f386a72b255d3a6267fc1380bb29aabe9b093a722ecb34
5
5
  SHA512:
6
- metadata.gz: 2ad5c3d346dfd79446ad795e00c7b148baeb1bdee3600d6b628d1ba6f5c366273aa71986016500649ed36944022e418d1a5f012ccd4d808b6546e6fbed1eb9e2
7
- data.tar.gz: 3c657e0ef7fdefc37d370246d881b0d976805d74c1ee22b99b7470fb502aacf5de1d7bba0991f7b1534e3d8a43114da7b05cf6336bebb43bd9d90d57b8328d69
6
+ metadata.gz: fe6b88ffc3d9ee14f6b9206df4b554d498cd6a4b5b13a21baf8a6b0cfcebec4888322d12f6cee09829cc7a1038ad9ad2854945d5bb4e8706337bbfa310c113ab
7
+ data.tar.gz: 56dac7438fb09ed3d8164e390e44dc785be289e6c4a4e5c3b9550fd5363c87f0a5a05f94806b6f68e691019e9297e2be6710435c5b0cafa35b2527ca1d7d1124
@@ -24,7 +24,7 @@ jobs:
24
24
  run: gem install yard
25
25
 
26
26
  - name: test
27
- run: rake test
27
+ run: rake quiet test
28
28
 
29
29
  - name: create gem
30
30
  id: gem
data/ChangeLog.md CHANGED
@@ -1,6 +1,16 @@
1
1
  # rubysketch ChangeLog
2
2
 
3
3
 
4
+ ## [v0.5.3] - 2023-04-22
5
+
6
+ - Depends on Beeps
7
+ - Update RubySketch.podspec to include beeps, rays, reflex, and processing libs
8
+ - Add RubySketch.h and RubySketch.mm
9
+ - Add Sound class and loadSound()
10
+ - Add vx, vy accessors and will_contact? callback to Sprite class
11
+ - Add RubySketch::Window andd calls Beeps.process_streams!
12
+
13
+
4
14
  ## [v0.5.2] - 2023-03-02
5
15
 
6
16
  - depend to processing-0.5.2 gem
data/RubySketch.podspec CHANGED
@@ -14,16 +14,105 @@ Pod::Spec.new do |s|
14
14
  s.osx.deployment_target = "10.10"
15
15
  s.ios.deployment_target = "10.0"
16
16
 
17
- incdirs = %W[
18
- #{s.name}/src
19
- CRuby/CRuby/include
20
- Reflexion/reflex/include
21
- RubyProcessing/src
22
- ].map {|s| "${PODS_ROOT}/#{s}"}
23
-
24
- s.preserve_paths = "src"
25
- s.source_files = "src/*.mm"
26
- s.xcconfig = {"HEADER_SEARCH_PATHS" => incdirs.join(' ')}
27
-
28
- s.resource_bundles = {'RubySketch' => %w[lib VERSION]}
17
+ root = "${PODS_ROOT}/#{s.name}"
18
+ exts = File.read(File.expand_path 'Rakefile', __dir__)
19
+ .lines(chomp: true)
20
+ .map {|line| line[%r|require\s*['"](\w+)/extension['"]|, 1]}
21
+ .compact - [s.name.downcase]
22
+
23
+ incdirs = exts.map {|x| "#{root}/#{x}/include"}.concat %W[
24
+ #{root}/src
25
+ #{root}/beeps/vendor/stk/include
26
+ #{root}/rays/vendor/glm
27
+ #{root}/rays/vendor/clipper/cpp
28
+ #{root}/rays/vendor/poly2tri/poly2tri
29
+ #{root}/rays/vendor/splines-lib
30
+ #{root}/reflex/vendor/Box2D/Box2D
31
+ ${PODS_ROOT}/CRuby/CRuby/include
32
+ ]
33
+
34
+ s.prepare_command = 'rake -f pod.rake setup'
35
+ s.preserve_paths = exts + %w[src]
36
+ s.requires_arc = false
37
+ s.osx.compiler_flags = "-DOSX"
38
+ s.ios.compiler_flags = "-DIOS"
39
+ s.library = %w[c++]
40
+ s.xcconfig = {
41
+ "CLANG_CXX_LANGUAGE_STANDARD" => 'c++20',
42
+ "HEADER_SEARCH_PATHS" => incdirs.join(' ')
43
+ }
44
+
45
+ #s.dependency = 'CRuby', git: 'https://github.com/xord/cruby'
46
+
47
+ s.source_files = "src/*.mm"
48
+ s.resource_bundles =
49
+ exts.each_with_object({'RubySketch' => %w[lib VERSION]}) do |ext, hash|
50
+ hash[ext.capitalize] = %W[#{ext}/lib VERSION]
51
+ end
52
+
53
+ s.subspec "Xot" do |spec|
54
+ spec.source_files = "xot/src/*.cpp"
55
+ end
56
+
57
+ s.subspec "Rucy" do |spec|
58
+ spec.source_files = "rucy/src/*.cpp"
59
+
60
+ spec.subspec "Ext" do |ext|
61
+ ext.source_files = "rucy/ext/rucy/*.cpp"
62
+ end
63
+ end
64
+
65
+ s.subspec "Beeps" do |spec|
66
+ spec.source_files = "beeps/src/*.cpp"
67
+ spec.frameworks = %w[OpenAL]
68
+
69
+ spec.subspec "STK" do |sub|
70
+ sub.source_files = "beeps/vendor/stk/src/*.cpp"
71
+ sub.exclude_files = %W[Tcp Udp Socket Thread Mutex InetWv Rt].map {|s|
72
+ "beeps/vendor/stk/src/#{s}*.cpp"
73
+ }
74
+ end
75
+
76
+ spec.subspec "Ext" do |ext|
77
+ ext.source_files = "beeps/ext/beeps/*.cpp"
78
+ end
79
+ end
80
+
81
+ s.subspec "Rays" do |spec|
82
+ spec .source_files = "rays/src/*.cpp"
83
+ spec.osx.source_files = "rays/src/osx/*.{cpp,mm}"
84
+ spec.ios.source_files = "rays/src/ios/*.{cpp,mm}"
85
+ spec.ios.frameworks = %w[GLKit MobileCoreServices AVFoundation]# ImageIO
86
+
87
+ spec.subspec "Clipper" do |sub|
88
+ sub.source_files = "rays/vendor/clipper/cpp/*.cpp"
89
+ end
90
+
91
+ spec.subspec "Poly2Tri" do |sub|
92
+ sub.source_files = "rays/vendor/poly2tri/poly2tri/**/*.cc"
93
+ end
94
+
95
+ spec.subspec "SplineLib" do |sub|
96
+ sub.source_files = "rays/vendor/splines-lib/Splines.cpp"
97
+ end
98
+
99
+ spec.subspec "Ext" do |ext|
100
+ ext.source_files = "rays/ext/rays/*.cpp"
101
+ end
102
+ end
103
+
104
+ s.subspec "Reflex" do |spec|
105
+ spec .source_files = "reflex/src/*.cpp"
106
+ spec.osx.source_files = "reflex/src/osx/*.{cpp,mm}"
107
+ spec.ios.source_files = "reflex/src/ios/*.{cpp,mm}"
108
+ spec.ios.frameworks = %w[CoreMotion]
109
+
110
+ spec.subspec "Box2D" do |sub|
111
+ sub.source_files = "reflex/vendor/Box2D/Box2D/Box2D/**/*.cpp"
112
+ end
113
+
114
+ spec.subspec "Ext" do |ext|
115
+ ext.source_files = "reflex/ext/reflex/*.cpp"
116
+ end
117
+ end
29
118
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.2
1
+ 0.5.3
data/examples/hello.rb CHANGED
@@ -1,4 +1,4 @@
1
- %w[xot rays reflex processing rubysketch]
1
+ %w[xot rucy beeps rays reflex processing rubysketch]
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
@@ -1,9 +1,12 @@
1
1
  require 'forwardable'
2
+ require 'beeps'
2
3
  require 'processing/all'
3
4
 
4
5
  require 'rubysketch/extension'
6
+ require 'rubysketch/window'
5
7
  require 'rubysketch/helper'
6
8
 
7
9
  require 'rubysketch/sprite'
10
+ require 'rubysketch/sound'
8
11
  require 'rubysketch/graphics_context'
9
12
  require 'rubysketch/context'
@@ -24,6 +24,10 @@ module RubySketch
24
24
  sprite
25
25
  end
26
26
 
27
+ def loadSound(path)
28
+ Sound.load path
29
+ end
30
+
27
31
  def gravity(*args)
28
32
  x, y =
29
33
  case args
@@ -0,0 +1,55 @@
1
+ module RubySketch
2
+
3
+
4
+ class Sound
5
+
6
+ # @private
7
+ def initialize(sound)
8
+ @sound = sound
9
+ end
10
+
11
+ def play()
12
+ old = @player
13
+ @player = @sound.play
14
+ old&.stop
15
+ true
16
+ end
17
+
18
+ def pause()
19
+ return false unless @player
20
+ @player.pause
21
+ true
22
+ end
23
+
24
+ def stop()
25
+ return false unless @player
26
+ @player.stop
27
+ @player = nil
28
+ true
29
+ end
30
+
31
+ def playing?()
32
+ @player ? @player.playing? : false
33
+ end
34
+
35
+ def paused?()
36
+ !playing? && !stopped?
37
+ end
38
+
39
+ def stopped?()
40
+ @player ? @player.stopped? : true
41
+ end
42
+
43
+ def save(path)
44
+ @sound.save path
45
+ end
46
+
47
+ def self.load(path)
48
+ f = Beeps::FileIn.new path
49
+ self.new Beeps::Sound.new(f, f.seconds, nchannels: f.nchannels)
50
+ end
51
+
52
+ end# Sound
53
+
54
+
55
+ end# RubySketch
@@ -25,11 +25,15 @@ module RubySketch
25
25
  :restitution, :restitution=
26
26
 
27
27
  def update(&block)
28
- @view__.update = block
28
+ @view__.on_update = block
29
29
  end
30
30
 
31
31
  def contact(&block)
32
- @view__.contact = block
32
+ @view__.on_contact = block
33
+ end
34
+
35
+ def contact?(&block)
36
+ @view__.will_contact = block
33
37
  end
34
38
 
35
39
  def position()
@@ -60,6 +64,24 @@ module RubySketch
60
64
  @view__.velocity = vector.getInternal__
61
65
  end
62
66
 
67
+ def vx()
68
+ @view__.velocity.x
69
+ end
70
+
71
+ def vx=(value)
72
+ @view__.velocity = @view__.velocity.tap {|v| v.x = value}
73
+ value
74
+ end
75
+
76
+ def vy()
77
+ @view__.velocity.y
78
+ end
79
+
80
+ def vy=(value)
81
+ @view__.velocity = @view__.velocity.tap {|v| v.y = value}
82
+ value
83
+ end
84
+
63
85
  alias pos position
64
86
  alias pos= position=
65
87
  alias vel velocity
@@ -77,7 +99,7 @@ module RubySketch
77
99
  end
78
100
 
79
101
  class View < Reflex::View
80
- attr_accessor :update, :contact
102
+ attr_accessor :update, :contact, :will_contact
81
103
  attr_reader :sprite
82
104
 
83
105
  def initialize(sprite, *a, **k, &b)
@@ -93,6 +115,11 @@ module RubySketch
93
115
  v = e.view
94
116
  @contact.call v.sprite, e.action if @contact && v.is_a?(View)
95
117
  end
118
+
119
+ def will_contact?(v)
120
+ return true if !@will_contact || !v.is_a?(View)
121
+ @will_contact.call v.sprite
122
+ end
96
123
  end
97
124
 
98
125
  end# Sprite
@@ -0,0 +1,13 @@
1
+ module RubySketch
2
+
3
+
4
+ class Window < Processing::Window
5
+
6
+ def on_update(e)
7
+ Beeps.process_streams!
8
+ end
9
+
10
+ end# Window
11
+
12
+
13
+ end# RubySketch
data/lib/rubysketch.rb CHANGED
@@ -2,7 +2,7 @@ require 'rubysketch/all'
2
2
 
3
3
 
4
4
  module RubySketch
5
- WINDOW = Processing::Window.new {start}
5
+ WINDOW = RubySketch::Window.new {start}
6
6
  CONTEXT = RubySketch::Context.new WINDOW
7
7
 
8
8
  refine Object do
@@ -25,6 +25,6 @@ begin
25
25
  w.__send__ :begin_draw
26
26
  at_exit do
27
27
  w.__send__ :end_draw
28
- Processing::App.new {w.show}.start if c.hasDrawBlock__ && !$!
28
+ Processing::App.new {w.show}.start if c.hasUserBlocks__ && !$!
29
29
  end
30
30
  end
data/pod.rake ADDED
@@ -0,0 +1,33 @@
1
+ # -*- mode: ruby -*-
2
+
3
+
4
+ github = 'https://github.com/xord'
5
+ renames = {reflexion: 'reflex'}
6
+ regexp = /add\w+dependency.*['"](\w+)['"].*['"]\s*~>\s*([\d\.]+)\s*['"]/
7
+ repos = File.readlines('rubysketch.gemspec', chomp: true)
8
+ .map {|s| regexp.match(s)&.values_at 1, 2}
9
+ .compact
10
+ .to_h
11
+ .transform_keys {|name| renames[name.to_sym].then {|s| s || name}}
12
+
13
+
14
+ task :clobber do
15
+ sh %( rm -rf #{repos.keys.join ' '} )
16
+ end
17
+
18
+ task :setup
19
+
20
+ repos.each do |repo, ver|
21
+ rakefile = "#{repo}/Rakefile"
22
+ opts = {
23
+ depth: 1,
24
+ branch: (ENV['RUBYSKETCH_BRANCH'] || "v#{ver}")
25
+ }.map {|k, v| "--#{k} #{v}"}.join ' '
26
+
27
+ task :setup => rakefile
28
+
29
+ file rakefile do
30
+ sh %( git clone #{opts} #{github}/#{repo} )
31
+ sh %( cd #{repo} && VENDOR_NOCOMPILE=1 rake vendor erb )
32
+ end
33
+ end
data/rubysketch.gemspec CHANGED
@@ -28,12 +28,12 @@ Gem::Specification.new do |s|
28
28
  s.platform = Gem::Platform::RUBY
29
29
  s.required_ruby_version = '>= 2.7.0'
30
30
 
31
- s.add_runtime_dependency 'xot', '~> 0.1.32'
32
- s.add_runtime_dependency 'rucy', '~> 0.1.32'
33
- s.add_runtime_dependency 'beeps', '~> 0.1.32'
34
- s.add_runtime_dependency 'rays', '~> 0.1.32'
35
- s.add_runtime_dependency 'reflexion', '~> 0.1.32'
36
- s.add_runtime_dependency 'processing', '~> 0.5.2'
31
+ s.add_runtime_dependency 'xot', '~> 0.1.33'
32
+ s.add_runtime_dependency 'rucy', '~> 0.1.33'
33
+ s.add_runtime_dependency 'beeps', '~> 0.1.33'
34
+ s.add_runtime_dependency 'rays', '~> 0.1.33'
35
+ s.add_runtime_dependency 'reflexion', '~> 0.1.33'
36
+ s.add_runtime_dependency 'processing', '~> 0.5.3'
37
37
 
38
38
  s.add_development_dependency 'rake'
39
39
  s.add_development_dependency 'test-unit'
data/src/RubySketch.h ADDED
@@ -0,0 +1,22 @@
1
+ // -*- mode: objc -*-
2
+ #import <Foundation/Foundation.h>
3
+ #import <CRBValue.h>
4
+
5
+
6
+ @interface RubySketch : NSObject
7
+
8
+ typedef void (^RescueBlock) (CRBValue* exception);
9
+
10
+ + (void) setup;
11
+
12
+ + (BOOL) start;
13
+ + (BOOL) startWithRescue: (RescueBlock) rescue;
14
+
15
+ + (BOOL) start: (NSString*) path;
16
+ + (BOOL) start: (NSString*) path rescue: (RescueBlock) rescue;
17
+
18
+ + (void) setActiveReflexViewController: (id) reflexViewController;
19
+
20
+ + (void) resetActiveReflexViewController;
21
+
22
+ @end
data/src/RubySketch.mm ADDED
@@ -0,0 +1,92 @@
1
+ // -*- mode: objc -*-
2
+ #import <CRuby.h>
3
+ #import "RubySketch.h"
4
+ #include "../reflex/src/ios/view_controller.h"
5
+
6
+
7
+ extern "C"
8
+ {
9
+ void Init_beeps_native ();
10
+ void Init_rays_native ();
11
+ void Init_reflex_native ();
12
+ }
13
+
14
+
15
+ static ReflexViewController* active_reflex_view_controller = nil;
16
+
17
+ static ReflexViewController*
18
+ ReflexViewController_create()
19
+ {
20
+ return active_reflex_view_controller;
21
+ }
22
+
23
+ static void
24
+ ReflexViewController_show (UIViewController*, ReflexViewController*)
25
+ {
26
+ }
27
+
28
+
29
+ @implementation RubySketch
30
+
31
+ + (void) setup
32
+ {
33
+ static BOOL done = NO;
34
+ if (done) return;
35
+ done = YES;
36
+
37
+ [CRuby addExtension:@"beeps/native" init:^{Init_beeps_native();}];
38
+ [CRuby addExtension:@"rays/native" init:^{Init_rays_native();}];
39
+ [CRuby addExtension:@"reflex/native" init:^{Init_reflex_native();}];
40
+
41
+ for (NSString *ext in @[
42
+ @"Xot",
43
+ @"Rucy",
44
+ @"Beeps",
45
+ @"Rays",
46
+ @"Reflex",
47
+ @"Processing",
48
+ @"RubySketch"
49
+ ]) [CRuby addLibrary:ext bundle:[NSBundle bundleForClass:RubySketch.class]];
50
+
51
+ ReflexViewController_set_create_fun(ReflexViewController_create);
52
+ ReflexViewController_set_show_fun(ReflexViewController_show);
53
+ }
54
+
55
+ + (BOOL) start
56
+ {
57
+ return [self start:@"main.rb" rescue:nil];
58
+ }
59
+
60
+ + (BOOL) startWithRescue: (RescueBlock) rescue
61
+ {
62
+ return [self start:@"main.rb" rescue:rescue];
63
+ }
64
+
65
+ + (BOOL) start: (NSString*) path
66
+ {
67
+ return [self start:path rescue:nil];
68
+ }
69
+
70
+ + (BOOL) start: (NSString*) path rescue: (RescueBlock) rescue
71
+ {
72
+ CRBValue* ret = [CRuby evaluate:[NSString stringWithFormat:@
73
+ "raise 'already started' unless require 'rubysketch'\n"
74
+ "load '%@'\n"
75
+ "RubySketch::WINDOW.__send__ :end_draw\n"
76
+ "RubySketch::WINDOW.show",
77
+ path
78
+ ]];
79
+ return ret && ret.toBOOL;
80
+ }
81
+
82
+ + (void) setActiveReflexViewController: (id) reflexViewController
83
+ {
84
+ active_reflex_view_controller = reflexViewController;
85
+ }
86
+
87
+ + (void) resetActiveReflexViewController
88
+ {
89
+ active_reflex_view_controller = nil;
90
+ }
91
+
92
+ @end
data/test/helper.rb CHANGED
@@ -1,12 +1,13 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
 
4
- %w[../xot ../rucy ../rays ../reflex ../processing .]
4
+ %w[../xot ../rucy ../beeps ../rays ../reflex ../processing .]
5
5
  .map {|s| File.expand_path "../#{s}/lib", __dir__}
6
6
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
7
7
 
8
- require 'test/unit'
9
8
  require 'xot/test'
10
9
  require 'rubysketch/all'
11
10
 
11
+ require 'test/unit'
12
+
12
13
  include Xot::Test
@@ -0,0 +1,90 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestSound < Test::Unit::TestCase
8
+
9
+ RS = RubySketch
10
+ B = Beeps
11
+
12
+ PATH = 'test.wav'
13
+
14
+ def sound()
15
+ RS::Sound.load PATH
16
+ end
17
+
18
+ def setup()
19
+ B::Sound.new(B::Oscillator.new >> B::Gain.new(gain: 0), 0.1).save PATH
20
+ end
21
+
22
+ def teardown()
23
+ B::SoundPlayer.stop_all
24
+ File.delete PATH if File.exist?(PATH)
25
+ end
26
+
27
+ def test_play()
28
+ s = sound
29
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
30
+ s.play
31
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
32
+ end
33
+
34
+ def test_pause()
35
+ s = sound
36
+ s.play
37
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
38
+ s.pause
39
+ assert_equal [false, true, false], [s.playing?, s.paused?, s.stopped?]
40
+ end
41
+
42
+ def test_stop()
43
+ s = sound
44
+ s.play
45
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
46
+ s.stop
47
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
48
+ end
49
+
50
+ def test_play_end_then_stop()
51
+ s = sound
52
+ s.play
53
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
54
+ sleep 0.2
55
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
56
+ end
57
+
58
+ def test_play_after_pause()
59
+ s = sound
60
+ s.play
61
+ s.pause
62
+ assert_equal [false, true, false], [s.playing?, s.paused?, s.stopped?]
63
+ s.play
64
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
65
+ end
66
+
67
+ def test_stop_after_pause()
68
+ s = sound
69
+ s.play
70
+ s.pause
71
+ assert_equal [false, true, false], [s.playing?, s.paused?, s.stopped?]
72
+ s.stop
73
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
74
+ end
75
+
76
+ def test_save()
77
+ s = sound
78
+
79
+ File.delete PATH
80
+ assert_false File.exist? PATH
81
+
82
+ s.save PATH
83
+ assert_true File.exist? PATH
84
+ end
85
+
86
+ def test_load()
87
+ assert_nothing_raised {sound.play}
88
+ end
89
+
90
+ end# TestSound
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysketch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-01 00:00:00.000000000 Z
11
+ date: 2023-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,84 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.32
19
+ version: 0.1.33
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.32
26
+ version: 0.1.33
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rucy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.32
33
+ version: 0.1.33
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.32
40
+ version: 0.1.33
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: beeps
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.32
47
+ version: 0.1.33
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.32
54
+ version: 0.1.33
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rays
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.1.32
61
+ version: 0.1.33
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.1.32
68
+ version: 0.1.33
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: reflexion
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.1.32
75
+ version: 0.1.33
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.1.32
82
+ version: 0.1.33
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: processing
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.5.2
89
+ version: 0.5.3
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.5.2
96
+ version: 0.5.3
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -162,11 +162,15 @@ files:
162
162
  - lib/rubysketch/extension.rb
163
163
  - lib/rubysketch/graphics_context.rb
164
164
  - lib/rubysketch/helper.rb
165
+ - lib/rubysketch/sound.rb
165
166
  - lib/rubysketch/sprite.rb
167
+ - lib/rubysketch/window.rb
168
+ - pod.rake
166
169
  - rubysketch.gemspec
167
- - src/RubyProcessing.h
168
- - src/RubyProcessing.mm
170
+ - src/RubySketch.h
171
+ - src/RubySketch.mm
169
172
  - test/helper.rb
173
+ - test/test_sound.rb
170
174
  - test/test_sprite.rb
171
175
  homepage: https://github.com/xord/rubysketch
172
176
  licenses: []
@@ -186,10 +190,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
190
  - !ruby/object:Gem::Version
187
191
  version: '0'
188
192
  requirements: []
189
- rubygems_version: 3.4.6
193
+ rubygems_version: 3.4.10
190
194
  signing_key:
191
195
  specification_version: 4
192
196
  summary: A game engine based on the Processing API.
193
197
  test_files:
194
198
  - test/helper.rb
199
+ - test/test_sound.rb
195
200
  - test/test_sprite.rb
data/src/RubyProcessing.h DELETED
@@ -1,11 +0,0 @@
1
- // -*- mode: objc -*-
2
- #import <Foundation/Foundation.h>
3
-
4
-
5
- @interface RubySketch : NSObject
6
-
7
- + (void) setup;
8
-
9
- + (void) start: (NSString*) path;
10
-
11
- @end
@@ -1,25 +0,0 @@
1
- // -*- mode: objc -*-
2
- #import <CRuby.h>
3
- #import "RubyProcessing.h"
4
- #import "RubySketch.h"
5
-
6
-
7
- @implementation RubySketch
8
-
9
- + (void) setup
10
- {
11
- static BOOL done = NO;
12
- if (done) return;
13
- done = YES;
14
-
15
- [RubyProcessing setup];
16
- [CRuby addLibrary:@"RubySketch" bundle:[NSBundle bundleForClass:RubySketch.class]];
17
- }
18
-
19
- + (void) start: (NSString*) path
20
- {
21
- [CRuby evaluate:@"raise 'already started' unless require 'rubysketch'\n"];
22
- [RubyProcessing start: path];
23
- }
24
-
25
- @end