using UnityEngine; namespace Flexalon { /// <summary> A layout determines how the children of a node are positioned. </summary> public interface Layout { /// <summary> Perform minimal work to determine what the size of node and available size for node's children. </summary> Bounds Measure(FlexalonNode node, Vector3 size, Vector3 min, Vector3 max); /// <summary> Position the children of node within the available bounds. </summary> void Arrange(FlexalonNode node, Vector3 layoutSize); } /// <summary> A constraint runs whenever a target layout is updated. </summary> public interface Constraint { GameObject Target { get; } void Constrain(FlexalonNode node); } }