public void RegisterObjectRestrictions(List <GameObject> targetObjects, ObjectTransformGizmo.ObjectRestrictions restrictions)
 {
     foreach (var targetObject in targetObjects)
     {
         RegisterObjectRestrictions(targetObject, restrictions);
     }
 }
 public void RegisterObjectRestrictions(GameObject targetObject, ObjectTransformGizmo.ObjectRestrictions restrictions)
 {
     if (!ContainsRestrictionsForObject(targetObject))
     {
         _objectToRestrictions.Add(targetObject, restrictions);
     }
 }
        private void RotateObject(GameObject gameObject, Quaternion rotation, Vector3 rotationPivot)
        {
            ObjectTransformGizmo.ObjectRestrictions restrictions = GetObjectRestrictions(gameObject);
            if (restrictions != null && !restrictions.IsAffectedByHandle(Gizmo.DragHandleId))
            {
                return;
            }

            Transform objectTransform = gameObject.transform;

            objectTransform.RotateAroundPivot(rotation, rotationPivot);

            IRTTransformGizmoListener transformGizmoListener = gameObject.GetComponent <IRTTransformGizmoListener>();

            if (transformGizmoListener != null)
            {
                transformGizmoListener.OnTransformed(Gizmo);
            }
        }
        private void MoveObject(GameObject gameObject, Vector3 moveVector)
        {
            ObjectTransformGizmo.ObjectRestrictions restrictions = GetObjectRestrictions(gameObject);
            if (restrictions != null)
            {
                if (!restrictions.IsAffectedByHandle(Gizmo.DragHandleId))
                {
                    return;
                }
                moveVector = restrictions.AdjustMoveVector(moveVector);
            }

            gameObject.transform.position += moveVector;

            IRTTransformGizmoListener transformGizmoListener = gameObject.GetComponent <IRTTransformGizmoListener>();

            if (transformGizmoListener != null)
            {
                transformGizmoListener.OnTransformed(Gizmo);
            }
        }
        private void ScaleObject(GameObject gameObject, Vector3 scaleFactor, Vector3 scalePivot)
        {
            ObjectTransformGizmo.ObjectRestrictions restrictions = GetObjectRestrictions(gameObject);
            if (restrictions != null)
            {
                if (!restrictions.IsAffectedByHandle(Gizmo.DragHandleId))
                {
                    return;
                }
                scaleFactor = restrictions.AdjustScaleVector(scaleFactor);
            }

            Transform objectTransform = gameObject.transform;

            objectTransform.ScaleFromPivot(scaleFactor, scalePivot);

            IRTTransformGizmoListener transformGizmoListener = gameObject.GetComponent <IRTTransformGizmoListener>();

            if (transformGizmoListener != null)
            {
                transformGizmoListener.OnTransformed(Gizmo);
            }
        }