class DXOpal::Sprite::CollisionArea::Rect
Public Class Methods
new(sprite, x1, y1, x2, y2)
click to toggle source
Calls superclass method
# File lib/dxopal/sprite/collision_area.rb, line 215 def initialize(sprite, x1, y1, x2, y2) @sprite, @x1, @y1, @x2, @y2 = sprite, x1, y1, x2, y2 @poss = [[x1, y1], [x2, y1], [x2, y2], [x1, y2]] super() end
Public Instance Methods
absolute_norot_poss()
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 254 def absolute_norot_poss [[@x1 + @sprite.x, @y1 + @sprite.y], [@x2 + @sprite.x, @y2 + @sprite.y]] end
absolute_poss()
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 250 def absolute_poss absolute(@poss) end
collides?(other)
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 227 def collides?(other) case other.type when :Point, :Circle other.collides?(self) when :Rect ((ox1, oy1), (ox2, oy2)) = self.absolute_norot_poss ((dx1, dy1), (dx2, dy2)) = aabb(transback(other.absolute_poss, @sprite)) return false unless `Opal.DXOpal.CCk.check_rect_rect(ox1, oy1, ox2, oy2, dx1, dy1, dx2, dy2)` ((ox1, oy1), (ox2, oy2)) = other.absolute_norot_poss ((dx1, dy1), (dx2, dy2)) = aabb(transback(self.absolute_poss, other.sprite)) return false unless `Opal.DXOpal.CCk.check_rect_rect(ox1, oy1, ox2, oy2, dx1, dy1, dx2, dy2)` true when :Triangle (ox1, oy1), (ox2, oy2), (ox3, oy3), (ox4, oy4) = *self.absolute_poss (dx1, dy1), (dx2, dy2), (dx3, dy3) = *other.absolute_poss `Opal.DXOpal.CCk.check_tilted_rect_triangle(ox1, oy1, ox2, oy2, ox3, oy3, ox4, oy4, dx1, dy1, dx2, dy2, dx3, dy3)` else raise end end
inspect()
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 223 def inspect "#<CollisionArea::Rect(#{@x1}, #{@y1}, #{@x2}, #{@y2})>" end
type()
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 221 def type; :Rect; end