|
@@ -958,19 +958,14 @@ void Gizmo::on3DMouseDragged( const Gui3DMouseEvent & event )
|
|
|
mDeltaScale.zero();
|
|
|
|
|
|
Point3F newPosition;
|
|
|
- if( mProfile->snapToGrid )
|
|
|
- {
|
|
|
- Point3F snappedMouseDownProjPnt = _snapPoint( mMouseDownProjPnt );
|
|
|
- mDeltaTotalPos = projPnt - snappedMouseDownProjPnt;
|
|
|
- newPosition = projPnt;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- mDeltaTotalPos = projPnt - mMouseDownProjPnt;
|
|
|
- newPosition = mSavedTransform.getPosition() + mDeltaTotalPos;
|
|
|
- }
|
|
|
-
|
|
|
+ mDeltaTotalPos = projPnt - mMouseDownProjPnt;
|
|
|
+ newPosition = mSavedTransform.getPosition() + mDeltaTotalPos;
|
|
|
+
|
|
|
mDeltaPos = newPosition - mTransform.getPosition();
|
|
|
+
|
|
|
+ if (mProfile->snapToGrid)
|
|
|
+ newPosition = _snapPoint(newPosition);
|
|
|
+
|
|
|
mTransform.setPosition( newPosition );
|
|
|
|
|
|
mCurrentTransform.setPosition( newPosition );
|
|
@@ -1094,7 +1089,7 @@ void Gizmo::on3DMouseDragged( const Gui3DMouseEvent & event )
|
|
|
|
|
|
//
|
|
|
if((mProfile->forceSnapRotations && event.modifier | SI_SHIFT) || (mProfile->allowSnapRotations && event.modifier & SI_SHIFT ))
|
|
|
- angle = mDegToRad( _snapFloat( mRadToDeg( angle ), mProfile->rotationSnap ) );
|
|
|
+ angle = mDegToRad( mRoundF( mRadToDeg( angle ), mProfile->rotationSnap ) );
|
|
|
|
|
|
mDeltaAngle = angle - mLastAngle;
|
|
|
mLastAngle = angle;
|
|
@@ -1887,28 +1882,13 @@ Point3F Gizmo::_snapPoint( const Point3F &pnt ) const
|
|
|
return pnt;
|
|
|
|
|
|
Point3F snap;
|
|
|
- snap.x = _snapFloat( pnt.x, mProfile->gridSize.x );
|
|
|
- snap.y = _snapFloat( pnt.y, mProfile->gridSize.y );
|
|
|
- snap.z = _snapFloat( pnt.z, mProfile->gridSize.z );
|
|
|
+ snap.x = mRoundF( pnt.x, mProfile->gridSize.x );
|
|
|
+ snap.y = mRoundF( pnt.y, mProfile->gridSize.y );
|
|
|
+ snap.z = mRoundF( pnt.z, mProfile->gridSize.z );
|
|
|
|
|
|
return snap;
|
|
|
}
|
|
|
|
|
|
-F32 Gizmo::_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);
|
|
|
-}
|
|
|
-
|
|
|
GizmoAlignment Gizmo::_filteredAlignment()
|
|
|
{
|
|
|
GizmoAlignment align = mProfile->alignment;
|