コード例 #1
0
        public void ScaleBone(float scale, ScaleAxis axis, ScaleMode mode)
        {
            float size = scale;

            if (axis == ScaleAxis.Length && mode == ScaleMode.Length)
            {
                size = scale / defaultLength;
            }

            switch (axis)
            {
            case ScaleAxis.Length:
                scaleBone.localScale = new Vector3(scaleBone.localScale.x, scaleBone.localScale.y, size);
                foreach (Transform scaleFixBone in scaleFixBones)
                {
                    scaleFixBone.localScale = new Vector3(scaleFixBone.localScale.x, scaleFixBone.localScale.y, 1 / size);
                }
                break;

            case ScaleAxis.Width:
                scaleBone.localScale = new Vector3(size, scaleBone.localScale.y, scaleBone.localScale.z);
                foreach (Transform scaleFixBone in scaleFixBones)
                {
                    scaleFixBone.localScale = new Vector3(1f / size, scaleFixBone.localScale.y, scaleFixBone.localScale.z);
                }
                break;

            case ScaleAxis.Height:
                scaleBone.localScale = new Vector3(scaleBone.localScale.x, size, scaleBone.localScale.z);
                foreach (Transform scaleFixBone in scaleFixBones)
                {
                    scaleFixBone.localScale = new Vector3(scaleFixBone.localScale.x, 1f / size, scaleFixBone.localScale.z);
                }
                break;

            case ScaleAxis.Thickness:
                scaleBone.localScale = new Vector3(size, size, scaleBone.localScale.z);
                foreach (Transform scaleFixBone in scaleFixBones)
                {
                    scaleFixBone.localScale = new Vector3(1f / size, 1f / size, scaleFixBone.localScale.z);
                }
                break;

            case ScaleAxis.All:
                scaleBone.localScale = new Vector3(size, size, size);
                foreach (Transform scaleFixBone in scaleFixBones)
                {
                    scaleFixBone.localScale = new Vector3(1f / size, 1f / size, 1f / size);
                }
                break;
            }
        }
コード例 #2
0
        // Checks to see if object is being scaled + sets the intialScaling variable of object
        private void ScalingSetup()
        {
            if (_activeHandles.Count == 2)
            {
                float xCount = 0;
                float yCount = 0;
                float zCount = 0;

                foreach (TransformHandle handle in _activeHandles)
                {
                    if (handle.name == "Translate Pos X" || handle.name == "Translate Neg X")
                    {
                        xCount += 1;
                        if (xCount == 1)
                        {
                            HandleOne = handle;
                        }
                        if (xCount == 2)
                        {
                            HandleTwo  = handle;
                            ChosenAxis = ScaleAxis.x;
                            _toolState = ToolState.Scaling;
                        }
                    }
                    if (handle.name == "Translate Pos Y" || handle.name == "Translate Neg Y")
                    {
                        yCount += 1;

                        if (yCount == 1)
                        {
                            HandleOne = handle;
                        }
                        if (yCount == 2)
                        {
                            HandleTwo  = handle;
                            ChosenAxis = ScaleAxis.y;
                            _toolState = ToolState.Scaling;
                        }
                    }
                    if (handle.name == "Translate Pos Z" || handle.name == "Translate Neg Y")
                    {
                        zCount += 1;
                        if (zCount == 1)
                        {
                            HandleOne = handle;
                        }
                        if (zCount == 2)
                        {
                            HandleTwo  = handle;
                            ChosenAxis = ScaleAxis.z;
                            _toolState = ToolState.Scaling;
                        }
                    }
                }

                if (xCount == 2 || yCount == 2 || zCount == 2)
                {
                    if (!initialScaled)
                    {
                        Vector3 leftPosition  = new Vector3(hands[0].PalmPosition.x * 1 / 1000, hands[0].PalmPosition.y * 1 / 1000, hands[0].PalmPosition.z * 1 / 1000);
                        Vector3 rightPosition = new Vector3(hands[1].PalmPosition.x * 1 / 1000, hands[1].PalmPosition.y * 1 / 1000, hands[1].PalmPosition.z * 1 / 1000);

                        initialScaling      = target.transform.localScale;
                        initialHandDistance = Vector3.Distance(leftPosition, rightPosition);
                        initialScaled       = true;

                        InitialHandleOnePosition = HandleOne.transform.position;
                        InitialHandleTwoPosition = HandleTwo.transform.position;

                        InitialHandOnePosition = leftPosition;
                        InitialHandTwoPosition = rightPosition;
                    }
                }
            }

            // To reset values if we're done/not scaling.
            if (_activeHandles.Count != 2)
            {
                initialScaled = false;
            }
        }
コード例 #3
0
 public void SetScale(ScaleAxis axis, float min, float speed)
 {
     scaleAxis  = axis;
     minScale   = min;
     scaleSpeed = speed;
 }