72 lines
2.2 KiB
Plaintext

function gui:getParents()
local c,me = {}, self.Parent
while me.Parent~=nil do
c[#c+1]=me
me = me.Parent
end
return c
end
function gui:eventable()
if self.important then
return true
end
if _GuiPro.Hierarchy then
if _GuiPro.TopHovered~=nil then
return self:isDescendant(_GuiPro.TopHovered) or _GuiPro.TopHovered==self
else
return true
end
else
return true
end
end
function gui:parentVisible()
local c = self:getParents()
for i=#c,1,-1 do
if not c[i].Visible then return false end
end
return true
end
function gui:isBeingCovering()
return false
-- if self.allowOverlapping then return false end
-- local ref = self.FrameRef or gui
-- local x,y = love.mouse.getX(),love.mouse.getY()
-- for i = 1,#_GuiPro.Frames do
-- if _GuiPro.Frames[i]~=ref then
-- if (ref.depth or 0)<(_GuiPro.Frames[i].depth or math.huge) then
-- local pos = (x > self.x and x < self.x+self.width and y > self.y and y < self.y+self.height) and (x > _GuiPro.Frames[i].x and x < _GuiPro.Frames[i].x+_GuiPro.Frames[i].width and y > _GuiPro.Frames[i].y and y < _GuiPro.Frames[i].y+_GuiPro.Frames[i].height) and (x > self.x and x < self.x+self.width and y > self.y and y < self.y+self.height )
-- if not pos then return true end
-- end
-- end
-- end
end
function gui:Clickable()
local x,y,w,h=love.graphics.getScissor()
local mx=love.mouse.getX()
local my=love.mouse.getY()
if _GuiPro. HasStencel then
local obj=_GuiPro.StencelHolder
if self:isDescendant(obj) then
return math.sqrt((mx-obj.x)^2+(my-obj.y)^2)<=(obj.offset.size.x or 0)
end
end
if not(x) then
return true
end
return not(mx>x+w or mx<x or my>y+h or my<y)
end
function gui:canPress()
local ref = self
if self.ClipReference then ref = self.ClipReference end
if self.Visible==true and self:parentVisible() and not(self:isBeingCovering()) then
local x,y = love.mouse.getX(),love.mouse.getY()
if (x > ref.x and x < ref.x+ref.width and y > ref.y and y < ref.y+ref.height) and (x > self.x and x < self.x+self.width and y > self.y and y < self.y+self.height and self:Clickable() and (self:eventable() or self:touchable())) then
return true
else
return false
end
else
return false
end
end