mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-13 07:34:45 +00:00
adds a useGroupCenter var/button to allow folks to use non-itterative snapping, and defaults it to do so (maintains prior functionality envelope)
This commit is contained in:
parent
7d2315c781
commit
ebdd441833
4 changed files with 33 additions and 5 deletions
|
|
@ -1805,7 +1805,7 @@ WorldEditor::WorldEditor()
|
||||||
mSoftSnapDebugPoint.set(0.0f, 0.0f, 0.0f);
|
mSoftSnapDebugPoint.set(0.0f, 0.0f, 0.0f);
|
||||||
|
|
||||||
mGridSnap = false;
|
mGridSnap = false;
|
||||||
|
mUseGroupCenter = true;
|
||||||
mFadeIcons = true;
|
mFadeIcons = true;
|
||||||
mFadeIconsDist = 8.f;
|
mFadeIconsDist = 8.f;
|
||||||
}
|
}
|
||||||
|
|
@ -2254,7 +2254,7 @@ void WorldEditor::on3DMouseDragged(const Gui3DMouseEvent & event)
|
||||||
mGizmo->getProfile()->snapToGrid = snapToGrid;
|
mGizmo->getProfile()->snapToGrid = snapToGrid;
|
||||||
}
|
}
|
||||||
|
|
||||||
mSelected->offset(mGizmo->getOffset(), mGridSnap ? mGridPlaneSize : 0.f);
|
mSelected->offset(mGizmo->getOffset(), (!mUseGroupCenter && mGridSnap) ? mGridPlaneSize : 0.f);
|
||||||
|
|
||||||
// Handle various sticking
|
// Handle various sticking
|
||||||
terrainSnapSelection( mSelected, event.modifier, mGizmo->getPosition() );
|
terrainSnapSelection( mSelected, event.modifier, mGizmo->getPosition() );
|
||||||
|
|
@ -2686,7 +2686,8 @@ void WorldEditor::initPersistFields()
|
||||||
addGroup( "Grid" );
|
addGroup( "Grid" );
|
||||||
|
|
||||||
addField( "gridSnap", TypeBool, Offset( mGridSnap, WorldEditor ),
|
addField( "gridSnap", TypeBool, Offset( mGridSnap, WorldEditor ),
|
||||||
"If true, transform operations will snap to the grid." );
|
"If true, transform operations will snap to the grid.");
|
||||||
|
addField("useGroupCenter", TypeBool, Offset(mUseGroupCenter, WorldEditor));
|
||||||
|
|
||||||
endGroup( "Grid" );
|
endGroup( "Grid" );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -349,6 +349,7 @@ class WorldEditor : public EditTSCtrl
|
||||||
F32 mDropAtScreenCenterMax;
|
F32 mDropAtScreenCenterMax;
|
||||||
|
|
||||||
bool mGridSnap;
|
bool mGridSnap;
|
||||||
|
bool mUseGroupCenter;
|
||||||
bool mStickToGround;
|
bool mStickToGround;
|
||||||
bool mStuckToGround; ///< Selection is stuck to the ground
|
bool mStuckToGround; ///< Selection is stuck to the ground
|
||||||
AlignmentType mTerrainSnapAlignment; ///< How does the stickied object align to the terrain
|
AlignmentType mTerrainSnapAlignment; ///< How does the stickied object align to the terrain
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
canMinimize = "0";
|
canMinimize = "0";
|
||||||
canMaximize = "0";
|
canMaximize = "0";
|
||||||
position = "400 31";
|
position = "400 31";
|
||||||
extent =" 175 257";
|
extent =" 175 267";
|
||||||
MinExtent = "175 130";
|
MinExtent = "175 130";
|
||||||
text = "Snap Options";
|
text = "Snap Options";
|
||||||
closeCommand = "ESnapOptions.hideDialog();";
|
closeCommand = "ESnapOptions.hideDialog();";
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
Visible = "1";
|
Visible = "1";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
Docking = "Client";
|
Docking = "Client";
|
||||||
Margin = "3 22 3 3";
|
Margin = "3 32 3 3";
|
||||||
Padding = "0 0 0 0";
|
Padding = "0 0 0 0";
|
||||||
AnchorTop = "1";
|
AnchorTop = "1";
|
||||||
AnchorBottom = "0";
|
AnchorBottom = "0";
|
||||||
|
|
@ -793,6 +793,25 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
|
new GuiCheckBoxCtrl() {
|
||||||
|
text = "Use Group Center";
|
||||||
|
groupNum = "1";
|
||||||
|
useMouseEvents = "0";
|
||||||
|
isContainer = "0";
|
||||||
|
horizSizing = "right";
|
||||||
|
vertSizing = "top";
|
||||||
|
position = "4 246";
|
||||||
|
extent = "105 24";
|
||||||
|
minExtent = "8 8";
|
||||||
|
visible = "1";
|
||||||
|
active = "1";
|
||||||
|
command = "toggleSnappingOptions(\"byGroup\");";
|
||||||
|
tooltipProfile = "ToolsGuiToolTipProfile";
|
||||||
|
hovertime = "1000";
|
||||||
|
internalName = "GroupSnapButton";
|
||||||
|
canSave = "1";
|
||||||
|
canSaveDynamicFields = "0";
|
||||||
|
};
|
||||||
new GuiTextCtrl() {
|
new GuiTextCtrl() {
|
||||||
text = "Size";
|
text = "Size";
|
||||||
maxLength = "1024";
|
maxLength = "1024";
|
||||||
|
|
|
||||||
|
|
@ -2056,6 +2056,7 @@ function EWorldEditor::syncGui( %this )
|
||||||
ESnapOptions-->GridSize.setText( EWorldEditor.getGridSize() );
|
ESnapOptions-->GridSize.setText( EWorldEditor.getGridSize() );
|
||||||
|
|
||||||
ESnapOptions-->GridSnapButton.setStateOn( %this.getGridSnap() );
|
ESnapOptions-->GridSnapButton.setStateOn( %this.getGridSnap() );
|
||||||
|
ESnapOptions-->GroupSnapButton.setStateOn( %this.UseGroupCenter );
|
||||||
SnapToBar-->objectGridSnapBtn.setStateOn( %this.getGridSnap() );
|
SnapToBar-->objectGridSnapBtn.setStateOn( %this.getGridSnap() );
|
||||||
ESnapOptions-->NoSnapButton.setStateOn( !%this.stickToGround && !%this.getSoftSnap() && !%this.getGridSnap() );
|
ESnapOptions-->NoSnapButton.setStateOn( !%this.stickToGround && !%this.getSoftSnap() && !%this.getGridSnap() );
|
||||||
}
|
}
|
||||||
|
|
@ -2458,6 +2459,12 @@ function toggleSnappingOptions( %var )
|
||||||
{
|
{
|
||||||
EWorldEditor.setGridSnap( !EWorldEditor.getGridSnap() );
|
EWorldEditor.setGridSnap( !EWorldEditor.getGridSnap() );
|
||||||
}
|
}
|
||||||
|
else if( %var $= "byGroup" )
|
||||||
|
{
|
||||||
|
EWorldEditor.UseGroupCenter = !EWorldEditor.UseGroupCenter;
|
||||||
|
ESnapOptions->GroupSnapButton.setStateOn(EWorldEditor.UseGroupCenter);
|
||||||
|
error(EWorldEditor.UseGroupCenter);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// No snapping.
|
// No snapping.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue