ray 0.0.1 → 0.1.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/.yardopts +4 -0
- data/README.md +17 -21
- data/Rakefile +18 -139
- data/VERSION +1 -1
- data/ext/audio.cpp +723 -0
- data/ext/{color.c → color.cpp} +25 -13
- data/ext/drawable.cpp +91 -0
- data/ext/event.cpp +460 -0
- data/ext/extconf.rb +5 -104
- data/ext/font.cpp +190 -0
- data/ext/image.cpp +733 -0
- data/ext/input.cpp +74 -0
- data/ext/ray.cpp +168 -0
- data/ext/ray.hpp +356 -0
- data/ext/{rect.c → rect.cpp} +51 -37
- data/ext/shader.cpp +169 -0
- data/ext/shape.cpp +409 -0
- data/ext/sprite.cpp +306 -0
- data/ext/text.cpp +181 -0
- data/ext/vector.cpp +215 -0
- data/guide.md +619 -0
- data/lib/ray/audio.rb +0 -41
- data/lib/ray/color.rb +32 -10
- data/lib/ray/drawable.rb +16 -0
- data/lib/ray/dsl/event_listener.rb +25 -2
- data/lib/ray/dsl/event_runner.rb +33 -5
- data/lib/ray/dsl/event_translator.rb +66 -30
- data/lib/ray/dsl/handler.rb +3 -2
- data/lib/ray/dsl/matcher.rb +58 -14
- data/lib/ray/font.rb +38 -96
- data/lib/ray/font_set.rb +8 -8
- data/lib/ray/game.rb +87 -66
- data/lib/ray/helper.rb +105 -10
- data/lib/ray/image.rb +150 -24
- data/lib/ray/image_set.rb +3 -1
- data/lib/ray/input.rb +10 -0
- data/lib/ray/music_set.rb +5 -3
- data/lib/ray/ray.rb +21 -9
- data/lib/ray/rect.rb +48 -7
- data/lib/ray/rmagick.rb +41 -0
- data/lib/ray/scene.rb +99 -43
- data/lib/ray/scene_list.rb +67 -0
- data/lib/ray/shape.rb +132 -0
- data/lib/ray/sound_set.rb +4 -2
- data/lib/ray/sprite.rb +49 -111
- data/lib/ray/text.rb +101 -0
- data/lib/ray/text_helper.rb +37 -0
- data/lib/ray/turtle.rb +215 -0
- data/lib/ray/vector.rb +226 -0
- data/samples/audio/spacial.rb +44 -0
- data/samples/hello_world/hello.rb +9 -13
- data/samples/hello_world/hello_dsl.rb +8 -12
- data/samples/hello_world/text.rb +15 -0
- data/samples/opengl/binding.rb +38 -0
- data/samples/opengl/image.rb +32 -0
- data/samples/opengl/opengl.rb +34 -0
- data/samples/opengl/shader.rb +42 -0
- data/samples/pong/pong.rb +14 -10
- data/samples/run_scene.rb +53 -0
- data/samples/shaders/scene.rb +40 -0
- data/samples/shaders/shaders.rb +42 -0
- data/samples/shaders/shape.rb +34 -0
- data/samples/sokoban/sokoban.rb +18 -18
- data/samples/test/actual_scene.rb +41 -0
- data/samples/test/scene_riot.rb +39 -0
- data/samples/test/scene_spec.rb +32 -0
- data/samples/test/scene_test_unit.rb +25 -0
- data/samples/turtle/byzantium.rb +45 -0
- data/samples/turtle/hilbert.rb +48 -0
- data/samples/turtle/koch.rb +55 -0
- data/samples/turtle/mandala.rb +61 -0
- data/samples/turtle/tree.rb +57 -0
- data/test/audio_test.rb +69 -0
- data/test/color_test.rb +77 -0
- data/test/drawable_test.rb +19 -0
- data/test/dsl_test.rb +93 -0
- data/test/font_test.rb +57 -0
- data/test/helpers.rb +94 -0
- data/test/image_test.rb +82 -0
- data/test/ray_test.rb +25 -0
- data/test/rect_test.rb +121 -0
- data/{spec → test}/res/VeraMono.ttf +0 -0
- data/{spec → test}/res/aqua.bmp +0 -0
- data/{spec → test}/res/aqua.png +0 -0
- data/{spec → test}/res/aqua2.bmp +0 -0
- data/{spec → test}/res/not_a_jpeg.jpeg +0 -0
- data/{spec → test}/res/pop.wav +0 -0
- data/test/resource_set_test.rb +99 -0
- data/test/run_all.rb +7 -0
- data/test/shape_test.rb +101 -0
- data/test/sprite_test.rb +89 -0
- data/test/text_test.rb +78 -0
- data/test/turtle_test.rb +176 -0
- data/test/vector_test.rb +111 -0
- data/yard_ext.rb +0 -28
- metadata +95 -139
- data/.gitignore +0 -23
- data/.gitmodules +0 -3
- data/.rspec +0 -3
- data/ext/audio.c +0 -473
- data/ext/event.c +0 -557
- data/ext/font.c +0 -287
- data/ext/image.c +0 -933
- data/ext/joystick.c +0 -145
- data/ext/ray.c +0 -489
- data/ext/ray.h +0 -245
- data/ext/ray_osx.m +0 -161
- data/lib/ray/joystick.rb +0 -30
- data/psp/SDL_psp_main.c +0 -84
- data/psp/bigdecimal/README +0 -60
- data/psp/bigdecimal/bigdecimal.c +0 -4697
- data/psp/bigdecimal/bigdecimal.h +0 -216
- data/psp/bigdecimal/lib/bigdecimal/jacobian.rb +0 -85
- data/psp/bigdecimal/lib/bigdecimal/ludcmp.rb +0 -84
- data/psp/bigdecimal/lib/bigdecimal/math.rb +0 -235
- data/psp/bigdecimal/lib/bigdecimal/newton.rb +0 -77
- data/psp/bigdecimal/lib/bigdecimal/util.rb +0 -65
- data/psp/digest/bubblebabble/bubblebabble.c +0 -142
- data/psp/digest/defs.h +0 -20
- data/psp/digest/digest.c +0 -643
- data/psp/digest/digest.h +0 -32
- data/psp/digest/lib/digest.rb +0 -50
- data/psp/digest/lib/md5.rb +0 -27
- data/psp/digest/lib/sha1.rb +0 -27
- data/psp/digest/md5/md5.c +0 -420
- data/psp/digest/md5/md5.h +0 -80
- data/psp/digest/md5/md5init.c +0 -40
- data/psp/digest/rmd160/rmd160.c +0 -457
- data/psp/digest/rmd160/rmd160.h +0 -56
- data/psp/digest/rmd160/rmd160init.c +0 -40
- data/psp/digest/sha1/sha1.c +0 -269
- data/psp/digest/sha1/sha1.h +0 -39
- data/psp/digest/sha1/sha1init.c +0 -40
- data/psp/digest/sha2/lib/sha2.rb +0 -73
- data/psp/digest/sha2/sha2.c +0 -919
- data/psp/digest/sha2/sha2.h +0 -109
- data/psp/digest/sha2/sha2init.c +0 -52
- data/psp/enumerator/enumerator.c +0 -298
- data/psp/etc/etc.c +0 -559
- data/psp/ext.c +0 -289
- data/psp/fcntl/fcntl.c +0 -187
- data/psp/lib/rbconfig.rb +0 -178
- data/psp/nkf/lib/kconv.rb +0 -367
- data/psp/nkf/nkf-utf8/config.h +0 -88
- data/psp/nkf/nkf-utf8/nkf.c +0 -6040
- data/psp/nkf/nkf-utf8/utf8tbl.c +0 -8500
- data/psp/nkf/nkf-utf8/utf8tbl.h +0 -34
- data/psp/nkf/nkf.c +0 -654
- data/psp/socket/addrinfo.h +0 -173
- data/psp/socket/getaddrinfo.c +0 -676
- data/psp/socket/getnameinfo.c +0 -270
- data/psp/socket/pspsocket.c +0 -71
- data/psp/socket/pspsocket.h +0 -28
- data/psp/socket/socket.c +0 -4662
- data/psp/socket/sockport.h +0 -76
- data/psp/stringio/stringio.c +0 -1306
- data/psp/strscan/strscan.c +0 -1320
- data/psp/syck/bytecode.c +0 -1166
- data/psp/syck/emitter.c +0 -1242
- data/psp/syck/gram.c +0 -1894
- data/psp/syck/gram.h +0 -79
- data/psp/syck/handler.c +0 -174
- data/psp/syck/implicit.c +0 -2990
- data/psp/syck/node.c +0 -408
- data/psp/syck/rubyext.c +0 -2367
- data/psp/syck/syck.c +0 -504
- data/psp/syck/syck.h +0 -456
- data/psp/syck/token.c +0 -2725
- data/psp/syck/yaml2byte.c +0 -257
- data/psp/syck/yamlbyte.h +0 -170
- data/psp/thread/thread.c +0 -1175
- data/psp/zlib/zlib.c +0 -3547
- data/script.rb +0 -10
- data/spec/ray/audio_spec.rb +0 -146
- data/spec/ray/color_spec.rb +0 -57
- data/spec/ray/event_spec.rb +0 -80
- data/spec/ray/font_spec.rb +0 -93
- data/spec/ray/image_set_spec.rb +0 -48
- data/spec/ray/image_spec.rb +0 -162
- data/spec/ray/joystick_spec.rb +0 -21
- data/spec/ray/matcher_spec.rb +0 -50
- data/spec/ray/ray_spec.rb +0 -88
- data/spec/ray/rect_spec.rb +0 -154
- data/spec/ray/resource_set_spec.rb +0 -105
- data/spec/ray/sprite_spec.rb +0 -163
- data/spec/spec.opts +0 -4
- data/spec/spec_helper.rb +0 -8
@@ -0,0 +1,44 @@
|
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
3
|
+
|
4
|
+
def path_of(res)
|
5
|
+
File.expand_path(File.dirname(__FILE__) + "/../../test/res/#{res}")
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'ray'
|
9
|
+
|
10
|
+
SPEED = 5
|
11
|
+
|
12
|
+
Ray::Game.new("Spacial sounds") do
|
13
|
+
register do
|
14
|
+
add_hook :quit, method(:exit!)
|
15
|
+
end
|
16
|
+
|
17
|
+
scene :spacial do
|
18
|
+
@sound = sound path_of("pop.wav")
|
19
|
+
@sound.attenuation = 0.1
|
20
|
+
@sound.min_distance = 10
|
21
|
+
@sound.pos = [(640 / 2) - 5, (480 / 2) - 5, 0]
|
22
|
+
|
23
|
+
@rect = Ray::Rect.new(0, 0, 10, 10)
|
24
|
+
|
25
|
+
always do
|
26
|
+
@sound.play if (Time.now.to_i % 2) == 0
|
27
|
+
|
28
|
+
@rect.x += SPEED if holding? :right
|
29
|
+
@rect.x -= SPEED if holding? :left
|
30
|
+
@rect.y += SPEED if holding? :down
|
31
|
+
@rect.y -= SPEED if holding? :up
|
32
|
+
|
33
|
+
Ray::Audio.pos = [@rect.x, @rect.y, 0]
|
34
|
+
end
|
35
|
+
|
36
|
+
render do |win|
|
37
|
+
win.fill(Ray::Color.black)
|
38
|
+
win.draw_filled_rect(@rect, Ray::Color.green)
|
39
|
+
win.draw_filled_rect([(640 / 2) - 5, (480 / 2) - 5, 10, 10], Ray::Color.red)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
push_scene :spacial
|
44
|
+
end
|
@@ -1,35 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
def path_of(res)
|
5
|
-
File.expand_path(File.dirname(__FILE__) + "/../../spec/res/#{res}")
|
6
|
-
end
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
7
3
|
|
8
4
|
require 'ray'
|
9
5
|
|
10
6
|
class HelloScene < Ray::Scene
|
11
7
|
scene_name :hello
|
12
|
-
|
8
|
+
|
13
9
|
def setup
|
14
|
-
@font =
|
10
|
+
@font = Ray::Font.default
|
15
11
|
end
|
16
|
-
|
12
|
+
|
17
13
|
def render(win)
|
18
|
-
@font.draw("Hello world!", :on => win, :at => [0, 0])
|
14
|
+
@font.draw("Hello world!", :on => win, :at => [0, 0], :size => 12)
|
19
15
|
end
|
20
16
|
end
|
21
17
|
|
22
18
|
class HelloWorld < Ray::Game
|
23
19
|
def initialize
|
24
20
|
super("Hello world!")
|
25
|
-
|
21
|
+
|
26
22
|
HelloScene.bind(self)
|
27
23
|
push_scene :hello
|
28
24
|
end
|
29
|
-
|
25
|
+
|
30
26
|
def register
|
31
27
|
add_hook :quit, method(:exit!)
|
32
28
|
end
|
33
29
|
end
|
34
30
|
|
35
|
-
HelloWorld.new.run
|
31
|
+
HelloWorld.new.run
|
@@ -1,9 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
def path_of(res)
|
5
|
-
File.expand_path(File.dirname(__FILE__) + "/../../spec/res/#{res}")
|
6
|
-
end
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
7
3
|
|
8
4
|
require 'ray'
|
9
5
|
|
@@ -11,14 +7,14 @@ Ray::Game.new("Hello world!") do
|
|
11
7
|
register do
|
12
8
|
add_hook :quit, method(:exit!)
|
13
9
|
end
|
14
|
-
|
10
|
+
|
15
11
|
scene :hello do
|
16
|
-
@font =
|
17
|
-
|
12
|
+
@font = Ray::Font.default
|
13
|
+
|
18
14
|
render do |win|
|
19
|
-
@font.draw("Hello world", :on => win, :at => [0, 0])
|
15
|
+
@font.draw("Hello world", :on => win, :at => [0, 0], :size => 12)
|
20
16
|
end
|
21
17
|
end
|
22
|
-
|
18
|
+
|
23
19
|
push_scene :hello
|
24
|
-
end
|
20
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
3
|
+
|
4
|
+
require 'ray'
|
5
|
+
|
6
|
+
Ray.game "Hello world!" do
|
7
|
+
register { add_hook :quit, method(:exit!) }
|
8
|
+
|
9
|
+
scene :hello do
|
10
|
+
@text = text "Hello world!", :angle => 30, :at => [100, 100], :size => 30
|
11
|
+
render { |win| @text.draw_on win }
|
12
|
+
end
|
13
|
+
|
14
|
+
push_scene :hello
|
15
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'ffi'
|
2
|
+
|
3
|
+
module GL
|
4
|
+
extend FFI::Library
|
5
|
+
|
6
|
+
if RUBY_PLATFORM.include? "darwin"
|
7
|
+
ffi_lib "/System/Library/Frameworks/OpenGL.framework/OpenGL"
|
8
|
+
else
|
9
|
+
ffi_lib "GL"
|
10
|
+
end
|
11
|
+
|
12
|
+
Triangles = 4
|
13
|
+
Quads = 7
|
14
|
+
|
15
|
+
attach_function :glBegin, [:uint], :void
|
16
|
+
attach_function :glEnd, [], :void
|
17
|
+
|
18
|
+
attach_function :glVertex2f, [:float, :float], :void
|
19
|
+
attach_function :glColor3f, [:float, :float, :float], :void
|
20
|
+
attach_function :glTexCoord2f, [:float, :float], :void
|
21
|
+
|
22
|
+
attach_function :glScalef, [:float, :float, :float], :void
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def begin(mode)
|
26
|
+
glBegin(mode)
|
27
|
+
yield
|
28
|
+
ensure
|
29
|
+
glEnd
|
30
|
+
end
|
31
|
+
|
32
|
+
alias :vertex :glVertex2f
|
33
|
+
alias :color :glColor3f
|
34
|
+
alias :tex_coord :glTexCoord2f
|
35
|
+
|
36
|
+
alias :scale :glScalef
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
3
|
+
|
4
|
+
require File.expand_path(File.dirname(__FILE__)) + "/binding.rb"
|
5
|
+
require 'ray'
|
6
|
+
|
7
|
+
Ray::Game.new("OpenGL test") do
|
8
|
+
register do
|
9
|
+
add_hook :quit, method(:exit!)
|
10
|
+
end
|
11
|
+
|
12
|
+
scene :triangle do
|
13
|
+
image = Ray::Image.new(:w => 50, :h => 50).fill(Ray::Color.blue).update
|
14
|
+
|
15
|
+
@drawable = Ray::Drawable.new do |img|
|
16
|
+
image.bind
|
17
|
+
|
18
|
+
GL.begin GL::Quads do
|
19
|
+
GL.tex_coord(0.0, 0.0); GL.vertex(250.0, 300.0)
|
20
|
+
GL.tex_coord(0.0, 1.0); GL.vertex(250.0, 250.0)
|
21
|
+
GL.tex_coord(1.0, 1.0); GL.vertex(300.0, 250.0)
|
22
|
+
GL.tex_coord(1.0, 0.0); GL.vertex(300.0, 300.0)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
render do |win|
|
27
|
+
@drawable.draw_on win
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
push_scene :triangle
|
32
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# FFI is required to run this sample.
|
2
|
+
# You could use any OpenGL binding instead.
|
3
|
+
# In fact, using an FFI with hard-coded constants is probably
|
4
|
+
# not really a good idea...
|
5
|
+
|
6
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
7
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
8
|
+
|
9
|
+
require File.expand_path(File.dirname(__FILE__)) + "/binding.rb"
|
10
|
+
require 'ray'
|
11
|
+
|
12
|
+
Ray::Game.new("OpenGL test") do
|
13
|
+
register do
|
14
|
+
add_hook :quit, method(:exit!)
|
15
|
+
end
|
16
|
+
|
17
|
+
scene :triangle do
|
18
|
+
@drawable = Ray::Drawable.new do |img|
|
19
|
+
GL.scale(2.0, 1.0, 1.0)
|
20
|
+
|
21
|
+
GL.begin GL::Triangles do
|
22
|
+
GL.color(1.0, 0.0, 0.0); GL.vertex(300.0, 300.0)
|
23
|
+
GL.color(1.0, 1.0, 0.0); GL.vertex(100.0, 300.0)
|
24
|
+
GL.color(1.0, 1.0, 1.0); GL.vertex(300.0, 100.0)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
render do |win|
|
29
|
+
@drawable.draw_on win
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
push_scene :triangle
|
34
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
3
|
+
|
4
|
+
require File.expand_path(File.dirname(__FILE__)) + "/binding.rb"
|
5
|
+
require 'ray'
|
6
|
+
|
7
|
+
Ray::Game.new("OpenGL test") do
|
8
|
+
register do
|
9
|
+
add_hook :quit, method(:exit!)
|
10
|
+
end
|
11
|
+
|
12
|
+
scene :triangle do
|
13
|
+
shader = Ray::Shader.new StringIO.new(<<-SHADER)
|
14
|
+
uniform vec3 ratio;
|
15
|
+
|
16
|
+
void main() {
|
17
|
+
vec4 color = gl_Color;
|
18
|
+
float gray = dot(color.xyz, ratio);
|
19
|
+
|
20
|
+
gl_FragColor = vec4(gray, gray, gray, 1.0);
|
21
|
+
}
|
22
|
+
SHADER
|
23
|
+
|
24
|
+
shader["ratio"] = [0.299, 0.587, 0.114]
|
25
|
+
|
26
|
+
@drawable = Ray::Drawable.new do |img|
|
27
|
+
shader.bind do
|
28
|
+
GL.begin GL::Triangles do
|
29
|
+
GL.color(1.0, 0.0, 0.0); GL.vertex(300.0, 300.0)
|
30
|
+
GL.color(1.0, 1.0, 0.0); GL.vertex(100.0, 300.0)
|
31
|
+
GL.color(1.0, 1.0, 1.0); GL.vertex(300.0, 100.0)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
render do |win|
|
37
|
+
@drawable.draw_on win
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
push_scene :triangle
|
42
|
+
end
|
data/samples/pong/pong.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
3
3
|
|
4
4
|
def path_of(res)
|
5
|
-
File.expand_path(File.dirname(__FILE__) + "/../../
|
5
|
+
File.expand_path(File.dirname(__FILE__) + "/../../test/res/#{res}")
|
6
6
|
end
|
7
7
|
|
8
8
|
require 'ray'
|
@@ -12,16 +12,19 @@ module Pong
|
|
12
12
|
scene_name :pong_scene
|
13
13
|
|
14
14
|
def setup
|
15
|
-
@font =
|
15
|
+
@font = Ray::Font.default
|
16
16
|
|
17
17
|
player_img = Ray::Image.new(:w => 20, :h => 50)
|
18
18
|
player_img.draw_filled_rect(Ray::Rect.new(0, 0, 20, 50), Ray::Color.blue)
|
19
|
+
player_img.update
|
19
20
|
|
20
21
|
adv_img = Ray::Image.new(:w => 20, :h => 50)
|
21
22
|
adv_img.draw_filled_rect(Ray::Rect.new(0, 0, 20, 50), Ray::Color.red)
|
23
|
+
adv_img.update
|
22
24
|
|
23
25
|
ball_img = Ray::Image.new(:w => 10, :h => 10)
|
24
26
|
ball_img.draw_filled_circle([5, 5], 5, Ray::Color.white)
|
27
|
+
ball_img.update
|
25
28
|
|
26
29
|
@player = sprite(player_img)
|
27
30
|
@adv = sprite(adv_img)
|
@@ -68,9 +71,9 @@ module Pong
|
|
68
71
|
end
|
69
72
|
|
70
73
|
if @ball.x >= @screen_rect.w
|
71
|
-
raise_event
|
74
|
+
raise_event :point_gained, :player
|
72
75
|
elsif @ball.x <= 0
|
73
|
-
raise_event
|
76
|
+
raise_event :point_gained, :adv
|
74
77
|
end
|
75
78
|
|
76
79
|
if @ball.collide?(@player) || @ball.collide?(@adv) ||
|
@@ -101,13 +104,14 @@ module Pong
|
|
101
104
|
def render(win)
|
102
105
|
win.fill(Ray::Color.black)
|
103
106
|
|
104
|
-
@player.
|
105
|
-
@adv.
|
106
|
-
@ball.
|
107
|
+
@player.draw_on win
|
108
|
+
@adv.draw_on win
|
109
|
+
@ball.draw_on win
|
107
110
|
|
108
111
|
@font.draw("#{@scores[:player]} - #{@scores[:adv]}",
|
109
112
|
:at => [0, 0], :on => win,
|
110
|
-
:color => Ray::Color.white
|
113
|
+
:color => Ray::Color.white,
|
114
|
+
:size => 12)
|
111
115
|
end
|
112
116
|
end
|
113
117
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../ext")
|
3
|
+
|
4
|
+
require 'ray'
|
5
|
+
|
6
|
+
$stdout = StringIO.new
|
7
|
+
|
8
|
+
Ray.game "run_scene" do
|
9
|
+
register do
|
10
|
+
add_hook :quit, method(:exit!)
|
11
|
+
|
12
|
+
on :key_press, key(:up) do
|
13
|
+
puts "#{self} knows you pressed up"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
font = Ray::Font.default
|
18
|
+
|
19
|
+
scene :sec do
|
20
|
+
on :key_press, key(:down) do
|
21
|
+
puts "#{self} knows you pressed down"
|
22
|
+
end
|
23
|
+
|
24
|
+
on :key_press, key(:left) do
|
25
|
+
pop_scene
|
26
|
+
end
|
27
|
+
|
28
|
+
puts "In scene :sec"
|
29
|
+
|
30
|
+
render do |win|
|
31
|
+
font.draw($stdout.string, :on => win, :size => 12)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
scene :first do
|
36
|
+
on :key_press, key(:left) do
|
37
|
+
puts "#{self} knows you pressed left"
|
38
|
+
end
|
39
|
+
|
40
|
+
on :key_press, key(:right) do
|
41
|
+
run_scene :sec
|
42
|
+
puts "Back to scene :first"
|
43
|
+
end
|
44
|
+
|
45
|
+
puts "In scene :first"
|
46
|
+
|
47
|
+
render do |win|
|
48
|
+
font.draw($stdout.string, :on => win, :size => 12)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
push_scene :first
|
53
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
|
3
|
+
|
4
|
+
require 'ray'
|
5
|
+
|
6
|
+
Ray::Game.new("Shaders test") do
|
7
|
+
register do
|
8
|
+
add_hook :quit, method(:exit!)
|
9
|
+
end
|
10
|
+
|
11
|
+
scene :shader do
|
12
|
+
self.lazy_rendering = true
|
13
|
+
|
14
|
+
shape = Ray::Shape.rectangle([0, 0, 100, 100], Ray::Color.black)
|
15
|
+
shape.each do |point|
|
16
|
+
point.color = Ray::Color.new(rand(256), rand(256), rand(256))
|
17
|
+
end
|
18
|
+
|
19
|
+
self.shader = Ray::Shader.new StringIO.new(<<-SHADER)
|
20
|
+
uniform sampler2D texture;
|
21
|
+
uniform vec3 ratio;
|
22
|
+
|
23
|
+
void main() {
|
24
|
+
vec4 color = texture2D(texture, gl_TexCoord[0].xy);
|
25
|
+
float gray = dot(color.xyz, ratio);
|
26
|
+
|
27
|
+
gl_FragColor = vec4(gray, gray, gray, 1.0);
|
28
|
+
}
|
29
|
+
SHADER
|
30
|
+
|
31
|
+
shader["texture"] = :current
|
32
|
+
shader["ratio"] = [0.299, 0.587, 0.114]
|
33
|
+
|
34
|
+
render do |win|
|
35
|
+
shape.draw_on win
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
push_scene :shader
|
40
|
+
end
|