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; } }
// 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; } }
public void SetScale(ScaleAxis axis, float min, float speed) { scaleAxis = axis; minScale = min; scaleSpeed = speed; }