class DXOpal::Sprite::CollisionArea::Base
Attributes
sprite[R]
Sprite
corresponds to this hitarea
Public Instance Methods
aabb(poss)
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 73 def aabb(poss) x1 = y1 = Float::INFINITY x2 = y2 = -Float::INFINITY %x{ for(var i=0; i<poss.length; i++) { if (poss[i][0] < x1) x1 = poss[i][0]; if (poss[i][1] < y1) y1 = poss[i][1]; if (poss[i][0] > x2) x2 = poss[i][0]; if (poss[i][1] > y2) y2 = poss[i][1]; } } return [[x1, y1], [x2, y2]] end
absolute(poss)
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 17 def absolute(poss) ox = @sprite.x oy = @sprite.y return poss.map{|(x, y)| [x+ox, y+oy]} if !@sprite.collision_sync angle = @sprite.angle cx = @sprite.center_x cy = @sprite.center_y sx = @sprite.scale_x sy = @sprite.scale_y ret = [] %x{ var rad = Math.PI / 180.0 * angle; var sin = Math.sin(rad); var cos = Math.cos(rad); poss.forEach(function(pos){ var x = pos[0], y = pos[1]; x2 = (x - cx) * sx * cos - (y - cy) * sy * sin + cx + ox; y2 = (x - cx) * sx * sin + (y - cy) * sy * cos + cy + oy; ret.push([x2, y2]); }); } return ret end
absolute1(pos)
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 42 def absolute1(pos) absolute([pos]).first end
transback(poss, sprite)
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 46 def transback(poss, sprite) return poss if !sprite.collision_sync angle = sprite.angle cx = sprite.x + sprite.center_x cy = sprite.y + sprite.center_y sx = sprite.scale_x sy = sprite.scale_y ret = [] %x{ var rad = Math.PI / 180.0 * -angle; var sin = Math.sin(rad); var cos = Math.cos(rad); poss.forEach(function(pos){ var x = pos[0], y = pos[1]; x2 = ((x - cx) * cos - (y - cy) * sin) / sx + cx; y2 = ((x - cx) * sin + (y - cy) * cos) / sy + cy; ret.push([x2, y2]); }); } return ret end
transback1(pos, sprite)
click to toggle source
# File lib/dxopal/sprite/collision_area.rb, line 69 def transback1(pos, sprite) transback([pos], sprite).first end
type()
click to toggle source
Return a string like “Point”, “Rect”, etc. Used for type checking in `collides?` (because Opal's Class#is_a? is not very fast)
# File lib/dxopal/sprite/collision_area.rb, line 13 def type raise "override me" end