private Vector3 ApplyTransformScale(SrGizmoAxis axis, Vector3 offSet)
        {
            switch (axis.SrAxis)
            {
            case SrAxisType.X:
                offSet = Camera.transform.right * GetTranslateScaleDelta(SrAxisType.X);
                offSet = new Vector3(offSet.x, 0.0f, 0.0f);
                break;

            case SrAxisType.Y:
                offSet = Camera.transform.up * GetTranslateScaleDelta(SrAxisType.Y);
                offSet = new Vector3(0.0f, offSet.y, 0.0f);
                break;

            case SrAxisType.Z:
                offSet = Camera.transform.right * GetTranslateScaleDelta(SrAxisType.Z);
                offSet = new Vector3(0.0f, 0.0f, offSet.z);
                break;

            case SrAxisType.None:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(offSet);
        }
        private bool RestrictedAxis(SrGizmo srGizmo, SrGizmoAxis srGizmoAxis)
        {
            var axisRestriction      = GetAxisRestriction(srGizmo);
            var srRestrictAxises     = axisRestriction as SrRestrictAxis[] ?? axisRestriction.ToArray();
            var axisRestrictionCount = srRestrictAxises.Count(ar => ar.GizmoType == srGizmo.GizmoType);

            return(srRestrictAxises.Any(ar => ar.GizmoType == srGizmo.GizmoType && ar.RestrictAxisTo == srGizmoAxis.SrAxis) || axisRestrictionCount == 0);
        }