@@ -37,7 +37,7 @@ public enum RotationModeEnum
3737 Default ,
3838 LockObjectRotation ,
3939 OrientTowardUser ,
40- KeepUpright
40+ OrientTowardUserAndKeepUpright
4141 }
4242
4343 public RotationModeEnum RotationMode = RotationModeEnum . Default ;
@@ -198,20 +198,15 @@ private void UpdateDragging()
198198
199199 draggingPosition = pivotPosition + ( targetDirection * targetDistance ) ;
200200
201- if ( RotationMode == RotationModeEnum . OrientTowardUser )
201+ if ( RotationMode == RotationModeEnum . OrientTowardUser || RotationMode == RotationModeEnum . OrientTowardUserAndKeepUpright )
202202 {
203203 draggingRotation = Quaternion . LookRotation ( HostTransform . position - pivotPosition ) ;
204204 }
205- else if ( RotationMode == RotationModeEnum . KeepUpright )
206- {
207- Quaternion upRotation = Quaternion . FromToRotation ( HostTransform . up , Vector3 . up ) ;
208- draggingRotation = upRotation * HostTransform . rotation ;
209- }
210205 else if ( RotationMode == RotationModeEnum . LockObjectRotation )
211206 {
212207 draggingRotation = HostTransform . rotation ;
213208 }
214- else
209+ else // RotationModeEnum.Default
215210 {
216211 Vector3 objForward = mainCamera . transform . TransformDirection ( objRefForward ) ; // in world space
217212 Vector3 objUp = mainCamera . transform . TransformDirection ( objRefUp ) ; // in world space
@@ -222,6 +217,11 @@ private void UpdateDragging()
222217 HostTransform . position = draggingPosition + mainCamera . transform . TransformDirection ( objRefGrabPoint ) ;
223218 // Apply Final Rotation
224219 HostTransform . rotation = draggingRotation ;
220+ if ( RotationMode == RotationModeEnum . OrientTowardUserAndKeepUpright )
221+ {
222+ Quaternion upRotation = Quaternion . FromToRotation ( HostTransform . up , Vector3 . up ) ;
223+ HostTransform . rotation = upRotation * HostTransform . rotation ;
224+ }
225225 }
226226
227227 /// <summary>
0 commit comments