diff --git a/Engine/source/gui/containers/guiFlexibleArrayCtrl.cpp b/Engine/source/gui/containers/guiFlexibleArrayCtrl.cpp deleted file mode 100644 index befcd3610..000000000 --- a/Engine/source/gui/containers/guiFlexibleArrayCtrl.cpp +++ /dev/null @@ -1,184 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (c) 2012 Daniel Buckmaster -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -// IN THE SOFTWARE. -//----------------------------------------------------------------------------- - -#include "console/engineAPI.h" -#include "platform/platform.h" -#include "gui/containers/guiFlexibleArrayCtrl.h" -#include "platform/types.h" - -GuiFlexibleArrayControl::GuiFlexibleArrayControl() -{ - mRows = 0; - mRowSpacing = 0; - mColSpacing = 0; - mIsContainer = true; - - mResizing = false; - - mFrozen = false; - - mPadding.set(0, 0, 0, 0); -} - -GuiFlexibleArrayControl::~GuiFlexibleArrayControl() -{ -} - -IMPLEMENT_CONOBJECT(GuiFlexibleArrayControl); - -ConsoleDocClass( GuiFlexibleArrayControl, - "@brief A container that arranges children into a grid.\n\n" - - "This container maintains a 2D grid of GUI controls. If one is added, deleted, " - "or resized, then the grid is updated. The insertion order into the grid is " - "determined by the internal order of the children (ie. the order of addition).
" - - "Children are added to the grid by row or column until they fill the assocated " - "GuiFlexibleArrayControl extent (width or height). For example, a " - "GuiFlexibleArrayControl with 10 children, and fillRowFirst set to " - "true may be arranged as follows:\n\n" - - "
\n"
-   "1  2  ...3...  4\n"
-   "..5..  6  7  .8.\n"
-   "9 ....10....\n"
-   "
\n" - - "@tsexample\n" - "new GuiFlexibleArrayControl()\n" - "{\n" - " colSpacing = \"2\";\n" - " rowSpacing = \"2\";\n" - " frozen = \"0\";\n" - " padding = \"0 0 0 0\";\n" - " //Properties not specific to this control have been omitted from this example.\n" - "};\n" - "@endtsexample\n\n" - - "@see GuiDynamicCtrlArrayControl\n" - "@ingroup GuiContainers" -); - -// ConsoleObject... - -void GuiFlexibleArrayControl::initPersistFields() -{ - addField("rowCount", TypeS32, Offset( mRows, GuiFlexibleArrayControl), - "Number of rows the child controls have been arranged into. This value " - "is calculated automatically when children are added, removed or resized; " - "writing it directly has no effect."); - - addField("rowSpacing", TypeS32, Offset(mRowSpacing, GuiFlexibleArrayControl), - "Spacing between rows"); - - addField("colSpacing", TypeS32, Offset(mColSpacing, GuiFlexibleArrayControl), - "Spacing between columns"); - - addField("frozen", TypeBool, Offset(mFrozen, GuiFlexibleArrayControl), - "When true, the array will not update when new children are added or in " - "response to child resize events. This is useful to prevent unnecessary " - "resizing when adding, removing or resizing a number of child controls."); - - addField("padding", TypeRectSpacingI, Offset(mPadding, GuiFlexibleArrayControl), - "Padding around the top, bottom, left, and right of this control. This " - "reduces the area available for child controls."); - - Parent::initPersistFields(); -} - -void GuiFlexibleArrayControl::inspectPostApply() -{ - resize(getPosition(), getExtent()); - Parent::inspectPostApply(); -} - -void GuiFlexibleArrayControl::addObject(SimObject *obj) -{ - Parent::addObject(obj); - - if(!mFrozen) - refresh(); -} - -bool GuiFlexibleArrayControl::resize(const Point2I &newPosition, const Point2I &newExtent) -{ - if(size() == 0) - return Parent::resize(newPosition, newExtent); - - if(mResizing) - return false; - - mResizing = true; - - // Place each child. - S32 childcount = 0; - Point2I pos(mPadding.left, mPadding.top); - mRows = 0; - S32 rowHeight = 0; - for(S32 i = 0; i < size(); i++) - { - GuiControl *gc = dynamic_cast(operator [](i)); - if(gc && gc->isVisible()) - { - if(pos.x + gc->getWidth() > getExtent().x - mPadding.right) - { - pos.y += rowHeight + mRowSpacing; - pos.x = mPadding.left; - rowHeight = 0; - mRows++; - } - gc->setPosition(pos); - - rowHeight = getMax(rowHeight, gc->getHeight()); - - pos.x += mColSpacing + gc->getWidth(); - childcount++; - } - } - - Point2I realExtent(newExtent); - realExtent.y = pos.y + rowHeight; - realExtent.y += mPadding.bottom; - - mResizing = false; - - return Parent::resize(newPosition, realExtent); -} - -void GuiFlexibleArrayControl::childResized(GuiControl *child) -{ - Parent::childResized(child); - - if ( !mFrozen ) - refresh(); -} - -void GuiFlexibleArrayControl::refresh() -{ - resize(getPosition(), getExtent()); -} - -DefineEngineMethod( GuiFlexibleArrayControl, refresh, void, (),, - "Recalculates the position and size of this control and all its children." ) -{ - object->refresh(); -} \ No newline at end of file diff --git a/Engine/source/gui/containers/guiFlexibleArrayCtrl.h b/Engine/source/gui/containers/guiFlexibleArrayCtrl.h deleted file mode 100644 index 1bf068f48..000000000 --- a/Engine/source/gui/containers/guiFlexibleArrayCtrl.h +++ /dev/null @@ -1,67 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (c) 2012 Daniel Buckmaster -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -// IN THE SOFTWARE. -//----------------------------------------------------------------------------- - -#ifndef _GUIFLEXIBLEARRAYCTRL_H_ -#define _GUIFLEXIBLEARRAYCTRL_H_ - -#include "gui/core/guiControl.h" - -class GuiFlexibleArrayControl : public GuiControl -{ - typedef GuiControl Parent; - -public: - - GuiFlexibleArrayControl(); - virtual ~GuiFlexibleArrayControl(); - - DECLARE_CONOBJECT(GuiFlexibleArrayControl); - DECLARE_CATEGORY( "Gui Containers" ); - - // ConsoleObject - static void initPersistFields(); - - // SimObject - void inspectPostApply(); - - // SimSet - void addObject(SimObject *obj); - - // GuiControl - bool resize(const Point2I &newPosition, const Point2I &newExtent); - void childResized(GuiControl *child); - - // GuiFlexibleArrayCtrl - void refresh(); - -protected: - - S32 mRows; - S32 mRowSpacing; - S32 mColSpacing; - bool mResizing; - bool mFrozen; - - RectSpacingI mPadding; -}; - -#endif // _GUIFLEXIBLEARRAYCTRL_H_ \ No newline at end of file diff --git a/Templates/Empty/game/tools/navEditor/NavEditorGui.gui b/Templates/Empty/game/tools/navEditor/NavEditorGui.gui index da2d32e40..de78d5ee7 100644 --- a/Templates/Empty/game/tools/navEditor/NavEditorGui.gui +++ b/Templates/Empty/game/tools/navEditor/NavEditorGui.gui @@ -199,10 +199,8 @@ Extent = "86 18"; text = "Actions"; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "SelectActions"; position = "7 21"; extent = "190 64"; @@ -216,40 +214,47 @@ text = "Build NavMesh"; command = "NavEditorGui.buildSelectedMeshes();"; }; - new GuiCheckboxCtrl() { - internalName = "BackgroundBuildButton"; - text = "Background"; - groupNum = "-1"; - buttonType = "ToggleButton"; - useMouseEvents = "0"; - extent = "75 20"; - minExtent = "8 2"; - profile = "GuiCheckBoxProfile"; - visible = "1"; - active = "1"; - variable = "$Nav::Editor::backgroundBuild"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiCheckboxCtrl() { - internalName = "SaveIntermediatesButton"; - text = "Keep intermediates"; - groupNum = "-1"; - buttonType = "ToggleButton"; - useMouseEvents = "0"; - extent = "105 20"; - profile = "GuiCheckBoxProfile"; - visible = "1"; - active = "1"; - variable = "$Nav::Editor::saveIntermediates"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; + new GuiControl() { + profile = "GuiDefaultProfile"; + Extent = "182 20"; + position = "0 20"; + + new GuiCheckboxCtrl() { + internalName = "BackgroundBuildButton"; + text = "Background"; + groupNum = "-1"; + buttonType = "ToggleButton"; + useMouseEvents = "0"; + extent = "75 20"; + minExtent = "8 2"; + profile = "GuiCheckBoxProfile"; + visible = "1"; + active = "1"; + variable = "NavEditorGui.backgroundBuild"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiCheckboxCtrl() { + position = "75 0"; + internalName = "SaveIntermediatesButton"; + text = "Keep intermediates"; + groupNum = "-1"; + buttonType = "ToggleButton"; + useMouseEvents = "0"; + extent = "105 20"; + profile = "GuiCheckBoxProfile"; + visible = "1"; + active = "1"; + variable = "NavEditorGui.saveIntermediates"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; }; new GuiCheckboxCtrl() { internalName = "BuildSoundButton"; @@ -262,7 +267,7 @@ profile = "GuiCheckBoxProfile"; visible = "1"; active = "1"; - variable = "$Nav::Editor::playSoundWhenDone"; + variable = "NavEditorGui.playSoundWhenDone"; tooltipProfile = "GuiToolTipProfile"; hovertime = "1000"; isContainer = "0"; @@ -270,10 +275,8 @@ canSaveDynamicFields = "0"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "LinkActions"; position = "7 21"; extent = "190 64"; @@ -288,10 +291,8 @@ command = "NavEditorGui.buildLinks();"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "CoverActions"; position = "7 21"; extent = "190 64"; @@ -315,10 +316,8 @@ command = "NavEditorGui.deleteCoverPoints();"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "TileActions"; position = "7 21"; extent = "190 64"; @@ -333,10 +332,8 @@ command = "NavEditorGui.buildTile();"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "TestActions"; position = "7 21"; extent = "190 64"; @@ -350,41 +347,53 @@ text = "Spawn"; command = "NavEditorGui.spawnPlayer();"; }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Delete"; - command = "NavEditorGui.getPlayer().delete();"; + new GuiControl() { + profile = "GuiDefaultProfile"; + Extent = "190 18"; + + new GuiButtonCtrl() { + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Delete"; + command = "NavEditorGui.getPlayer().delete();"; + }; + new GuiButtonCtrl() { + position = "100 0"; + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Find cover"; + command = "NavEditorGui.findCover();"; + }; }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Find cover"; - command = "NavEditorGui.findCover();"; - }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Follow"; - command = "NavEditorGui.followObject();"; - }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Stop"; - command = "NavEditorGui.getPlayer().stop();"; + new GuiControl() { + profile = "GuiDefaultProfile"; + Extent = "190 18"; + + new GuiButtonCtrl() { + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Follow"; + command = "NavEditorGui.followObject();"; + }; + new GuiButtonCtrl() { + position = "100 0"; + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Stop"; + command = "NavEditorGui.getPlayer().stop();"; + }; }; }; }; @@ -460,17 +469,15 @@ dividerMargin = "5"; }; - new GuiFlexibleArrayControl() { - colSpacing = 2; - rowSpacing = 2; + new GuiStackControl() { internalName = "LinkProperties"; position = "7 21"; extent = "186 64"; padding = "2 2 2 2"; new GuiCheckBoxCtrl() { - internalName = "LinkWalkFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkWalkFlag"; + class = "NavMeshLinkFlagButton"; text = " Walk"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -482,15 +489,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "This link is just ordinary flat ground."; + toolTip = "This link is just ordinary flat ground."; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkJumpFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkJumpFlag"; + class = "NavMeshLinkFlagButton"; text = " Jump"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -502,15 +509,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Does this link require a jump?"; + toolTip = "Does this link require a jump?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkDropFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkDropFlag"; + class = "NavMeshLinkFlagButton"; text = " Drop"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -522,15 +529,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Does this link involve a significant drop?"; + toolTip = "Does this link involve a significant drop?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkLedgeFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkLedgeFlag"; + class = "NavMeshLinkFlagButton"; text = " Ledge"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -542,15 +549,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Should the character jump at the next ledge?"; + toolTip = "Should the character jump at the next ledge?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkClimbFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkClimbFlag"; + class = "NavMeshLinkFlagButton"; text = " Climb"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -562,15 +569,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Does this link involve climbing?"; + toolTip = "Does this link involve climbing?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkTeleportFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkTeleportFlag"; + class = "NavMeshLinkFlagButton"; text = " Teleport"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -582,16 +589,14 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Is this link a teleporter?"; + toolTip = "Is this link a teleporter?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; }; - new GuiFlexibleArrayControl() { - colSpacing = 2; - rowSpacing = 2; + new GuiStackControl() { internalName = "TileProperties"; position = "7 21"; extent = "186 64"; @@ -613,7 +618,7 @@ isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; - variable = "$Nav::Editor::renderInput"; + variable = "$Nav::Editor::renderInput"; }; new GuiCheckBoxCtrl() { text = " Display voxels"; @@ -631,24 +636,22 @@ isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; - variable = "$Nav::Editor::renderVoxels"; + variable = "$Nav::Editor::renderVoxels"; }; }; - new GuiFlexibleArrayControl() { - colSpacing = 2; - rowSpacing = 2; + new GuiStackControl() { internalName = "TestProperties"; position = "7 21"; extent = "186 64"; padding = "2 2 2 2"; new GuiTextCtrl() { - text = "Cover"; + text = "Cover"; profile = "GuiTextProfile"; extent = "180 20"; minExtent = "8 2"; visible = "1"; - }; + }; new GuiTextEditCtrl() { internalName = "CoverRadius"; text = "10"; @@ -657,9 +660,9 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Radius for cover-finding."; + toolTip = "Radius for cover-finding."; }; - new GuiTextEditCtrl() { + new GuiTextEditCtrl() { internalName = "CoverPosition"; text = "LocalClientConnection.getControlObject().getPosition();"; profile = "GuiTextEditProfile"; @@ -667,15 +670,15 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Position to find cover from."; - }; - new GuiTextCtrl() { - text = "Follow"; + toolTip = "Position to find cover from."; + }; + new GuiTextCtrl() { + text = "Follow"; profile = "GuiTextProfile"; extent = "180 20"; minExtent = "8 2"; visible = "1"; - }; + }; new GuiTextEditCtrl() { internalName = "FollowRadius"; text = "1"; @@ -684,9 +687,9 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Radius for following."; + toolTip = "Radius for following."; }; - new GuiTextEditCtrl() { + new GuiTextEditCtrl() { internalName = "FollowObject"; text = "LocalClientConnection.player"; profile = "GuiTextEditProfile"; @@ -694,18 +697,18 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Object to follow."; - }; - new GuiTextCtrl() { - text = "Movement"; + toolTip = "Object to follow."; + }; + new GuiTextCtrl() { + text = "Movement"; profile = "GuiTextProfile"; extent = "180 20"; minExtent = "8 2"; visible = "1"; - }; + }; new GuiCheckBoxCtrl() { - internalName = "LinkWalkFlag"; - class = "NavMeshTestFlagButton"; + internalName = "LinkWalkFlag"; + class = "NavMeshTestFlagButton"; text = " Walk"; buttonType = "ToggleButton"; useMouseEvents = "0"; diff --git a/Templates/Full/game/tools/navEditor/NavEditorGui.gui b/Templates/Full/game/tools/navEditor/NavEditorGui.gui index da2d32e40..de78d5ee7 100644 --- a/Templates/Full/game/tools/navEditor/NavEditorGui.gui +++ b/Templates/Full/game/tools/navEditor/NavEditorGui.gui @@ -199,10 +199,8 @@ Extent = "86 18"; text = "Actions"; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "SelectActions"; position = "7 21"; extent = "190 64"; @@ -216,40 +214,47 @@ text = "Build NavMesh"; command = "NavEditorGui.buildSelectedMeshes();"; }; - new GuiCheckboxCtrl() { - internalName = "BackgroundBuildButton"; - text = "Background"; - groupNum = "-1"; - buttonType = "ToggleButton"; - useMouseEvents = "0"; - extent = "75 20"; - minExtent = "8 2"; - profile = "GuiCheckBoxProfile"; - visible = "1"; - active = "1"; - variable = "$Nav::Editor::backgroundBuild"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiCheckboxCtrl() { - internalName = "SaveIntermediatesButton"; - text = "Keep intermediates"; - groupNum = "-1"; - buttonType = "ToggleButton"; - useMouseEvents = "0"; - extent = "105 20"; - profile = "GuiCheckBoxProfile"; - visible = "1"; - active = "1"; - variable = "$Nav::Editor::saveIntermediates"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; + new GuiControl() { + profile = "GuiDefaultProfile"; + Extent = "182 20"; + position = "0 20"; + + new GuiCheckboxCtrl() { + internalName = "BackgroundBuildButton"; + text = "Background"; + groupNum = "-1"; + buttonType = "ToggleButton"; + useMouseEvents = "0"; + extent = "75 20"; + minExtent = "8 2"; + profile = "GuiCheckBoxProfile"; + visible = "1"; + active = "1"; + variable = "NavEditorGui.backgroundBuild"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + new GuiCheckboxCtrl() { + position = "75 0"; + internalName = "SaveIntermediatesButton"; + text = "Keep intermediates"; + groupNum = "-1"; + buttonType = "ToggleButton"; + useMouseEvents = "0"; + extent = "105 20"; + profile = "GuiCheckBoxProfile"; + visible = "1"; + active = "1"; + variable = "NavEditorGui.saveIntermediates"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; }; new GuiCheckboxCtrl() { internalName = "BuildSoundButton"; @@ -262,7 +267,7 @@ profile = "GuiCheckBoxProfile"; visible = "1"; active = "1"; - variable = "$Nav::Editor::playSoundWhenDone"; + variable = "NavEditorGui.playSoundWhenDone"; tooltipProfile = "GuiToolTipProfile"; hovertime = "1000"; isContainer = "0"; @@ -270,10 +275,8 @@ canSaveDynamicFields = "0"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "LinkActions"; position = "7 21"; extent = "190 64"; @@ -288,10 +291,8 @@ command = "NavEditorGui.buildLinks();"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "CoverActions"; position = "7 21"; extent = "190 64"; @@ -315,10 +316,8 @@ command = "NavEditorGui.deleteCoverPoints();"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "TileActions"; position = "7 21"; extent = "190 64"; @@ -333,10 +332,8 @@ command = "NavEditorGui.buildTile();"; }; }; - new GuiFlexibleArrayControl() + new GuiStackControl() { - colSpacing = 2; - rowSpacing = 2; internalName = "TestActions"; position = "7 21"; extent = "190 64"; @@ -350,41 +347,53 @@ text = "Spawn"; command = "NavEditorGui.spawnPlayer();"; }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Delete"; - command = "NavEditorGui.getPlayer().delete();"; + new GuiControl() { + profile = "GuiDefaultProfile"; + Extent = "190 18"; + + new GuiButtonCtrl() { + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Delete"; + command = "NavEditorGui.getPlayer().delete();"; + }; + new GuiButtonCtrl() { + position = "100 0"; + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Find cover"; + command = "NavEditorGui.findCover();"; + }; }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Find cover"; - command = "NavEditorGui.findCover();"; - }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Follow"; - command = "NavEditorGui.followObject();"; - }; - new GuiButtonCtrl() { - Profile = "GuiButtonProfile"; - buttonType = "PushButton"; - HorizSizing = "right"; - VertSizing = "bottom"; - Extent = "90 18"; - text = "Stop"; - command = "NavEditorGui.getPlayer().stop();"; + new GuiControl() { + profile = "GuiDefaultProfile"; + Extent = "190 18"; + + new GuiButtonCtrl() { + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Follow"; + command = "NavEditorGui.followObject();"; + }; + new GuiButtonCtrl() { + position = "100 0"; + Profile = "GuiButtonProfile"; + buttonType = "PushButton"; + HorizSizing = "right"; + VertSizing = "bottom"; + Extent = "90 18"; + text = "Stop"; + command = "NavEditorGui.getPlayer().stop();"; + }; }; }; }; @@ -460,17 +469,15 @@ dividerMargin = "5"; }; - new GuiFlexibleArrayControl() { - colSpacing = 2; - rowSpacing = 2; + new GuiStackControl() { internalName = "LinkProperties"; position = "7 21"; extent = "186 64"; padding = "2 2 2 2"; new GuiCheckBoxCtrl() { - internalName = "LinkWalkFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkWalkFlag"; + class = "NavMeshLinkFlagButton"; text = " Walk"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -482,15 +489,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "This link is just ordinary flat ground."; + toolTip = "This link is just ordinary flat ground."; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkJumpFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkJumpFlag"; + class = "NavMeshLinkFlagButton"; text = " Jump"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -502,15 +509,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Does this link require a jump?"; + toolTip = "Does this link require a jump?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkDropFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkDropFlag"; + class = "NavMeshLinkFlagButton"; text = " Drop"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -522,15 +529,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Does this link involve a significant drop?"; + toolTip = "Does this link involve a significant drop?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkLedgeFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkLedgeFlag"; + class = "NavMeshLinkFlagButton"; text = " Ledge"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -542,15 +549,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Should the character jump at the next ledge?"; + toolTip = "Should the character jump at the next ledge?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkClimbFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkClimbFlag"; + class = "NavMeshLinkFlagButton"; text = " Climb"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -562,15 +569,15 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Does this link involve climbing?"; + toolTip = "Does this link involve climbing?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { - internalName = "LinkTeleportFlag"; - class = "NavMeshLinkFlagButton"; + internalName = "LinkTeleportFlag"; + class = "NavMeshLinkFlagButton"; text = " Teleport"; buttonType = "ToggleButton"; useMouseEvents = "0"; @@ -582,16 +589,14 @@ visible = "1"; active = "0"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Is this link a teleporter?"; + toolTip = "Is this link a teleporter?"; hovertime = "1000"; isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; }; }; - new GuiFlexibleArrayControl() { - colSpacing = 2; - rowSpacing = 2; + new GuiStackControl() { internalName = "TileProperties"; position = "7 21"; extent = "186 64"; @@ -613,7 +618,7 @@ isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; - variable = "$Nav::Editor::renderInput"; + variable = "$Nav::Editor::renderInput"; }; new GuiCheckBoxCtrl() { text = " Display voxels"; @@ -631,24 +636,22 @@ isContainer = "0"; canSave = "1"; canSaveDynamicFields = "0"; - variable = "$Nav::Editor::renderVoxels"; + variable = "$Nav::Editor::renderVoxels"; }; }; - new GuiFlexibleArrayControl() { - colSpacing = 2; - rowSpacing = 2; + new GuiStackControl() { internalName = "TestProperties"; position = "7 21"; extent = "186 64"; padding = "2 2 2 2"; new GuiTextCtrl() { - text = "Cover"; + text = "Cover"; profile = "GuiTextProfile"; extent = "180 20"; minExtent = "8 2"; visible = "1"; - }; + }; new GuiTextEditCtrl() { internalName = "CoverRadius"; text = "10"; @@ -657,9 +660,9 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Radius for cover-finding."; + toolTip = "Radius for cover-finding."; }; - new GuiTextEditCtrl() { + new GuiTextEditCtrl() { internalName = "CoverPosition"; text = "LocalClientConnection.getControlObject().getPosition();"; profile = "GuiTextEditProfile"; @@ -667,15 +670,15 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Position to find cover from."; - }; - new GuiTextCtrl() { - text = "Follow"; + toolTip = "Position to find cover from."; + }; + new GuiTextCtrl() { + text = "Follow"; profile = "GuiTextProfile"; extent = "180 20"; minExtent = "8 2"; visible = "1"; - }; + }; new GuiTextEditCtrl() { internalName = "FollowRadius"; text = "1"; @@ -684,9 +687,9 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Radius for following."; + toolTip = "Radius for following."; }; - new GuiTextEditCtrl() { + new GuiTextEditCtrl() { internalName = "FollowObject"; text = "LocalClientConnection.player"; profile = "GuiTextEditProfile"; @@ -694,18 +697,18 @@ minExtent = "8 2"; visible = "1"; tooltipProfile = "GuiToolTipProfile"; - toolTip = "Object to follow."; - }; - new GuiTextCtrl() { - text = "Movement"; + toolTip = "Object to follow."; + }; + new GuiTextCtrl() { + text = "Movement"; profile = "GuiTextProfile"; extent = "180 20"; minExtent = "8 2"; visible = "1"; - }; + }; new GuiCheckBoxCtrl() { - internalName = "LinkWalkFlag"; - class = "NavMeshTestFlagButton"; + internalName = "LinkWalkFlag"; + class = "NavMeshTestFlagButton"; text = " Walk"; buttonType = "ToggleButton"; useMouseEvents = "0";