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