public void SetMappedAxis(Vector3 axis)
        {
            if (!IsMapped)
            {
                return;
            }

            Vector3 perp180 = _transform.GetAxis3D(0, AxisSign.Positive);

            if (_mappedAxisDesc.Index == 0)
            {
                perp180 = _transform.GetAxis3D(1, AxisSign.Positive);
            }

            _transform.Rotate3D(QuaternionEx.FromToRotation3D(Axis, axis, perp180));
        }
        public void MakeSliderPlane(GizmoTransform sliderPlaneTransform, PlaneId planeId, GizmoLineSlider3D firstAxisSlider, GizmoLineSlider3D secondAxisSlider, Camera camera)
        {
            PlaneQuadrantId quadrantId = sliderPlaneTransform.Get3DQuadrantFacingCamera(planeId, camera);

            AlignToQuadrant(sliderPlaneTransform, planeId, quadrantId, true);

            Vector3 firstQdrAxis  = sliderPlaneTransform.GetAxis3D(PlaneIdHelper.GetFirstAxisDescriptor(planeId, quadrantId));
            Vector3 secondQdrAxis = sliderPlaneTransform.GetAxis3D(PlaneIdHelper.GetSecondAxisDescriptor(planeId, quadrantId));
            Vector3 sliderOffset  = firstQdrAxis * secondAxisSlider.GetRealSizeAlongDirection(camera, firstQdrAxis) * 0.5f +
                                    secondQdrAxis * firstAxisSlider.GetRealSizeAlongDirection(camera, secondQdrAxis) * 0.5f;

            if (LookAndFeel.PlaneType == GizmoPlane3DType.Quad)
            {
                SetQuadCornerPosition(QuadCorner.BottomLeft, sliderPlaneTransform.Position3D + sliderOffset);
            }
        }