rubysketch 0.5.7 → 0.5.9
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/ChangeLog.md +13 -0
- data/VERSION +1 -1
- data/examples/sprite.rb +56 -19
- data/lib/rubysketch/context.rb +1 -1
- data/lib/rubysketch/sprite.rb +69 -9
- data/rubysketch.gemspec +6 -6
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5385034a66ab2a3bba10f16e08dc828f6f8dd4d3dc9f8425a4d009e46945e9e7
|
4
|
+
data.tar.gz: 60027fb7618e84373d0943d5a091548e5d503e6234f61344d57de8a2d9805714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36c596d721b9d2965fcb32f7cd1b28e1d76120a71283c11f11be37b983988ac31cfb350f46c9b7441efecb66260c39762cbe6ef4b3a8292b5c89445f7b20154b
|
7
|
+
data.tar.gz: eaa2be7d0033d6f7c37d4252cd45acfbdc6d6567139f5e87627bdc9260e80d827b52ffddde6650fac30241e289b6cb328f21a21f62d5a147af04d74a19280334
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
# rubysketch ChangeLog
|
2
2
|
|
3
3
|
|
4
|
+
## [v0.5.9] - 2023-05-19
|
5
|
+
|
6
|
+
- Add Sprite#clickCount()
|
7
|
+
- Add Sprite#from_screen() and to_screen()
|
8
|
+
- Sprite#update returns nil
|
9
|
+
- Sprite#center includes z
|
10
|
+
|
11
|
+
|
12
|
+
## [v0.5.8] - 2023-05-18
|
13
|
+
|
14
|
+
- Dispatch pointer events only to the topmost sprite
|
15
|
+
|
16
|
+
|
4
17
|
## [v0.5.7] - 2023-05-13
|
5
18
|
|
6
19
|
- Update dependencies
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.9
|
data/examples/sprite.rb
CHANGED
@@ -5,43 +5,80 @@
|
|
5
5
|
require 'rubysketch'
|
6
6
|
using RubySketch
|
7
7
|
|
8
|
-
|
9
|
-
sp.angle += Math::PI * 0.2
|
8
|
+
red = green = 0
|
10
9
|
|
11
|
-
|
10
|
+
sprites = (0..10).map do |n|
|
11
|
+
createSprite(100 + 50 * n, 100 + 50 * n, 100, 100).tap do |sp|
|
12
|
+
name = "sp#{n}"
|
13
|
+
sp.instance_variable_set :@n, n
|
14
|
+
sp.mousePressed do
|
15
|
+
p [name, :pressed, sp.mouseX, sp.mouseY, sp.mouseButton]
|
16
|
+
end
|
12
17
|
|
13
|
-
sp.
|
14
|
-
|
18
|
+
sp.mouseReleased do
|
19
|
+
p [name, :released, sp.mouseX, sp.mouseY, sp.mouseButton]
|
20
|
+
end
|
21
|
+
|
22
|
+
sp.mouseMoved do
|
23
|
+
p [name, :moved, sp.mouseX, sp.mouseY, sp.pmouseX, sp.pmouseY]
|
24
|
+
end
|
25
|
+
|
26
|
+
sp.mouseDragged do
|
27
|
+
p [name, :dragged, sp.mouseX, sp.mouseY, sp.pmouseX, sp.pmouseY]
|
28
|
+
end
|
29
|
+
|
30
|
+
sp.mouseClicked do
|
31
|
+
p [name, :clicked, sp.mouseX, sp.mouseY, sp.mouseButton]
|
32
|
+
sp.z += 10
|
33
|
+
end
|
34
|
+
end
|
15
35
|
end
|
16
36
|
|
17
|
-
|
37
|
+
sprites[1].angle += Math::PI * 0.2
|
38
|
+
sprites[1].z = 10
|
39
|
+
|
40
|
+
sprites[1].update {red = (red + 1) % 255}
|
41
|
+
sprites[2].update {green = (green + 1) % 255}
|
42
|
+
|
43
|
+
sprites[1].draw do |&draw|
|
18
44
|
fill red, 200, 200
|
19
45
|
draw.call
|
20
46
|
fill 0
|
21
47
|
text :hello, 10, 20
|
22
48
|
end
|
23
49
|
|
24
|
-
|
25
|
-
|
50
|
+
sprites[2].draw do |&draw|
|
51
|
+
fill 200, green, 200
|
52
|
+
draw.call
|
53
|
+
fill 0
|
54
|
+
text :world, 10, 20
|
26
55
|
end
|
27
56
|
|
28
|
-
|
29
|
-
|
57
|
+
draw do
|
58
|
+
background 0
|
59
|
+
text sprites.map {|sp| sp.z}, 100, 50
|
60
|
+
sprite sprites.sort {|a, b|
|
61
|
+
an, bn = [a, b].map {|o| o.instance_variable_get :@n}
|
62
|
+
a.z != b.z ? a.z <=> b.z : an <=> bn
|
63
|
+
}
|
30
64
|
end
|
31
65
|
|
32
|
-
|
33
|
-
p [:
|
66
|
+
mousePressed do
|
67
|
+
p [:pressed, mouseX, mouseY, mouseButton]
|
34
68
|
end
|
35
69
|
|
36
|
-
|
37
|
-
p [:
|
70
|
+
mouseReleased do
|
71
|
+
p [:released, mouseX, mouseY, mouseButton]
|
38
72
|
end
|
39
73
|
|
40
|
-
|
41
|
-
p [:
|
74
|
+
mouseMoved do
|
75
|
+
p [:moved, mouseX, mouseY, pmouseX, pmouseY]
|
42
76
|
end
|
43
77
|
|
44
|
-
|
45
|
-
|
46
|
-
|
78
|
+
mouseDragged do
|
79
|
+
p [:dragged, mouseX, mouseY, pmouseX, pmouseY]
|
80
|
+
end
|
81
|
+
|
82
|
+
mouseClicked do
|
83
|
+
p [:clicked, mouseX, mouseY, mouseButton]
|
47
84
|
end
|
data/lib/rubysketch/context.rb
CHANGED
data/lib/rubysketch/sprite.rb
CHANGED
@@ -115,6 +115,25 @@ module RubySketch
|
|
115
115
|
n
|
116
116
|
end
|
117
117
|
|
118
|
+
# Returns the z-coordinate position of the sprite.
|
119
|
+
#
|
120
|
+
# @return [Numeric] sprite position z
|
121
|
+
#
|
122
|
+
def z()
|
123
|
+
@view__.z
|
124
|
+
end
|
125
|
+
|
126
|
+
# Set the z-coordinate position of the sprite.
|
127
|
+
#
|
128
|
+
# @param [Numeric] n sprite position z
|
129
|
+
#
|
130
|
+
# @return [Numeric] sprite position z
|
131
|
+
#
|
132
|
+
def z=(n)
|
133
|
+
@view__.z = n
|
134
|
+
n
|
135
|
+
end
|
136
|
+
|
118
137
|
alias pos position
|
119
138
|
alias pos= position=
|
120
139
|
|
@@ -123,7 +142,7 @@ module RubySketch
|
|
123
142
|
# @return [Vector] center position
|
124
143
|
#
|
125
144
|
def center()
|
126
|
-
Vector.new(x + w / 2, y + h / 2)
|
145
|
+
Vector.new(x + w / 2, y + h / 2, z)
|
127
146
|
end
|
128
147
|
|
129
148
|
# Sets the center position of the sprite.
|
@@ -138,7 +157,7 @@ module RubySketch
|
|
138
157
|
#
|
139
158
|
def center=(arg)
|
140
159
|
x, y = *(arg.is_a?(Vector) ? arg.getInternal__.to_a : arg)
|
141
|
-
self.pos = [x - w / 2, y - h / 2]
|
160
|
+
self.pos = [x - w / 2, y - h / 2, z]
|
142
161
|
self.center
|
143
162
|
end
|
144
163
|
|
@@ -473,6 +492,26 @@ module RubySketch
|
|
473
492
|
alias rest restitution
|
474
493
|
alias rest= restitution=
|
475
494
|
|
495
|
+
# Converts a vector from the screen coordinate
|
496
|
+
#
|
497
|
+
# @param [Vector] vec screen coordinate vector
|
498
|
+
#
|
499
|
+
# @return [Vector] sprite coordinate vector
|
500
|
+
#
|
501
|
+
def from_screen(vec)
|
502
|
+
@view__.from_parent(vec.getInternal__).toVector
|
503
|
+
end
|
504
|
+
|
505
|
+
# Converts a vector to the screen coordinate
|
506
|
+
#
|
507
|
+
# @param [Vector] vec sprite coordinate vector
|
508
|
+
#
|
509
|
+
# @return [Vector] screen coordinate vector
|
510
|
+
#
|
511
|
+
def to_screen(vec)
|
512
|
+
@view__.to_parent(vec.getInternal__).toVector
|
513
|
+
end
|
514
|
+
|
476
515
|
# Returns the x-position of the mouse in the sprite coordinates.
|
477
516
|
#
|
478
517
|
# @return [Numeric] x position
|
@@ -513,6 +552,14 @@ module RubySketch
|
|
513
552
|
@view__.mouseButton
|
514
553
|
end
|
515
554
|
|
555
|
+
# Returns the mouse button click count on the sprite.
|
556
|
+
#
|
557
|
+
# @return [Numeric] click count
|
558
|
+
#
|
559
|
+
def clickCount()
|
560
|
+
@view__.clickCount
|
561
|
+
end
|
562
|
+
|
516
563
|
# Returns the touch objects touched on the sprite.
|
517
564
|
#
|
518
565
|
# @return [Array<Touch>] touches
|
@@ -532,6 +579,7 @@ module RubySketch
|
|
532
579
|
#
|
533
580
|
def update(&block)
|
534
581
|
@view__.update = block
|
582
|
+
nil
|
535
583
|
end
|
536
584
|
|
537
585
|
# Defines draw block.
|
@@ -737,29 +785,34 @@ module RubySketch
|
|
737
785
|
((@pointersPressed + @pointersReleased) & [LEFT, RIGHT, CENTER]).last
|
738
786
|
end
|
739
787
|
|
788
|
+
def clickCount()
|
789
|
+
clicked? ? 1 : 0
|
790
|
+
end
|
791
|
+
|
740
792
|
def on_update(e)
|
741
793
|
@update&.call
|
742
794
|
end
|
743
795
|
|
744
796
|
def on_pointer_down(e)
|
745
797
|
updatePointerStates e, true
|
746
|
-
@pointerDownStartPos = @pointerPos
|
747
|
-
(@touchStarted || @mousePressed)&.call
|
798
|
+
@pointerDownStartPos = to_screen @pointerPos
|
799
|
+
(@touchStarted || @mousePressed)&.call if e.view_index == 0
|
748
800
|
end
|
749
801
|
|
750
802
|
def on_pointer_up(e)
|
751
803
|
updatePointerStates e, false
|
752
|
-
|
753
|
-
|
754
|
-
@mouseClicked&.call if
|
755
|
-
@pointerDownStartPos = nil
|
804
|
+
if e.view_index == 0
|
805
|
+
(@touchEnded || @mouseReleased)&.call
|
806
|
+
@mouseClicked&.call if clicked?
|
756
807
|
end
|
808
|
+
@pointerDownStartPos = nil
|
757
809
|
@pointersReleased.clear
|
758
810
|
end
|
759
811
|
|
760
812
|
def on_pointer_move(e)
|
761
813
|
updatePointerStates e
|
762
|
-
|
814
|
+
mouseMoved = e.drag? ? @mouseDragged : @mouseMoved
|
815
|
+
(@touchMoved || mouseMoved)&.call if e.view_index == 0
|
763
816
|
end
|
764
817
|
|
765
818
|
def on_pointer_cancel(e)
|
@@ -799,6 +852,13 @@ module RubySketch
|
|
799
852
|
end
|
800
853
|
end
|
801
854
|
|
855
|
+
def clicked?()
|
856
|
+
return false unless @pointerPos && @pointerDownStartPos
|
857
|
+
[to_screen(@pointerPos), @pointerDownStartPos]
|
858
|
+
.map {|pos| Rays::Point.new pos.x, pos.y, 0}
|
859
|
+
.then {|pos, startPos| (pos - startPos).length < 3}
|
860
|
+
end
|
861
|
+
|
802
862
|
end# SpriteView
|
803
863
|
|
804
864
|
|
data/rubysketch.gemspec
CHANGED
@@ -28,12 +28,12 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.platform = Gem::Platform::RUBY
|
29
29
|
s.required_ruby_version = '>= 2.7.0'
|
30
30
|
|
31
|
-
s.add_runtime_dependency 'xot', '~> 0.1.
|
32
|
-
s.add_runtime_dependency 'rucy', '~> 0.1.
|
33
|
-
s.add_runtime_dependency 'beeps', '~> 0.1.
|
34
|
-
s.add_runtime_dependency 'rays', '~> 0.1.
|
35
|
-
s.add_runtime_dependency 'reflexion', '~> 0.1.
|
36
|
-
s.add_runtime_dependency 'processing', '~> 0.5.
|
31
|
+
s.add_runtime_dependency 'xot', '~> 0.1.36'
|
32
|
+
s.add_runtime_dependency 'rucy', '~> 0.1.36'
|
33
|
+
s.add_runtime_dependency 'beeps', '~> 0.1.37'
|
34
|
+
s.add_runtime_dependency 'rays', '~> 0.1.37'
|
35
|
+
s.add_runtime_dependency 'reflexion', '~> 0.1.39'
|
36
|
+
s.add_runtime_dependency 'processing', '~> 0.5.10'
|
37
37
|
|
38
38
|
s.add_development_dependency 'rake'
|
39
39
|
s.add_development_dependency 'test-unit'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysketch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|
@@ -16,84 +16,84 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.
|
19
|
+
version: 0.1.36
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.1.
|
26
|
+
version: 0.1.36
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rucy
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.1.
|
33
|
+
version: 0.1.36
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.1.
|
40
|
+
version: 0.1.36
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: beeps
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.1.
|
47
|
+
version: 0.1.37
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.1.
|
54
|
+
version: 0.1.37
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rays
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.1.
|
61
|
+
version: 0.1.37
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.1.
|
68
|
+
version: 0.1.37
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: reflexion
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.1.
|
75
|
+
version: 0.1.39
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.1.
|
82
|
+
version: 0.1.39
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: processing
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.5.
|
89
|
+
version: 0.5.10
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.5.
|
96
|
+
version: 0.5.10
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|