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.
Files changed (370) hide show
  1. data/README.md +235 -32
  2. data/Rakefile +20 -49
  3. data/ext/audio.c +68 -0
  4. data/ext/audio_source.c +197 -0
  5. data/ext/buffer_renderer.c +130 -0
  6. data/ext/color.c +179 -0
  7. data/ext/drawable.c +446 -0
  8. data/ext/event.c +337 -0
  9. data/ext/extconf.rb +80 -6
  10. data/ext/font.c +97 -0
  11. data/ext/gl.c +114 -0
  12. data/ext/gl_buffer.c +224 -0
  13. data/ext/gl_index_buffer.c +202 -0
  14. data/ext/gl_int_array.c +139 -0
  15. data/ext/gl_vertex.c +157 -0
  16. data/ext/image.c +263 -0
  17. data/ext/image_target.c +84 -0
  18. data/ext/input.c +53 -0
  19. data/ext/matrix.c +374 -0
  20. data/ext/music.c +113 -0
  21. data/ext/polygon.c +426 -0
  22. data/ext/ray.c +59 -0
  23. data/ext/ray.h +168 -0
  24. data/ext/rect.c +255 -0
  25. data/ext/say.h +31 -0
  26. data/ext/say_all.h +77 -0
  27. data/ext/say_arial.h +14689 -0
  28. data/ext/say_array.c +124 -0
  29. data/ext/say_array.h +34 -0
  30. data/ext/say_audio.c +64 -0
  31. data/ext/say_audio.h +170 -0
  32. data/ext/say_audio_context.c +40 -0
  33. data/ext/say_audio_source.c +96 -0
  34. data/ext/say_basic_type.c +17 -0
  35. data/ext/say_basic_type.h +47 -0
  36. data/ext/say_buffer.c +277 -0
  37. data/ext/say_buffer.h +37 -0
  38. data/ext/say_buffer_renderer.c +121 -0
  39. data/ext/say_buffer_renderer.h +33 -0
  40. data/ext/say_buffer_slice.c +247 -0
  41. data/ext/say_buffer_slice.h +29 -0
  42. data/ext/say_clean_up.c +14 -0
  43. data/ext/say_context.c +163 -0
  44. data/ext/say_context.h +26 -0
  45. data/ext/say_drawable.c +350 -0
  46. data/ext/say_drawable.h +100 -0
  47. data/ext/say_error.c +27 -0
  48. data/ext/say_event.h +213 -0
  49. data/ext/say_font.c +335 -0
  50. data/ext/say_font.h +51 -0
  51. data/ext/say_image.c +283 -0
  52. data/ext/say_image.h +52 -0
  53. data/ext/say_image_target.c +134 -0
  54. data/ext/say_image_target.h +25 -0
  55. data/ext/say_imp.h +70 -0
  56. data/ext/say_index_buffer.c +90 -0
  57. data/ext/say_index_buffer.h +29 -0
  58. data/ext/say_index_buffer_slice.c +227 -0
  59. data/ext/say_index_buffer_slice.h +28 -0
  60. data/ext/say_input.c +35 -0
  61. data/ext/say_matrix.c +314 -0
  62. data/ext/say_matrix.h +55 -0
  63. data/ext/say_music.c +225 -0
  64. data/ext/say_osx.h +62 -0
  65. data/ext/say_osx_context.h +98 -0
  66. data/ext/say_osx_window.h +766 -0
  67. data/ext/say_polygon.c +358 -0
  68. data/ext/say_polygon.h +62 -0
  69. data/ext/say_renderer.c +42 -0
  70. data/ext/say_renderer.h +22 -0
  71. data/ext/say_shader.c +375 -0
  72. data/ext/say_shader.h +91 -0
  73. data/ext/say_sound.c +67 -0
  74. data/ext/say_sound_buffer.c +96 -0
  75. data/ext/say_sprite.c +273 -0
  76. data/ext/say_sprite.h +53 -0
  77. data/ext/say_string.c +9 -0
  78. data/ext/say_table.c +86 -0
  79. data/ext/say_table.h +24 -0
  80. data/ext/say_target.c +264 -0
  81. data/ext/say_target.h +67 -0
  82. data/ext/say_text.c +441 -0
  83. data/ext/say_text.h +56 -0
  84. data/ext/say_thread.c +46 -0
  85. data/ext/say_thread.h +39 -0
  86. data/ext/say_thread_variable.c +44 -0
  87. data/ext/say_utf.c +62 -0
  88. data/ext/say_vertex_type.c +113 -0
  89. data/ext/say_vertex_type.h +40 -0
  90. data/ext/say_vfile.c +57 -0
  91. data/ext/say_view.c +150 -0
  92. data/ext/say_view.h +44 -0
  93. data/ext/say_win.h +24 -0
  94. data/ext/say_win_context.h +91 -0
  95. data/ext/say_win_window.h +670 -0
  96. data/ext/say_window.c +155 -0
  97. data/ext/say_window.h +43 -0
  98. data/ext/say_x11.h +41 -0
  99. data/ext/say_x11_context.h +96 -0
  100. data/ext/say_x11_window.h +818 -0
  101. data/ext/shader.c +302 -0
  102. data/ext/sound.c +118 -0
  103. data/ext/sound_buffer.c +75 -0
  104. data/ext/sprite.c +241 -0
  105. data/ext/stb_image.h +4971 -0
  106. data/ext/stb_image_write.h +511 -0
  107. data/ext/target.c +184 -0
  108. data/ext/text.c +162 -0
  109. data/ext/utils.c +10 -0
  110. data/ext/vector.c +261 -0
  111. data/ext/vendor/freetype/bin/freetype6.dll +0 -0
  112. data/ext/vendor/freetype/bin/zlib1.dll +0 -0
  113. data/ext/vendor/freetype/include/freetype2/freetype/config/ftconfig.h +350 -0
  114. data/ext/vendor/freetype/include/freetype2/freetype/config/ftheader.h +729 -0
  115. data/ext/vendor/freetype/include/freetype2/freetype/config/ftmodule.h +22 -0
  116. data/ext/vendor/freetype/include/freetype2/freetype/config/ftoption.h +695 -0
  117. data/ext/vendor/freetype/include/freetype2/freetype/config/ftstdlib.h +180 -0
  118. data/ext/vendor/freetype/include/freetype2/freetype/freetype.h +3434 -0
  119. data/ext/vendor/freetype/include/freetype2/freetype/ftbbox.h +94 -0
  120. data/ext/vendor/freetype/include/freetype2/freetype/ftbdf.h +200 -0
  121. data/ext/vendor/freetype/include/freetype2/freetype/ftbitmap.h +206 -0
  122. data/ext/vendor/freetype/include/freetype2/freetype/ftcache.h +1110 -0
  123. data/ext/vendor/freetype/include/freetype2/freetype/ftchapters.h +100 -0
  124. data/ext/vendor/freetype/include/freetype2/freetype/fterrdef.h +239 -0
  125. data/ext/vendor/freetype/include/freetype2/freetype/fterrors.h +206 -0
  126. data/ext/vendor/freetype/include/freetype2/freetype/ftgasp.h +113 -0
  127. data/ext/vendor/freetype/include/freetype2/freetype/ftglyph.h +575 -0
  128. data/ext/vendor/freetype/include/freetype2/freetype/ftgxval.h +358 -0
  129. data/ext/vendor/freetype/include/freetype2/freetype/ftgzip.h +102 -0
  130. data/ext/vendor/freetype/include/freetype2/freetype/ftimage.h +1237 -0
  131. data/ext/vendor/freetype/include/freetype2/freetype/ftincrem.h +331 -0
  132. data/ext/vendor/freetype/include/freetype2/freetype/ftlcdfil.h +166 -0
  133. data/ext/vendor/freetype/include/freetype2/freetype/ftlist.h +273 -0
  134. data/ext/vendor/freetype/include/freetype2/freetype/ftlzw.h +99 -0
  135. data/ext/vendor/freetype/include/freetype2/freetype/ftmac.h +272 -0
  136. data/ext/vendor/freetype/include/freetype2/freetype/ftmm.h +378 -0
  137. data/ext/vendor/freetype/include/freetype2/freetype/ftmodapi.h +406 -0
  138. data/ext/vendor/freetype/include/freetype2/freetype/ftmoderr.h +155 -0
  139. data/ext/vendor/freetype/include/freetype2/freetype/ftotval.h +198 -0
  140. data/ext/vendor/freetype/include/freetype2/freetype/ftoutln.h +526 -0
  141. data/ext/vendor/freetype/include/freetype2/freetype/ftpfr.h +172 -0
  142. data/ext/vendor/freetype/include/freetype2/freetype/ftrender.h +229 -0
  143. data/ext/vendor/freetype/include/freetype2/freetype/ftsizes.h +159 -0
  144. data/ext/vendor/freetype/include/freetype2/freetype/ftsnames.h +170 -0
  145. data/ext/vendor/freetype/include/freetype2/freetype/ftstroke.h +716 -0
  146. data/ext/vendor/freetype/include/freetype2/freetype/ftsynth.h +73 -0
  147. data/ext/vendor/freetype/include/freetype2/freetype/ftsystem.h +346 -0
  148. data/ext/vendor/freetype/include/freetype2/freetype/fttrigon.h +350 -0
  149. data/ext/vendor/freetype/include/freetype2/freetype/fttypes.h +583 -0
  150. data/ext/vendor/freetype/include/freetype2/freetype/ftwinfnt.h +263 -0
  151. data/ext/vendor/freetype/include/freetype2/freetype/ftxf86.h +80 -0
  152. data/ext/vendor/freetype/include/freetype2/freetype/t1tables.h +450 -0
  153. data/ext/vendor/freetype/include/freetype2/freetype/ttnameid.h +1132 -0
  154. data/ext/vendor/freetype/include/freetype2/freetype/tttables.h +756 -0
  155. data/ext/vendor/freetype/include/freetype2/freetype/tttags.h +99 -0
  156. data/ext/vendor/freetype/include/freetype2/freetype/ttunpat.h +59 -0
  157. data/ext/vendor/freetype/include/ft2build.h +61 -0
  158. data/ext/vendor/freetype/lib/freetype-bcc.lib +0 -0
  159. data/ext/vendor/freetype/lib/freetype6.def +249 -0
  160. data/ext/vendor/freetype/lib/libfreetype.dll.a +0 -0
  161. data/ext/vendor/freetype/lib/tmp.freetype.lib +0 -0
  162. data/ext/vendor/glew/LICENSE.txt +73 -0
  163. data/ext/vendor/glew/README.txt +18 -0
  164. data/ext/vendor/glew/include/GL/glew.h +15507 -0
  165. data/ext/vendor/glew/include/GL/glxew.h +1568 -0
  166. data/ext/vendor/glew/include/GL/wglew.h +1361 -0
  167. data/ext/vendor/glew/lib/glew32.dll +0 -0
  168. data/ext/vendor/glew/lib/glew32mx.dll +0 -0
  169. data/ext/vendor/glew/lib/libglew32.a +0 -0
  170. data/ext/vendor/glew/lib/libglew32.dll.a +0 -0
  171. data/ext/vendor/glew/lib/libglew32mx.a +0 -0
  172. data/ext/vendor/glew/lib/libglew32mx.dll.a +0 -0
  173. data/ext/vendor/openal/COPYING +484 -0
  174. data/ext/vendor/openal/Win32/soft_oal.dll +0 -0
  175. data/ext/vendor/openal/include/AL/al.h +724 -0
  176. data/ext/vendor/openal/include/AL/alc.h +277 -0
  177. data/ext/vendor/openal/include/AL/alext.h +165 -0
  178. data/ext/vendor/openal/include/AL/efx-creative.h +3 -0
  179. data/ext/vendor/openal/include/AL/efx.h +758 -0
  180. data/ext/vendor/openal/lib/libOpenAL32.dll.a +0 -0
  181. data/ext/vendor/sndfile/bin/libsndfile-1.dll +0 -0
  182. data/ext/vendor/sndfile/include/sndfile.h +666 -0
  183. data/ext/vendor/sndfile/include/sndfile.hh +422 -0
  184. data/ext/vendor/sndfile/lib/libsndfile-1.def +41 -0
  185. data/ext/vendor/sndfile/lib/libsndfile-1.lib +0 -0
  186. data/ext/vertex.c +96 -0
  187. data/ext/view.c +131 -0
  188. data/ext/window.c +183 -0
  189. data/lib/ray/animation.rb +248 -0
  190. data/lib/ray/animation/block_animation.rb +36 -0
  191. data/lib/ray/animation/circular_motion.rb +57 -0
  192. data/lib/ray/animation/color_variation.rb +102 -0
  193. data/lib/ray/animation/combination.rb +71 -0
  194. data/lib/ray/animation/float_variation.rb +76 -0
  195. data/lib/ray/animation/sequence.rb +65 -0
  196. data/lib/ray/animation/sprite_animation.rb +68 -0
  197. data/lib/ray/animation/vector_variation.rb +111 -0
  198. data/lib/ray/animation_list.rb +50 -0
  199. data/lib/ray/audio.rb +4 -7
  200. data/lib/ray/buffer_renderer.rb +9 -0
  201. data/lib/ray/color.rb +41 -6
  202. data/lib/ray/drawable.rb +34 -9
  203. data/lib/ray/dsl.rb +6 -0
  204. data/lib/ray/dsl/event.rb +1 -1
  205. data/lib/ray/dsl/event_listener.rb +14 -10
  206. data/lib/ray/dsl/event_raiser.rb +5 -2
  207. data/lib/ray/dsl/event_runner.rb +4 -10
  208. data/lib/ray/dsl/event_translator.rb +67 -99
  209. data/lib/ray/dsl/handler.rb +1 -1
  210. data/lib/ray/dsl/matcher.rb +40 -27
  211. data/lib/ray/event.rb +22 -0
  212. data/lib/ray/font.rb +0 -42
  213. data/lib/ray/font_set.rb +3 -7
  214. data/lib/ray/game.rb +33 -73
  215. data/lib/ray/gl/int_array.rb +24 -0
  216. data/lib/ray/gl/vertex.rb +106 -0
  217. data/lib/ray/helper.rb +25 -11
  218. data/lib/ray/image.rb +9 -154
  219. data/lib/ray/image_set.rb +3 -8
  220. data/lib/ray/image_target.rb +12 -0
  221. data/lib/ray/matrix.rb +90 -0
  222. data/lib/ray/music.rb +12 -0
  223. data/lib/ray/polygon.rb +77 -0
  224. data/lib/ray/ray.rb +45 -13
  225. data/lib/ray/rect.rb +14 -3
  226. data/lib/ray/resource_set.rb +18 -35
  227. data/lib/ray/scene.rb +43 -81
  228. data/lib/ray/scene_list.rb +12 -5
  229. data/lib/ray/shader.rb +82 -0
  230. data/lib/ray/sound.rb +18 -0
  231. data/lib/ray/sound_buffer.rb +6 -0
  232. data/lib/ray/sound_buffer_set.rb +32 -0
  233. data/lib/ray/sprite.rb +111 -97
  234. data/lib/ray/target.rb +18 -0
  235. data/lib/ray/text.rb +80 -58
  236. data/lib/ray/text_helper.rb +21 -27
  237. data/lib/ray/turtle.rb +49 -38
  238. data/lib/ray/vector.rb +76 -1
  239. data/lib/ray/vertex.rb +24 -0
  240. data/lib/ray/view.rb +47 -0
  241. data/lib/ray/window.rb +23 -0
  242. data/samples/_media/Beep.wav +0 -0
  243. data/samples/_media/CptnRuby Gem.png +0 -0
  244. data/samples/_media/CptnRuby Map.txt +25 -0
  245. data/samples/_media/CptnRuby Tileset.png +0 -0
  246. data/samples/_media/CptnRuby.png +0 -0
  247. data/samples/_media/Space.png +0 -0
  248. data/samples/_media/Star.png +0 -0
  249. data/samples/_media/Starfighter.png +0 -0
  250. data/samples/animation/chain.rb +33 -0
  251. data/samples/animation/circle.rb +38 -0
  252. data/samples/animation/color.rb +18 -0
  253. data/samples/animation/rotation.rb +17 -0
  254. data/samples/animation/sequence.rb +33 -0
  255. data/samples/animation/shader.rb +65 -0
  256. data/samples/animation/sprite_motion.rb +103 -0
  257. data/samples/animation/translation.rb +23 -0
  258. data/samples/audio/spacial.rb +25 -11
  259. data/samples/buffer/buffer.rb +28 -0
  260. data/samples/buffer/index_buffer.rb +36 -0
  261. data/samples/buffer/renderer.rb +27 -0
  262. data/samples/cptn_ruby/cptn_ruby.rb +279 -0
  263. data/samples/hello_world/hello.rb +2 -2
  264. data/samples/hello_world/hello_dsl.rb +3 -3
  265. data/samples/hello_world/text.rb +2 -2
  266. data/samples/opengl/cube.rb +124 -0
  267. data/samples/opengl/image.rb +36 -16
  268. data/samples/opengl/obj_loader.rb +99 -0
  269. data/samples/opengl/opengl.rb +24 -18
  270. data/samples/opengl/shader.rb +36 -26
  271. data/samples/pong/pong.rb +41 -39
  272. data/samples/{run_scene.rb → scenes/run_scene.rb} +21 -7
  273. data/samples/shaders/geometry.rb +98 -0
  274. data/samples/shaders/scene.rb +19 -12
  275. data/samples/shaders/shaders.rb +34 -17
  276. data/samples/shaders/shape.rb +12 -7
  277. data/samples/sokoban/level_1 +11 -7
  278. data/samples/sokoban/sokoban.rb +36 -63
  279. data/samples/starfighter/starfighter.rb +159 -0
  280. data/samples/test/actual_scene.rb +3 -3
  281. data/samples/test/scene_riot.rb +4 -4
  282. data/samples/test/scene_spec.rb +3 -3
  283. data/samples/test/scene_test_unit.rb +1 -1
  284. data/samples/turtle/byzantium.rb +10 -5
  285. data/samples/turtle/hilbert.rb +16 -11
  286. data/samples/turtle/koch.rb +16 -11
  287. data/samples/turtle/mandala.rb +43 -38
  288. data/samples/turtle/tree.rb +13 -8
  289. data/samples/view/resize.rb +26 -0
  290. data/samples/view/view.rb +35 -0
  291. data/samples/window/all_events.rb +44 -0
  292. data/samples/window/change_title.rb +16 -0
  293. data/samples/window/fullscreen.rb +18 -0
  294. data/samples/window/get_pixel.rb +29 -0
  295. data/samples/window/icon.rb +88 -0
  296. data/samples/window/input.rb +27 -0
  297. data/samples/window/no_border.rb +16 -0
  298. data/samples/window/resize.rb +24 -0
  299. data/test/animation/color_variation_test.rb +64 -0
  300. data/test/animation/combination_test.rb +35 -0
  301. data/test/animation/float_variation_test.rb +75 -0
  302. data/test/animation/vector_variation_test.rb +123 -0
  303. data/test/animation_list_test.rb +122 -0
  304. data/test/animation_test.rb +83 -0
  305. data/test/audio_test.rb +88 -33
  306. data/test/buffer_renderer_test.rb +38 -0
  307. data/test/color_test.rb +31 -22
  308. data/test/drawable_test.rb +207 -7
  309. data/test/dsl_test.rb +25 -7
  310. data/test/font_test.rb +6 -40
  311. data/test/game_test.rb +76 -0
  312. data/test/gl_buffer_test.rb +26 -0
  313. data/test/gl_index_buffer_test.rb +17 -0
  314. data/test/gl_vertex_test.rb +117 -0
  315. data/test/helpers.rb +45 -5
  316. data/test/image_target_test.rb +19 -0
  317. data/test/image_test.rb +73 -53
  318. data/test/int_array_test.rb +64 -0
  319. data/test/matrix_test.rb +134 -0
  320. data/test/polygon_test.rb +126 -0
  321. data/test/rect_test.rb +6 -8
  322. data/test/res/frag.c +14 -0
  323. data/test/res/frag3d.c +10 -0
  324. data/test/res/frag_gray.c +17 -0
  325. data/test/res/frag_light3d.c +20 -0
  326. data/test/res/light3d.c +20 -0
  327. data/test/res/sprite.png +0 -0
  328. data/test/res/teapot.obj +12831 -0
  329. data/test/res/vert.c +17 -0
  330. data/test/res/vertex3d.c +14 -0
  331. data/test/resource_set_test.rb +8 -45
  332. data/test/run_all.rb +1 -1
  333. data/test/scene_list_test.rb +79 -0
  334. data/test/scene_test.rb +168 -0
  335. data/test/shader_test.rb +58 -0
  336. data/test/sprite_test.rb +46 -41
  337. data/test/target_test.rb +34 -0
  338. data/test/text_test.rb +20 -31
  339. data/test/turtle_test.rb +35 -20
  340. data/test/vector_test.rb +61 -19
  341. data/test/vertex_test.rb +43 -0
  342. data/test/view_test.rb +61 -0
  343. metadata +347 -126
  344. data/.yardopts +0 -4
  345. data/VERSION +0 -1
  346. data/ext/audio.cpp +0 -723
  347. data/ext/color.cpp +0 -159
  348. data/ext/drawable.cpp +0 -91
  349. data/ext/event.cpp +0 -460
  350. data/ext/font.cpp +0 -190
  351. data/ext/image.cpp +0 -733
  352. data/ext/input.cpp +0 -74
  353. data/ext/ray.cpp +0 -168
  354. data/ext/ray.hpp +0 -356
  355. data/ext/rect.cpp +0 -245
  356. data/ext/shader.cpp +0 -169
  357. data/ext/shape.cpp +0 -409
  358. data/ext/sprite.cpp +0 -306
  359. data/ext/text.cpp +0 -181
  360. data/ext/vector.cpp +0 -215
  361. data/guide.md +0 -619
  362. data/lib/ray/input.rb +0 -10
  363. data/lib/ray/music_set.rb +0 -37
  364. data/lib/ray/rmagick.rb +0 -41
  365. data/lib/ray/shape.rb +0 -132
  366. data/lib/ray/sound_set.rb +0 -37
  367. data/samples/opengl/binding.rb +0 -38
  368. data/test/ray_test.rb +0 -25
  369. data/test/shape_test.rb +0 -101
  370. data/yard_ext.rb +0 -63
@@ -29,18 +29,23 @@ Ray::Game.new("Turtle") do
29
29
  end
30
30
 
31
31
  scene :hilbert do
32
+ img = Ray::Image.new window.size
33
+ img.turtle do
34
+ pen_up
35
+ left 90
36
+ backward 185
37
+ right 90
38
+ forward 185
39
+ left 90
40
+
41
+ pen_down
42
+ hilbert(10, 5, 1)
43
+ end
44
+
45
+ @sprite = sprite img
46
+
32
47
  render do |win|
33
- win.fill(Ray::Color.black).turtle do
34
- pen_up
35
- left 90
36
- backward 185
37
- right 90
38
- forward 185
39
- left 90
40
-
41
- pen_down
42
- hilbert(12, 5, 1)
43
- end
48
+ win.draw @sprite
44
49
  end
45
50
  end
46
51
 
@@ -36,18 +36,23 @@ Ray::Game.new("Turtle") do
36
36
  end
37
37
 
38
38
  scene :koch do
39
+ img = Ray::Image.new window.size
40
+ img.turtle do
41
+ pen_up
42
+ center
43
+ backward 165
44
+ left 90
45
+ forward 95
46
+ right 90
47
+
48
+ pen_down
49
+ snowflake(350, 4)
50
+ end
51
+
52
+ @sprite = sprite img
53
+
39
54
  render do |win|
40
- win.fill(Ray::Color.black).turtle do
41
- pen_up
42
- center
43
- backward 165
44
- left 90
45
- forward 95
46
- right 90
47
-
48
- pen_down
49
- snowflake(350, 4)
50
- end
55
+ win.draw @sprite
51
56
  end
52
57
  end
53
58
 
@@ -6,54 +6,59 @@ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
6
6
 
7
7
  require 'ray'
8
8
 
9
- class Ray::Turtle
10
- def polygon(r, n)
11
- poly = []
12
- theta = 360 * (PI / 180) / n
13
-
14
- n.times do |k|
15
- angle = k * theta
16
- poly << [img.w / 2 + r * sin(angle),
17
- img.h / 2 + r * cos(angle)]
18
- end
19
-
20
- poly
9
+ Ray::Game.new("Turtle") do
10
+ register do
11
+ add_hook :quit, method(:exit!)
21
12
  end
22
13
 
23
- def ray(from, to)
24
- pen_down
25
- go_to(*to)
14
+ scene :mandala do
15
+ img = Ray::Image.new window.size
16
+ img.turtle do
17
+ def polygon(r, n)
18
+ center = target.clip.center
26
19
 
27
- pen_up
28
- go_to(*from)
29
- end
20
+ poly = []
21
+ theta = 360 * (PI / 180) / n
30
22
 
31
- def fan(from, others)
32
- others.each { |to| ray from, to }
33
- end
23
+ n.times do |k|
24
+ angle = k * theta
25
+ poly << [center.x + r * sin(angle),
26
+ center.y + r * cos(angle)]
27
+ end
28
+
29
+ poly
30
+ end
34
31
 
35
- def mandala(r, n)
36
- poly = polygon(r, n)
32
+ def ray(from, to)
33
+ pen_down
34
+ go_to to
37
35
 
38
- until poly.empty?
39
- v = poly.shift
40
- go_to(*v)
41
- fan v, poly
36
+ pen_up
37
+ go_to from
38
+ end
39
+
40
+ def fan(from, others)
41
+ others.each { |to| ray from, to }
42
+ end
43
+
44
+ def mandala(r, n)
45
+ poly = polygon(r, n)
46
+
47
+ until poly.empty?
48
+ v = poly.shift
49
+ go_to v
50
+ fan v, poly
51
+ end
52
+ end
53
+
54
+ pen_up
55
+ mandala(180, 24)
42
56
  end
43
- end
44
- end
45
57
 
46
- Ray::Game.new("Turtle") do
47
- register do
48
- add_hook :quit, method(:exit!)
49
- end
58
+ @sprite = sprite img
50
59
 
51
- scene :mandala do
52
60
  render do |win|
53
- win.fill(Ray::Color.black).turtle do
54
- pen_up
55
- mandala(180, 24)
56
- end
61
+ win.draw @sprite
57
62
  end
58
63
  end
59
64
 
@@ -41,15 +41,20 @@ Ray::Game.new("Turtle") do
41
41
  end
42
42
 
43
43
  scene :tree do
44
+ tree = Ray::Image.new window.size
45
+ tree.turtle do
46
+ pen_up
47
+ left 90
48
+ center
49
+ backward 180
50
+ pen_down
51
+ tree(240.0)
52
+ end
53
+
54
+ @sprite = sprite tree
55
+
44
56
  render do |win|
45
- win.fill(Ray::Color.black).turtle do
46
- pen_up
47
- left 90
48
- center
49
- backward 180
50
- pen_down
51
- tree(240.0)
52
- end
57
+ win.draw @sprite
53
58
  end
54
59
  end
55
60
 
@@ -0,0 +1,26 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
3
+
4
+ require 'ray'
5
+
6
+ def path_of(res)
7
+ File.expand_path File.join(File.dirname(__FILE__), '../../test/res', res)
8
+ end
9
+
10
+ Ray.game "Resizable window", :resizable => true do
11
+ register { add_hook :quit, method(:exit!) }
12
+
13
+ scene :view do
14
+ @sprite = sprite path_of("sprite.png")
15
+
16
+ on :window_resize do
17
+ window.view = window.default_view
18
+ end
19
+
20
+ render do |win|
21
+ win.draw @sprite
22
+ end
23
+ end
24
+
25
+ scenes << :view
26
+ end
@@ -0,0 +1,35 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
3
+
4
+ require 'ray'
5
+
6
+ def path_of(res)
7
+ File.expand_path File.join(File.dirname(__FILE__), '../../test/res', res)
8
+ end
9
+
10
+ Ray.game "View" do
11
+ register { add_hook :quit, method(:exit!) }
12
+
13
+ scene :view do
14
+ @sprite = sprite path_of("sprite.png")
15
+
16
+ @normal_view = window.default_view
17
+ @normal_view.center = @sprite.rect.size / 2
18
+
19
+ @zoomed_view = @normal_view.dup
20
+ @zoomed_view.viewport = [0.05, 0.05, 0.2, 0.2]
21
+ @zoomed_view.zoom_by [10, 10]
22
+
23
+ render do |win|
24
+ win.with_view @normal_view do
25
+ win.draw @sprite
26
+ end
27
+
28
+ win.with_view @zoomed_view do
29
+ win.draw @sprite
30
+ end
31
+ end
32
+ end
33
+
34
+ scenes << :view
35
+ end
@@ -0,0 +1,44 @@
1
+ # -*- coding: utf-8 -*-
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
3
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
4
+
5
+ require 'ray'
6
+
7
+ Ray.game "all events", :resizable => true do
8
+ register { add_hook :quit, method(:exit!) }
9
+
10
+ scene :main do
11
+ [
12
+ :quit,
13
+ :focus_gain, :focus_loss,
14
+ :mouse_entered, :mouse_left,
15
+ :mouse_motion, :wheel_motion,
16
+ :mouse_press, :mouse_release,
17
+ :key_press, :key_release,
18
+ :window_resize,
19
+ :text_entered
20
+ ].each do |name|
21
+ name_array = [name]
22
+ on name do |*args|
23
+ puts "received event: #{(name_array + args).inspect}"
24
+ end
25
+ end
26
+
27
+ on :window_resize do
28
+ window.view = window.default_view
29
+ end
30
+
31
+ on :text_entered do |text|
32
+ puts Ray::TextHelper.convert(text)
33
+ end
34
+
35
+ @obj = Ray::Polygon.rectangle [50, 100, 100, 50], Ray::Color.red
36
+
37
+ render do
38
+ window.clear Ray::Color.green
39
+ window.draw @obj
40
+ end
41
+ end
42
+
43
+ scenes << :main
44
+ end
@@ -0,0 +1,16 @@
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 "Change title" do
7
+ register { add_hook :quit, method(:exit!) }
8
+
9
+ scene :main do
10
+ on :text_entered do |text|
11
+ window.title = text
12
+ end
13
+ end
14
+
15
+ scenes << :main
16
+ end
@@ -0,0 +1,18 @@
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 "Fullscreen", :fullscreen => true, :size => Ray.screen_size do
7
+ register { add_hook :key_press, key(:q), method(:exit!) }
8
+
9
+ scene :main do
10
+ @text = text "Press q to leave", :size => 30
11
+
12
+ render do |win|
13
+ win.draw @text
14
+ end
15
+ end
16
+
17
+ scenes << :main
18
+ end
@@ -0,0 +1,29 @@
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 "Get Pixels" do
7
+ register { add_hook :quit, method(:exit!) }
8
+
9
+ scene :main do
10
+ on :key_press, key(:a) do
11
+ puts "(0, 0) == #{window[0, 0]}"
12
+ puts "(50, 50) == #{window[50, 50]}"
13
+ puts "(50, 430) == #{window[50, 430]}"
14
+ end
15
+
16
+ on :key_press, key(:p) do
17
+ window.to_image.write "screenshot.png"
18
+ end
19
+
20
+ @obj = Ray::Polygon.circle([50, 50], 10, Ray::Color.blue)
21
+
22
+ render do
23
+ window.clear Ray::Color.green
24
+ window.draw @obj
25
+ end
26
+ end
27
+
28
+ scenes << :main
29
+ end
@@ -0,0 +1,88 @@
1
+ # -*- coding: utf-8 -*-
2
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '../../ext'))
3
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '../../lib'))
4
+
5
+ def path_of(res)
6
+ File.expand_path File.join(File.dirname(__FILE__), '../../test/res', res)
7
+ end
8
+
9
+ require 'ray'
10
+
11
+ Ray::Shader.use_old!
12
+
13
+ img = Ray::Image.new [100, 100]
14
+
15
+ target = Ray::ImageTarget.new
16
+ target.image = img
17
+ target.draw Ray::Polygon.rectangle([0, 0, 100, 100], Ray::Color.cyan)
18
+ target.draw Ray::Text.new("Testing image targets!", :color => Ray::Color.red)
19
+ target.update
20
+
21
+ Ray.game "test", :size => [640, 480] do
22
+ register { add_hook :quit, method(:exit!) }
23
+
24
+ scene :test do
25
+ window.icon = img
26
+
27
+ self.frames_per_second = 60
28
+
29
+ # use deprecated-style shaders to ensure compatibility with old GPUs
30
+ window.shader.compile(:frag => StringIO.new(<<-frag))
31
+ #version 110
32
+
33
+ uniform sampler2D in_Texture;
34
+ uniform bool in_TextureEnabled;
35
+
36
+ varying vec4 var_Color;
37
+ varying vec2 var_TexCoord;
38
+
39
+ void main() {
40
+ if (in_TextureEnabled)
41
+ gl_FragColor = texture2D(in_Texture, var_TexCoord) * var_Color;
42
+ else
43
+ gl_FragColor = var_Color;
44
+
45
+ float gray = dot(gl_FragColor.rgb, vec3(0.299, 0.587, 0.114));
46
+ gl_FragColor = vec4(gray, gray, gray, gl_FragColor.a);
47
+ }
48
+ frag
49
+
50
+ @text = text <<eof.chomp, :size => 30, :style => [:italic, :underlined]
51
+ Ce qui se conçoit bien s'énonce clairement
52
+ Et les mots pour le dire arrivent aisément.
53
+ eof
54
+
55
+ @poly = Ray::Polygon.rectangle @text.rect, Ray::Color.green
56
+
57
+ @sprite = sprite path_of("sprite.png")
58
+ @sprite.origin = @sprite.image.size / 2
59
+ @sprite.color = Ray::Color.new(255, 255, 255, 128)
60
+
61
+ always do
62
+ @sprite.pos += [2, 0] if holding? :right
63
+ @sprite.pos -= [2, 0] if holding? :left
64
+ @sprite.pos += [0, 2] if holding? :down
65
+ @sprite.pos -= [0, 2] if holding? :up
66
+
67
+ @sprite.angle += 1 if holding? :'6'
68
+ @sprite.angle -= 1 if holding? :'4'
69
+
70
+ @sprite.scale *= [1.1, 1.1] if holding? :'8'
71
+ @sprite.scale /= [1.1, 1.1] if holding? :'2'
72
+ end
73
+
74
+ on :key_press, key(:q) do
75
+ exit!
76
+ end
77
+
78
+ @sprite.shader = Ray::Shader.new
79
+
80
+ render do |win|
81
+ win.draw @poly
82
+ win.draw @sprite
83
+ win.draw @text
84
+ end
85
+ end
86
+
87
+ scenes << :test
88
+ end