chingu 0.5.7 → 0.5.7.1
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.tar.gz.sig +0 -0
- data/chingu.gemspec +2 -2
- data/lib/chingu.rb +1 -1
- data/lib/chingu/traits/collision_detection.rb +30 -2
- metadata +1 -1
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/chingu.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{chingu}
|
5
|
-
s.version = "0.5.7"
|
5
|
+
s.version = "0.5.7.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["ippa"]
|
9
|
-
s.date = %q{2009-10-
|
9
|
+
s.date = %q{2009-10-15}
|
10
10
|
s.description = %q{Game framework built on top of the OpenGL accelerated game lib Gosu.
|
11
11
|
It adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and automation of common task.}
|
12
12
|
s.email = ["ippa@rubylicio.us"]
|
data/lib/chingu.rb
CHANGED
@@ -109,6 +109,7 @@ module Chingu
|
|
109
109
|
end
|
110
110
|
|
111
111
|
#
|
112
|
+
# Explicit radius-collision
|
112
113
|
# Works like each_collsion but with inline-code for speedups
|
113
114
|
#
|
114
115
|
def each_radius_collision(klasses = [])
|
@@ -120,11 +121,23 @@ module Chingu
|
|
120
121
|
end
|
121
122
|
|
122
123
|
|
124
|
+
#
|
125
|
+
# Explicit bounding_box-collision
|
126
|
+
# Works like each_collision but with inline-code for speedups
|
127
|
+
#
|
128
|
+
def each_bounding_box_collision(klasses = [])
|
129
|
+
Array(klasses).each do |klass|
|
130
|
+
klass.all.each do |object|
|
131
|
+
yield(self, object) if @bounding_box.collide_rect?(object.bounding_box)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
123
136
|
|
124
137
|
module ClassMethods
|
125
138
|
|
126
139
|
#
|
127
|
-
# Works like
|
140
|
+
# Works like each_collision but with inline-code for speedups
|
128
141
|
#
|
129
142
|
def each_radius_collision(klasses = [])
|
130
143
|
Array(klasses).each do |klass|
|
@@ -140,6 +153,21 @@ module Chingu
|
|
140
153
|
end
|
141
154
|
end
|
142
155
|
|
156
|
+
#
|
157
|
+
# Works like each_collsion but with explicit bounding_box collisions (inline-code for speedups)
|
158
|
+
#
|
159
|
+
def each_bounding_box_collision(klasses = [])
|
160
|
+
Array(klasses).each do |klass|
|
161
|
+
object2_list = klass.all
|
162
|
+
self.all.each do |object1|
|
163
|
+
object2_list.each do |object2|
|
164
|
+
next if object1 == object2 # Don't collide objects with themselves
|
165
|
+
yield object1, object2 if object1.bounding_box.collide_rect?(object2.bounding_box)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
143
171
|
#
|
144
172
|
# Class method that will check for collisions between all instances of two classes
|
145
173
|
# and yield the 2 colliding game object instances.
|
@@ -157,7 +185,7 @@ module Chingu
|
|
157
185
|
object2_list = klass.all
|
158
186
|
|
159
187
|
self.all.each do |object1|
|
160
|
-
object2_list.
|
188
|
+
object2_list.each do |object2|
|
161
189
|
next if object1 == object2 # Don't collide objects with themselves
|
162
190
|
yield object1, object2 if object1.collides?(object2)
|
163
191
|
end
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|