Class HierarchicalBox
Provide a gizmo/handle representing a box where all face can be moved independently. Also add a contained sub gizmo/handle box if contained is used at creation.
Inherited Members
Namespace: UnityEditor.Rendering
Assembly: Unity.RenderPipelines.Core.Editor.dll
Syntax
public class HierarchicalBox
Examples
class MyComponentEditor : Editor
{
static HierarchicalBox box;
static HierarchicalBox containedBox;
static MyComponentEditor()
{
Color[] handleColors = new Color[]
{
Color.red,
Color.green,
Color.Blue,
new Color(0.5f, 0f, 0f, 1f),
new Color(0f, 0.5f, 0f, 1f),
new Color(0f, 0f, 0.5f, 1f)
};
box = new HierarchicalBox(new Color(1f, 1f, 1f, 0.25), handleColors);
containedBox = new HierarchicalBox(new Color(1f, 0f, 1f, 0.25), handleColors, container: box);
}
[DrawGizmo(GizmoType.Selected|GizmoType.Active)]
void DrawGizmo(MyComponent comp, GizmoType gizmoType)
{
box.center = comp.transform.position;
box.size = comp.transform.scale;
box.DrawHull(gizmoType == GizmoType.Selected);
containedBox.center = comp.innerposition;
containedBox.size = comp.innerScale;
containedBox.DrawHull(gizmoType == GizmoType.Selected);
}
void OnSceneGUI()
{
EditorGUI.BeginChangeCheck();
//container box must be also set for contained box for clamping
box.center = comp.transform.position;
box.size = comp.transform.scale;
box.DrawHandle();
containedBox.DrawHandle();
containedBox.center = comp.innerposition;
containedBox.size = comp.innerScale;
if(EditorGUI.EndChangeCheck())
{
comp.innerposition = containedBox.center;
comp.innersize = containedBox.size;
}
}
}
Constructors
Name | Description |
---|---|
HierarchicalBox(Color, Color[], HierarchicalBox) | Constructor. Used to setup colors and also the container if any. |
Properties
Name | Description |
---|---|
allowNegativeSize | Allow to switch between the mode where box size can be negative or not. |
baseColor | The baseColor used to fill hull. All other colors are deduced from it except specific handle colors. |
center | The position of the center of the box in Handle.matrix space. |
monoHandle | Allow to switch between the mode where all axis are controlled together or not Note that if there is several handles, they will use the polychrome colors. |
size | The size of the box in Handle.matrix space. |
Methods
Name | Description |
---|---|
DrawHandle() | Draw the manipulable handles |
DrawHull(bool) | Draw the hull which means the boxes without the handles |
SetBaseColor(Color) | Set the baseColor used to fill hull. All other colors are deduced from it except specific handle colors. Instead of baseColor set, this will not force the opacity and keep what is provided for the filled faces. |