Jungle GUI Layout
The JungleGUILayout class provides IMGUI auto layout elements for use in the Jungle Node Control GUI and inspector.
All methods within the JungleGUILayout class will not compile to build.
Method declarations are still available; However, they will lack all functionality.
Overview
The JungleGUILayout class provides the following functionality:
- Auto-scaling fields for floats, integers, and toggles.
- IMGUI Layout centering methods.
- Jungle Nodes and Trees list editor.
Example
The following example is a snippet of the SetFloatNode that sets a float on a given animator.
The full script has been cut down for brevity.
As seen below, the script has two main fields: The parameterName and value.
The node uses to JungleGUILayout class to draw these fields neatly within the node's control GUI.
using Jungle;
using Jungle.Extensions;
using UnityEngine;
public class SetFloatNode : IONode<Animator>
{
...
[SerializeField]
private string parameterName = "MyFloat";
[SerializeField]
private float value = 1;
public override void OnDrawControlGUI()
{
JungleGUILayout.BeginCenteredHorizontal();
JungleGUILayout.TextLabel("Set");
parameterName = JungleGUILayout.ScalingTextField(parameterName);
JungleGUILayout.TextLabel("to");
value = JungleGUILayout.ScalingFloatField(value, minWidth: 24);
JungleGUILayout.EndCenteredHorizontal();
}
...
}

Methods
BeginCenteredHorizontal
public static void BeginCenteredHorizontal(bool drawBorder = false)
Begins a centered horizonal area.
Parameters
drawBorder: If a border should be drawn around the area.
EndCenteredHorizontal
public static void EndCenteredHorizontal()
Ends a centered horizonal area.
TextLabel
public static void TextLabel(string text, bool bold = false, bool greyed = false)
Creates a text label that automatically scales to the amount of text in the label.
Parameters
text: The text to display in the label.bold: Set true if the displayed text should be bold. Default is false.greyed: Set true if the displayed text should be greyed out. Default is false.
ScalingTextField
public static string ScalingTextField(string text, float minWidth = 32, float maxWidth = 300, float padding = 6)
Creates a text field that automatically scales with the number of characters inside the field.
Parameters
text: The text to edit.minWidth: The minimum width of the field. Default is 32.maxWidth: The maximum width of the field. Default is 300.padding: The amount of space to add after the last character in the field. Default is 6.
Returns
The edited text in the field.
ScalingFloatField
public static float ScalingFloatField(float value, float minWidth = 32, float maxWidth = 300, float padding = 6)
Creates a float field that automatically scales with the number of characters inside the field.
Parameters
value: The float value to edit.minWidth: The minimum width of the field. Default is 32.maxWidth: The maximum width of the field. Default is 300.padding: The amount of space to add after the last character in the field. Default is 6.
Returns
The edited float in the field.
ScalingIntField
public static int ScalingIntField(int value, float minWidth = 32, float maxWidth = 300, float padding = 6)
Creates an integer field that automatically scales with the number of characters inside the field.
Parameters
value: The integer value to edit.minWidth: The minimum width of the field. Default is 32.maxWidth: The maximum width of the field. Default is 300.padding: The amount of space to add after the last character in the field. Default is 6.
Returns
The edited integer in the field.
Toggle
public static bool Toggle(bool value)
Creates a toggle field.
Parameters
value: The boolean value to edit.
Returns
The edited boolean in the field.
TreesListEditor
public static void TreesListEditor(string headerText, string contextText, Func<JungleTree[]> getCurrentTrees, Func<JungleTree[]> getAvailableTrees, Action<JungleTree> onAddTree, Action<JungleTree> onRemoveTree)
Draws an editor for managing a list of Jungle Trees.
Parameters
headerText: The text to display in the header label.contextText: The text to display in the instructions label.getCurrentTrees: A function that returns the trees currently in the list.getAvailableTreesA function that returns the trees that can be added to the list.onAddTreeAn action called when a tree is requesting to be added to the list.onRemoveTreeAn action called when a tree is requesting to be removed from the list.
NodesListEditor
public static void NodesListEditor(string headerText, string contextText, Func<JungleNode[]> getCurrentNodes, Func<JungleNode[]> getAvailableNodes, Action<JungleNode> onAddNode, Action<JungleNode> onRemoveNode)
Draws an editor for managing a list of Jungle Nodes.
Parameters
headerText: The text to display in the header label.contextText: The text to display in the instructions label.getCurrentNodesA function that returns the nodes currently in the list.getAvailableNodesA function that returns the nodes that can be added to the list.onAddNodeAn action called when a node is requesting to be added to the list.onRemoveNodeAn action called when a node is requesting to be removed from the list.