Browse Source

Add a grid to the editor. Add default zone and grid editor preferences. Make editor settings and preferences dialogs resizable and scrollable. Fix Pow() script registration.

primitivewaste 12 years ago
parent
commit
7d641ca3fc

+ 3 - 0
Bin/CoreData/Techniques/NoTextureUnlitVCol.xml

@@ -0,0 +1,3 @@
+<technique>
+    <pass name="alpha" vs="Basic_VCol" ps="Basic_VCol" />
+</technique>

+ 3 - 0
Bin/Data/Materials/VColUnlit.xml

@@ -0,0 +1,3 @@
+<material>
+    <technique name="Techniques/NoTextureUnlitVCol.xml" />
+</material>

+ 29 - 0
Bin/Data/Scripts/Editor.as

@@ -111,6 +111,7 @@ void LoadConfig()
     XMLElement uiElem = configElem.GetChild("ui");
     XMLElement hierarchyElem = configElem.GetChild("hierarchy");
     XMLElement inspectorElem = configElem.GetChild("attributeinspector");
+    XMLElement viewElem = configElem.GetChild("view");
     XMLElement resourcesElem = configElem.GetChild("resources");
 
     if (!cameraElem.isNull)
@@ -185,6 +186,21 @@ void LoadConfig()
         if (inspectorElem.HasAttribute("noneditablecolor")) nonEditableTextColor = inspectorElem.GetColor("noneditablecolor");
         if (inspectorElem.HasAttribute("shownoneditable")) showNonEditableAttribute = inspectorElem.GetBool("shownoneditable");
     }
+
+    if (!viewElem.isNull)
+    {
+        if (viewElem.HasAttribute("defaultzoneambientcolor")) renderer.defaultZone.ambientColor = viewElem.GetColor("defaultzoneambientcolor");
+        if (viewElem.HasAttribute("defaultzonefogcolor")) renderer.defaultZone.fogColor = viewElem.GetColor("defaultzonefogcolor");
+        if (viewElem.HasAttribute("defaultzonefogstart")) renderer.defaultZone.fogStart = viewElem.GetInt("defaultzonefogstart");
+        if (viewElem.HasAttribute("defaultzonefogend")) renderer.defaultZone.fogEnd = viewElem.GetInt("defaultzonefogend");
+        if (viewElem.HasAttribute("showgrid")) showGrid = viewElem.GetBool("showgrid");
+        if (viewElem.HasAttribute("grid2dmode")) grid2DMode = viewElem.GetBool("grid2dmode");
+        if (viewElem.HasAttribute("gridsize")) gridSize = viewElem.GetInt("gridsize");
+        if (viewElem.HasAttribute("gridsubdivisions")) gridSubdivisions = viewElem.GetInt("gridsubdivisions");
+        if (viewElem.HasAttribute("gridscale")) gridScale = viewElem.GetFloat("gridscale");
+        if (viewElem.HasAttribute("gridcolor")) gridColor = viewElem.GetColor("gridcolor");
+        if (viewElem.HasAttribute("gridsubdivisioncolor")) gridSubdivisionColor = viewElem.GetColor("gridsubdivisioncolor");
+    }
 }
 
 void SaveConfig()
@@ -199,6 +215,7 @@ void SaveConfig()
     XMLElement uiElem = configElem.CreateChild("ui");
     XMLElement hierarchyElem = configElem.CreateChild("hierarchy");
     XMLElement inspectorElem = configElem.CreateChild("attributeinspector");
+    XMLElement viewElem = configElem.CreateChild("view");
     XMLElement resourcesElem = configElem.CreateChild("resources");
 
     // The save config may be called on error exit so some of the objects below could still be null
@@ -253,6 +270,18 @@ void SaveConfig()
     inspectorElem.SetColor("noneditablecolor", nonEditableTextColor);
     inspectorElem.SetBool("shownoneditable", showNonEditableAttribute);
 
+    viewElem.SetBool("showgrid", showGrid);
+    viewElem.SetBool("grid2dmode", grid2DMode);
+    viewElem.SetColor("defaultzoneambientcolor", renderer.defaultZone.ambientColor);
+    viewElem.SetColor("defaultzonefogcolor", renderer.defaultZone.fogColor);
+    viewElem.SetFloat("defaultzonefogstart", renderer.defaultZone.fogStart);
+    viewElem.SetFloat("defaultzonefogend", renderer.defaultZone.fogEnd);
+    viewElem.SetInt("gridsize", gridSize);
+    viewElem.SetInt("gridsubdivisions", gridSubdivisions);
+    viewElem.SetFloat("gridscale", gridScale);
+    viewElem.SetColor("gridcolor", gridColor);
+    viewElem.SetColor("gridsubdivisioncolor", gridSubdivisionColor);
+
     config.Save(File(configFileName, FILE_WRITE));
 }
 

+ 183 - 0
Bin/Data/Scripts/Editor/EditorPreferences.as

@@ -20,6 +20,20 @@ LineEdit@ nonEditableAttributeTextColorEditR;
 LineEdit@ nonEditableAttributeTextColorEditG;
 LineEdit@ nonEditableAttributeTextColorEditB;
 
+LineEdit@ defaultZoneAmbientColorEditR;
+LineEdit@ defaultZoneAmbientColorEditG;
+LineEdit@ defaultZoneAmbientColorEditB;
+LineEdit@ defaultZoneFogColorEditR;
+LineEdit@ defaultZoneFogColorEditG;
+LineEdit@ defaultZoneFogColorEditB;
+
+LineEdit@ gridColorEditR;
+LineEdit@ gridColorEditG;
+LineEdit@ gridColorEditB;
+LineEdit@ gridSubdivisionColorEditR;
+LineEdit@ gridSubdivisionColorEditG;
+LineEdit@ gridSubdivisionColorEditB;
+
 void CreateEditorPreferencesDialog()
 {
     if (preferencesDialog !is null)
@@ -28,6 +42,7 @@ void CreateEditorPreferencesDialog()
     preferencesDialog = ui.LoadLayout(cache.GetResource("XMLFile", "UI/EditorPreferencesDialog.xml"));
     ui.root.AddChild(preferencesDialog);
     preferencesDialog.opacity = uiMaxOpacity;
+    preferencesDialog.height = 440;
     CenterDialog(preferencesDialog);
 
     nodeItemTextColorEditR = preferencesDialog.GetChild("NodeItemTextColor.r", true);
@@ -47,6 +62,20 @@ void CreateEditorPreferencesDialog()
     nonEditableAttributeTextColorEditG = preferencesDialog.GetChild("NonEditableAttributeTextColor.g", true);
     nonEditableAttributeTextColorEditB = preferencesDialog.GetChild("NonEditableAttributeTextColor.b", true);
 
+    defaultZoneAmbientColorEditR = preferencesDialog.GetChild("DefaultZoneAmbientColor.r", true);
+    defaultZoneAmbientColorEditG = preferencesDialog.GetChild("DefaultZoneAmbientColor.g", true);
+    defaultZoneAmbientColorEditB = preferencesDialog.GetChild("DefaultZoneAmbientColor.b", true);
+    defaultZoneFogColorEditR = preferencesDialog.GetChild("DefaultZoneFogColor.r", true);
+    defaultZoneFogColorEditG = preferencesDialog.GetChild("DefaultZoneFogColor.g", true);
+    defaultZoneFogColorEditB = preferencesDialog.GetChild("DefaultZoneFogColor.b", true);
+
+    gridColorEditR = preferencesDialog.GetChild("GridColor.r", true);
+    gridColorEditG = preferencesDialog.GetChild("GridColor.g", true);
+    gridColorEditB = preferencesDialog.GetChild("GridColor.b", true);
+    gridSubdivisionColorEditR = preferencesDialog.GetChild("GridSubdivisionColor.r", true);
+    gridSubdivisionColorEditG = preferencesDialog.GetChild("GridSubdivisionColor.g", true);
+    gridSubdivisionColorEditB = preferencesDialog.GetChild("GridSubdivisionColor.b", true);
+
     UpdateEditorPreferencesDialog();
     HideEditorPreferencesDialog();
 }
@@ -91,6 +120,41 @@ void UpdateEditorPreferencesDialog()
     nonEditableAttributeTextColorEditG.text = String(nonEditableTextColor.g);
     nonEditableAttributeTextColorEditB.text = String(nonEditableTextColor.b);
 
+    defaultZoneAmbientColorEditR.text = String(renderer.defaultZone.ambientColor.r);
+    defaultZoneAmbientColorEditG.text = String(renderer.defaultZone.ambientColor.g);
+    defaultZoneAmbientColorEditB.text = String(renderer.defaultZone.ambientColor.b);
+
+    defaultZoneFogColorEditR.text = String(renderer.defaultZone.fogColor.r);
+    defaultZoneFogColorEditG.text = String(renderer.defaultZone.fogColor.g);
+    defaultZoneFogColorEditB.text = String(renderer.defaultZone.fogColor.b);
+
+    LineEdit@ defaultZoneFogStartEdit = preferencesDialog.GetChild("DefaultZoneFogStart", true);
+    defaultZoneFogStartEdit.text = String(renderer.defaultZone.fogStart);
+    LineEdit@ defaultZoneFogEndEdit = preferencesDialog.GetChild("DefaultZoneFogEnd", true);
+    defaultZoneFogEndEdit.text = String(renderer.defaultZone.fogEnd);
+
+    CheckBox@ showGridToggle = preferencesDialog.GetChild("ShowGrid", true);
+    showGridToggle.checked = showGrid;
+    
+    CheckBox@ grid2DModeToggle = preferencesDialog.GetChild("Grid2DMode", true);
+    grid2DModeToggle.checked = grid2DMode;
+
+    LineEdit@ gridSizeEdit = preferencesDialog.GetChild("GridSize", true);
+    gridSizeEdit.text = String(gridSize);
+    
+    LineEdit@ gridSubdivisionsEdit = preferencesDialog.GetChild("GridSubdivisions", true);
+    gridSubdivisionsEdit.text = String(gridSubdivisions);
+    
+    LineEdit@ gridScaleEdit = preferencesDialog.GetChild("GridScale", true);
+    gridScaleEdit.text = String(gridScale);
+
+    gridColorEditR.text = String(gridColor.r);
+    gridColorEditG.text = String(gridColor.g);
+    gridColorEditB.text = String(gridColor.b);
+    gridSubdivisionColorEditR.text = String(gridSubdivisionColor.r);
+    gridSubdivisionColorEditG.text = String(gridSubdivisionColor.g);
+    gridSubdivisionColorEditB.text = String(gridSubdivisionColor.b);
+
     if (!subscribedToEditorPreferences)
     {
         SubscribeToEvent(uiMinOpacityEdit, "TextFinished", "EditUIMinOpacity");
@@ -113,6 +177,25 @@ void UpdateEditorPreferencesDialog()
         SubscribeToEvent(nonEditableAttributeTextColorEditR, "TextFinished", "EditNonEditableAttributeTextColor");
         SubscribeToEvent(nonEditableAttributeTextColorEditG, "TextFinished", "EditNonEditableAttributeTextColor");
         SubscribeToEvent(nonEditableAttributeTextColorEditB, "TextFinished", "EditNonEditableAttributeTextColor");
+        SubscribeToEvent(defaultZoneAmbientColorEditR, "TextFinished", "EditDefaultZoneAmbientColor");
+        SubscribeToEvent(defaultZoneAmbientColorEditG, "TextFinished", "EditDefaultZoneAmbientColor");
+        SubscribeToEvent(defaultZoneAmbientColorEditB, "TextFinished", "EditDefaultZoneAmbientColor");
+        SubscribeToEvent(defaultZoneFogColorEditR, "TextFinished", "EditDefaultZoneFogColor");
+        SubscribeToEvent(defaultZoneFogColorEditG, "TextFinished", "EditDefaultZoneFogColor");
+        SubscribeToEvent(defaultZoneFogColorEditB, "TextFinished", "EditDefaultZoneFogColor");
+        SubscribeToEvent(defaultZoneFogStartEdit, "TextFinished", "EditDefaultZoneFogStart");
+        SubscribeToEvent(defaultZoneFogEndEdit, "TextFinished", "EditDefaultZoneFogEnd");
+        SubscribeToEvent(showGridToggle, "Toggled", "ToggleShowGrid");
+        SubscribeToEvent(grid2DModeToggle, "Toggled", "ToggleGrid2DMode");
+        SubscribeToEvent(gridSizeEdit, "TextFinished", "EditGridSize");
+        SubscribeToEvent(gridSubdivisionsEdit, "TextFinished", "EditGridSubdivisions");
+        SubscribeToEvent(gridScaleEdit, "TextFinished", "EditGridScale");
+        SubscribeToEvent(gridColorEditR, "TextFinished", "EditGridColor");
+        SubscribeToEvent(gridColorEditG, "TextFinished", "EditGridColor");
+        SubscribeToEvent(gridColorEditB, "TextFinished", "EditGridColor");
+        SubscribeToEvent(gridSubdivisionColorEditR, "TextFinished", "EditGridSubdivisionColor");
+        SubscribeToEvent(gridSubdivisionColorEditG, "TextFinished", "EditGridSubdivisionColor");
+        SubscribeToEvent(gridSubdivisionColorEditB, "TextFinished", "EditGridSubdivisionColor");
         SubscribeToEvent(preferencesDialog.GetChild("CloseButton", true), "Released", "HideEditorPreferencesDialog");
         subscribedToEditorPreferences = true;
     }
@@ -232,3 +315,103 @@ void EditNonEditableAttributeTextColor(StringHash eventType, VariantMap& eventDa
         edit.text = String(nonEditableTextColor.b);
     UpdateAttributeInspector(false);
 }
+
+void EditDefaultZoneAmbientColor(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    renderer.defaultZone.ambientColor = Color(defaultZoneAmbientColorEditR.text.ToFloat(), defaultZoneAmbientColorEditG.text.ToFloat(), defaultZoneAmbientColorEditB.text.ToFloat());
+    if (edit.name == "DefaultZoneAmbientColor.r")
+        edit.text = String(renderer.defaultZone.ambientColor.r);
+    else if (edit.name == "DefaultZoneAmbientColor.g")
+        edit.text = String(renderer.defaultZone.ambientColor.g);
+    else if (edit.name == "DefaultZoneAmbientColor.b")
+        edit.text = String(renderer.defaultZone.ambientColor.b);
+}
+
+void EditDefaultZoneFogColor(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    renderer.defaultZone.fogColor = Color(defaultZoneFogColorEditR.text.ToFloat(), defaultZoneFogColorEditG.text.ToFloat(), defaultZoneFogColorEditB.text.ToFloat());
+    if (edit.name == "DefaultZoneFogColor.r")
+        edit.text = String(renderer.defaultZone.fogColor.r);
+    else if (edit.name == "DefaultZoneFogColor.g")
+        edit.text = String(renderer.defaultZone.fogColor.g);
+    else if (edit.name == "DefaultZoneFogColor.b")
+        edit.text = String(renderer.defaultZone.fogColor.b);
+}
+
+void EditDefaultZoneFogStart(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    renderer.defaultZone.fogStart = edit.text.ToFloat();
+    edit.text = String(renderer.defaultZone.fogStart);
+}
+
+void EditDefaultZoneFogEnd(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    renderer.defaultZone.fogEnd = edit.text.ToFloat();
+    edit.text = String(renderer.defaultZone.fogEnd);
+}
+
+void ToggleShowGrid(StringHash eventType, VariantMap& eventData)
+{
+    showGrid = cast<CheckBox>(eventData["Element"].GetUIElement()).checked;
+    UpdateGrid(false);
+}
+
+void ToggleGrid2DMode(StringHash eventType, VariantMap& eventData)
+{
+    grid2DMode = cast<CheckBox>(eventData["Element"].GetUIElement()).checked;
+    UpdateGrid();
+}
+
+void EditGridSize(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    gridSize = edit.text.ToInt();
+    edit.text = String(gridSize);
+    UpdateGrid();
+}
+
+void EditGridSubdivisions(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    gridSubdivisions = edit.text.ToInt();
+    edit.text = String(gridSubdivisions);
+    UpdateGrid();
+}
+
+void EditGridScale(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    gridScale = edit.text.ToFloat();
+    edit.text = String(gridScale);
+    UpdateGrid(false);
+}
+
+void EditGridColor(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    gridColor = Color(gridColorEditR.text.ToFloat(), gridColorEditG.text.ToFloat(), gridColorEditB.text.ToFloat());
+    if (edit.name == "GridColor.r")
+        edit.text = String(gridColor.r);
+    else if (edit.name == "GridColor.g")
+        edit.text = String(gridColor.g);
+    else if (edit.name == "GridColor.b")
+        edit.text = String(gridColor.b);
+    UpdateGrid();
+}
+
+void EditGridSubdivisionColor(StringHash eventType, VariantMap& eventData)
+{
+    LineEdit@ edit = eventData["Element"].GetUIElement();
+    gridSubdivisionColor = Color(gridSubdivisionColorEditR.text.ToFloat(), gridSubdivisionColorEditG.text.ToFloat(), gridSubdivisionColorEditB.text.ToFloat());
+    if (edit.name == "GridSubdivisionColor.r")
+        edit.text = String(gridSubdivisionColor.r);
+    else if (edit.name == "GridSubdivisionColor.g")
+        edit.text = String(gridSubdivisionColor.g);
+    else if (edit.name == "GridSubdivisionColor.b")
+        edit.text = String(gridSubdivisionColor.b);
+    UpdateGrid();
+}

+ 2 - 0
Bin/Data/Scripts/Editor/EditorScene.as

@@ -86,6 +86,7 @@ bool ResetScene()
 
     ResetCamera();
     CreateGizmo();
+    CreateGrid();
 
     return true;
 }
@@ -183,6 +184,7 @@ bool LoadScene(const String&in fileName)
 
     ResetCamera();
     CreateGizmo();
+    CreateGrid();
 
     return loaded;
 }

+ 1 - 0
Bin/Data/Scripts/Editor/EditorSettings.as

@@ -11,6 +11,7 @@ void CreateEditorSettingsDialog()
     settingsDialog = ui.LoadLayout(cache.GetResource("XMLFile", "UI/EditorSettingsDialog.xml"));
     ui.root.AddChild(settingsDialog);
     settingsDialog.opacity = uiMaxOpacity;
+    settingsDialog.height = 440;
     CenterDialog(settingsDialog);
     UpdateEditorSettingsDialog();
     HideEditorSettingsDialog();

+ 114 - 3
Bin/Data/Scripts/Editor/EditorView.as

@@ -3,6 +3,9 @@
 Node@ cameraNode;
 Camera@ camera;
 
+Node@ gridNode;
+CustomGeometry@ grid;
+
 enum EditMode
 {
     EDIT_MOVE = 0,
@@ -51,6 +54,17 @@ bool physicsDebug = false;
 bool octreeDebug = false;
 int pickMode = PICK_GEOMETRIES;
 
+bool showGrid = true;
+bool grid2DMode = false;
+uint gridSize = 16;
+uint gridSubdivisions = 3;
+float gridScale = 8.0;
+Color gridColor(0.1, 0.1, 0.1);
+Color gridSubdivisionColor(0.05, 0.05, 0.05);
+Color gridXColor(0.5, 0.1, 0.1);
+Color gridYColor(0.1, 0.5, 0.1);
+Color gridZColor(0.1, 0.1, 0.5);
+
 Array<int> pickModeDrawableFlags = {
     DRAWABLE_GEOMETRY,
     DRAWABLE_LIGHT,
@@ -99,10 +113,97 @@ void CreateCamera()
 
 void ResetCamera()
 {
-    cameraNode.position = Vector3(0, 10, 0);
-    cameraNode.rotation = Quaternion();
-    cameraPitch = 0;
+    cameraPitch = 20;
     cameraYaw = 0;
+    cameraNode.position = Vector3(0, 5, -10);
+    cameraNode.rotation = Quaternion(cameraPitch, cameraYaw, 0);
+}
+
+void CreateGrid()
+{
+    gridNode = Node();
+    grid = gridNode.CreateComponent("CustomGeometry");
+    grid.numGeometries = 1;
+    grid.material = cache.GetResource("Material", "Materials/VColUnlit.xml");
+    grid.viewMask = 0x80000000; // Editor raycasts use viewmask 0x7fffffff
+    grid.occludee = false;
+
+    UpdateGrid();
+}
+
+void HideGrid()
+{
+    if (grid !is null)
+        grid.enabled = false;
+}
+
+void ShowGrid()
+{
+    if (grid !is null)
+    {
+        grid.enabled = true;
+
+        if (editorScene.octree !is null)
+            editorScene.octree.AddManualDrawable(grid);
+    }
+}
+
+void UpdateGrid(bool updateGridGeometry = true)
+{
+    showGrid ? ShowGrid() : HideGrid();
+    gridNode.scale = Vector3(gridScale, gridScale, gridScale);
+
+    if (!updateGridGeometry)
+        return;
+
+    uint size = uint(Floor(gridSize / 2) * 2);
+    float halfSizeScaled = size / 2;
+    float scale = 1.0;
+    uint subdivisionSize = uint(Pow(2.0f, float(gridSubdivisions)));
+
+    if (subdivisionSize > 0)
+    {
+        size *= subdivisionSize;
+        scale /= subdivisionSize;
+    }
+
+    uint halfSize = size / 2;
+
+    grid.BeginGeometry(0, LINE_LIST);
+    float lineOffset = -halfSizeScaled;
+    for (uint i = 0; i <= size; ++i)
+    {
+        bool lineCenter = i == halfSize;
+        bool lineSubdiv = !Equals(Mod(i, subdivisionSize), 0.0);
+
+        if (!grid2DMode)
+        {
+            grid.DefineVertex(Vector3(lineOffset, 0.0, halfSizeScaled));
+            grid.DefineColor(lineCenter ? gridZColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+            grid.DefineVertex(Vector3(lineOffset, 0.0, -halfSizeScaled));
+            grid.DefineColor(lineCenter ? gridZColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+
+            grid.DefineVertex(Vector3(-halfSizeScaled, 0.0, lineOffset));
+            grid.DefineColor(lineCenter ? gridXColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+            grid.DefineVertex(Vector3(halfSizeScaled, 0.0, lineOffset));
+            grid.DefineColor(lineCenter ? gridXColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+        }
+        else
+        {
+            grid.DefineVertex(Vector3(lineOffset, halfSizeScaled, 0.0));
+            grid.DefineColor(lineCenter ? gridYColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+            grid.DefineVertex(Vector3(lineOffset, -halfSizeScaled, 0.0));
+            grid.DefineColor(lineCenter ? gridYColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+
+            grid.DefineVertex(Vector3(-halfSizeScaled, lineOffset, 0.0));
+            grid.DefineColor(lineCenter ? gridXColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+            grid.DefineVertex(Vector3(halfSizeScaled, lineOffset, 0.0));
+            grid.DefineColor(lineCenter ? gridXColor : (lineSubdiv ? gridSubdivisionColor : gridColor));
+        }
+
+        lineOffset  += scale;
+    }
+    grid.Commit();
 }
 
 void CreateStatsBar()
@@ -201,6 +302,16 @@ void UpdateView(float timeStep)
             cameraNode.TranslateRelative(Vector3(cameraBaseSpeed, 0, 0) * timeStep * speedMultiplier);
             FadeUI();
         }
+        if (input.keyDown[KEY_PAGEUP])
+        {
+            cameraNode.Translate(Vector3(0, cameraBaseSpeed, 0) * timeStep * speedMultiplier);
+            FadeUI();
+        }
+        if (input.keyDown[KEY_PAGEDOWN])
+        {
+            cameraNode.Translate(Vector3(0, -cameraBaseSpeed, 0) * timeStep * speedMultiplier);
+            FadeUI();
+        }
     }
 
     // Rotate camera

+ 5 - 1
Bin/Data/UI/DefaultStyle.xml

@@ -84,7 +84,6 @@
     </element>
     <element type="LineEdit" style="BorderImage">
         <attribute name="Border" value="4 4 4 4" />
-        <attribute name="Clip Border" value="0 0 0 0" />
         <attribute name="Image Rect" value="64 0 80 16" />
         <attribute name="Hover Image Offset" value="0 16" />    <!-- Background color of the hover image IS the hover color of LineEdit -->
         <element type="Text" internal="true">
@@ -161,6 +160,11 @@
         <attribute name="Border" value="4 4 4 4" />
         <attribute name="Resize Border" value="8 8 8 8" />
     </element>
+    <element type="ListRow">
+        <attribute name="Min Size" value="0 17" />
+        <attribute name="Max Size" value="2147483647 17" />
+        <attribute name="Layout Mode" value="Horizontal" />
+    </element>
     <element type="PanelView" style="ListView">
         <element type="BorderImage" internal="true" style="none">
             <attribute name="Image Rect" value="48 16 64 32" />

+ 360 - 228
Bin/Data/UI/EditorPreferencesDialog.xml

@@ -1,11 +1,13 @@
 <element type="Window">
     <attribute name="Name" value="EditorPrefsDialog" />
-    <attribute name="Min Size" value="400 0" />
-    <attribute name="Max Size" value="400 2147483647" />
+    <attribute name="Min Size" value="440 0" />
+    <attribute name="Max Size" value="440 2147483647" />
     <attribute name="Layout Mode" value="Vertical" />
     <attribute name="Layout Spacing" value="4" />
     <attribute name="Layout Border" value="6 6 6 6" />
     <attribute name="Is Movable" value="true" />
+    <attribute name="Is Resizable" value="true" />
+    <attribute name="Resize Border" value="0 6 0 6" />
     <element>
         <attribute name="Min Size" value="0 16" />
         <attribute name="Max Size" value="2147483647 16" />
@@ -18,233 +20,363 @@
         </element>
     </element>
     <element type="BorderImage" style="EditorDivider" />
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <element type="Text">
-            <attribute name="Text" value="User interface" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="20 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Minimum opacity" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="UIMinOpacity" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="20 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Maximum opacity" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="UIMaxOpacity" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-    </element>
-    <element type="BorderImage" style="EditorDivider" />
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <element type="Text">
-            <attribute name="Text" value="Hierarchy" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="20 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Show internal UI-elements" />
-        </element>
-        <element type="CheckBox">
-            <attribute name="Name" value="ShowInternalUIElement" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="20 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Show temporary objects" />
-        </element>
-        <element type="CheckBox">
-            <attribute name="Name" value="ShowTemporaryObject" />
-        </element>
-    </element>
+    <element type="ListView" style="PanelView">
+        <attribute name="Min Size" value="0 60" />
+        <element type="BorderImage" internal="true">
+            <element internal="true">
+                <element style="ListRow">
+                    <element type="Text">
+                        <attribute name="Text" value="User interface" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Minimum opacity" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="UIMinOpacity" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Maximum opacity" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="UIMaxOpacity" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element type="BorderImage" style="EditorDivider" />
+                <element style="ListRow">
+                    <element type="Text">
+                        <attribute name="Text" value="Hierarchy" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="ShowInternalUIElement" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Show internal UI-elements" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="ShowTemporaryObject" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Show temporary objects" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Text label color" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="40 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Node item" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="NodeItemTextColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="NodeItemTextColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="NodeItemTextColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="40 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Component item" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ComponentItemTextColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ComponentItemTextColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ComponentItemTextColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element type="BorderImage" style="EditorDivider" />
+                <element style="ListRow">
+                    <element type="Text">
+                        <attribute name="Text" value="Attribute inspector" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="ShowNonEditableAttribute" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Show non-editable attributes" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Text label color" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="40 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Original attribute" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="OriginalAttributeTextColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="OriginalAttributeTextColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="OriginalAttributeTextColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="40 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Modified attribute" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ModifiedAttributeTextColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ModifiedAttributeTextColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ModifiedAttributeTextColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="40 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Non-editable attribute" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="NonEditableAttributeTextColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="NonEditableAttributeTextColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="NonEditableAttributeTextColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element type="BorderImage" style="EditorDivider" />
+                <element style="ListRow">
+                    <element type="Text">
+                        <attribute name="Text" value="View" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Ambient color" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneAmbientColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneAmbientColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneAmbientColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Fog color" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneFogColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneFogColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneFogColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Fog start" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneFogStart" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Fog end" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DefaultZoneFogEnd" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="ShowGrid" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Show grid" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="Grid2DMode" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="2D grid mode" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Grid size" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridSize" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Grid subdivisions" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridSubdivisions" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Grid scale" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridScale" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
 
-
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="20 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Text label color" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="40 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Node item" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="NodeItemTextColor.r" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="NodeItemTextColor.g" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="NodeItemTextColor.b" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="40 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Component item" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ComponentItemTextColor.r" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ComponentItemTextColor.g" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ComponentItemTextColor.b" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-    </element>
-
-
-    <element type="BorderImage" style="EditorDivider" />
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <element type="Text">
-            <attribute name="Text" value="Attribute inspector" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="20 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Show non-editable attributes" />
-        </element>
-        <element type="CheckBox">
-            <attribute name="Name" value="ShowNonEditableAttribute" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="20 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Text label color" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="40 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Original attribute" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="OriginalAttributeTextColor.r" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="OriginalAttributeTextColor.g" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="OriginalAttributeTextColor.b" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="40 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Modified attribute" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ModifiedAttributeTextColor.r" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ModifiedAttributeTextColor.g" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ModifiedAttributeTextColor.b" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Border" value="40 0 0 0" />
-        <element type="Text">
-            <attribute name="Text" value="Non-editable attribute" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="NonEditableAttributeTextColor.r" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="NonEditableAttributeTextColor.g" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="NonEditableAttributeTextColor.b" />
-            <attribute name="Min Size" value="50 0" />
-            <attribute name="Max Size" value="50 2147483647" />
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Grid color" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Border" value="20 0 0 0" />
+                    <element type="Text">
+                        <attribute name="Text" value="Grid subdivision color" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridSubdivisionColor.r" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridSubdivisionColor.g" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="GridSubdivisionColor.b" />
+                        <attribute name="Min Size" value="50 0" />
+                        <attribute name="Max Size" value="50 2147483647" />
+                    </element>
+                </element>
+            </element>
         </element>
     </element>
 </element>

+ 331 - 382
Bin/Data/UI/EditorSettingsDialog.xml

@@ -1,8 +1,10 @@
 <element type="Window">
     <attribute name="Name" value="EditorSettingsDialog" />
-    <attribute name="Min Size" value="400 0" />
-    <attribute name="Max Size" value="400 2147483647" />
+    <attribute name="Min Size" value="440 0" />
+    <attribute name="Max Size" value="440 2147483647" />
     <attribute name="Is Movable" value="true" />
+    <attribute name="Is Resizable" value="true" />
+    <attribute name="Resize Border" value="0 6 0 6" />
     <attribute name="Layout Mode" value="Vertical" />
     <attribute name="Layout Spacing" value="4" />
     <attribute name="Layout Border" value="6 6 6 6" />
@@ -18,407 +20,354 @@
         </element>
     </element>
     <element type="BorderImage" style="EditorDivider" />
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="20" />
-        <element type="Text">
-            <attribute name="Text" value="Near clip distance" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="NearClipEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="20" />
-        <element type="Text">
-            <attribute name="Text" value="Far clip distance" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="FarClipEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="20" />
-        <element type="Text">
-            <attribute name="Text" value="Field of view" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="FOVEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="20" />
-        <element type="Text">
-            <attribute name="Text" value="Movement speed" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="SpeedEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element type="BorderImage" style="EditorDivider" />
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="20" />
-        <element type="Text">
-            <attribute name="Text" value="New node distance" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="DistanceEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Node move step" />
-        </element>
-        <element type="CheckBox">
-            <attribute name="Name" value="MoveSnapToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Min Size" value="34 0" />
-            <attribute name="Max Size" value="34 2147483647" />
-            <attribute name="Text" value="Snap" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="MoveStepEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Node rotate step" />
-        </element>
-        <element type="CheckBox">
-            <attribute name="Name" value="RotateSnapToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Min Size" value="34 0" />
-            <attribute name="Max Size" value="34 2147483647" />
-            <attribute name="Text" value="Snap" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="RotateStepEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Node scale step" />
-        </element>
-        <element type="CheckBox">
-            <attribute name="Name" value="ScaleSnapToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Min Size" value="34 0" />
-            <attribute name="Max Size" value="34 2147483647" />
-            <attribute name="Text" value="Snap" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ScaleStepEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Pick components of type" />
-        </element>
-        <element type="DropDownList">
-            <attribute name="Name" value="PickModeEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-            <attribute name="Resize Popup" value="true" />
-            <!-- Skip style processing as the purpose of below tags is to populate the content element -->
-            <element type="Window" internal="true" popup="true" style="none">
-                <element type="ListView" internal="true" style="none">
-                    <element type="BorderImage" internal="true" style="none">
-                        <element internal="true" style="none">
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Geometries" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Lights" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Zones" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Rigidbodies" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="UI-elements" />
+    <element type="ListView" style="PanelView">
+        <attribute name="Min Size" value="0 60" />
+        <element type="BorderImage" internal="true">
+            <element internal="true">
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="20" />
+                    <element type="Text">
+                        <attribute name="Text" value="Near clip distance" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="NearClipEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="20" />
+                    <element type="Text">
+                        <attribute name="Text" value="Far clip distance" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="FarClipEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="20" />
+                    <element type="Text">
+                        <attribute name="Text" value="Field of view" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="FOVEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="20" />
+                    <element type="Text">
+                        <attribute name="Text" value="Movement speed" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="SpeedEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element type="BorderImage" style="EditorDivider" />
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="20" />
+                    <element type="Text">
+                        <attribute name="Text" value="New node distance" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="DistanceEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Node move step" />
+                    </element>
+                    <element type="CheckBox">
+                        <attribute name="Name" value="MoveSnapToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Min Size" value="34 0" />
+                        <attribute name="Max Size" value="34 2147483647" />
+                        <attribute name="Text" value="Snap" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="MoveStepEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Node rotate step" />
+                    </element>
+                    <element type="CheckBox">
+                        <attribute name="Name" value="RotateSnapToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Min Size" value="34 0" />
+                        <attribute name="Max Size" value="34 2147483647" />
+                        <attribute name="Text" value="Snap" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="RotateStepEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Node scale step" />
+                    </element>
+                    <element type="CheckBox">
+                        <attribute name="Name" value="ScaleSnapToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Min Size" value="34 0" />
+                        <attribute name="Max Size" value="34 2147483647" />
+                        <attribute name="Text" value="Snap" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ScaleStepEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Pick components of type" />
+                    </element>
+                    <element type="DropDownList">
+                        <attribute name="Name" value="PickModeEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                        <attribute name="Resize Popup" value="true" />
+                        <!-- Skip style processing as the purpose of below tags is to populate the content element -->
+                        <element type="Window" internal="true" popup="true" style="none">
+                            <element type="ListView" internal="true" style="none">
+                                <element type="BorderImage" internal="true" style="none">
+                                    <element internal="true" style="none">
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Geometries" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Lights" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Zones" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Rigidbodies" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="UI-elements" />
+                                        </element>
+                                    </element>
+                                </element>
                             </element>
                         </element>
                     </element>
                 </element>
-            </element>
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="AssetImporter options" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="ImportOptionsEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="CheckBox">
-            <attribute name="Name" value="ApplyMaterialListToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Text" value="Apply material list when model set" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="CheckBox">
-            <attribute name="Name" value="RememberResourcePathToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Text" value="Remember resource path" />
-        </element>
-    </element>
-    <element type="BorderImage" style="EditorDivider" />
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Texture quality" />
-        </element>
-        <element type="DropDownList">
-            <attribute name="Name" value="TextureQualityEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-            <attribute name="Resize Popup" value="true" />
-            <!-- Skip style processing as the purpose of below tags is to populate the content element -->
-            <element type="Window" internal="true" popup="true" style="none">
-                <element type="ListView" internal="true" style="none">
-                    <element type="BorderImage" internal="true" style="none">
-                        <element internal="true" style="none">
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Low" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Medium" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="High" />
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="AssetImporter options" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="ImportOptionsEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="ApplyMaterialListToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Apply material list when model set" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="RememberResourcePathToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Remember resource path" />
+                    </element>
+                </element>
+                <element type="BorderImage" style="EditorDivider" />
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Texture quality" />
+                    </element>
+                    <element type="DropDownList">
+                        <attribute name="Name" value="TextureQualityEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                        <attribute name="Resize Popup" value="true" />
+                        <!-- Skip style processing as the purpose of below tags is to populate the content element -->
+                        <element type="Window" internal="true" popup="true" style="none">
+                            <element type="ListView" internal="true" style="none">
+                                <element type="BorderImage" internal="true" style="none">
+                                    <element internal="true" style="none">
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Low" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Medium" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="High" />
+                                        </element>
+                                    </element>
+                                </element>
                             </element>
                         </element>
                     </element>
                 </element>
-            </element>
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Material quality" />
-        </element>
-        <element type="DropDownList">
-            <attribute name="Name" value="MaterialQualityEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-            <attribute name="Resize Popup" value="true" />
-            <!-- Skip style processing as the purpose of below tags is to populate the content element -->
-            <element type="Window" internal="true" popup="true" style="none">
-                <element type="ListView" internal="true" style="none">
-                    <element type="BorderImage" internal="true" style="none">
-                        <element internal="true" style="none">
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Low" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Medium" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="High" />
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Material quality" />
+                    </element>
+                    <element type="DropDownList">
+                        <attribute name="Name" value="MaterialQualityEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                        <attribute name="Resize Popup" value="true" />
+                        <!-- Skip style processing as the purpose of below tags is to populate the content element -->
+                        <element type="Window" internal="true" popup="true" style="none">
+                            <element type="ListView" internal="true" style="none">
+                                <element type="BorderImage" internal="true" style="none">
+                                    <element internal="true" style="none">
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Low" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Medium" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="High" />
+                                        </element>
+                                    </element>
+                                </element>
                             </element>
                         </element>
                     </element>
                 </element>
-            </element>
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Shadow resolution" />
-        </element>
-        <element type="DropDownList">
-            <attribute name="Name" value="ShadowResolutionEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-            <attribute name="Resize Popup" value="true" />
-            <!-- Skip style processing as the purpose of below tags is to populate the content element -->
-            <element type="Window" internal="true" popup="true" style="none">
-                <element type="ListView" internal="true" style="none">
-                    <element type="BorderImage" internal="true" style="none">
-                        <element internal="true" style="none">
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="Off" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="512x512" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="1024x1024" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="2048x2048" />
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Shadow resolution" />
+                    </element>
+                    <element type="DropDownList">
+                        <attribute name="Name" value="ShadowResolutionEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                        <attribute name="Resize Popup" value="true" />
+                        <!-- Skip style processing as the purpose of below tags is to populate the content element -->
+                        <element type="Window" internal="true" popup="true" style="none">
+                            <element type="ListView" internal="true" style="none">
+                                <element type="BorderImage" internal="true" style="none">
+                                    <element internal="true" style="none">
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="Off" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="512x512" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="1024x1024" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="2048x2048" />
+                                        </element>
+                                    </element>
+                                </element>
                             </element>
                         </element>
                     </element>
                 </element>
-            </element>
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="Text">
-            <attribute name="Text" value="Shadow quality" />
-        </element>
-        <element type="DropDownList">
-            <attribute name="Name" value="ShadowQualityEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-            <attribute name="Resize Popup" value="true" />
-            <!-- Skip style processing as the purpose of below tags is to populate the content element -->
-            <element type="Window" internal="true" popup="true" style="none">
-                <element type="ListView" internal="true" style="none">
-                    <element type="BorderImage" internal="true" style="none">
-                        <element internal="true" style="none">
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="1-tap 16bit" />
-                            </element>
-                            <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="1-tap 24bit" />
-                            </element>
-                           <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="4-tap 16bit" />
-                            </element>
-                           <element type="Text" style="FileSelectorFilterText">
-                                <attribute name="Text" value="4-tap 24bit" />
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="Text">
+                        <attribute name="Text" value="Shadow quality" />
+                    </element>
+                    <element type="DropDownList">
+                        <attribute name="Name" value="ShadowQualityEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                        <attribute name="Resize Popup" value="true" />
+                        <!-- Skip style processing as the purpose of below tags is to populate the content element -->
+                        <element type="Window" internal="true" popup="true" style="none">
+                            <element type="ListView" internal="true" style="none">
+                                <element type="BorderImage" internal="true" style="none">
+                                    <element internal="true" style="none">
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="1-tap 16bit" />
+                                        </element>
+                                        <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="1-tap 24bit" />
+                                        </element>
+                                       <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="4-tap 16bit" />
+                                        </element>
+                                       <element type="Text" style="FileSelectorFilterText">
+                                            <attribute name="Text" value="4-tap 24bit" />
+                                        </element>
+                                    </element>
+                                </element>
                             </element>
                         </element>
                     </element>
                 </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="20" />
+                    <element type="Text">
+                        <attribute name="Text" value="Max occluder triangles" />
+                    </element>
+                    <element type="LineEdit">
+                        <attribute name="Name" value="MaxOccluderTrianglesEdit" />
+                        <attribute name="Min Size" value="100 0" />
+                        <attribute name="Max Size" value="100 2147483647" />
+                     </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="SpecularLightingToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Specular lighting" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="DynamicInstancingToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Dynamic instancing" />
+                    </element>
+                </element>
+                <element style="ListRow">
+                    <attribute name="Layout Spacing" value="8" />
+                    <element type="CheckBox">
+                        <attribute name="Name" value="FrameLimiterToggle" />
+                    </element>
+                    <element type="Text">
+                        <attribute name="Text" value="Frame limiter" />
+                    </element>
+                </element>
             </element>
         </element>
     </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="20" />
-        <element type="Text">
-            <attribute name="Text" value="Max occluder triangles" />
-        </element>
-        <element type="LineEdit">
-            <attribute name="Name" value="MaxOccluderTrianglesEdit" />
-            <attribute name="Min Size" value="100 0" />
-            <attribute name="Max Size" value="100 2147483647" />
-         </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="CheckBox">
-            <attribute name="Name" value="SpecularLightingToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Text" value="Specular lighting" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="CheckBox">
-            <attribute name="Name" value="DynamicInstancingToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Text" value="Dynamic instancing" />
-        </element>
-    </element>
-    <element>
-        <attribute name="Min Size" value="0 17" />
-        <attribute name="Max Size" value="2147483647 17" />
-        <attribute name="Layout Mode" value="Horizontal" />
-        <attribute name="Layout Spacing" value="8" />
-        <element type="CheckBox">
-            <attribute name="Name" value="FrameLimiterToggle" />
-        </element>
-        <element type="Text">
-            <attribute name="Text" value="Frame limiter" />
-        </element>
-    </element>
 </element>

+ 1 - 1
Source/Engine/Script/MathAPI.cpp

@@ -57,7 +57,7 @@ static void RegisterMathFunctions(asIScriptEngine* engine)
     engine->RegisterGlobalFunction("float Atan2(float, float)", asFUNCTION(Atan2), asCALL_CDECL);
     engine->RegisterGlobalFunction("float Abs(float)", asFUNCTIONPR(Abs, (float), float), asCALL_CDECL);
     engine->RegisterGlobalFunction("float Sqrt(float)", asFUNCTION(sqrtf), asCALL_CDECL);
-    engine->RegisterGlobalFunction("float Pow(float)", asFUNCTION(powf), asCALL_CDECL);
+    engine->RegisterGlobalFunction("float Pow(float, float)", asFUNCTION(powf), asCALL_CDECL);
     engine->RegisterGlobalFunction("float Min(float, float)", asFUNCTIONPR(Min, (float, float), float), asCALL_CDECL);
     engine->RegisterGlobalFunction("int Min(int, int)", asFUNCTIONPR(Min, (int, int), int), asCALL_CDECL);
     engine->RegisterGlobalFunction("float Max(float, float)", asFUNCTIONPR(Max, (float, float), float), asCALL_CDECL);