ray 0.1.0.pre1 → 0.1.0
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.
- data/README.md +235 -32
- data/Rakefile +20 -49
- data/ext/audio.c +68 -0
- data/ext/audio_source.c +197 -0
- data/ext/buffer_renderer.c +130 -0
- data/ext/color.c +179 -0
- data/ext/drawable.c +446 -0
- data/ext/event.c +337 -0
- data/ext/extconf.rb +80 -6
- data/ext/font.c +97 -0
- data/ext/gl.c +114 -0
- data/ext/gl_buffer.c +224 -0
- data/ext/gl_index_buffer.c +202 -0
- data/ext/gl_int_array.c +139 -0
- data/ext/gl_vertex.c +157 -0
- data/ext/image.c +263 -0
- data/ext/image_target.c +84 -0
- data/ext/input.c +53 -0
- data/ext/matrix.c +374 -0
- data/ext/music.c +113 -0
- data/ext/polygon.c +426 -0
- data/ext/ray.c +59 -0
- data/ext/ray.h +168 -0
- data/ext/rect.c +255 -0
- data/ext/say.h +31 -0
- data/ext/say_all.h +77 -0
- data/ext/say_arial.h +14689 -0
- data/ext/say_array.c +124 -0
- data/ext/say_array.h +34 -0
- data/ext/say_audio.c +64 -0
- data/ext/say_audio.h +170 -0
- data/ext/say_audio_context.c +40 -0
- data/ext/say_audio_source.c +96 -0
- data/ext/say_basic_type.c +17 -0
- data/ext/say_basic_type.h +47 -0
- data/ext/say_buffer.c +277 -0
- data/ext/say_buffer.h +37 -0
- data/ext/say_buffer_renderer.c +121 -0
- data/ext/say_buffer_renderer.h +33 -0
- data/ext/say_buffer_slice.c +247 -0
- data/ext/say_buffer_slice.h +29 -0
- data/ext/say_clean_up.c +14 -0
- data/ext/say_context.c +163 -0
- data/ext/say_context.h +26 -0
- data/ext/say_drawable.c +350 -0
- data/ext/say_drawable.h +100 -0
- data/ext/say_error.c +27 -0
- data/ext/say_event.h +213 -0
- data/ext/say_font.c +335 -0
- data/ext/say_font.h +51 -0
- data/ext/say_image.c +283 -0
- data/ext/say_image.h +52 -0
- data/ext/say_image_target.c +134 -0
- data/ext/say_image_target.h +25 -0
- data/ext/say_imp.h +70 -0
- data/ext/say_index_buffer.c +90 -0
- data/ext/say_index_buffer.h +29 -0
- data/ext/say_index_buffer_slice.c +227 -0
- data/ext/say_index_buffer_slice.h +28 -0
- data/ext/say_input.c +35 -0
- data/ext/say_matrix.c +314 -0
- data/ext/say_matrix.h +55 -0
- data/ext/say_music.c +225 -0
- data/ext/say_osx.h +62 -0
- data/ext/say_osx_context.h +98 -0
- data/ext/say_osx_window.h +766 -0
- data/ext/say_polygon.c +358 -0
- data/ext/say_polygon.h +62 -0
- data/ext/say_renderer.c +42 -0
- data/ext/say_renderer.h +22 -0
- data/ext/say_shader.c +375 -0
- data/ext/say_shader.h +91 -0
- data/ext/say_sound.c +67 -0
- data/ext/say_sound_buffer.c +96 -0
- data/ext/say_sprite.c +273 -0
- data/ext/say_sprite.h +53 -0
- data/ext/say_string.c +9 -0
- data/ext/say_table.c +86 -0
- data/ext/say_table.h +24 -0
- data/ext/say_target.c +264 -0
- data/ext/say_target.h +67 -0
- data/ext/say_text.c +441 -0
- data/ext/say_text.h +56 -0
- data/ext/say_thread.c +46 -0
- data/ext/say_thread.h +39 -0
- data/ext/say_thread_variable.c +44 -0
- data/ext/say_utf.c +62 -0
- data/ext/say_vertex_type.c +113 -0
- data/ext/say_vertex_type.h +40 -0
- data/ext/say_vfile.c +57 -0
- data/ext/say_view.c +150 -0
- data/ext/say_view.h +44 -0
- data/ext/say_win.h +24 -0
- data/ext/say_win_context.h +91 -0
- data/ext/say_win_window.h +670 -0
- data/ext/say_window.c +155 -0
- data/ext/say_window.h +43 -0
- data/ext/say_x11.h +41 -0
- data/ext/say_x11_context.h +96 -0
- data/ext/say_x11_window.h +818 -0
- data/ext/shader.c +302 -0
- data/ext/sound.c +118 -0
- data/ext/sound_buffer.c +75 -0
- data/ext/sprite.c +241 -0
- data/ext/stb_image.h +4971 -0
- data/ext/stb_image_write.h +511 -0
- data/ext/target.c +184 -0
- data/ext/text.c +162 -0
- data/ext/utils.c +10 -0
- data/ext/vector.c +261 -0
- data/ext/vendor/freetype/bin/freetype6.dll +0 -0
- data/ext/vendor/freetype/bin/zlib1.dll +0 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftconfig.h +350 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftheader.h +729 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftmodule.h +22 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftoption.h +695 -0
- data/ext/vendor/freetype/include/freetype2/freetype/config/ftstdlib.h +180 -0
- data/ext/vendor/freetype/include/freetype2/freetype/freetype.h +3434 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftbbox.h +94 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftbdf.h +200 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftbitmap.h +206 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftcache.h +1110 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftchapters.h +100 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fterrdef.h +239 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fterrors.h +206 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftgasp.h +113 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftglyph.h +575 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftgxval.h +358 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftgzip.h +102 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftimage.h +1237 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftincrem.h +331 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftlcdfil.h +166 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftlist.h +273 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftlzw.h +99 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmac.h +272 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmm.h +378 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmodapi.h +406 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftmoderr.h +155 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftotval.h +198 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftoutln.h +526 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftpfr.h +172 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftrender.h +229 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsizes.h +159 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsnames.h +170 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftstroke.h +716 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsynth.h +73 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftsystem.h +346 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fttrigon.h +350 -0
- data/ext/vendor/freetype/include/freetype2/freetype/fttypes.h +583 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftwinfnt.h +263 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ftxf86.h +80 -0
- data/ext/vendor/freetype/include/freetype2/freetype/t1tables.h +450 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ttnameid.h +1132 -0
- data/ext/vendor/freetype/include/freetype2/freetype/tttables.h +756 -0
- data/ext/vendor/freetype/include/freetype2/freetype/tttags.h +99 -0
- data/ext/vendor/freetype/include/freetype2/freetype/ttunpat.h +59 -0
- data/ext/vendor/freetype/include/ft2build.h +61 -0
- data/ext/vendor/freetype/lib/freetype-bcc.lib +0 -0
- data/ext/vendor/freetype/lib/freetype6.def +249 -0
- data/ext/vendor/freetype/lib/libfreetype.dll.a +0 -0
- data/ext/vendor/freetype/lib/tmp.freetype.lib +0 -0
- data/ext/vendor/glew/LICENSE.txt +73 -0
- data/ext/vendor/glew/README.txt +18 -0
- data/ext/vendor/glew/include/GL/glew.h +15507 -0
- data/ext/vendor/glew/include/GL/glxew.h +1568 -0
- data/ext/vendor/glew/include/GL/wglew.h +1361 -0
- data/ext/vendor/glew/lib/glew32.dll +0 -0
- data/ext/vendor/glew/lib/glew32mx.dll +0 -0
- data/ext/vendor/glew/lib/libglew32.a +0 -0
- data/ext/vendor/glew/lib/libglew32.dll.a +0 -0
- data/ext/vendor/glew/lib/libglew32mx.a +0 -0
- data/ext/vendor/glew/lib/libglew32mx.dll.a +0 -0
- data/ext/vendor/openal/COPYING +484 -0
- data/ext/vendor/openal/Win32/soft_oal.dll +0 -0
- data/ext/vendor/openal/include/AL/al.h +724 -0
- data/ext/vendor/openal/include/AL/alc.h +277 -0
- data/ext/vendor/openal/include/AL/alext.h +165 -0
- data/ext/vendor/openal/include/AL/efx-creative.h +3 -0
- data/ext/vendor/openal/include/AL/efx.h +758 -0
- data/ext/vendor/openal/lib/libOpenAL32.dll.a +0 -0
- data/ext/vendor/sndfile/bin/libsndfile-1.dll +0 -0
- data/ext/vendor/sndfile/include/sndfile.h +666 -0
- data/ext/vendor/sndfile/include/sndfile.hh +422 -0
- data/ext/vendor/sndfile/lib/libsndfile-1.def +41 -0
- data/ext/vendor/sndfile/lib/libsndfile-1.lib +0 -0
- data/ext/vertex.c +96 -0
- data/ext/view.c +131 -0
- data/ext/window.c +183 -0
- data/lib/ray/animation.rb +248 -0
- data/lib/ray/animation/block_animation.rb +36 -0
- data/lib/ray/animation/circular_motion.rb +57 -0
- data/lib/ray/animation/color_variation.rb +102 -0
- data/lib/ray/animation/combination.rb +71 -0
- data/lib/ray/animation/float_variation.rb +76 -0
- data/lib/ray/animation/sequence.rb +65 -0
- data/lib/ray/animation/sprite_animation.rb +68 -0
- data/lib/ray/animation/vector_variation.rb +111 -0
- data/lib/ray/animation_list.rb +50 -0
- data/lib/ray/audio.rb +4 -7
- data/lib/ray/buffer_renderer.rb +9 -0
- data/lib/ray/color.rb +41 -6
- data/lib/ray/drawable.rb +34 -9
- data/lib/ray/dsl.rb +6 -0
- data/lib/ray/dsl/event.rb +1 -1
- data/lib/ray/dsl/event_listener.rb +14 -10
- data/lib/ray/dsl/event_raiser.rb +5 -2
- data/lib/ray/dsl/event_runner.rb +4 -10
- data/lib/ray/dsl/event_translator.rb +67 -99
- data/lib/ray/dsl/handler.rb +1 -1
- data/lib/ray/dsl/matcher.rb +40 -27
- data/lib/ray/event.rb +22 -0
- data/lib/ray/font.rb +0 -42
- data/lib/ray/font_set.rb +3 -7
- data/lib/ray/game.rb +33 -73
- data/lib/ray/gl/int_array.rb +24 -0
- data/lib/ray/gl/vertex.rb +106 -0
- data/lib/ray/helper.rb +25 -11
- data/lib/ray/image.rb +9 -154
- data/lib/ray/image_set.rb +3 -8
- data/lib/ray/image_target.rb +12 -0
- data/lib/ray/matrix.rb +90 -0
- data/lib/ray/music.rb +12 -0
- data/lib/ray/polygon.rb +77 -0
- data/lib/ray/ray.rb +45 -13
- data/lib/ray/rect.rb +14 -3
- data/lib/ray/resource_set.rb +18 -35
- data/lib/ray/scene.rb +43 -81
- data/lib/ray/scene_list.rb +12 -5
- data/lib/ray/shader.rb +82 -0
- data/lib/ray/sound.rb +18 -0
- data/lib/ray/sound_buffer.rb +6 -0
- data/lib/ray/sound_buffer_set.rb +32 -0
- data/lib/ray/sprite.rb +111 -97
- data/lib/ray/target.rb +18 -0
- data/lib/ray/text.rb +80 -58
- data/lib/ray/text_helper.rb +21 -27
- data/lib/ray/turtle.rb +49 -38
- data/lib/ray/vector.rb +76 -1
- data/lib/ray/vertex.rb +24 -0
- data/lib/ray/view.rb +47 -0
- data/lib/ray/window.rb +23 -0
- data/samples/_media/Beep.wav +0 -0
- data/samples/_media/CptnRuby Gem.png +0 -0
- data/samples/_media/CptnRuby Map.txt +25 -0
- data/samples/_media/CptnRuby Tileset.png +0 -0
- data/samples/_media/CptnRuby.png +0 -0
- data/samples/_media/Space.png +0 -0
- data/samples/_media/Star.png +0 -0
- data/samples/_media/Starfighter.png +0 -0
- data/samples/animation/chain.rb +33 -0
- data/samples/animation/circle.rb +38 -0
- data/samples/animation/color.rb +18 -0
- data/samples/animation/rotation.rb +17 -0
- data/samples/animation/sequence.rb +33 -0
- data/samples/animation/shader.rb +65 -0
- data/samples/animation/sprite_motion.rb +103 -0
- data/samples/animation/translation.rb +23 -0
- data/samples/audio/spacial.rb +25 -11
- data/samples/buffer/buffer.rb +28 -0
- data/samples/buffer/index_buffer.rb +36 -0
- data/samples/buffer/renderer.rb +27 -0
- data/samples/cptn_ruby/cptn_ruby.rb +279 -0
- data/samples/hello_world/hello.rb +2 -2
- data/samples/hello_world/hello_dsl.rb +3 -3
- data/samples/hello_world/text.rb +2 -2
- data/samples/opengl/cube.rb +124 -0
- data/samples/opengl/image.rb +36 -16
- data/samples/opengl/obj_loader.rb +99 -0
- data/samples/opengl/opengl.rb +24 -18
- data/samples/opengl/shader.rb +36 -26
- data/samples/pong/pong.rb +41 -39
- data/samples/{run_scene.rb → scenes/run_scene.rb} +21 -7
- data/samples/shaders/geometry.rb +98 -0
- data/samples/shaders/scene.rb +19 -12
- data/samples/shaders/shaders.rb +34 -17
- data/samples/shaders/shape.rb +12 -7
- data/samples/sokoban/level_1 +11 -7
- data/samples/sokoban/sokoban.rb +36 -63
- data/samples/starfighter/starfighter.rb +159 -0
- data/samples/test/actual_scene.rb +3 -3
- data/samples/test/scene_riot.rb +4 -4
- data/samples/test/scene_spec.rb +3 -3
- data/samples/test/scene_test_unit.rb +1 -1
- data/samples/turtle/byzantium.rb +10 -5
- data/samples/turtle/hilbert.rb +16 -11
- data/samples/turtle/koch.rb +16 -11
- data/samples/turtle/mandala.rb +43 -38
- data/samples/turtle/tree.rb +13 -8
- data/samples/view/resize.rb +26 -0
- data/samples/view/view.rb +35 -0
- data/samples/window/all_events.rb +44 -0
- data/samples/window/change_title.rb +16 -0
- data/samples/window/fullscreen.rb +18 -0
- data/samples/window/get_pixel.rb +29 -0
- data/samples/window/icon.rb +88 -0
- data/samples/window/input.rb +27 -0
- data/samples/window/no_border.rb +16 -0
- data/samples/window/resize.rb +24 -0
- data/test/animation/color_variation_test.rb +64 -0
- data/test/animation/combination_test.rb +35 -0
- data/test/animation/float_variation_test.rb +75 -0
- data/test/animation/vector_variation_test.rb +123 -0
- data/test/animation_list_test.rb +122 -0
- data/test/animation_test.rb +83 -0
- data/test/audio_test.rb +88 -33
- data/test/buffer_renderer_test.rb +38 -0
- data/test/color_test.rb +31 -22
- data/test/drawable_test.rb +207 -7
- data/test/dsl_test.rb +25 -7
- data/test/font_test.rb +6 -40
- data/test/game_test.rb +76 -0
- data/test/gl_buffer_test.rb +26 -0
- data/test/gl_index_buffer_test.rb +17 -0
- data/test/gl_vertex_test.rb +117 -0
- data/test/helpers.rb +45 -5
- data/test/image_target_test.rb +19 -0
- data/test/image_test.rb +73 -53
- data/test/int_array_test.rb +64 -0
- data/test/matrix_test.rb +134 -0
- data/test/polygon_test.rb +126 -0
- data/test/rect_test.rb +6 -8
- data/test/res/frag.c +14 -0
- data/test/res/frag3d.c +10 -0
- data/test/res/frag_gray.c +17 -0
- data/test/res/frag_light3d.c +20 -0
- data/test/res/light3d.c +20 -0
- data/test/res/sprite.png +0 -0
- data/test/res/teapot.obj +12831 -0
- data/test/res/vert.c +17 -0
- data/test/res/vertex3d.c +14 -0
- data/test/resource_set_test.rb +8 -45
- data/test/run_all.rb +1 -1
- data/test/scene_list_test.rb +79 -0
- data/test/scene_test.rb +168 -0
- data/test/shader_test.rb +58 -0
- data/test/sprite_test.rb +46 -41
- data/test/target_test.rb +34 -0
- data/test/text_test.rb +20 -31
- data/test/turtle_test.rb +35 -20
- data/test/vector_test.rb +61 -19
- data/test/vertex_test.rb +43 -0
- data/test/view_test.rb +61 -0
- metadata +347 -126
- data/.yardopts +0 -4
- data/VERSION +0 -1
- data/ext/audio.cpp +0 -723
- data/ext/color.cpp +0 -159
- data/ext/drawable.cpp +0 -91
- data/ext/event.cpp +0 -460
- data/ext/font.cpp +0 -190
- data/ext/image.cpp +0 -733
- data/ext/input.cpp +0 -74
- data/ext/ray.cpp +0 -168
- data/ext/ray.hpp +0 -356
- data/ext/rect.cpp +0 -245
- data/ext/shader.cpp +0 -169
- data/ext/shape.cpp +0 -409
- data/ext/sprite.cpp +0 -306
- data/ext/text.cpp +0 -181
- data/ext/vector.cpp +0 -215
- data/guide.md +0 -619
- data/lib/ray/input.rb +0 -10
- data/lib/ray/music_set.rb +0 -37
- data/lib/ray/rmagick.rb +0 -41
- data/lib/ray/shape.rb +0 -132
- data/lib/ray/sound_set.rb +0 -37
- data/samples/opengl/binding.rb +0 -38
- data/test/ray_test.rb +0 -25
- data/test/shape_test.rb +0 -101
- data/yard_ext.rb +0 -63
data/lib/ray/music.rb
ADDED
data/lib/ray/polygon.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
module Ray
|
2
|
+
class Polygon < Drawable
|
3
|
+
include Enumerable
|
4
|
+
|
5
|
+
# One of the points contained in a polygon.
|
6
|
+
class Point
|
7
|
+
def initialize(polygon, id)
|
8
|
+
@polygon, @id = polygon, id
|
9
|
+
end
|
10
|
+
|
11
|
+
# @return [Ray::Vector2] Position of the point.
|
12
|
+
def pos
|
13
|
+
@polygon.pos_of(@id)
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [Color] Color of the point
|
17
|
+
def color
|
18
|
+
@polygon.color_of(@id)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @return [Color] Outline color of the point
|
22
|
+
def outline
|
23
|
+
@polygon.outline_of(@id)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Sets the position of the point
|
27
|
+
def pos=(pos)
|
28
|
+
@polygon.set_pos_of(@id, pos)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Sets the color of the point
|
32
|
+
def color=(color)
|
33
|
+
@polygon.set_color_of(@id, color)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Sets the outline color of the point
|
37
|
+
def outline=(outline)
|
38
|
+
@polygon.set_outline_of(@id, outline)
|
39
|
+
end
|
40
|
+
|
41
|
+
def inspect
|
42
|
+
"#<#{self.class} polygon=#{polygon} id=#{id} pos=#{pos} color=#{color} \
|
43
|
+
outline=#{outline}>"
|
44
|
+
end
|
45
|
+
|
46
|
+
attr_reader :polygon, :id
|
47
|
+
end
|
48
|
+
|
49
|
+
# @param [Integer, nil] size Size of the polygon. If non nil, size points
|
50
|
+
# will be added to the polygon and then yielded.
|
51
|
+
#
|
52
|
+
# @example
|
53
|
+
# polygon = Ray::Polygon.new
|
54
|
+
#
|
55
|
+
# other_polygon = Ray::Polygon.new(10) do |point|
|
56
|
+
# point.pos = [point.id, point.id]
|
57
|
+
# point.color = Ray::Color.new(point.id * 10, 0, 0)
|
58
|
+
# end
|
59
|
+
def initialize(size = nil, &block)
|
60
|
+
if size
|
61
|
+
resize size
|
62
|
+
each(&block) if block
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# @yieldparam [Ray::Polygon::Point] point Each point of the polygon
|
67
|
+
def each
|
68
|
+
0.upto(size - 1) { |n| yield self[n] }
|
69
|
+
end
|
70
|
+
|
71
|
+
# @return [Ray::Polygon::Point] idth point of the polygon (id should be less
|
72
|
+
# than size)
|
73
|
+
def [](id)
|
74
|
+
Point.new(self, id)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/ray/ray.rb
CHANGED
@@ -1,39 +1,71 @@
|
|
1
1
|
require 'enumerator'
|
2
2
|
require 'iconv'
|
3
3
|
|
4
|
+
# Change PATH so as to find DLLs on windows.
|
5
|
+
if RUBY_PLATFORM =~ /mingw/
|
6
|
+
ext_dir = File.expand_path("../../ext", File.dirname(__FILE__))
|
7
|
+
ENV["PATH"] = ENV["PATH"] + File::PATH_SEPARATOR + ext_dir
|
8
|
+
end
|
9
|
+
|
4
10
|
require 'ray_ext'
|
5
11
|
|
6
12
|
module Ray
|
7
|
-
|
8
|
-
|
13
|
+
# True for big endian
|
14
|
+
BigEndian = ([1].pack("I") == [1].pack("N"))
|
15
|
+
|
16
|
+
# Encoding used by Ray for text_entered events.
|
17
|
+
InternalEncoding = BigEndian ? "UTF-32BE" : "UTF-32LE"
|
9
18
|
end
|
10
19
|
|
11
20
|
require 'ray/resource_set'
|
12
21
|
|
13
|
-
require 'ray/color'
|
14
|
-
require 'ray/rect'
|
15
22
|
require 'ray/vector'
|
23
|
+
require 'ray/rect'
|
24
|
+
require 'ray/matrix'
|
25
|
+
require 'ray/view'
|
26
|
+
require 'ray/color'
|
27
|
+
require 'ray/vertex'
|
28
|
+
require 'ray/gl/vertex'
|
29
|
+
require 'ray/gl/int_array'
|
30
|
+
require 'ray/buffer_renderer'
|
31
|
+
require 'ray/shader'
|
32
|
+
|
16
33
|
require 'ray/image'
|
17
|
-
require 'ray/shape'
|
18
|
-
require 'ray/drawable'
|
19
34
|
require 'ray/text_helper'
|
20
35
|
require 'ray/font'
|
36
|
+
|
37
|
+
require 'ray/target'
|
38
|
+
require 'ray/window'
|
39
|
+
require 'ray/image_target'
|
40
|
+
|
41
|
+
require 'ray/event'
|
42
|
+
|
43
|
+
require 'ray/drawable'
|
44
|
+
require 'ray/polygon'
|
45
|
+
require 'ray/sprite'
|
21
46
|
require 'ray/text'
|
47
|
+
require 'ray/turtle'
|
48
|
+
|
22
49
|
require 'ray/audio'
|
23
|
-
require 'ray/
|
50
|
+
require 'ray/sound_buffer'
|
51
|
+
require 'ray/sound'
|
52
|
+
require 'ray/music'
|
24
53
|
|
25
54
|
require 'ray/image_set'
|
26
55
|
require 'ray/font_set'
|
27
|
-
require 'ray/
|
28
|
-
require 'ray/music_set'
|
29
|
-
|
30
|
-
require 'ray/turtle'
|
56
|
+
require 'ray/sound_buffer_set'
|
31
57
|
|
32
58
|
require 'ray/dsl'
|
33
59
|
require 'ray/helper'
|
34
60
|
|
35
|
-
require 'ray/
|
61
|
+
require 'ray/animation'
|
62
|
+
require 'ray/animation_list'
|
36
63
|
|
37
|
-
require 'ray/scene'
|
38
64
|
require 'ray/scene_list'
|
65
|
+
require 'ray/scene'
|
66
|
+
|
39
67
|
require 'ray/game'
|
68
|
+
|
69
|
+
at_exit do # Cleaning Ray
|
70
|
+
Ray.send :_clean_up!
|
71
|
+
end
|
data/lib/ray/rect.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
module Ray
|
2
2
|
class Rect
|
3
|
+
class << self
|
4
|
+
alias :[] :new
|
5
|
+
end
|
6
|
+
|
3
7
|
def inspect
|
4
|
-
"
|
8
|
+
"(#{pos}, #{size})"
|
5
9
|
end
|
6
10
|
|
11
|
+
alias :to_s :inspect
|
12
|
+
|
7
13
|
# @return [true, false] True if the receiver is inside the rect.
|
8
14
|
# (false if they just collide)
|
9
15
|
def inside?(rect)
|
@@ -54,6 +60,11 @@ module Ray
|
|
54
60
|
Ray::Vector2[x + w, y + h]
|
55
61
|
end
|
56
62
|
|
63
|
+
# @return [Ray::Vector2]
|
64
|
+
def center
|
65
|
+
Ray::Vector2[x + w / 2, y + h / 2]
|
66
|
+
end
|
67
|
+
|
57
68
|
# @return [true, false] True if the two rects are equal
|
58
69
|
def ==(rect)
|
59
70
|
return false unless rect.is_a? Rect
|
@@ -91,14 +102,14 @@ module Ray
|
|
91
102
|
end
|
92
103
|
|
93
104
|
class Array
|
94
|
-
# Converts an
|
105
|
+
# @return [Ray::Rect] Converts an array to a rect.
|
95
106
|
def to_rect
|
96
107
|
Ray::Rect.new(*self)
|
97
108
|
end
|
98
109
|
end
|
99
110
|
|
100
111
|
class Hash
|
101
|
-
# Converts a
|
112
|
+
# @return [Ray::Rect] Converts a hash into a rect.
|
102
113
|
def to_rect
|
103
114
|
Ray::Rect.new(self)
|
104
115
|
end
|
data/lib/ray/resource_set.rb
CHANGED
@@ -18,11 +18,9 @@ module Ray
|
|
18
18
|
module ResourceSet
|
19
19
|
# Registers a block for handling some resources.
|
20
20
|
def add_set(regexp, &block)
|
21
|
-
set_hash[regexp] = Hash.new do |hash,
|
22
|
-
|
23
|
-
|
24
|
-
block_args = $~.captures + args[1..-1]
|
25
|
-
hash[args] = block.call(*block_args)
|
21
|
+
set_hash[regexp] = Hash.new do |hash, key|
|
22
|
+
key =~ regexp
|
23
|
+
hash[key] = yield(*$~.captures)
|
26
24
|
end
|
27
25
|
end
|
28
26
|
|
@@ -30,62 +28,47 @@ module Ray
|
|
30
28
|
(@set_hash ||= {})
|
31
29
|
end
|
32
30
|
|
33
|
-
# @return The object corresponding to a given
|
34
|
-
def [](
|
35
|
-
if params.size != required_argument_count
|
36
|
-
raise(ArgumentError, "wrong number of arguments (%d for %d)" %
|
37
|
-
[params.size, required_argument_count])
|
38
|
-
end
|
39
|
-
|
31
|
+
# @return The object corresponding to a given string.
|
32
|
+
def [](key)
|
40
33
|
set_hash.each do |regexp, hash|
|
41
|
-
return hash[
|
34
|
+
return hash[key] if regexp =~ key
|
42
35
|
end
|
43
36
|
|
44
|
-
missing_pattern(
|
37
|
+
missing_pattern(key)
|
45
38
|
end
|
46
39
|
|
47
40
|
# Selects objects matching a condition.
|
48
41
|
#
|
49
|
-
# @yield
|
50
|
-
# @yieldparam
|
42
|
+
# @yield key, object
|
43
|
+
# @yieldparam key the key used to refer to the resource
|
51
44
|
# @yieldparam object the actual resource
|
52
|
-
def select!
|
45
|
+
def select!
|
53
46
|
return Enumerator.new(self, :select!) unless block_given?
|
54
47
|
|
55
48
|
set_hash.each do |regexp, hash|
|
56
|
-
hash.delete_if
|
57
|
-
!block.call(*(key + [val]))
|
58
|
-
end
|
49
|
+
hash.delete_if { |key, val| !yield(key, val) }
|
59
50
|
end
|
60
51
|
end
|
61
52
|
|
62
53
|
# Removes all the objects from the array but those for which
|
63
54
|
# block returned true.
|
64
55
|
#
|
65
|
-
# @yield
|
66
|
-
def reject!
|
56
|
+
# @yield key, object (See #select!)
|
57
|
+
def reject!
|
67
58
|
return Enumerator.new(self, :reject!) unless block_given?
|
68
|
-
select! {
|
59
|
+
select! { |key, obj| !yield(key, obj) }
|
69
60
|
end
|
70
61
|
|
71
62
|
alias :delete_if :reject!
|
72
63
|
|
73
|
-
#
|
74
|
-
|
75
|
-
|
76
|
-
# Defaulted to 0.
|
77
|
-
def need_argument_count(n)
|
78
|
-
@set_argument_count = n
|
79
|
-
end
|
80
|
-
|
81
|
-
# Returns the required argument count.
|
82
|
-
def required_argument_count
|
83
|
-
@set_argument_count ||= 0
|
64
|
+
# Removes all the items from the resource set
|
65
|
+
def clear
|
66
|
+
set_hash.each { |regexp, hash| hash.clear }
|
84
67
|
end
|
85
68
|
|
86
69
|
# Method called when a string isn't matched by any pattern.
|
87
70
|
# Raises a NoPatternError excpetion by default.
|
88
|
-
def missing_pattern(string
|
71
|
+
def missing_pattern(string)
|
89
72
|
raise NoPatternError, "#{string.inspect} not macthed by any pattern"
|
90
73
|
end
|
91
74
|
end
|
data/lib/ray/scene.rb
CHANGED
@@ -23,7 +23,7 @@ module Ray
|
|
23
23
|
#
|
24
24
|
# Or you can override render:
|
25
25
|
# def render(win)
|
26
|
-
# # Do
|
26
|
+
# # Do draw ing here
|
27
27
|
# end
|
28
28
|
#
|
29
29
|
# Once your scene is loaded, you'll probably want to clean it up (set some
|
@@ -65,12 +65,6 @@ module Ray
|
|
65
65
|
# self.loops_per_second = 30 # will sleep some time after each loop
|
66
66
|
# This defaults to 60.
|
67
67
|
#
|
68
|
-
# == Lazy rendering
|
69
|
-
# By default, the scene is always rendered. You can enable lazy rendering:
|
70
|
-
# self.lazy_rendering = true
|
71
|
-
# In this case, the scene will render in its own Image when requested (using
|
72
|
-
# #need_render!), and that image will be drawn in every loop.
|
73
|
-
#
|
74
68
|
# @see Ray::DSL::EventTranslator
|
75
69
|
class Scene
|
76
70
|
include Ray::Helper
|
@@ -78,15 +72,25 @@ module Ray
|
|
78
72
|
class << self
|
79
73
|
# Registers a scene to a game object, used for subclasses.
|
80
74
|
def bind(game)
|
81
|
-
game.scene(scene_name, self)
|
75
|
+
game.scene(@scene_name || snake_cased_name, self)
|
82
76
|
end
|
83
77
|
|
84
78
|
# @overload scene_name
|
85
79
|
# @return [Symbol] the name of the scene
|
86
80
|
# @overload scene_name(value)
|
87
|
-
# Sets the name of the scene
|
88
|
-
|
89
|
-
|
81
|
+
# Sets the name of the scene. Defaulted to the snake cased name of the
|
82
|
+
# scene.
|
83
|
+
def scene_name(val)
|
84
|
+
@scene_name = val
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
def snake_cased_name
|
89
|
+
if name
|
90
|
+
last_part = name.split("::").last
|
91
|
+
last_part[0] = last_part[0, 1].downcase
|
92
|
+
last_part.gsub(/[A-Z]/) { |letter| "_#{letter.downcase}" }.to_sym
|
93
|
+
end
|
90
94
|
end
|
91
95
|
end
|
92
96
|
|
@@ -100,10 +104,9 @@ module Ray
|
|
100
104
|
@scene_render_block = nil
|
101
105
|
@scene_clean_block = nil
|
102
106
|
|
103
|
-
@scene_need_render = true
|
104
107
|
@scene_loops_per_second = 60
|
105
108
|
|
106
|
-
@
|
109
|
+
@scene_animations = Ray::AnimationList.new
|
107
110
|
end
|
108
111
|
|
109
112
|
def register_events
|
@@ -132,42 +135,7 @@ module Ray
|
|
132
135
|
until @scene_exit
|
133
136
|
loop_start = Time.now
|
134
137
|
|
135
|
-
|
136
|
-
until ev.type == Ray::Event::TYPE_NOEVENT
|
137
|
-
DSL::EventTranslator.translate_event(ev).each do |args|
|
138
|
-
raise_event(*args)
|
139
|
-
end
|
140
|
-
|
141
|
-
ev.poll!
|
142
|
-
end
|
143
|
-
|
144
|
-
@scene_always_block.call if @scene_always_block
|
145
|
-
|
146
|
-
listener_runner.run
|
147
|
-
|
148
|
-
@scene_window.fill(Ray::Color.none)
|
149
|
-
|
150
|
-
if lazy_rendering?
|
151
|
-
unless @scene_lazy_cache
|
152
|
-
@scene_lazy_cache = Ray::Image.new(:w => @scene_window.w,
|
153
|
-
:h => @scene_window.h)
|
154
|
-
end
|
155
|
-
|
156
|
-
if @scene_need_render
|
157
|
-
@scene_lazy_cache.fill Ray::Color.none
|
158
|
-
|
159
|
-
render @scene_lazy_cache
|
160
|
-
@scene_lazy_cache.update
|
161
|
-
|
162
|
-
@scene_need_render = false
|
163
|
-
end
|
164
|
-
|
165
|
-
@scene_lazy_cache.draw(:on => @scene_window, :shader => @scene_shader)
|
166
|
-
else
|
167
|
-
render @scene_window
|
168
|
-
end
|
169
|
-
|
170
|
-
@scene_window.update
|
138
|
+
run_tick
|
171
139
|
|
172
140
|
if @scene_loops_per_second
|
173
141
|
ellapsed_time = Time.now - loop_start
|
@@ -180,6 +148,23 @@ module Ray
|
|
180
148
|
clean_up
|
181
149
|
end
|
182
150
|
|
151
|
+
# Runs one tick of the scene, checking for events, running the event loop,
|
152
|
+
# and drawing on the window.
|
153
|
+
#
|
154
|
+
# @param [true, false] check_events True to check for events
|
155
|
+
def run_tick(check_events = true)
|
156
|
+
collect_events if check_events
|
157
|
+
|
158
|
+
@scene_always_block.call if @scene_always_block
|
159
|
+
listener_runner.run
|
160
|
+
|
161
|
+
@scene_animations.update
|
162
|
+
|
163
|
+
@scene_window.clear Ray::Color.none
|
164
|
+
render @scene_window
|
165
|
+
@scene_window.update
|
166
|
+
end
|
167
|
+
|
183
168
|
# Runs another scene over the current one.
|
184
169
|
# This method will return when the scene is done running.
|
185
170
|
def run_scene(name, *args)
|
@@ -222,11 +207,6 @@ module Ray
|
|
222
207
|
@scene_always_block = block
|
223
208
|
end
|
224
209
|
|
225
|
-
# Marks the scene should be redrawn.
|
226
|
-
def need_render!
|
227
|
-
@scene_need_render = true
|
228
|
-
end
|
229
|
-
|
230
210
|
# Registers the block to draw the scene.
|
231
211
|
#
|
232
212
|
# If no block is given, renders the scen on the image passed as
|
@@ -248,11 +228,6 @@ module Ray
|
|
248
228
|
exit
|
249
229
|
end
|
250
230
|
|
251
|
-
# @see Ray::Game#resize_window
|
252
|
-
def resize_window(w, h)
|
253
|
-
game.resize_window(w, h)
|
254
|
-
end
|
255
|
-
|
256
231
|
# Cleans the scene or registers a block to clean it.
|
257
232
|
def clean_up(&block)
|
258
233
|
if block_given?
|
@@ -295,33 +270,20 @@ module Ray
|
|
295
270
|
alias :frames_per_second :loops_per_second
|
296
271
|
alias :frames_per_second= :loops_per_second=
|
297
272
|
|
298
|
-
def lazy_rendering
|
299
|
-
@scene_lazy_rendering ||= false
|
300
|
-
end
|
301
|
-
|
302
|
-
alias :lazy_rendering? :lazy_rendering
|
303
|
-
|
304
|
-
def lazy_rendering=(val)
|
305
|
-
@scene_lazy_rendering = val
|
306
|
-
|
307
|
-
unless lazy_rendering?
|
308
|
-
@scene_lazy_cache = nil
|
309
|
-
end
|
310
|
-
end
|
311
|
-
|
312
273
|
# The arguments passed to the scene with push_scene
|
313
274
|
attr_accessor :scene_arguments
|
314
275
|
|
315
|
-
# @return [Ray::
|
316
|
-
#
|
317
|
-
|
318
|
-
|
319
|
-
@scene_shader
|
276
|
+
# @return [Ray::AnimationList] An animation list automatically updated by
|
277
|
+
# the scene.
|
278
|
+
def animations
|
279
|
+
@scene_animations
|
320
280
|
end
|
321
281
|
|
322
|
-
|
323
|
-
def
|
324
|
-
|
282
|
+
private
|
283
|
+
def collect_events
|
284
|
+
window.each_event do |ev|
|
285
|
+
raise_event(*DSL::EventTranslator.translate_event(ev))
|
286
|
+
end
|
325
287
|
end
|
326
288
|
end
|
327
289
|
end
|