# Module `StaticGrid`

Component to handle component's position by row and columns.

# Overview #

The Static Grid component allows for positioning components in rows and columns. It provides a static grid layout with constant node sizes, allowing for pre-calculated node positions and the option to include gaps between nodes.

# Notes #

• In a static grid, the node size remains constant, enabling the calculation of node positions before placement. If you want add gaps between nodes, increase the root prefab size, including the padding and margin.

• The static grid can automatically shift elements when nodes are added or removed.

• When a node is added, the grid will set the node's parent to the specified parent_node.

• You can obtain an array of positions for each element, which can be used to set points of interest in a scroll component.

• The size of all elements can be retrieved for setting up the size in a scroll component.

• The grid can be bound to a scroll component for automatic resizing of the scroll content size.

• The pivot of the parent_node affects the node placement within the grid.

• A prefab node is used to determine the node size and anchor.

• You can specify a position_function for animations using the _static_grid:set_position_function(node, pos) callback. The default position function is gui.set_position().

Example Link

## Functions

add(self, item, index, shift_policy, is_instant) | Add new item to the grid
clear(self) | Clear grid nodes array.
get_all_pos(self) | Return array of all node positions
get_borders(self) | Return grid content borders
get_index(self, pos) | Return index for grid pos
get_index_by_node(self, node) | Return grid index by node
get_offset(self) | Return StaticGrid offset, where StaticGrid content starts.
get_pos(self, index) | Return pos for grid node index
get_size(self) | Return grid content size
init(self, parent, element, in_row) | The StaticGrid constructor
remove(self, index, shift_policy, is_instant) | Remove the item from the grid.
set_anchor(self, anchor) | Set grid anchor.
set_in_row(self, in_row) | Set new in_row elements for grid
set_item_size(self[, width[, height]]) | Set new node size for grid
set_items(self, nodes[, is_instant=false]) | Set new items to the grid.
set_position_function(self, callback) | Change set position function for grid nodes.
sort_nodes(self, comparator) | Sort grid nodes by custom comparator function

## Tables

style | Component style params.

## Fields

anchor | Item anchor [0..1]
border | The size of item content
first_index | The first index of node in grid
last_index | The last index of node in grid
node_size | Item size
nodes | List of all grid nodes
on_add_item | On item add callback(self, node, index)
on_change_items | On item add, remove or change in_row callback(self, index|nil)
on_clear | On grid clear callback(self)
on_remove_item | On item remove callback(self, index)
on_update_positions | On update item positions callback(self)
parent | Parent gui node
pivot | Item pivot [-0.5..0.5]

## Functions

add(self, item, index, shift_policy, is_instant)
  Add new item to the grid

  ### Parameters:

  - self StaticGrid StaticGrid
  - item node GUI node
  - index number or nil The item position. By default add as last item
  - shift_policy number or nil How shift nodes, if required. Default: const.SHIFT.RIGHT
  - is_instant boolean or nil If true, update node positions instantly
clear(self)
  Clear grid nodes array. GUI nodes will be not deleted! If you want to delete GUI nodes, use static_grid.nodes array before grid:clear

  ### Parameters:

  - self StaticGrid StaticGrid

  ### Returns:

  druid.static_grid Current grid instance
get_all_pos(self)
  Return array of all node positions

  ### Parameters:

  - self StaticGrid StaticGrid

  ### Returns:

  vector3[] All grid node positions
get_borders(self)
  Return grid content borders

  ### Parameters:

  - self StaticGrid StaticGrid

  ### Returns:

  vector3 The grid content borders
get_index(self, pos)
  Return index for grid pos

  ### Parameters:

  - self StaticGrid StaticGrid
  - pos vector3 The node position in the grid

  ### Returns:

  number The node index
get_index_by_node(self, node)
  Return grid index by node

  ### Parameters:

  - self StaticGrid StaticGrid
  - node node The gui node in the grid

  ### Returns:

  number The node index
get_offset(self)
  Return StaticGrid offset, where StaticGrid content starts.

  ### Parameters:

  - self StaticGrid StaticGrid The StaticGrid instance

  ### Returns:

  vector3 The StaticGrid offset
get_pos(self, index)
  Return pos for grid node index

  ### Parameters:

  - self StaticGrid StaticGrid
  - index number The grid element index

  ### Returns:

  vector3 @Node position
get_size(self)
  Return grid content size

  ### Parameters:

  - self StaticGrid StaticGrid

  ### Returns:

  vector3 The grid content size
init(self, parent, element, in_row)
  The StaticGrid constructor

  ### Parameters:

  - self StaticGrid StaticGrid
  - parent string or node The GUI Node container, where grid's items will be placed
  - element node Element prefab. Need to get it size
  - in_row number or nil How many nodes in row can be placed. By default 1
remove(self, index, shift_policy, is_instant)
  Remove the item from the grid. Note that gui node will be not deleted

  ### Parameters:

  - self StaticGrid StaticGrid
  - index number The grid node index to remove
  - shift_policy number or nil How shift nodes, if required. Default: const.SHIFT.RIGHT
  - is_instant boolean or nil If true, update node positions instantly

  ### Returns:

  node The deleted gui node from grid
set_anchor(self, anchor)
  Set grid anchor. Default anchor is equal to anchor of grid parent node

  ### Parameters:

  - self StaticGrid StaticGrid
  - anchor vector3 Anchor
set_in_row(self, in_row)
  Set new in_row elements for grid

  ### Parameters:

  - self StaticGrid StaticGrid
  - in_row number The new in_row value

  ### Returns:

  druid.static_grid Current grid instance
set_item_size(self[, width[, height]])
  Set new node size for grid

  ### Parameters:

  - self StaticGrid StaticGrid
  - width number The new node width (optional)
  - height number The new node height (optional)

  ### Returns:

  druid.static_grid Current grid instance
set_items(self, nodes[, is_instant=false])
  Set new items to the grid. All previous items will be removed

  ### Parameters:

  - self StaticGrid StaticGrid
  - nodes node[] The new grid nodes
  - is_instant boolean If true, update node positions instantly (default false)
set_position_function(self, callback)
  Change set position function for grid nodes. It will call on update poses on grid elements. Default: gui.set_position

  ### Parameters:

  - self StaticGrid StaticGrid
  - callback function Function on node set position

  ### Returns:

  druid.static_grid Current grid instance
sort_nodes(self, comparator)
  Sort grid nodes by custom comparator function

  ### Parameters:

  - self StaticGrid StaticGrid
  - comparator function The comparator function. (a, b) -> boolean

  ### Returns:

  druid.static_grid Current grid instance

## Tables

style
  Component style params. You can override this component styles params in druid styles table or create your own style

  ### Fields:

  - IS_DYNAMIC_NODE_POSES boolean or nil If true, always center grid content as grid pivot sets. Default: false
  - IS_ALIGN_LAST_ROW boolean or nil If true, always align last row of the grid as grid pivot sets. Default: false

## Fields

anchor
  Item anchor [0..1]
  - anchor vector3
border
  The size of item content
  - border vector4
first_index
  The first index of node in grid
  - first_index number
last_index
  The last index of node in grid
  - last_index number
node_size
  Item size
  - node_size vector3
nodes
  List of all grid nodes
  - nodes node[]
on_add_item
  On item add callback(self, node, index)
  - on_add_item DruidEvent DruidEvent
on_change_items
  On item add, remove or change in_row callback(self, index|nil)
  - on_change_items DruidEvent DruidEvent
on_clear
  On grid clear callback(self)
  - on_clear DruidEvent DruidEvent
on_remove_item
  On item remove callback(self, index)
  - on_remove_item DruidEvent DruidEvent
on_update_positions
  On update item positions callback(self)
  - on_update_positions DruidEvent DruidEvent
parent
  Parent gui node
  - parent node
pivot
  Item pivot [-0.5..0.5]
  - pivot vector3

generated by LDoc TESTING Last updated 2015-01-01 12:00:00