mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-03-26 23:59:30 +00:00
sets snap to grid to itterate through selected objects and settle them into the nearest (seected value), ie 1, 2.5, 3.33 ect.
This commit is contained in:
parent
5c8a82180b
commit
7d2315c781
3 changed files with 21 additions and 4 deletions
|
|
@ -2254,7 +2254,7 @@ void WorldEditor::on3DMouseDragged(const Gui3DMouseEvent & event)
|
|||
mGizmo->getProfile()->snapToGrid = snapToGrid;
|
||||
}
|
||||
|
||||
mSelected->offset( mGizmo->getOffset() );
|
||||
mSelected->offset(mGizmo->getOffset(), mGridSnap ? mGridPlaneSize : 0.f);
|
||||
|
||||
// Handle various sticking
|
||||
terrainSnapSelection( mSelected, event.modifier, mGizmo->getPosition() );
|
||||
|
|
|
|||
|
|
@ -306,9 +306,9 @@ void WorldEditorSelection::offset( const Point3F& offset, F32 gridSnap )
|
|||
|
||||
if( gridSnap != 0.f )
|
||||
{
|
||||
wPos.x -= mFmod( wPos.x, gridSnap );
|
||||
wPos.y -= mFmod( wPos.y, gridSnap );
|
||||
wPos.z -= mFmod( wPos.z, gridSnap );
|
||||
wPos.x = _snapFloat(wPos.x, gridSnap);
|
||||
wPos.y = _snapFloat(wPos.y, gridSnap);
|
||||
wPos.z = _snapFloat(wPos.z, gridSnap);
|
||||
}
|
||||
|
||||
mat.setColumn(3, wPos);
|
||||
|
|
@ -318,6 +318,22 @@ void WorldEditorSelection::offset( const Point3F& offset, F32 gridSnap )
|
|||
mCentroidValid = false;
|
||||
}
|
||||
|
||||
F32 WorldEditorSelection::_snapFloat(const F32 &val, const F32 &snap) const
|
||||
{
|
||||
if (snap == 0.0f)
|
||||
return val;
|
||||
|
||||
F32 a = mFmod(val, snap);
|
||||
|
||||
F32 temp = val;
|
||||
|
||||
if (mFabs(a) > (snap / 2))
|
||||
val < 0.0f ? temp -= snap : temp += snap;
|
||||
|
||||
return(temp - a);
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void WorldEditorSelection::setPosition(const Point3F & pos)
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ class WorldEditorSelection : public SimPersistSet
|
|||
//
|
||||
void offset(const Point3F& delta, F32 gridSnap = 0.f );
|
||||
void setPosition(const Point3F & pos);
|
||||
F32 _snapFloat(const F32 &val, const F32 &snap) const;
|
||||
void setCentroidPosition(bool useBoxCenter, const Point3F & pos);
|
||||
|
||||
void orient(const MatrixF &, const Point3F &);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue