private void SetQuatFields(Quaternion quat, RotationUI ui) { ui.quatX.SetTextWithoutNotify(quat.x.ToString()); ui.quatY.SetTextWithoutNotify(quat.y.ToString()); ui.quatZ.SetTextWithoutNotify(quat.z.ToString()); ui.quatW.SetTextWithoutNotify(quat.w.ToString()); }
private void Rotate(bool cw) { bool left = _RotateSideSelector.value == 0; int axis = _RotateAxisSelector.value; // 0 == X, 1 == Y, 2 == Z bool world = _RotateRelativeSelector.value == 0; Quaternion rot = left ? _StartRot : _EndRot; RotationUI ui = left ? _StartRotUI : _EndRotUI; if (world) { var rotAround = Vector3.zero; rotAround[axis] = 1.0f; rot = Quaternion.AngleAxis(60.0f * Time.deltaTime * (cw ? -1 : 1), rotAround) * rot; } else { var ea = rot.eulerAngles; ea[axis] += 60.0f * Time.deltaTime * (cw ? -1 : 1); rot = Quaternion.Euler(ea); } if (left) { _StartRot = rot; } else { _EndRot = rot; } SetEulerFields(rot, ui); SetQuatFields(rot, ui); ApplyInterpolation(_InterpSlider.value); }
private void InitRotationUI(bool start, Quaternion quat, RotationUI ui) { SetEulerFields(quat, ui); SetQuatFields(quat, ui); ui.eulerX.onValueChanged.RemoveAllListeners(); ui.eulerY.onValueChanged.RemoveAllListeners(); ui.eulerZ.onValueChanged.RemoveAllListeners(); ui.quatX.onValueChanged.RemoveAllListeners(); ui.quatY.onValueChanged.RemoveAllListeners(); ui.quatZ.onValueChanged.RemoveAllListeners(); ui.quatW.onValueChanged.RemoveAllListeners(); ui.eulerX.onValueChanged.AddListener((str) => UpdateRotation(str, start, RotationComponent.EulerX)); ui.eulerY.onValueChanged.AddListener((str) => UpdateRotation(str, start, RotationComponent.EulerY)); ui.eulerZ.onValueChanged.AddListener((str) => UpdateRotation(str, start, RotationComponent.EulerZ)); ui.quatX.onValueChanged.AddListener((str) => UpdateRotation(str, start, RotationComponent.QuatX)); ui.quatY.onValueChanged.AddListener((str) => UpdateRotation(str, start, RotationComponent.QuatY)); ui.quatZ.onValueChanged.AddListener((str) => UpdateRotation(str, start, RotationComponent.QuatZ)); ui.quatW.onValueChanged.AddListener((str) => UpdateRotation(str, start, RotationComponent.QuatW)); }
void UpdateRotationPoints(RotationUI _rotationUI) { }
public void UpdateRotation(string valueStr, bool start, RotationComponent component) { RotationUI ui = start ? _StartRotUI : _EndRotUI; Quaternion rotation = start ? _StartRot : _EndRot; var ea = rotation.eulerAngles; float value; if (!float.TryParse(valueStr, out value)) { return; } switch (component) { case RotationComponent.EulerX: ea.x = value; rotation.eulerAngles = ea; SetQuatFields(rotation, ui); break; case RotationComponent.EulerY: ea.y = value; rotation.eulerAngles = ea; SetQuatFields(rotation, ui); break; case RotationComponent.EulerZ: ea.z = value; rotation.eulerAngles = ea; SetQuatFields(rotation, ui); break; case RotationComponent.QuatX: rotation.x = value; SetEulerFields(rotation, ui); break; case RotationComponent.QuatY: rotation.y = value; SetEulerFields(rotation, ui); break; case RotationComponent.QuatZ: rotation.z = value; SetEulerFields(rotation, ui); break; case RotationComponent.QuatW: rotation.w = value; SetEulerFields(rotation, ui); break; } if (start) { _StartRot = rotation; } else { _EndRot = rotation; } ApplyInterpolation(_InterpSlider.value); }
private void SetEulerFields(Quaternion quat, RotationUI ui) { ui.eulerX.SetTextWithoutNotify(quat.eulerAngles.x.ToString()); ui.eulerY.SetTextWithoutNotify(quat.eulerAngles.y.ToString()); ui.eulerZ.SetTextWithoutNotify(quat.eulerAngles.z.ToString()); }