rubysketch 0.3.22 → 0.5.2

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{release.yml → release-gem.yml} +21 -21
  3. data/.github/workflows/tag.yml +35 -0
  4. data/.github/workflows/test.yml +8 -9
  5. data/.github/workflows/utils.rb +55 -0
  6. data/ChangeLog.md +9 -161
  7. data/LICENSE +1 -1
  8. data/README.md +1 -1
  9. data/Rakefile +10 -34
  10. data/RubySketch.podspec +4 -3
  11. data/VERSION +1 -1
  12. data/examples/hello.rb +6 -6
  13. data/lib/rubysketch/all.rb +9 -0
  14. data/lib/rubysketch/context.rb +47 -0
  15. data/lib/rubysketch/{module.rb → extension.rb} +3 -3
  16. data/lib/rubysketch/graphics_context.rb +37 -0
  17. data/lib/rubysketch/helper.rb +5 -0
  18. data/lib/rubysketch/sprite.rb +101 -0
  19. data/lib/rubysketch.rb +30 -12
  20. data/rubysketch.gemspec +15 -8
  21. data/src/{RubySketch.h → RubyProcessing.h} +0 -4
  22. data/src/RubyProcessing.mm +25 -0
  23. data/test/helper.rb +3 -10
  24. data/test/test_sprite.rb +23 -0
  25. metadata +119 -35
  26. data/examples/breakout.rb +0 -212
  27. data/examples/camera.rb +0 -14
  28. data/examples/clock.rb +0 -57
  29. data/examples/delay_camera.rb +0 -33
  30. data/examples/glsl.rb +0 -14
  31. data/examples/image.rb +0 -13
  32. data/examples/shapes.rb +0 -121
  33. data/lib/rubysketch/app.rb +0 -13
  34. data/lib/rubysketch/glsl.rb +0 -44
  35. data/lib/rubysketch/processing.rb +0 -3191
  36. data/lib/rubysketch/window.rb +0 -232
  37. data/lib/rubysketch-glsl.rb +0 -12
  38. data/lib/rubysketch-processing.rb +0 -25
  39. data/src/RubySketch.mm +0 -55
  40. data/test/processing/helper.rb +0 -11
  41. data/test/processing/test_graphics.rb +0 -21
  42. data/test/processing/test_shader.rb +0 -47
  43. data/test/processing/test_utility.rb +0 -41
  44. data/test/processing/test_vector.rb +0 -394
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37319632030509f708c8ee98cbb6e4d8512b50ad7475cae37d595e3649a81c26
4
- data.tar.gz: c61938eefd83489171e8eff04721dfd08edcbae0ecb8472b34c58d1c09afc92a
3
+ metadata.gz: ccbb3ec25a88b53bba2570b98bce4e809f6e4cbe68ffe9d3ecd0632934d75e2c
4
+ data.tar.gz: 47bc1c14d77513954b4bae6a5611b802c99836ad2474d2232d35ef92def908a1
5
5
  SHA512:
6
- metadata.gz: e37b6b72fd7d3960434d47b302aec206332e85476a7e2cde3d4f56fd8b8946de685c27fc39d06094ddb0203141ba8282a2b521281218dd25970fceb18e80a83f
7
- data.tar.gz: 9c65761f2df604c2c79b30ccc5c6b23403d7aae5f2ea6858b62979b825d66ef1d54a9106ad37b4dfd5902697a91bd47c0c034e6fd21c93fe1593a58642fb20eb
6
+ metadata.gz: 2ad5c3d346dfd79446ad795e00c7b148baeb1bdee3600d6b628d1ba6f5c366273aa71986016500649ed36944022e418d1a5f012ccd4d808b6546e6fbed1eb9e2
7
+ data.tar.gz: 3c657e0ef7fdefc37d370246d881b0d976805d74c1ee22b99b7470fb502aacf5de1d7bba0991f7b1534e3d8a43114da7b05cf6336bebb43bd9d90d57b8328d69
@@ -1,4 +1,4 @@
1
- name: Release
1
+ name: Release Gem
2
2
 
3
3
  on:
4
4
  push:
@@ -9,46 +9,46 @@ jobs:
9
9
  runs-on: macos-latest
10
10
 
11
11
  steps:
12
+ - name: ruby 3.2
13
+ uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 3.2
16
+
12
17
  - name: checkout
13
18
  uses: actions/checkout@v2
14
19
 
15
- - name: ruby 3.0
16
- uses: actions/setup-ruby@v1
17
- with:
18
- ruby-version: 3.0.x
20
+ - name: setup dependencies
21
+ run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
19
22
 
20
23
  - name: install gems
21
- run: |
22
- gem install bundler
23
- bundle install --jobs 4 --retry 3
24
+ run: gem install yard
24
25
 
25
- - name: version
26
- id: version
27
- run: |
28
- echo ::set-output name=value::$(ruby -e 'print "${{ github.ref }}"[/\/v([\w\.\-]+)/, 1]')
26
+ - name: test
27
+ run: rake test
29
28
 
30
29
  - name: create gem
31
- run: rake clean gem
30
+ id: gem
31
+ run: |
32
+ rake gem
33
+ echo path=$(ruby -e 'print Dir.glob("*.gem").first') >> $GITHUB_OUTPUT
32
34
 
33
- - name: create release
34
- id: create_release
35
+ - name: create github release
36
+ id: release
35
37
  uses: actions/create-release@v1
36
38
  env:
37
39
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38
40
  with:
39
41
  tag_name: ${{ github.ref }}
40
42
  release_name: ${{ github.ref }}
41
- draft: false
42
- prerelease: false
43
43
 
44
- - name: upload to releases
44
+ - name: upload to github release
45
45
  uses: actions/upload-release-asset@v1
46
46
  env:
47
47
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48
48
  with:
49
- upload_url: ${{ steps.create_release.outputs.upload_url }}
50
- asset_path: ./rubysketch-${{ steps.version.outputs.value }}.gem
51
- asset_name: rubysketch-${{ steps.version.outputs.value }}.gem
49
+ upload_url: ${{ steps.release.outputs.upload_url }}
50
+ asset_path: ./${{ steps.gem.outputs.path }}
51
+ asset_name: ${{ steps.gem.outputs.path }}
52
52
  asset_content_type: application/zip
53
53
 
54
54
  - name: upload to rubygems
@@ -0,0 +1,35 @@
1
+ name: Tag
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+
7
+ jobs:
8
+ tag:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - name: ruby 3.2
13
+ uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 3.2
16
+
17
+ - name: checkout
18
+ uses: actions/checkout@v2
19
+ with:
20
+ fetch-depth: 0
21
+ token: ${{ secrets.PAT }}
22
+
23
+ - name: setup dependencies
24
+ run: "ruby -I.github/workflows -rutils -e 'setup_dependencies only: :xot'"
25
+
26
+ - name: setup user name and email
27
+ run: |
28
+ git config --global user.email "xordog@gmail.com"
29
+ git config --global user.name "xord"
30
+
31
+ - name: tag versions
32
+ run: "ruby -I.github/workflows -rutils -e 'tag_versions'"
33
+
34
+ - name: push tags
35
+ run: git push origin --tags
@@ -11,17 +11,16 @@ jobs:
11
11
  runs-on: macos-latest
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v2
15
-
16
- - name: ruby 3.0
17
- uses: actions/setup-ruby@v1
14
+ - name: ruby 3.2
15
+ uses: ruby/setup-ruby@v1
18
16
  with:
19
- ruby-version: 3.0.x
17
+ ruby-version: 3.2
18
+
19
+ - name: checkout
20
+ uses: actions/checkout@v2
20
21
 
21
- - name: install gems
22
- run: |
23
- gem install bundler
24
- bundle install --jobs 4 --retry 3
22
+ - name: setup dependencies
23
+ run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
25
24
 
26
25
  - name: test
27
26
  run: rake test
@@ -0,0 +1,55 @@
1
+ RENAMES = {reflex: 'reflexion'}
2
+
3
+ def sh(cmd)
4
+ puts cmd
5
+ system cmd
6
+ end
7
+
8
+ def setup_dependencies(build: true, only: nil)
9
+ gemspec_path = `git ls-files`.lines(chomp: true).find {|l| l =~ /\.gemspec$/}
10
+ return unless gemspec_path
11
+
12
+ gemspec = File.read gemspec_path
13
+ name = File.basename gemspec_path, '.gemspec'
14
+
15
+ exts = File.readlines('Rakefile')
16
+ .map {|l| l[%r|^\s*require\W+(\w+)/extension\W+$|, 1]}
17
+ .compact
18
+ .reject {|ext| ext == name}
19
+ exts = exts & [only].flatten.map(&:to_s) if only
20
+
21
+ exts.each do |ext|
22
+ gem = RENAMES[ext.to_sym].then {|s| s || ext}
23
+ clone = "git clone --depth 1 https://github.com/xord/#{ext}.git ../#{ext}"
24
+ ver = gemspec[/add_runtime_dependency.*['"]#{gem}['"].*['"]\s*~>\s*([\d\.]+)\s*['"]/, 1]
25
+
26
+ # 'rake subtree:push' pushes all subrepos, so cloning by new tag
27
+ # often fails before tagging each new tag
28
+ sh %( #{clone} --branch v#{ver} || #{clone} )
29
+ sh %( cd ../#{ext} && rake ext )
30
+ end
31
+ end
32
+
33
+ def tag_versions()
34
+ tags = `git tag`.lines chomp: true
35
+ vers = `git log --oneline ./VERSION`
36
+ .lines(chomp: true)
37
+ .map {|line| line.split.first[/^\w+$/]}
38
+ .map {|hash| [`git cat-file -p #{hash}:./VERSION 2>/dev/null`[/[\d\.]+/], hash]}
39
+ .select {|ver, hash| ver && hash}
40
+ .reverse
41
+ .to_h
42
+
43
+ changes = File.read('ChangeLog.md')
44
+ .split(/^\s*##\s*\[\s*v([\d\.]+)\s*\].*$/)
45
+ .slice(1..-1)
46
+ .each_slice(2)
47
+ .to_h
48
+ .transform_values(&:strip!)
49
+
50
+ vers.to_a.reverse.each do |ver, hash|
51
+ tag = "v#{ver}"
52
+ break if tags.include?(tag)
53
+ sh %( git tag -a -m \"#{changes[ver]&.gsub '"', '\\"'}\" #{tag} #{hash} )
54
+ end
55
+ end
data/ChangeLog.md CHANGED
@@ -1,173 +1,21 @@
1
- # RubySketch ChangeLog
1
+ # rubysketch ChangeLog
2
2
 
3
3
 
4
- ## [0.3.22] - 2022-11-14
4
+ ## [v0.5.2] - 2023-03-02
5
5
 
6
- RubySketch::Processing
7
- - add Shader class
8
- - add shader(), resetShader(), createShader(), loadShader(), and filter()
9
- - update the pixel density of context if the screen pixel density is changed
10
- - setUniform() can also take array of numbers, vector, and texture image.
11
- - pushStyle() manages states of textAlign, tint, and filter
12
- - push/pushMatrix/pushStyle call pop() on ensure
6
+ - depend to processing-0.5.2 gem
13
7
 
14
- RubySketch::GLSL
15
- - displays with pixel density 1.0
16
8
 
9
+ ## [v0.5.1] - 2023-03-01
17
10
 
18
- ## [0.3.21] - 2022-09-05
11
+ - fix bugs
19
12
 
20
- - add rubysketch-glsl.rb
21
- - add blend(), createImage(), setTitle(), tint() and noTint()
22
- - add save() that saves screen image to file
23
- - circle() function is affected by ellipseMode()
24
- - point() draws by line(x, y, x, y)
25
- - change initial values for strokeCap and strokeJoin to ROUND and MITER
26
13
 
14
+ ## [v0.5.0] - 2023-02-09
27
15
 
28
- ## [0.3.20] - 2022-07-24
16
+ - add Sprite class
29
17
 
30
- - add mouseClicked()
31
- - add blendMode()
32
- - add clip() and noClip()
33
- - translate() can take 'z' parameter
34
- - fix that resizing canvas consumes too much memory
35
18
 
19
+ ## [v0.4.0] - 2023-02-08
36
20
 
37
- ## [0.3.19] - 2021-12-5
38
-
39
- - fix runtime error
40
-
41
-
42
- ## [0.3.18] - 2021-12-5
43
-
44
- - add 'mouseButton'
45
- - pointer cancel event calls pointer_up block
46
-
47
-
48
- ## [0.3.17] - 2021-12-5
49
-
50
- - add Touch#id
51
-
52
-
53
- ## [0.3.16] - 2021-2-14
54
-
55
- - add key, keyCode and keyPressed system values
56
- - add keyPressed(), keyReleased() and keyTyped() functions
57
- - add motionGravity value and motion() function
58
-
59
-
60
- ## [0.3.15] - 2020-12-12
61
-
62
- - delete temporary directory on launch
63
-
64
-
65
- ## [0.3.14] - 2020-12-12
66
-
67
- - fix loadImage() fails when Encoding.default_internal is not nil
68
-
69
-
70
- ## [0.3.13] - 2020-12-12
71
-
72
- - size(), createCanvas(): default pixelDensity is same as current value
73
-
74
-
75
- ## [0.3.12] - 2020-12-10
76
-
77
- - size() and createCanvas() take 'pixelDensity' parameter and default value is 1
78
-
79
-
80
- ## [0.3.11] - 2020-12-9
81
-
82
- - add size(), createCanvas() and pixelDensity()
83
-
84
-
85
- ## [0.3.10] - 2020-12-1
86
-
87
- - invert angle parameter value for arc() to fix compatibility to processing API
88
-
89
-
90
- ## [0.3.9] - 2020-11-30
91
-
92
- - Graphics#beginDraw() can take block to call endDraw automatically
93
- - Capture#start() always returns nil
94
- - add delay_camera.rb
95
-
96
-
97
- ## [0.3.8] - 2020-11-27
98
-
99
- - Capture#initialize() can take requestWidth, requestHeight and cameraName
100
- - add Capture#width and Capture#height
101
-
102
-
103
- ## [0.3.7] - 2020-11-18
104
-
105
- - add Capture class
106
- - add log(), exp(), sqrt() and PI
107
- - add examples/camera.rb
108
- - add examples/breakout.rb
109
- - fix error on calling image()
110
-
111
-
112
- ## [0.3.6] - 2020-08-02
113
-
114
- - random() can take array or nothing
115
- - use github actions to release gem package
116
-
117
-
118
- ## [0.3.5] - 2020-08-02
119
-
120
- - add random()
121
- - add sin(), cos(), tan(), asin(), acos(), atan() and atan2()
122
- - make Vector class accessible from user script context
123
- - fix error on calling rotate()
124
-
125
-
126
- ## [0.3.4] - 2020-08-02
127
-
128
- - delete Utility module
129
-
130
-
131
- ## [0.3.3] - 2020-08-01
132
-
133
- - add Vector class
134
-
135
-
136
- ## [0.3.2] - 2020-07-22
137
-
138
- - text() draws to the baseline by default
139
- - add textWidth(), textAscent(), textDescent() and textAlign()
140
- - change initial color for fill() and stroke()
141
- - change initial background color to grayscale 0.8
142
-
143
-
144
- ## [0.3.1] - 2020-07-17
145
-
146
- - add touchStarted(), touchEnded(), touchMoved() and touches()
147
- - make all event handler drawable
148
- - limit font max size to 256
149
-
150
-
151
- ## [0.3.0] - 2020-05-21
152
-
153
- - add createGraphics()
154
-
155
-
156
- ## [0.2.7] - 2020-04-17
157
-
158
- - add strokeCap() and strokeJoin()
159
-
160
-
161
- ## [0.2.6] - 2020-04-17
162
-
163
- - push(), pushMatrix() and pushStyle() take block to automatic pop
164
- - refine startup process
165
- - add curve() and bezier()
166
- - add imageMode(), Image#resize(), Image#copy() and copy()
167
- - add loop(), noLoop() and redraw()
168
-
169
-
170
- ## [0.2.5] - 2020-03-29
171
-
172
- - delete debug prints
173
- - show unsupported image type
21
+ - first version
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 xord.org
3
+ Copyright (c) 2023 xord.org
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RubySketch - Processing compatible Creative Coding Framework
1
+ # RubySketch - A game engine based on the Processing API
2
2
 
3
3
  by xordog@gmail.com
4
4
 
data/Rakefile CHANGED
@@ -1,50 +1,26 @@
1
1
  # -*- mode: ruby -*-
2
2
 
3
3
 
4
- %w[../xot ../rucy ../rays ../reflex .]
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
8
  require 'rucy/rake'
9
9
 
10
- require 'xot/module'
11
- require 'rucy/module'
12
- require 'rays/module'
13
- require 'reflex/module'
14
- require 'rubysketch/module'
10
+ require 'xot/extension'
11
+ require 'rucy/extension'
12
+ require 'beeps/extension'
13
+ require 'rays/extension'
14
+ require 'reflex/extension'
15
+ require 'processing/extension'
16
+ require 'rubysketch/extension'
15
17
 
16
18
 
17
- MODULES = [Xot, Rucy, Rays, Reflex, RubySketch]
19
+ EXTENSIONS = [Xot, Rucy, Beeps, Rays, Reflex, Processing, RubySketch]
18
20
 
19
21
  ENV['RDOC'] = 'yardoc --no-private'
20
22
 
23
+ default_tasks
21
24
  test_ruby_extension
22
25
  generate_documents
23
26
  build_ruby_gem
24
-
25
- task :default
26
-
27
-
28
- namespace :version do
29
-
30
- namespace :bump do
31
-
32
- task :major do
33
- update_and_tag_version 0
34
- end
35
-
36
- task :minor do
37
- update_and_tag_version 1
38
- end
39
-
40
- task :patch do
41
- update_and_tag_version 2
42
- end
43
-
44
- task :build do
45
- update_and_tag_version 3
46
- end
47
-
48
- end# bump
49
-
50
- end# version
data/RubySketch.podspec CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  Pod::Spec.new do |s|
5
5
  s.name = "RubySketch"
6
- s.version = File.readlines(File.expand_path 'VERSION', __dir__)[0].chomp
7
- s.summary = "Yet Another Processing implementation for Ruby"
8
- s.description = "Yet Another Processing implementation for Ruby"
6
+ s.version = File.read(File.expand_path 'VERSION', __dir__)[/[\d\.]+/]
7
+ s.summary = "A game engine based on the Processing API"
8
+ s.description = "A game engine based on the Processing API"
9
9
  s.license = "MIT"
10
10
  s.source = {:git => "https://github.com/xord/rubysketch.git"}
11
11
  s.author = {"xordog" => "xordog@gmail.com"}
@@ -18,6 +18,7 @@ Pod::Spec.new do |s|
18
18
  #{s.name}/src
19
19
  CRuby/CRuby/include
20
20
  Reflexion/reflex/include
21
+ RubyProcessing/src
21
22
  ].map {|s| "${PODS_ROOT}/#{s}"}
22
23
 
23
24
  s.preserve_paths = "src"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.22
1
+ 0.5.2
data/examples/hello.rb CHANGED
@@ -1,12 +1,12 @@
1
- %w[xot rays reflex rubysketch]
1
+ %w[xot 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
 
5
- require 'rubysketch-processing'
6
-
5
+ require 'rubysketch'
6
+ using RubySketch
7
7
 
8
8
  draw do
9
- background 0, 10
10
- textSize 50
11
- text 'hello, world!', mouseX, mouseY
9
+ background 0
10
+ textSize 30
11
+ text "hello, rubysketch!", 10, 100
12
12
  end
@@ -0,0 +1,9 @@
1
+ require 'forwardable'
2
+ require 'processing/all'
3
+
4
+ require 'rubysketch/extension'
5
+ require 'rubysketch/helper'
6
+
7
+ require 'rubysketch/sprite'
8
+ require 'rubysketch/graphics_context'
9
+ require 'rubysketch/context'
@@ -0,0 +1,47 @@
1
+ module RubySketch
2
+
3
+
4
+ class Context < Processing::Context
5
+
6
+ include GraphicsContext
7
+
8
+ def initialize(window)
9
+ super
10
+ @sprites__ = window.add SpritesView.new
11
+ end
12
+
13
+ def createSprite(*args, **kwargs)
14
+ addSprite Sprite.new(*args, **kwargs)
15
+ end
16
+
17
+ def addSprite(sprite)
18
+ @sprites__.add sprite.getInternal__ if sprite
19
+ sprite
20
+ end
21
+
22
+ def removeSprite(sprite)
23
+ @sprites__.remove sprite.getInternal__ if sprite
24
+ sprite
25
+ end
26
+
27
+ def gravity(*args)
28
+ x, y =
29
+ case args
30
+ when Processing::Vector then args.array
31
+ else args
32
+ end
33
+ @sprites__.then do |v|
34
+ v.gravity x * v.meter, y * v.meter
35
+ end
36
+ end
37
+
38
+ class SpritesView < Reflex::View
39
+ def on_draw(e)
40
+ e.block
41
+ end
42
+ end
43
+
44
+ end# Context
45
+
46
+
47
+ end# RubySketch
@@ -1,7 +1,7 @@
1
1
  module RubySketch
2
2
 
3
3
 
4
- module Module
4
+ module Extension
5
5
 
6
6
  module_function
7
7
 
@@ -10,14 +10,14 @@ module RubySketch
10
10
  end
11
11
 
12
12
  def version()
13
- open(root_dir 'VERSION') {|f| f.readline.chomp}
13
+ File.read(root_dir 'VERSION')[/[\d\.]+/]
14
14
  end
15
15
 
16
16
  def root_dir(path = '')
17
17
  File.expand_path "../../#{path}", __dir__
18
18
  end
19
19
 
20
- end# Module
20
+ end# Extension
21
21
 
22
22
 
23
23
  end# RubySketch
@@ -0,0 +1,37 @@
1
+ module RubySketch
2
+
3
+
4
+ module GraphicsContext
5
+
6
+ def sprite(*sprites)
7
+ sprites.flatten! if sprites.first&.is_a? Array
8
+ sprites.each do |sp|
9
+ v = sp.getInternal__
10
+ f, angle, img, offset = v.frame, v.angle, sp.image, sp.offset
11
+ if angle == 0
12
+ drawSprite__ f.x, f.y, f.w, f.h, img, offset
13
+ else
14
+ pushMatrix do
15
+ translate f.x, f.y
16
+ rotate radians(angle)
17
+ drawSprite__ 0, 0, f.w, f.h, img, offset
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ def drawSprite__(x, y, w, h, img, offset)
24
+ if img && offset
25
+ ox, oy = offset
26
+ copy img, ox, oy, w, h, x, y, w, h
27
+ elsif img
28
+ image img, x, y
29
+ else
30
+ rect x, y, w, h
31
+ end
32
+ end
33
+
34
+ end# GraphicsContext
35
+
36
+
37
+ end# RubySketch
@@ -0,0 +1,5 @@
1
+ class Rays::Point
2
+ def toVector()
3
+ Processing::Vector.new x, y, z
4
+ end
5
+ end