|
@@ -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)
|