Merge branch 'Tryibion-ui-edit-handles'
This commit is contained in:
@@ -499,6 +499,15 @@ namespace FlaxEditor
|
|||||||
bool drawAnySelectedControl = false;
|
bool drawAnySelectedControl = false;
|
||||||
var transformGizmo = TransformGizmo;
|
var transformGizmo = TransformGizmo;
|
||||||
var mousePos = PointFromWindow(RootWindow.MousePosition);
|
var mousePos = PointFromWindow(RootWindow.MousePosition);
|
||||||
|
if (EnableSelecting && !_mouseMovesControl && !_mouseMovesWidget && IsMouseOver)
|
||||||
|
{
|
||||||
|
// Highlight control under mouse for easier selecting (except if already selected)
|
||||||
|
if (RayCastControl(ref mousePos, out var hitControl) &&
|
||||||
|
(transformGizmo == null || !transformGizmo.Selection.Any(x => x.EditableObject is UIControl controlActor && controlActor.Control == hitControl)))
|
||||||
|
{
|
||||||
|
DrawControl(null, hitControl, false, ref mousePos, ref drawAnySelectedControl);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (transformGizmo != null)
|
if (transformGizmo != null)
|
||||||
{
|
{
|
||||||
// Selected UI controls outline
|
// Selected UI controls outline
|
||||||
@@ -511,15 +520,6 @@ namespace FlaxEditor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (EnableSelecting && !_mouseMovesControl && !_mouseMovesWidget && IsMouseOver)
|
|
||||||
{
|
|
||||||
// Highlight control under mouse for easier selecting (except if already selected)
|
|
||||||
if (RayCastControl(ref mousePos, out var hitControl) &&
|
|
||||||
(transformGizmo == null || !transformGizmo.Selection.Any(x => x.EditableObject is UIControl controlActor && controlActor.Control == hitControl)))
|
|
||||||
{
|
|
||||||
DrawControl(null, hitControl, false, ref mousePos, ref drawAnySelectedControl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (drawAnySelectedControl)
|
if (drawAnySelectedControl)
|
||||||
Render2D.PopTransform();
|
Render2D.PopTransform();
|
||||||
|
|
||||||
@@ -617,40 +617,39 @@ namespace FlaxEditor
|
|||||||
// Draw sizing widgets
|
// Draw sizing widgets
|
||||||
if (_widgets == null)
|
if (_widgets == null)
|
||||||
_widgets = new List<Widget>();
|
_widgets = new List<Widget>();
|
||||||
var widgetSize = 8.0f;
|
var widgetSize = 10.0f;
|
||||||
var viewScale = ViewScale;
|
var viewScale = ViewScale;
|
||||||
if (viewScale < 0.7f)
|
if (viewScale < 0.7f)
|
||||||
widgetSize *= viewScale;
|
widgetSize *= viewScale;
|
||||||
var controlSize = control.Size.Absolute.MinValue / 50.0f;
|
var controlSize = control.Size.Absolute.MinValue / 50.0f;
|
||||||
if (controlSize < 1.0f)
|
if (controlSize < 1.0f)
|
||||||
widgetSize *= Mathf.Clamp(controlSize + 0.1f, 0.1f, 1.0f);
|
widgetSize *= Mathf.Clamp(controlSize + 0.1f, 0.1f, 1.0f);
|
||||||
var cornerSize = new Float2(widgetSize);
|
var widgetHandleSize = new Float2(widgetSize);
|
||||||
DrawControlWidget(uiControl, ref ul, ref mousePos, ref cornerSize, new Float2(-1, -1), CursorType.SizeNWSE);
|
DrawControlWidget(uiControl, ref ul, ref mousePos, ref widgetHandleSize, viewScale, new Float2(-1, -1), CursorType.SizeNWSE);
|
||||||
DrawControlWidget(uiControl, ref ur, ref mousePos, ref cornerSize, new Float2(1, -1), CursorType.SizeNESW);
|
DrawControlWidget(uiControl, ref ur, ref mousePos, ref widgetHandleSize, viewScale, new Float2(1, -1), CursorType.SizeNESW);
|
||||||
DrawControlWidget(uiControl, ref bl, ref mousePos, ref cornerSize, new Float2(-1, 1), CursorType.SizeNESW);
|
DrawControlWidget(uiControl, ref bl, ref mousePos, ref widgetHandleSize, viewScale, new Float2(-1, 1), CursorType.SizeNESW);
|
||||||
DrawControlWidget(uiControl, ref br, ref mousePos, ref cornerSize, new Float2(1, 1), CursorType.SizeNWSE);
|
DrawControlWidget(uiControl, ref br, ref mousePos, ref widgetHandleSize, viewScale, new Float2(1, 1), CursorType.SizeNWSE);
|
||||||
var edgeSizeV = new Float2(widgetSize * 2, widgetSize);
|
|
||||||
var edgeSizeH = new Float2(edgeSizeV.Y, edgeSizeV.X);
|
|
||||||
Float2.Lerp(ref ul, ref bl, 0.5f, out var el);
|
Float2.Lerp(ref ul, ref bl, 0.5f, out var el);
|
||||||
Float2.Lerp(ref ur, ref br, 0.5f, out var er);
|
Float2.Lerp(ref ur, ref br, 0.5f, out var er);
|
||||||
Float2.Lerp(ref ul, ref ur, 0.5f, out var eu);
|
Float2.Lerp(ref ul, ref ur, 0.5f, out var eu);
|
||||||
Float2.Lerp(ref bl, ref br, 0.5f, out var eb);
|
Float2.Lerp(ref bl, ref br, 0.5f, out var eb);
|
||||||
DrawControlWidget(uiControl, ref el, ref mousePos, ref edgeSizeH, new Float2(-1, 0), CursorType.SizeWE);
|
DrawControlWidget(uiControl, ref el, ref mousePos, ref widgetHandleSize, viewScale, new Float2(-1, 0), CursorType.SizeWE);
|
||||||
DrawControlWidget(uiControl, ref er, ref mousePos, ref edgeSizeH, new Float2(1, 0), CursorType.SizeWE);
|
DrawControlWidget(uiControl, ref er, ref mousePos, ref widgetHandleSize, viewScale, new Float2(1, 0), CursorType.SizeWE);
|
||||||
DrawControlWidget(uiControl, ref eu, ref mousePos, ref edgeSizeV, new Float2(0, -1), CursorType.SizeNS);
|
DrawControlWidget(uiControl, ref eu, ref mousePos, ref widgetHandleSize, viewScale, new Float2(0, -1), CursorType.SizeNS);
|
||||||
DrawControlWidget(uiControl, ref eb, ref mousePos, ref edgeSizeV, new Float2(0, 1), CursorType.SizeNS);
|
DrawControlWidget(uiControl, ref eb, ref mousePos, ref widgetHandleSize, viewScale, new Float2(0, 1), CursorType.SizeNS);
|
||||||
|
|
||||||
// TODO: draw anchors
|
// TODO: draw anchors
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawControlWidget(UIControl uiControl, ref Float2 pos, ref Float2 mousePos, ref Float2 size, Float2 resizeAxis, CursorType cursor)
|
private void DrawControlWidget(UIControl uiControl, ref Float2 pos, ref Float2 mousePos, ref Float2 size,float scale, Float2 resizeAxis, CursorType cursor)
|
||||||
{
|
{
|
||||||
var style = Style.Current;
|
var style = Style.Current;
|
||||||
var rect = new Rectangle(pos - size * 0.5f, size);
|
var rect = new Rectangle((pos + resizeAxis * 10 * scale) - size * 0.5f, size);
|
||||||
if (rect.Contains(ref mousePos))
|
if (rect.Contains(ref mousePos))
|
||||||
{
|
{
|
||||||
Render2D.FillRectangle(rect, style.Foreground);
|
Render2D.FillRectangle(rect, style.Foreground);
|
||||||
|
Render2D.DrawRectangle(rect, style.SelectionBorder);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user