Пример #1
0
        void DrawCustomGizmo(CustomTransformGizmos customGizmo)
        {
            AxisInfo axisInfo = transformGizmo.GetAxisInfo();

            customGizmo.SetAxis(axisInfo);
            customGizmo.SetPosition(transformGizmo.pivotPoint);
        }
        void SetCircles(AxisInfo axisInfo, AxisVectors axisVectors)
        {
            axisVectors.Clear();

            if (type == TransformType.Rotate)
            {
                float circleLength = handleLength * GetDistanceMultiplier();
                AddCircle(pivotPoint, axisInfo.xDirection, circleLength, axisVectors.x);
                AddCircle(pivotPoint, axisInfo.yDirection, circleLength, axisVectors.y);
                AddCircle(pivotPoint, axisInfo.zDirection, circleLength, axisVectors.z);
                AddCircle(pivotPoint, (pivotPoint - transform.position).normalized, circleLength, axisVectors.all, false);
            }
        }
Пример #3
0
        public AxisInfo GetAxisInfo()
        {
            AxisInfo currentAxisInfo = axisInfo;

            if (isTransforming && GetProperTransformSpace() == TransformSpace.Global && translatingType == TransformType.Rotate)
            {
                currentAxisInfo.xDirection = totalRotationAmount * Vector3.right;
                currentAxisInfo.yDirection = totalRotationAmount * Vector3.up;
                currentAxisInfo.zDirection = totalRotationAmount * Vector3.forward;
            }

            return(currentAxisInfo);
        }
Пример #4
0
        void SetCircles(AxisInfo axisInfo, AxisVectors axisVectors)
        {
            axisVectors.Clear();

            if (TranslatingTypeContains(TransformType.Rotate))
            {
                float circleLength = GetHandleLength(TransformType.Rotate);
                AddCircle(pivotPoint, axisInfo.xDirection, circleLength, axisVectors.x);
                AddCircle(pivotPoint, axisInfo.yDirection, circleLength, axisVectors.y);
                AddCircle(pivotPoint, axisInfo.zDirection, circleLength, axisVectors.z);
                AddCircle(pivotPoint, (pivotPoint - transform.position).normalized, circleLength, axisVectors.all, false);
            }
        }
Пример #5
0
        void OnPostRender()
        {
            if (target == null)
            {
                return;
            }

            lineMaterial.SetPass(0);

            Color xColor   = (selectedAxis == Axis.X) ? selectedColor : this.xColor;
            Color yColor   = (selectedAxis == Axis.Y) ? selectedColor : this.yColor;
            Color zColor   = (selectedAxis == Axis.Z) ? selectedColor : this.zColor;
            Color allColor = (selectedAxis == Axis.Any) ? selectedColor : this.allColor;

            DrawLines(handleLines.x, xColor);
            DrawLines(handleLines.z, zColor);
            if (posType == PosType.vector3)
            {
                DrawLines(handleLines.y, yColor);
                DrawTriangles(handleTriangles.y, yColor);
            }
            DrawTriangles(handleTriangles.x, xColor);
            DrawTriangles(handleTriangles.z, zColor);


            DrawSquares(handleSquares.x, xColor);
            DrawSquares(handleSquares.y, yColor);
            DrawSquares(handleSquares.z, zColor);
            DrawSquares(handleSquares.all, allColor);

            AxisVectors rotationAxisVector = circlesLines;

            if (isTransforming && space == TransformSpace.Global && type == TransformType.Rotate)
            {
                rotationAxisVector = drawCurrentCirclesLines;

                AxisInfo axisInfo = new AxisInfo();
                axisInfo.xDirection = totalRotationAmount * Vector3.right;
                axisInfo.yDirection = totalRotationAmount * Vector3.up;
                axisInfo.zDirection = totalRotationAmount * Vector3.forward;
                SetCircles(axisInfo, drawCurrentCirclesLines);
            }

            DrawCircles(rotationAxisVector.x, xColor);
            DrawCircles(rotationAxisVector.y, yColor);
            DrawCircles(rotationAxisVector.z, zColor);
            DrawCircles(rotationAxisVector.all, allColor);
        }
        void SetCircles(AxisInfo axisInfo, AxisVectors axisVectors)
        {
            axisVectors.Clear();

            if (type == TransformType.Rotate)
            {
                float circleLength = setting.handleLength * DistanceMultiplier;
                if (setting.enableState == EnableState.Normal)
                {
                    AddCircle(target.position, axisInfo.xDirection, circleLength, axisVectors.x);
                    AddCircle(target.position, axisInfo.zDirection, circleLength, axisVectors.z);
                    AddCircle(target.position, (target.position - myCamera.transform.position).normalized, circleLength, axisVectors.all, false);
                }
                AddCircle(target.position, axisInfo.yDirection, circleLength, axisVectors.y);
            }
        }
        void OnPostRender()
        {
            if (mainTargetRoot == null)
            {
                return;
            }

            lineMaterial.SetPass(0);

            Color xColor   = (nearAxis == Axis.X) ? (isTransforming) ? selectedColor : hoverColor : this.xColor;
            Color yColor   = (nearAxis == Axis.Y) ? (isTransforming) ? selectedColor : hoverColor : this.yColor;
            Color zColor   = (nearAxis == Axis.Z) ? (isTransforming) ? selectedColor : hoverColor : this.zColor;
            Color allColor = (nearAxis == Axis.Any) ? (isTransforming) ? selectedColor : hoverColor : this.allColor;

            //Note: The order of drawing the axis decides what gets drawn over what.

            DrawQuads(handleLines.z, zColor);
            DrawQuads(handleLines.x, xColor);
            DrawQuads(handleLines.y, yColor);

            DrawTriangles(handleTriangles.x, xColor);
            DrawTriangles(handleTriangles.y, yColor);
            DrawTriangles(handleTriangles.z, zColor);

            DrawQuads(handleSquares.x, xColor);
            DrawQuads(handleSquares.y, yColor);
            DrawQuads(handleSquares.z, zColor);
            DrawQuads(handleSquares.all, allColor);

            AxisVectors rotationAxisVector = circlesLines;

            if (isTransforming && space == TransformSpace.Global && type == TransformType.Rotate)
            {
                rotationAxisVector = drawCurrentCirclesLines;

                AxisInfo axisInfo = new AxisInfo();
                axisInfo.xDirection = totalRotationAmount * Vector3.right;
                axisInfo.yDirection = totalRotationAmount * Vector3.up;
                axisInfo.zDirection = totalRotationAmount * Vector3.forward;
                SetCircles(axisInfo, drawCurrentCirclesLines);
            }

            DrawQuads(rotationAxisVector.all, allColor);
            DrawQuads(rotationAxisVector.x, xColor);
            DrawQuads(rotationAxisVector.y, yColor);
            DrawQuads(rotationAxisVector.z, zColor);
        }
Пример #8
0
        public void SetAxis(AxisInfo axisInfo)
        {
            Quaternion lookRotation = Quaternion.LookRotation(axisInfo.zDirection, axisInfo.yDirection);

            if (xAxisGizmo != null)
            {
                xAxisGizmo.rotation = lookRotation;
            }
            if (yAxisGizmo != null)
            {
                yAxisGizmo.rotation = lookRotation;
            }
            if (zAxisGizmo != null)
            {
                zAxisGizmo.rotation = lookRotation;
            }
            if (anyAxisGizmo != null)
            {
                anyAxisGizmo.rotation = lookRotation;
            }
        }
Пример #9
0
        public void SetAxis(AxisInfo axisInfo)
        {
            Quaternion lookRotation = Quaternion.LookRotation(axisInfo.ZDirection, axisInfo.YDirection);

            if (XAxisGizmo != null)
            {
                XAxisGizmo.rotation = lookRotation;
            }
            if (YAxisGizmo != null)
            {
                YAxisGizmo.rotation = lookRotation;
            }
            if (ZAxisGizmo != null)
            {
                ZAxisGizmo.rotation = lookRotation;
            }
            if (AnyAxisGizmo != null)
            {
                AnyAxisGizmo.rotation = lookRotation;
            }
        }
Пример #10
0
        void DrawCustomGizmo(CustomTransformGizmos customGizmo)
        {
            AxisInfo axisInfo = transformGizmo.GetAxisInfo();

            customGizmo.SetAxis(axisInfo);
            customGizmo.SetPosition(transformGizmo.pivotPoint);

            Vector4 totalScaleMultiplier = Vector4.one;

            if (scaleBasedOnDistance)
            {
                totalScaleMultiplier.w *= (scaleMultiplier * transformGizmo.GetDistanceMultiplier());
            }

            if (transformGizmo.transformingType == TransformType.Scale)
            {
                float totalScaleAmount = 1f + transformGizmo.totalScaleAmount;
                if (transformGizmo.translatingAxis == Axis.Any)
                {
                    totalScaleMultiplier += (Vector4.one * totalScaleAmount);
                }
                else if (transformGizmo.translatingAxis == Axis.X)
                {
                    totalScaleMultiplier.x *= totalScaleAmount;
                }
                else if (transformGizmo.translatingAxis == Axis.Y)
                {
                    totalScaleMultiplier.y *= totalScaleAmount;
                }
                else if (transformGizmo.translatingAxis == Axis.Z)
                {
                    totalScaleMultiplier.z *= totalScaleAmount;
                }
            }

            customGizmo.ScaleMultiply(totalScaleMultiplier);
        }