2025-04-15 21:49:22 +03:00

7.5 KiB

druid.container API

at /druid/extended/container.lua

Druid component to manage the size and positions with other containers relations to create a adaptable layouts.

Setup

Create container component with druid: container = druid:new_container(node, mode, callback)

Notes

  • Container can be used to create adaptable layouts that respond to window size changes
  • Container supports different layout modes: FIT, STRETCH, STRETCH_X, STRETCH_Y
  • Container can be nested inside other containers
  • Container supports fixed margins and percentage-based sizing
  • Container can be positioned using pivot points
  • Container supports minimum size constraints
  • Container can be fitted into window or custom size

Functions

Fields

init


container:init(node, mode, [callback])

The Container constructor

  • Parameters:
    • node (node): Gui node
    • mode (string): Layout mode
    • [callback] (fun(self: druid.container, size: vector3)|nil): Callback on size changed

refresh_origins


container:refresh_origins()

Refresh the origins of the container, origins is the size and position of the container when it was created

set_pivot


container:set_pivot(pivot)

Set the pivot of the container

  • Parameters:
    • pivot (constant): The pivot to set

set_size


container:set_size([width], [height], [anchor_pivot])

Set new size of layout node

  • Parameters:

    • [width] (number|nil): The width to set
    • [height] (number|nil): The height to set
    • [anchor_pivot] (constant|nil): If set will keep the corner possition relative to the new size
  • Returns:

    • Container (druid.container):

get_position


container:get_position()

Get the position of the container

  • Returns:
    • position (vector3): The position of the container

set_position


container:set_position(pos_x, pos_y)

Set the position of the container

  • Parameters:
    • pos_x (number): The x position to set
    • pos_y (number): The y position to set

get_size


container:get_size()

Get the current size of the layout node

  • Returns:
    • size (vector3): The current size of the layout node

get_scale


container:get_scale()

Get the current scale of the layout node

  • Returns:
    • scale (vector3): The current scale of the layout node

fit_into_size


container:fit_into_size(target_size)

Set size for layout node to fit inside it

  • Parameters:

    • target_size (vector3): The target size to fit into
  • Returns:

    • self (druid.container): Current container instance

fit_into_window


container:fit_into_window()

Set current size for layout node to fit inside it

  • Returns:
    • self (druid.container): Current container instance

add_container


container:add_container(node_or_container, [mode], [on_resize_callback])
  • Parameters:

    • node_or_container (string|table|druid.container|node): The node or container to add
    • [mode] (string|nil): stretch, fit, stretch_x, stretch_y. Default: Pick from node, "fit" or "stretch"
    • [on_resize_callback] (fun(self: userdata, size: vector3)|nil):
  • Returns:

    • Container (druid.container): New created layout instance

remove_container_by_node


container:remove_container_by_node([node])
  • Parameters:

    • [node] (any):
  • Returns:

    • `` (druid.container|nil):

set_parent_container


container:set_parent_container([parent_container])
  • Parameters:
    • [parent_container] (druid.container|nil): Druid component to manage the size and positions with other containers relations to create a adaptable layouts.

refresh


container:refresh()

Glossary Center Offset - vector from node position to visual center of node

refresh_scale


container:refresh_scale()

update_child_containers


container:update_child_containers()

create_draggable_corners


container:create_draggable_corners()
  • Returns:
    • self (druid.container): Current container instance

clear_draggable_corners


container:clear_draggable_corners()
  • Returns:
    • self (druid.container): Current container instance

fit_into_node


container:fit_into_node(node)

Set node for layout node to fit inside it. Pass nil to reset

  • Parameters:

    • node (string|node): The node_id or gui.get_node(node_id)
  • Returns:

    • self (druid.container): Current container instance

set_min_size


container:set_min_size([min_size_x], [min_size_y])

Set the minimum size of the container

  • Parameters:

    • [min_size_x] (number|nil): The minimum size x
    • [min_size_y] (number|nil): The minimum size y
  • Returns:

    • self (druid.container): Current container instance

Fields

  • node (node): The gui node

  • druid (druid.instance): The druid instance

  • node_offset (vector4): The node offset

  • origin_size (vector3): The origin size

  • size (vector3): The current size

  • origin_position (vector3): The origin position

  • position (vector3): The current position

  • pivot_offset (vector3): The pivot offset

  • center_offset (vector3): The center offset

  • mode (string): The layout mode

  • fit_size (vector3): The fit size

  • min_size_x (number): The minimum size x

  • min_size_y (number): The minimum size y

  • on_size_changed (event): fun(self: druid.container, size: vector3) The event triggered when the size changes

  • node_fill_x (nil)

  • node_fill_y (nil)

  • x_koef (number)

  • y_koef (number)

  • x_anchor (unknown)

  • y_anchor (unknown)

  • style (table)