ruby2d 0.9.5 → 0.10.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.
- checksums.yaml +4 -4
- data/assets/include/SDL2/SDL.h +4 -1
- data/assets/include/SDL2/SDL_assert.h +3 -1
- data/assets/include/SDL2/SDL_atomic.h +1 -1
- data/assets/include/SDL2/SDL_audio.h +1 -1
- data/assets/include/SDL2/SDL_bits.h +1 -1
- data/assets/include/SDL2/SDL_blendmode.h +4 -1
- data/assets/include/SDL2/SDL_clipboard.h +1 -1
- data/assets/include/SDL2/SDL_config.h +1 -1
- data/assets/include/SDL2/SDL_config_android.h +7 -3
- data/assets/include/SDL2/SDL_config_iphoneos.h +16 -10
- data/assets/include/SDL2/SDL_config_macosx.h +40 -14
- data/assets/include/SDL2/SDL_config_minimal.h +1 -1
- data/assets/include/SDL2/SDL_config_os2.h +26 -8
- data/assets/include/SDL2/SDL_config_pandora.h +4 -2
- data/assets/include/SDL2/SDL_config_psp.h +2 -1
- data/assets/include/SDL2/SDL_config_windows.h +40 -9
- data/assets/include/SDL2/SDL_config_winrt.h +5 -2
- data/assets/include/SDL2/SDL_config_wiz.h +5 -2
- data/assets/include/SDL2/SDL_copying.h +1 -1
- data/assets/include/SDL2/SDL_cpuinfo.h +32 -3
- data/assets/include/SDL2/SDL_egl.h +4 -1
- data/assets/include/SDL2/SDL_endian.h +6 -3
- data/assets/include/SDL2/SDL_error.h +38 -2
- data/assets/include/SDL2/SDL_events.h +64 -28
- data/assets/include/SDL2/SDL_filesystem.h +1 -1
- data/assets/include/SDL2/SDL_gamecontroller.h +160 -9
- data/assets/include/SDL2/SDL_gesture.h +1 -1
- data/assets/include/SDL2/SDL_haptic.h +10 -1
- data/assets/include/SDL2/SDL_hints.h +316 -4
- data/assets/include/SDL2/SDL_joystick.h +115 -24
- data/assets/include/SDL2/SDL_keyboard.h +1 -1
- data/assets/include/SDL2/SDL_keycode.h +11 -9
- data/assets/include/SDL2/SDL_loadso.h +1 -1
- data/assets/include/SDL2/SDL_locale.h +101 -0
- data/assets/include/SDL2/SDL_log.h +3 -3
- data/assets/include/SDL2/SDL_main.h +1 -1
- data/assets/include/SDL2/SDL_messagebox.h +6 -4
- data/assets/include/SDL2/SDL_metal.h +117 -0
- data/assets/include/SDL2/SDL_misc.h +75 -0
- data/assets/include/SDL2/SDL_mouse.h +1 -1
- data/assets/include/SDL2/SDL_mutex.h +1 -1
- data/assets/include/SDL2/SDL_name.h +1 -1
- data/assets/include/SDL2/SDL_opengl.h +1 -1
- data/assets/include/SDL2/SDL_opengl_glext.h +3 -0
- data/assets/include/SDL2/SDL_opengles.h +1 -1
- data/assets/include/SDL2/SDL_opengles2.h +1 -1
- data/assets/include/SDL2/SDL_pixels.h +25 -16
- data/assets/include/SDL2/SDL_platform.h +1 -1
- data/assets/include/SDL2/SDL_power.h +1 -1
- data/assets/include/SDL2/SDL_quit.h +1 -1
- data/assets/include/SDL2/SDL_rect.h +1 -1
- data/assets/include/SDL2/SDL_render.h +63 -3
- data/assets/include/SDL2/SDL_revision.h +2 -2
- data/assets/include/SDL2/SDL_rwops.h +2 -10
- data/assets/include/SDL2/SDL_scancode.h +1 -1
- data/assets/include/SDL2/SDL_sensor.h +25 -9
- data/assets/include/SDL2/SDL_shape.h +1 -1
- data/assets/include/SDL2/SDL_stdinc.h +44 -4
- data/assets/include/SDL2/SDL_surface.h +11 -2
- data/assets/include/SDL2/SDL_system.h +50 -4
- data/assets/include/SDL2/SDL_syswm.h +29 -2
- data/assets/include/SDL2/SDL_test.h +1 -1
- data/assets/include/SDL2/SDL_test_assert.h +1 -1
- data/assets/include/SDL2/SDL_test_common.h +14 -1
- data/assets/include/SDL2/SDL_test_compare.h +1 -1
- data/assets/include/SDL2/SDL_test_crc32.h +1 -1
- data/assets/include/SDL2/SDL_test_font.h +1 -1
- data/assets/include/SDL2/SDL_test_fuzzer.h +1 -1
- data/assets/include/SDL2/SDL_test_harness.h +1 -1
- data/assets/include/SDL2/SDL_test_images.h +1 -1
- data/assets/include/SDL2/SDL_test_log.h +1 -1
- data/assets/include/SDL2/SDL_test_md5.h +1 -1
- data/assets/include/SDL2/SDL_test_memory.h +1 -1
- data/assets/include/SDL2/SDL_test_random.h +1 -1
- data/assets/include/SDL2/SDL_thread.h +34 -11
- data/assets/include/SDL2/SDL_timer.h +1 -1
- data/assets/include/SDL2/SDL_touch.h +1 -1
- data/assets/include/SDL2/SDL_types.h +1 -1
- data/assets/include/SDL2/SDL_version.h +2 -2
- data/assets/include/SDL2/SDL_video.h +11 -5
- data/assets/include/SDL2/SDL_vulkan.h +6 -8
- data/assets/include/SDL2/begin_code.h +5 -9
- data/assets/include/SDL2/close_code.h +1 -1
- data/assets/macos/lib/libFLAC.a +0 -0
- data/assets/macos/lib/libSDL2.a +0 -0
- data/assets/macos/lib/libSDL2_image.a +0 -0
- data/assets/macos/lib/libSDL2_mixer.a +0 -0
- data/assets/macos/lib/libSDL2_ttf.a +0 -0
- data/assets/macos/lib/libfreetype.a +0 -0
- data/assets/macos/lib/libjpeg.a +0 -0
- data/assets/macos/lib/libmpg123.a +0 -0
- data/assets/macos/lib/libogg.a +0 -0
- data/assets/macos/lib/libpng16.a +0 -0
- data/assets/macos/lib/libtiff.a +0 -0
- data/assets/macos/lib/libvorbis.a +0 -0
- data/assets/macos/lib/libvorbisfile.a +0 -0
- data/assets/macos/lib/libwebp.a +0 -0
- data/assets/mingw/bin/SDL2.dll +0 -0
- data/assets/mingw/lib/libSDL2.a +0 -0
- data/assets/mingw/lib/libSDL2.dll.a +0 -0
- data/assets/mingw/lib/libSDL2_test.a +0 -0
- data/assets/mingw/lib/libSDL2main.a +0 -0
- data/ext/ruby2d/extconf.rb +1 -1
- data/ext/ruby2d/gl.c +17 -0
- data/ext/ruby2d/gl2.c +15 -0
- data/ext/ruby2d/gl3.c +15 -0
- data/ext/ruby2d/gles.c +15 -0
- data/ext/ruby2d/music.c +13 -0
- data/ext/ruby2d/ruby2d.c +306 -168
- data/ext/ruby2d/ruby2d.h +32 -0
- data/ext/ruby2d/sound.c +25 -0
- data/ext/ruby2d/tileset.c +30 -0
- data/lib/ruby2d.rb +4 -1
- data/lib/ruby2d/circle.rb +18 -2
- data/lib/ruby2d/dsl.rb +16 -9
- data/lib/ruby2d/entity.rb +17 -0
- data/lib/ruby2d/font.rb +4 -3
- data/lib/ruby2d/image.rb +24 -1
- data/lib/ruby2d/line.rb +20 -0
- data/lib/ruby2d/music.rb +5 -0
- data/lib/ruby2d/pixel.rb +17 -0
- data/lib/ruby2d/quad.rb +18 -0
- data/lib/ruby2d/rectangle.rb +11 -2
- data/lib/ruby2d/renderable.rb +4 -8
- data/lib/ruby2d/sound.rb +5 -0
- data/lib/ruby2d/sprite.rb +35 -3
- data/lib/ruby2d/square.rb +9 -0
- data/lib/ruby2d/text.rb +22 -1
- data/lib/ruby2d/tileset.rb +69 -0
- data/lib/ruby2d/triangle.rb +16 -0
- data/lib/ruby2d/version.rb +1 -1
- data/lib/ruby2d/window.rb +249 -22
- metadata +10 -3
data/ext/ruby2d/ruby2d.h
CHANGED
|
@@ -341,6 +341,7 @@ typedef struct {
|
|
|
341
341
|
typedef struct {
|
|
342
342
|
const char *path;
|
|
343
343
|
Mix_Music *data;
|
|
344
|
+
int length; // Length of music track
|
|
344
345
|
} R2D_Music;
|
|
345
346
|
|
|
346
347
|
// Ruby 2D Functions ///////////////////////////////////////////////////////////
|
|
@@ -497,6 +498,13 @@ void R2D_DrawSprite(R2D_Sprite *spr);
|
|
|
497
498
|
*/
|
|
498
499
|
void R2D_FreeSprite(R2D_Sprite *spr);
|
|
499
500
|
|
|
501
|
+
// Tile ////////////////////////////////////////////////////////////////////////
|
|
502
|
+
|
|
503
|
+
/*
|
|
504
|
+
* Draw a tile
|
|
505
|
+
*/
|
|
506
|
+
void R2D_DrawTile(R2D_Image *img, int tw, int th, int padding, int spacing, int tx, int ty, int x, int y);
|
|
507
|
+
|
|
500
508
|
// Text ////////////////////////////////////////////////////////////////////////
|
|
501
509
|
|
|
502
510
|
/*
|
|
@@ -536,6 +544,11 @@ R2D_Sound *R2D_CreateSound(const char *path);
|
|
|
536
544
|
*/
|
|
537
545
|
void R2D_PlaySound(R2D_Sound *snd);
|
|
538
546
|
|
|
547
|
+
/*
|
|
548
|
+
* Get the sound's length
|
|
549
|
+
*/
|
|
550
|
+
int R2D_GetSoundLength(R2D_Sound *snd);
|
|
551
|
+
|
|
539
552
|
/*
|
|
540
553
|
* Get the sound's volume
|
|
541
554
|
*/
|
|
@@ -603,6 +616,11 @@ void R2D_SetMusicVolume(int volume);
|
|
|
603
616
|
*/
|
|
604
617
|
void R2D_FadeOutMusic(int ms);
|
|
605
618
|
|
|
619
|
+
/*
|
|
620
|
+
* Get the length of the music in seconds
|
|
621
|
+
*/
|
|
622
|
+
int R2D_GetMusicLength(R2D_Music *mus);
|
|
623
|
+
|
|
606
624
|
/*
|
|
607
625
|
* Free the music
|
|
608
626
|
*/
|
|
@@ -704,6 +722,8 @@ void R2D_GL_DrawTriangle(
|
|
|
704
722
|
GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
|
|
705
723
|
void R2D_GL_DrawImage(R2D_Image *img);
|
|
706
724
|
void R2D_GL_DrawSprite(R2D_Sprite *spr);
|
|
725
|
+
void R2D_GL_DrawTile(R2D_Image *img, int x, int y, int tw, int th, GLfloat tx1, GLfloat ty1, GLfloat tx2,
|
|
726
|
+
GLfloat ty2, GLfloat tx3, GLfloat ty3, GLfloat tx4, GLfloat ty4);
|
|
707
727
|
void R2D_GL_DrawText(R2D_Text *txt);
|
|
708
728
|
void R2D_GL_FreeTexture(GLuint *id);
|
|
709
729
|
void R2D_GL_Clear(R2D_Color clr);
|
|
@@ -723,6 +743,10 @@ void R2D_GL_FlushBuffers();
|
|
|
723
743
|
GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
|
|
724
744
|
void R2D_GLES_DrawImage(R2D_Image *img);
|
|
725
745
|
void R2D_GLES_DrawSprite(R2D_Sprite *spr);
|
|
746
|
+
void R2D_GLES_DrawTile(R2D_Image *img, int x, int y,
|
|
747
|
+
int tw, int th,
|
|
748
|
+
GLfloat tx1, GLfloat ty1, GLfloat tx2, GLfloat ty2,
|
|
749
|
+
GLfloat tx3, GLfloat ty3, GLfloat tx4, GLfloat ty4);
|
|
726
750
|
void R2D_GLES_DrawText(R2D_Text *txt);
|
|
727
751
|
#else
|
|
728
752
|
int R2D_GL2_Init();
|
|
@@ -747,6 +771,14 @@ void R2D_GL_FlushBuffers();
|
|
|
747
771
|
void R2D_GL3_DrawImage(R2D_Image *img);
|
|
748
772
|
void R2D_GL2_DrawSprite(R2D_Sprite *spr);
|
|
749
773
|
void R2D_GL3_DrawSprite(R2D_Sprite *spr);
|
|
774
|
+
void R2D_GL2_DrawTile(R2D_Image *img, int x, int y,
|
|
775
|
+
int tw, int th,
|
|
776
|
+
GLfloat tx1, GLfloat ty1, GLfloat tx2, GLfloat ty2,
|
|
777
|
+
GLfloat tx3, GLfloat ty3, GLfloat tx4, GLfloat ty4);
|
|
778
|
+
void R2D_GL3_DrawTile(R2D_Image *img, int x, int y,
|
|
779
|
+
int tw, int th,
|
|
780
|
+
GLfloat tx1, GLfloat ty1, GLfloat tx2, GLfloat ty2,
|
|
781
|
+
GLfloat tx3, GLfloat ty3, GLfloat tx4, GLfloat ty4);
|
|
750
782
|
void R2D_GL2_DrawText(R2D_Text *txt);
|
|
751
783
|
void R2D_GL3_DrawText(R2D_Text *txt);
|
|
752
784
|
void R2D_GL3_FlushBuffers();
|
data/ext/ruby2d/sound.c
CHANGED
|
@@ -46,6 +46,31 @@ void R2D_PlaySound(R2D_Sound *snd) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
|
|
49
|
+
/*
|
|
50
|
+
* Get the sound's length in seconds
|
|
51
|
+
*/
|
|
52
|
+
int R2D_GetSoundLength(R2D_Sound *snd) {
|
|
53
|
+
float points = 0;
|
|
54
|
+
float frames = 0;
|
|
55
|
+
int frequency = 0;
|
|
56
|
+
Uint16 format = 0;
|
|
57
|
+
int channels = 0;
|
|
58
|
+
|
|
59
|
+
// Populate the frequency, format and channel variables
|
|
60
|
+
if (!Mix_QuerySpec(&frequency, &format, &channels)) return -1; // Querying audio deails failed
|
|
61
|
+
if (!snd) return -1;
|
|
62
|
+
|
|
63
|
+
// points = bytes / samplesize
|
|
64
|
+
points = (snd->data->alen / ((format & 0xFF) / 8));
|
|
65
|
+
|
|
66
|
+
// frames = sample points / channels
|
|
67
|
+
frames = (points / channels);
|
|
68
|
+
|
|
69
|
+
// frames / frequency is seconds of audio
|
|
70
|
+
return ceil(frames / frequency);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
49
74
|
/*
|
|
50
75
|
* Get the sound's volume
|
|
51
76
|
*/
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// tileset.c
|
|
2
|
+
|
|
3
|
+
#include "ruby2d.h"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* Draw a tile
|
|
8
|
+
*/
|
|
9
|
+
void R2D_DrawTile(R2D_Image *img, int tw, int th, int padding, int spacing, int tx, int ty, int x, int y) {
|
|
10
|
+
if (!img) return;
|
|
11
|
+
|
|
12
|
+
if (img->texture_id == 0) {
|
|
13
|
+
R2D_GL_CreateTexture(&img->texture_id, img->format,
|
|
14
|
+
img->width, img->height,
|
|
15
|
+
img->surface->pixels, GL_NEAREST);
|
|
16
|
+
SDL_FreeSurface(img->surface);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
GLfloat tx1 = (double)(padding + ((spacing + tw) * tx)) / (double) img->width ;
|
|
20
|
+
GLfloat tx2 = tx1 + ((double)tw / (double) img->width);
|
|
21
|
+
GLfloat tx3 = tx2;
|
|
22
|
+
GLfloat tx4 = tx1;
|
|
23
|
+
|
|
24
|
+
GLfloat ty1 = (double)(padding + ((spacing + th) * ty)) / (double) img ->height;
|
|
25
|
+
GLfloat ty2 = ty1;
|
|
26
|
+
GLfloat ty3 = ty1 + ((double)th / (double) img->height);
|
|
27
|
+
GLfloat ty4 = ty3;
|
|
28
|
+
|
|
29
|
+
R2D_GL_DrawTile(img, x, y, tw, th, tx1, ty1, tx2, ty2, tx3, ty3, tx4, ty4);
|
|
30
|
+
}
|
data/lib/ruby2d.rb
CHANGED
|
@@ -7,20 +7,23 @@ unless RUBY_ENGINE == 'mruby'
|
|
|
7
7
|
require 'ruby2d/color'
|
|
8
8
|
require 'ruby2d/window'
|
|
9
9
|
require 'ruby2d/dsl'
|
|
10
|
+
require 'ruby2d/entity'
|
|
10
11
|
require 'ruby2d/quad'
|
|
11
12
|
require 'ruby2d/line'
|
|
12
13
|
require 'ruby2d/circle'
|
|
13
14
|
require 'ruby2d/rectangle'
|
|
14
15
|
require 'ruby2d/square'
|
|
15
16
|
require 'ruby2d/triangle'
|
|
17
|
+
require 'ruby2d/pixel'
|
|
16
18
|
require 'ruby2d/image'
|
|
17
19
|
require 'ruby2d/sprite'
|
|
20
|
+
require 'ruby2d/tileset'
|
|
18
21
|
require 'ruby2d/font'
|
|
19
22
|
require 'ruby2d/text'
|
|
20
23
|
require 'ruby2d/sound'
|
|
21
24
|
require 'ruby2d/music'
|
|
22
25
|
|
|
23
|
-
if
|
|
26
|
+
if defined?(RubyInstaller)
|
|
24
27
|
s2d_dll_path = Gem::Specification.find_by_name('ruby2d').gem_dir + '/assets/mingw/bin'
|
|
25
28
|
RubyInstaller::Runtime.add_dll_directory(File.expand_path(s2d_dll_path))
|
|
26
29
|
end
|
data/lib/ruby2d/circle.rb
CHANGED
|
@@ -10,8 +10,8 @@ module Ruby2D
|
|
|
10
10
|
@x = opts[:x] || 25
|
|
11
11
|
@y = opts[:y] || 25
|
|
12
12
|
@z = opts[:z] || 0
|
|
13
|
-
@radius = opts[:radius] ||
|
|
14
|
-
@sectors = opts[:sectors] ||
|
|
13
|
+
@radius = opts[:radius] || 50
|
|
14
|
+
@sectors = opts[:sectors] || 30
|
|
15
15
|
self.color = opts[:color] || 'white'
|
|
16
16
|
self.opacity = opts[:opacity] if opts[:opacity]
|
|
17
17
|
add
|
|
@@ -21,5 +21,21 @@ module Ruby2D
|
|
|
21
21
|
Math.sqrt((x - @x)**2 + (y - @y)**2) <= @radius
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
def self.draw(opts = {})
|
|
25
|
+
ext_draw([
|
|
26
|
+
opts[:x], opts[:y], opts[:radius], opts[:sectors],
|
|
27
|
+
opts[:color][0], opts[:color][1], opts[:color][2], opts[:color][3]
|
|
28
|
+
])
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def render
|
|
34
|
+
self.class.ext_draw([
|
|
35
|
+
@x, @y, @radius, @sectors,
|
|
36
|
+
@color.r, @color.g, @color.b, @color.a
|
|
37
|
+
])
|
|
38
|
+
end
|
|
39
|
+
|
|
24
40
|
end
|
|
25
41
|
end
|
data/lib/ruby2d/dsl.rb
CHANGED
|
@@ -2,38 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
module Ruby2D::DSL
|
|
4
4
|
|
|
5
|
-
Ruby2D::Window.new
|
|
5
|
+
@window = Ruby2D::Window.new
|
|
6
|
+
|
|
7
|
+
def self.window; @window end
|
|
8
|
+
def self.window=(w); @window = w end
|
|
6
9
|
|
|
7
10
|
def get(sym, opts = nil)
|
|
8
|
-
|
|
11
|
+
DSL.window.get(sym, opts)
|
|
9
12
|
end
|
|
10
13
|
|
|
11
14
|
def set(opts)
|
|
12
|
-
|
|
15
|
+
DSL.window.set(opts)
|
|
13
16
|
end
|
|
14
17
|
|
|
15
18
|
def on(event, &proc)
|
|
16
|
-
|
|
19
|
+
DSL.window.on(event, &proc)
|
|
17
20
|
end
|
|
18
21
|
|
|
19
22
|
def off(event_descriptor)
|
|
20
|
-
|
|
23
|
+
DSL.window.off(event_descriptor)
|
|
21
24
|
end
|
|
22
25
|
|
|
23
26
|
def update(&proc)
|
|
24
|
-
|
|
27
|
+
DSL.window.update(&proc)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def render(&proc)
|
|
31
|
+
DSL.window.render(&proc)
|
|
25
32
|
end
|
|
26
33
|
|
|
27
34
|
def clear
|
|
28
|
-
|
|
35
|
+
DSL.window.clear
|
|
29
36
|
end
|
|
30
37
|
|
|
31
38
|
def show
|
|
32
|
-
|
|
39
|
+
DSL.window.show
|
|
33
40
|
end
|
|
34
41
|
|
|
35
42
|
def close
|
|
36
|
-
|
|
43
|
+
DSL.window.close
|
|
37
44
|
end
|
|
38
45
|
|
|
39
46
|
end
|
data/lib/ruby2d/font.rb
CHANGED
|
@@ -63,11 +63,12 @@ module Ruby2D
|
|
|
63
63
|
end
|
|
64
64
|
# If MRuby
|
|
65
65
|
else
|
|
66
|
-
|
|
66
|
+
uname = `uname`
|
|
67
|
+
if uname.include? 'Darwin' # macOS
|
|
67
68
|
macos_font_path
|
|
68
|
-
elsif
|
|
69
|
+
elsif uname.include? 'Linux'
|
|
69
70
|
linux_font_path
|
|
70
|
-
elsif
|
|
71
|
+
elsif uname.include? 'MINGW'
|
|
71
72
|
windows_font_path
|
|
72
73
|
end
|
|
73
74
|
end
|
data/lib/ruby2d/image.rb
CHANGED
|
@@ -23,7 +23,30 @@ module Ruby2D
|
|
|
23
23
|
unless ext_init(@path)
|
|
24
24
|
raise Error, "Image `#{@path}` cannot be created"
|
|
25
25
|
end
|
|
26
|
-
add
|
|
26
|
+
unless opts[:show] == false then add end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def draw(opts = {})
|
|
30
|
+
opts[:width] = opts[:width] || @width
|
|
31
|
+
opts[:height] = opts[:height] || @height
|
|
32
|
+
opts[:rotate] = opts[:rotate] || @rotate
|
|
33
|
+
unless opts[:color]
|
|
34
|
+
opts[:color] = [1.0, 1.0, 1.0, 1.0]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
self.class.ext_draw([
|
|
38
|
+
self, opts[:x], opts[:y], opts[:width], opts[:height], opts[:rotate],
|
|
39
|
+
opts[:color][0], opts[:color][1], opts[:color][2], opts[:color][3]
|
|
40
|
+
])
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def render
|
|
46
|
+
self.class.ext_draw([
|
|
47
|
+
self, @x, @y, @width, @height, @rotate,
|
|
48
|
+
@color.r, @color.g, @color.b, @color.a
|
|
49
|
+
])
|
|
27
50
|
end
|
|
28
51
|
|
|
29
52
|
end
|
data/lib/ruby2d/line.rb
CHANGED
|
@@ -38,8 +38,28 @@ module Ruby2D
|
|
|
38
38
|
(((@y2 - @y1) * x - (@x2 - @x1) * y + @x2 * @y1 - @y2 * @x1).abs / length) <= 0.5 * @width
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
def self.draw(opts = {})
|
|
42
|
+
ext_draw([
|
|
43
|
+
opts[:x1], opts[:y1], opts[:x2], opts[:y2], opts[:width],
|
|
44
|
+
opts[:color][0][0], opts[:color][0][1], opts[:color][0][2], opts[:color][0][3],
|
|
45
|
+
opts[:color][1][0], opts[:color][1][1], opts[:color][1][2], opts[:color][1][3],
|
|
46
|
+
opts[:color][2][0], opts[:color][2][1], opts[:color][2][2], opts[:color][2][3],
|
|
47
|
+
opts[:color][3][0], opts[:color][3][1], opts[:color][3][2], opts[:color][3][3]
|
|
48
|
+
])
|
|
49
|
+
end
|
|
50
|
+
|
|
41
51
|
private
|
|
42
52
|
|
|
53
|
+
def render
|
|
54
|
+
self.class.ext_draw([
|
|
55
|
+
@x1, @y1, @x2, @y2, @width,
|
|
56
|
+
@c1.r, @c1.g, @c1.b, @c1.a,
|
|
57
|
+
@c2.r, @c2.g, @c2.b, @c2.a,
|
|
58
|
+
@c3.r, @c3.g, @c3.b, @c3.a,
|
|
59
|
+
@c4.r, @c4.g, @c4.b, @c4.a
|
|
60
|
+
])
|
|
61
|
+
end
|
|
62
|
+
|
|
43
63
|
# Calculate the distance between two points
|
|
44
64
|
def points_distance(x1, y1, x2, y2)
|
|
45
65
|
Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
|
data/lib/ruby2d/music.rb
CHANGED
data/lib/ruby2d/pixel.rb
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Ruby2D::Pixel
|
|
2
|
+
|
|
3
|
+
module Ruby2D
|
|
4
|
+
class Pixel
|
|
5
|
+
|
|
6
|
+
def self.draw(opts = {})
|
|
7
|
+
ext_draw([
|
|
8
|
+
opts[:x] , opts[:y],
|
|
9
|
+
opts[:x] + opts[:size], opts[:y],
|
|
10
|
+
opts[:x] + opts[:size], opts[:y] + opts[:size],
|
|
11
|
+
opts[:x] , opts[:y] + opts[:size],
|
|
12
|
+
opts[:color][0], opts[:color][1], opts[:color][2], opts[:color][3]
|
|
13
|
+
])
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
data/lib/ruby2d/quad.rb
CHANGED
|
@@ -48,8 +48,26 @@ module Ruby2D
|
|
|
48
48
|
questioned_area <= self_area
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
+
def self.draw(opts = {})
|
|
52
|
+
ext_draw([
|
|
53
|
+
opts[:x1], opts[:y1], opts[:color][0][0], opts[:color][0][1], opts[:color][0][2], opts[:color][0][3],
|
|
54
|
+
opts[:x2], opts[:y2], opts[:color][1][0], opts[:color][1][1], opts[:color][1][2], opts[:color][1][3],
|
|
55
|
+
opts[:x3], opts[:y3], opts[:color][2][0], opts[:color][2][1], opts[:color][2][2], opts[:color][2][3],
|
|
56
|
+
opts[:x4], opts[:y4], opts[:color][3][0], opts[:color][3][1], opts[:color][3][2], opts[:color][3][3]
|
|
57
|
+
])
|
|
58
|
+
end
|
|
59
|
+
|
|
51
60
|
private
|
|
52
61
|
|
|
62
|
+
def render
|
|
63
|
+
self.class.ext_draw([
|
|
64
|
+
@x1, @y1, @c1.r, @c1.g, @c1.b, @c1.a,
|
|
65
|
+
@x2, @y2, @c2.r, @c2.g, @c2.b, @c2.a,
|
|
66
|
+
@x3, @y3, @c3.r, @c3.g, @c3.b, @c3.a,
|
|
67
|
+
@x4, @y4, @c4.r, @c4.g, @c4.b, @c4.a
|
|
68
|
+
])
|
|
69
|
+
end
|
|
70
|
+
|
|
53
71
|
def triangle_area(x1, y1, x2, y2, x3, y3)
|
|
54
72
|
(x1*y2 + x2*y3 + x3*y1 - x3*y2 - x1*y3 - x2*y1).abs / 2
|
|
55
73
|
end
|
data/lib/ruby2d/rectangle.rb
CHANGED
|
@@ -39,6 +39,15 @@ module Ruby2D
|
|
|
39
39
|
update_coords(@x, @y, @width, h)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
+
def self.draw(opts = {})
|
|
43
|
+
ext_draw([
|
|
44
|
+
opts[:x] , opts[:y] , opts[:color][0][0], opts[:color][0][1], opts[:color][0][2], opts[:color][0][3],
|
|
45
|
+
opts[:x] + opts[:width], opts[:y] , opts[:color][1][0], opts[:color][1][1], opts[:color][1][2], opts[:color][1][3],
|
|
46
|
+
opts[:x] + opts[:width], opts[:y] + opts[:height], opts[:color][2][0], opts[:color][2][1], opts[:color][2][2], opts[:color][2][3],
|
|
47
|
+
opts[:x] , opts[:y] + opts[:height], opts[:color][3][0], opts[:color][3][1], opts[:color][3][2], opts[:color][3][3]
|
|
48
|
+
])
|
|
49
|
+
end
|
|
50
|
+
|
|
42
51
|
private
|
|
43
52
|
|
|
44
53
|
def update_coords(x, y, w, h)
|
|
@@ -46,10 +55,10 @@ module Ruby2D
|
|
|
46
55
|
@y1 = y
|
|
47
56
|
@x2 = x + w
|
|
48
57
|
@y2 = y
|
|
49
|
-
@x4 = x
|
|
50
|
-
@y4 = y + h
|
|
51
58
|
@x3 = x + w
|
|
52
59
|
@y3 = y + h
|
|
60
|
+
@x4 = x
|
|
61
|
+
@y4 = y + h
|
|
53
62
|
end
|
|
54
63
|
|
|
55
64
|
end
|
data/lib/ruby2d/renderable.rb
CHANGED
|
@@ -14,16 +14,12 @@ module Ruby2D
|
|
|
14
14
|
|
|
15
15
|
# Add the object to the window
|
|
16
16
|
def add
|
|
17
|
-
|
|
18
|
-
Window.add(self)
|
|
19
|
-
end
|
|
17
|
+
Window.add(self)
|
|
20
18
|
end
|
|
21
19
|
|
|
22
20
|
# Remove the object from the window
|
|
23
21
|
def remove
|
|
24
|
-
|
|
25
|
-
Window.remove(self)
|
|
26
|
-
end
|
|
22
|
+
Window.remove(self)
|
|
27
23
|
end
|
|
28
24
|
|
|
29
25
|
# Set the color value
|
|
@@ -32,8 +28,8 @@ module Ruby2D
|
|
|
32
28
|
end
|
|
33
29
|
|
|
34
30
|
# Allow British English spelling of color
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
alias_method :colour, :color
|
|
32
|
+
alias_method :colour=, :color=
|
|
37
33
|
|
|
38
34
|
# Allow shortcuts for setting color values
|
|
39
35
|
def r; self.color.r end
|