util={} function util.inside(x, y, rectangle) if x >= rectangle[1] and y >= rectangle[2] and x < rectangle[3]+rectangle[1] and y < rectangle[4]+rectangle[2] then return true else return false end end function util.aabb(sprite) local x = sprite.pos.x + sprite.bbo.left local y = sprite.pos.y + sprite.bbo.top local w = sprite.size.w - sprite.bbo.right - sprite.bbo.left local h = sprite.size.h - sprite.bbo.bottom - sprite.bbo.top return x, y, w, h end function util.check_aabb_collision(x1,y1,w1,h1, x2,y2,w2,h2) return ( x1 < x2 + w2 and x1 + w1 > x2 and y1 < y2 + h2 and y1 + h1 > y2 ) end function util.luminance(r, g, b) return (0.2126*r + 0.7152*g + 0.0722*b)/255 end function util.normalize(v) local magnitud = math.sqrt(v.x * v.x + v.y * v.y) if magnitud == 0 then return {x = 0, y = 0} -- evita división por cero end return {x = v.x / magnitud, y = v.y / magnitud} end function math.sign(value) if value > 0 then return 1 else return -1 end end