Add color box to ColorTrackBall.

This commit is contained in:
Chandler Cox
2023-12-20 10:51:38 -06:00
parent 4e34524a08
commit 435341abd3

View File

@@ -3,6 +3,7 @@
using System.Linq; using System.Linq;
using FlaxEditor.CustomEditors.Elements; using FlaxEditor.CustomEditors.Elements;
using FlaxEditor.GUI.Dialogs; using FlaxEditor.GUI.Dialogs;
using FlaxEditor.GUI.Input;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
@@ -17,6 +18,7 @@ namespace FlaxEditor.CustomEditors.Editors
private FloatValueElement _yElement; private FloatValueElement _yElement;
private FloatValueElement _zElement; private FloatValueElement _zElement;
private FloatValueElement _wElement; private FloatValueElement _wElement;
private ColorValueBox _colorBox;
private CustomElement<ColorSelector> _trackball; private CustomElement<ColorSelector> _trackball;
/// <inheritdoc /> /// <inheritdoc />
@@ -53,7 +55,7 @@ namespace FlaxEditor.CustomEditors.Editors
gridControl.SlotPadding = new Margin(4, 2, 2, 2); gridControl.SlotPadding = new Margin(4, 2, 2, 2);
gridControl.ClipChildren = false; gridControl.ClipChildren = false;
gridControl.SlotsHorizontally = 1; gridControl.SlotsHorizontally = 1;
gridControl.SlotsVertically = 4; gridControl.SlotsVertically = 5;
LimitAttribute limit = null; LimitAttribute limit = null;
var attributes = Values.GetAttributes(); var attributes = Values.GetAttributes();
@@ -61,7 +63,8 @@ namespace FlaxEditor.CustomEditors.Editors
{ {
limit = (LimitAttribute)attributes.FirstOrDefault(x => x is LimitAttribute); limit = (LimitAttribute)attributes.FirstOrDefault(x => x is LimitAttribute);
} }
_colorBox = grid.Custom<ColorValueBox>().CustomControl;
_colorBox.ValueChanged += OnColorBoxChanged;
_xElement = CreateFloatEditor(grid, limit, Color.Red); _xElement = CreateFloatEditor(grid, limit, Color.Red);
_yElement = CreateFloatEditor(grid, limit, Color.Green); _yElement = CreateFloatEditor(grid, limit, Color.Green);
_zElement = CreateFloatEditor(grid, limit, Color.Blue); _zElement = CreateFloatEditor(grid, limit, Color.Blue);
@@ -93,6 +96,13 @@ namespace FlaxEditor.CustomEditors.Editors
SetValue(value, token); SetValue(value, token);
} }
private void OnColorBoxChanged()
{
var token = _colorBox.IsSliding ? this : null;
var color = _colorBox.Value;
SetValue(new Float4(color.R, color.G, color.B, color.A), token);
}
private void OnValueChanged() private void OnValueChanged()
{ {
if (IsSetBlocked) if (IsSetBlocked)
@@ -130,6 +140,7 @@ namespace FlaxEditor.CustomEditors.Editors
_yElement.Value = color.Y; _yElement.Value = color.Y;
_zElement.Value = color.Z; _zElement.Value = color.Z;
_wElement.Value = scale; _wElement.Value = scale;
_colorBox.Value = new Color(color.X, color.Y, color.Z, scale);
_trackball.CustomControl.Color = Float3.Abs(color); _trackball.CustomControl.Color = Float3.Abs(color);
} }
} }