mirror of
https://github.com/Insality/druid.git
synced 2025-06-27 10:27:47 +02:00
Add scroll is_node_in_view function
This commit is contained in:
parent
4730da768f
commit
ad59c30a89
@ -359,6 +359,23 @@ function Scroll.set_vertical_scroll(self, state)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function Scroll.is_node_in_view(self, node)
|
||||||
|
local node_border = helper.get_border(node, gui.get_position(node))
|
||||||
|
local view_border = helper.get_border(self.view_node, -self.position)
|
||||||
|
|
||||||
|
-- Check is vertical outside (Left or Right):
|
||||||
|
if node_border.z < view_border.x or node_border.x > view_border.z then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check is horizontal outside (Up or Down):
|
||||||
|
if node_border.w > view_border.y or node_border.y < view_border.w then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Bind the grid component (Static or Dynamic) to recalculate
|
--- Bind the grid component (Static or Dynamic) to recalculate
|
||||||
-- scroll size on grid changes
|
-- scroll size on grid changes
|
||||||
|
@ -186,16 +186,25 @@ end
|
|||||||
--- Distance from node to size border
|
--- Distance from node to size border
|
||||||
-- @function helper.get_border
|
-- @function helper.get_border
|
||||||
-- @return vector4 (left, top, right, down)
|
-- @return vector4 (left, top, right, down)
|
||||||
function M.get_border(node)
|
function M.get_border(node, offset)
|
||||||
local pivot = gui.get_pivot(node)
|
local pivot = gui.get_pivot(node)
|
||||||
local pivot_offset = M.get_pivot_offset(pivot)
|
local pivot_offset = M.get_pivot_offset(pivot)
|
||||||
local size = vmath.mul_per_elem(gui.get_size(node), gui.get_scale(node))
|
local size = vmath.mul_per_elem(gui.get_size(node), gui.get_scale(node))
|
||||||
return vmath.vector4(
|
local border = vmath.vector4(
|
||||||
-size.x*(0.5 + pivot_offset.x),
|
-size.x*(0.5 + pivot_offset.x),
|
||||||
size.y*(0.5 - pivot_offset.y),
|
size.y*(0.5 - pivot_offset.y),
|
||||||
size.x*(0.5 - pivot_offset.x),
|
size.x*(0.5 - pivot_offset.x),
|
||||||
-size.y*(0.5 + pivot_offset.y)
|
-size.y*(0.5 + pivot_offset.y)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if offset then
|
||||||
|
border.x = border.x + offset.x
|
||||||
|
border.y = border.y + offset.y
|
||||||
|
border.z = border.z + offset.x
|
||||||
|
border.w = border.w + offset.y
|
||||||
|
end
|
||||||
|
|
||||||
|
return border
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ local function add_node(self, index)
|
|||||||
local prefab = gui.get_node("grid_nodes_prefab")
|
local prefab = gui.get_node("grid_nodes_prefab")
|
||||||
local cloned = gui.clone_tree(prefab)
|
local cloned = gui.clone_tree(prefab)
|
||||||
gui.set_enabled(cloned["grid_nodes_prefab"], true)
|
gui.set_enabled(cloned["grid_nodes_prefab"], true)
|
||||||
|
gui.set_text(cloned["grid_nodes_text"], index)
|
||||||
|
|
||||||
local button = self.druid:new_button(cloned["grid_nodes_prefab"], function(_, params, button)
|
local button = self.druid:new_button(cloned["grid_nodes_prefab"], function(_, params, button)
|
||||||
remove_node(self, button, true)
|
remove_node(self, button, true)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user