Merge remote-tracking branch 'origin/master' into 1.6
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user