From 75f1c8baaa242d0adc706b1190663a6412557c61 Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Thu, 25 May 2023 10:17:08 -0500 Subject: [PATCH] Fix scale linking to be a ratio. --- .../CustomEditors/Editors/Vector3Editor.cs | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/Source/Editor/CustomEditors/Editors/Vector3Editor.cs b/Source/Editor/CustomEditors/Editors/Vector3Editor.cs index 8524109b1..6287ef979 100644 --- a/Source/Editor/CustomEditors/Editors/Vector3Editor.cs +++ b/Source/Editor/CustomEditors/Editors/Vector3Editor.cs @@ -129,23 +129,23 @@ namespace FlaxEditor.CustomEditors.Editors if (LinkValues) { - var valueChange = 0.0f; + var valueRatio = 0.0f; switch (_valueChanged) { case ValueChanged.X: - valueChange = xValue - ((Float3)Values[0]).X; - yValue = NewLinkedValue(yValue, valueChange); - zValue = NewLinkedValue(zValue, valueChange); + valueRatio = GetRatio(xValue, ((Float3)Values[0]).X); + yValue = NewLinkedValue(yValue, valueRatio); + zValue = NewLinkedValue(zValue, valueRatio); break; case ValueChanged.Y: - valueChange = yValue - ((Float3)Values[0]).Y; - xValue = NewLinkedValue(xValue, valueChange); - zValue = NewLinkedValue(zValue, valueChange); + valueRatio = GetRatio(yValue, ((Float3)Values[0]).Y); + xValue = NewLinkedValue(xValue, valueRatio); + zValue = NewLinkedValue(zValue, valueRatio); break; case ValueChanged.Z: - valueChange = zValue - ((Float3)Values[0]).Z; - xValue = NewLinkedValue(xValue, valueChange); - yValue = NewLinkedValue(yValue, valueChange); + valueRatio = GetRatio(zValue, ((Float3)Values[0]).Z); + xValue = NewLinkedValue(xValue, valueRatio); + yValue = NewLinkedValue(yValue, valueRatio); break; default: break; } @@ -164,9 +164,14 @@ namespace FlaxEditor.CustomEditors.Editors SetValue(v, token); } - private float NewLinkedValue(float value, float valueChange) + private float GetRatio(float value, float initialValue) { - return Mathf.NearEqual(value, 0) ? value : value + valueChange; + return Mathf.Abs(value / initialValue); + } + + private float NewLinkedValue(float value, float valueRatio) + { + return Mathf.NearEqual(value, 0) ? value : value * valueRatio; } ///