Add more available pivots for dynamic grid

This commit is contained in:
Insality 2020-09-28 02:58:43 +03:00
parent af61d4561a
commit a36ba5ab1c
5 changed files with 27 additions and 9 deletions

View File

@ -106,7 +106,7 @@ Druid 0.5.0:
- Have dynamic element size. So have no ability to precalculate stuff like _static_grid_ - Have dynamic element size. So have no ability to precalculate stuff like _static_grid_
- This grid can't have gaps between elements. You will get the error, if spawn element far away from other elements - This grid can't have gaps between elements. You will get the error, if spawn element far away from other elements
- The grid can spawn elements only in row or in collumn - The grid can spawn elements only in row or in collumn
- The grid node should have __West__ or __North__ pivot (vertical or horizontal element placement) - The grid node should have __West__, __East__, __South__ or __North__ pivot (vertical or horizontal element placement)
- Able to shift nodes left or right on _grid:add_/_grid:remove_ functions - Able to shift nodes left or right on _grid:add_/_grid:remove_ functions
- Scroll update: - Scroll update:
- Add _scroll:set_vertical_scroll_ and _scroll:set_horizontal_scroll_ for disable scroll sides - Add _scroll:set_vertical_scroll_ and _scroll:set_horizontal_scroll_ for disable scroll sides

View File

@ -32,6 +32,13 @@ local SIDE_VECTORS = {
BOT = vmath.vector3(0, 1, 0), BOT = vmath.vector3(0, 1, 0),
} }
local AVAILABLE_PIVOTS = {
gui.PIVOT_N,
gui.PIVOT_S,
gui.PIVOT_W,
gui.PIVOT_E,
}
--- Component init function --- Component init function
-- @function dynamic_grid:init -- @function dynamic_grid:init
@ -42,8 +49,9 @@ function DynamicGrid:init(parent, side)
local parent_pivot = gui.get_pivot(self.parent) local parent_pivot = gui.get_pivot(self.parent)
self.pivot = helper.get_pivot_offset(parent_pivot) self.pivot = helper.get_pivot_offset(parent_pivot)
assert(parent_pivot == gui.PIVOT_W or parent_pivot == gui.PIVOT_N, const.ERRORS.GRID_DYNAMIC_ANCHOR) assert(helper.contains(AVAILABLE_PIVOTS, parent_pivot), const.ERRORS.GRID_DYNAMIC_ANCHOR)
self.side = (parent_pivot == gui.PIVOT_W and const.SIDE.X or const.SIDE.Y) self.side = ((parent_pivot == gui.PIVOT_W or parent_pivot == gui.PIVOT_E)
and const.SIDE.X or const.SIDE.Y)
self.nodes = {} self.nodes = {}
self.border = vmath.vector4(0) -- Current grid content size self.border = vmath.vector4(0) -- Current grid content size

View File

@ -103,7 +103,7 @@ M.SWIPE = {
M.ERRORS = { M.ERRORS = {
GRID_DYNAMIC_ANCHOR = "The pivot of dynamic grid node should be West or North" GRID_DYNAMIC_ANCHOR = "The pivot of dynamic grid node should be West, East, South or North"
} }

View File

@ -131,6 +131,16 @@ function M.lerp(a, b, t)
end end
function M.contains(t, value)
for i = 1, #t do
if t[i] == value then
return i
end
end
return false
end
--- Check if node is enabled in gui hierarchy. --- Check if node is enabled in gui hierarchy.
-- Return false, if node or any his parent is disabled -- Return false, if node or any his parent is disabled
-- @function helper.is_enabled -- @function helper.is_enabled

View File

@ -10297,7 +10297,7 @@ nodes {
nodes { nodes {
position { position {
x: 0.0 x: 0.0
y: -814.0 y: -1320.0
z: 0.0 z: 0.0
w: 1.0 w: 1.0
} }
@ -10331,7 +10331,7 @@ nodes {
id: "grid_dynamic_view" id: "grid_dynamic_view"
xanchor: XANCHOR_NONE xanchor: XANCHOR_NONE
yanchor: YANCHOR_NONE yanchor: YANCHOR_NONE
pivot: PIVOT_N pivot: PIVOT_S
adjust_mode: ADJUST_MODE_FIT adjust_mode: ADJUST_MODE_FIT
parent: "grid_page_content" parent: "grid_page_content"
layer: "" layer: ""
@ -10386,7 +10386,7 @@ nodes {
id: "grid_dynamic_nodes" id: "grid_dynamic_nodes"
xanchor: XANCHOR_NONE xanchor: XANCHOR_NONE
yanchor: YANCHOR_NONE yanchor: YANCHOR_NONE
pivot: PIVOT_N pivot: PIVOT_S
adjust_mode: ADJUST_MODE_FIT adjust_mode: ADJUST_MODE_FIT
parent: "grid_dynamic_view" parent: "grid_dynamic_view"
layer: "" layer: ""
@ -10461,7 +10461,7 @@ nodes {
} }
nodes { nodes {
position { position {
x: -250.0 x: 250.0
y: -1464.0 y: -1464.0
z: 0.0 z: 0.0
w: 1.0 w: 1.0
@ -10479,7 +10479,7 @@ nodes {
w: 1.0 w: 1.0
} }
size { size {
x: 500.0 x: -500.0
y: 100.0 y: 100.0
z: 0.0 z: 0.0
w: 1.0 w: 1.0