private void DoRotateHandle() { _currentMousePosition += Event.current.delta; var normalized = Vector3.Cross(_rotateStartAxis, transform.position - _rotateStartPosition).normalized; var rotationDist = (float)((double)MyHandleUtility.CalcLineTranslation(_startMousePosition, _currentMousePosition, _rotateStartPosition, normalized) / (double)_handleSize * 30.0); transform.rotation = Quaternion.AngleAxis(rotationDist * -1f, _rotateStartAxis) * _rotateStartRotation; }
private void DoTranslateHandle() { _currentMousePosition += Event.current.delta; var translateAxis = GetAxis(_currentControl); var translationDist = MyHandleUtility.CalcLineTranslation(_startMousePosition, _currentMousePosition, _translateStartPosition, translateAxis); transform.position = _translateStartPosition + translateAxis * translationDist; }
private void DoScaleHandle() { _currentMousePosition += Event.current.delta; var scaleAxis = GetAxis(_currentControl); if (CurrentControl == ControlType.ScaleCenter) { _scaleValueDrag += MyHandleUtility.niceMouseDelta * 0.01f; var scaleFactor = (_scaleValueDrag + 1f) * _startScaleValue; var num2 = scaleFactor / transform.localScale.x; var newScale = transform.localScale; newScale.x = scaleFactor; newScale.y *= num2; newScale.z *= num2; transform.localScale = newScale; _drawScaleValue.x = newScale.x / _startScaleValue; _drawScaleValue.y = newScale.x / _startScaleValue; _drawScaleValue.z = newScale.x / _startScaleValue; } else { float num = 1.0f + MyHandleUtility.CalcLineTranslation(_startMousePosition, _currentMousePosition, transform.position, -GetAxis(_currentControl)) / _handleSize; var newScale = transform.localScale; if (CurrentControl == ControlType.ScaleX) { newScale.x = _startScaleValue * num; _drawScaleValue.x = newScale.x / _startScaleValue; } else if (CurrentControl == ControlType.ScaleY) { newScale.y = _startScaleValue * num; _drawScaleValue.y = newScale.y / _startScaleValue; } else if (CurrentControl == ControlType.ScaleZ) { newScale.z = _startScaleValue * num; _drawScaleValue.z = newScale.z / _startScaleValue; } transform.localScale = newScale; } }