Merge remote-tracking branch 'origin/master' into 1.6

This commit is contained in:
Wojtek Figat
2023-06-10 23:29:22 +02:00
21 changed files with 438 additions and 45 deletions

View File

@@ -97,6 +97,7 @@ namespace FlaxEditor.CustomEditors.Editors
AnchorPreset = AnchorPresets.TopLeft,
};
_linkButton.Clicked += ToggleLink;
ToggleEnabled();
SetLinkStyle();
var x = LinkedLabel.Text.Value.Length * 7 + 5;
_linkButton.LocalX += x;
@@ -128,9 +129,38 @@ namespace FlaxEditor.CustomEditors.Editors
{
LinkValues = !LinkValues;
Editor.Instance.Windows.PropertiesWin.ScaleLinked = LinkValues;
ToggleEnabled();
SetLinkStyle();
}
/// <summary>
/// Toggles enables on value boxes.
/// </summary>
public void ToggleEnabled()
{
if (LinkValues)
{
if (Mathf.NearEqual(((Float3)Values[0]).X, 0))
{
XElement.ValueBox.Enabled = false;
}
if (Mathf.NearEqual(((Float3)Values[0]).Y, 0))
{
YElement.ValueBox.Enabled = false;
}
if (Mathf.NearEqual(((Float3)Values[0]).Z, 0))
{
ZElement.ValueBox.Enabled = false;
}
}
else
{
XElement.ValueBox.Enabled = true;
YElement.ValueBox.Enabled = true;
ZElement.ValueBox.Enabled = true;
}
}
private void SetLinkStyle()
{
var style = FlaxEngine.GUI.Style.Current;

View File

@@ -129,25 +129,39 @@ 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 += valueChange;
zValue += valueChange;
valueRatio = GetRatio(xValue, ((Float3)Values[0]).X);
if (Mathf.NearEqual(valueRatio, 0))
{
XElement.ValueBox.Enabled = false;
valueRatio = 1;
}
yValue = NewLinkedValue(yValue, valueRatio);
zValue = NewLinkedValue(zValue, valueRatio);
break;
case ValueChanged.Y:
valueChange = yValue - ((Float3)Values[0]).Y;
xValue += valueChange;
zValue += valueChange;
valueRatio = GetRatio(yValue, ((Float3)Values[0]).Y);
if (Mathf.NearEqual(valueRatio, 0))
{
YElement.ValueBox.Enabled = false;
valueRatio = 1;
}
xValue = NewLinkedValue(xValue, valueRatio);
zValue = NewLinkedValue(zValue, valueRatio);
break;
case ValueChanged.Z:
valueChange = zValue - ((Float3)Values[0]).Z;
xValue += valueChange;
yValue += valueChange;
valueRatio = GetRatio(zValue, ((Float3)Values[0]).Z);
if (Mathf.NearEqual(valueRatio, 0))
{
ZElement.ValueBox.Enabled = false;
valueRatio = 1;
}
xValue = NewLinkedValue(xValue, valueRatio);
yValue = NewLinkedValue(yValue, valueRatio);
break;
default: break;
}
}
@@ -164,6 +178,16 @@ namespace FlaxEditor.CustomEditors.Editors
SetValue(v, token);
}
private float GetRatio(float value, float initialValue)
{
return Mathf.NearEqual(initialValue, 0) ? 0 : value / initialValue;
}
private float NewLinkedValue(float value, float valueRatio)
{
return Mathf.NearEqual(value, 0) ? value : value * valueRatio;
}
/// <inheritdoc />
public override void Refresh()
{