Add splitter bar for resizing curve editor inside properties panel
This commit is contained in:
@@ -19,87 +19,6 @@ namespace FlaxEditor.GUI.Timeline.Tracks
|
||||
/// <seealso cref="MemberTrack" />
|
||||
public abstract class CurvePropertyTrackBase : MemberTrack, IKeyframesEditorContext
|
||||
{
|
||||
private sealed class Splitter : Control
|
||||
{
|
||||
private bool _clicked;
|
||||
internal CurvePropertyTrackBase _track;
|
||||
|
||||
public override void Draw()
|
||||
{
|
||||
var style = Style.Current;
|
||||
if (IsMouseOver || _clicked)
|
||||
Render2D.FillRectangle(new Rectangle(Float2.Zero, Size), _clicked ? style.BackgroundSelected : style.BackgroundHighlighted);
|
||||
}
|
||||
|
||||
public override void OnEndMouseCapture()
|
||||
{
|
||||
base.OnEndMouseCapture();
|
||||
|
||||
_clicked = false;
|
||||
}
|
||||
|
||||
public override void Defocus()
|
||||
{
|
||||
base.Defocus();
|
||||
|
||||
_clicked = false;
|
||||
}
|
||||
|
||||
public override void OnMouseEnter(Float2 location)
|
||||
{
|
||||
base.OnMouseEnter(location);
|
||||
|
||||
Cursor = CursorType.SizeNS;
|
||||
}
|
||||
|
||||
public override void OnMouseLeave()
|
||||
{
|
||||
Cursor = CursorType.Default;
|
||||
|
||||
base.OnMouseLeave();
|
||||
}
|
||||
|
||||
public override bool OnMouseDown(Float2 location, MouseButton button)
|
||||
{
|
||||
if (button == MouseButton.Left)
|
||||
{
|
||||
_clicked = true;
|
||||
Focus();
|
||||
StartMouseCapture();
|
||||
return true;
|
||||
}
|
||||
|
||||
return base.OnMouseDown(location, button);
|
||||
}
|
||||
|
||||
public override void OnMouseMove(Float2 location)
|
||||
{
|
||||
base.OnMouseMove(location);
|
||||
|
||||
if (_clicked)
|
||||
{
|
||||
var height = Mathf.Clamp(PointToParent(location).Y, 40.0f, 1000.0f);
|
||||
if (!Mathf.NearEqual(height, _track._expandedHeight))
|
||||
{
|
||||
_track.Height = _track._expandedHeight = height;
|
||||
_track.Timeline.ArrangeTracks();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnMouseUp(Float2 location, MouseButton button)
|
||||
{
|
||||
if (button == MouseButton.Left && _clicked)
|
||||
{
|
||||
_clicked = false;
|
||||
EndMouseCapture();
|
||||
return true;
|
||||
}
|
||||
|
||||
return base.OnMouseUp(location, button);
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] _curveEditingStartData;
|
||||
private float _expandedHeight = 120.0f;
|
||||
private Splitter _splitter;
|
||||
@@ -251,12 +170,21 @@ namespace FlaxEditor.GUI.Timeline.Tracks
|
||||
{
|
||||
_splitter = new Splitter
|
||||
{
|
||||
_track = this,
|
||||
Moved = OnSplitterMoved,
|
||||
Parent = Curve,
|
||||
};
|
||||
}
|
||||
var splitterHeight = 5.0f;
|
||||
_splitter.Bounds = new Rectangle(0, Curve.Height - splitterHeight, Curve.Width, splitterHeight);
|
||||
_splitter.Bounds = new Rectangle(0, Curve.Height - Splitter.DefaultHeight, Curve.Width, Splitter.DefaultHeight);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSplitterMoved(Float2 location)
|
||||
{
|
||||
var height = Mathf.Clamp(PointToParent(location).Y, 40.0f, 1000.0f);
|
||||
if (!Mathf.NearEqual(height, _expandedHeight))
|
||||
{
|
||||
Height = _expandedHeight = height;
|
||||
Timeline.ArrangeTracks();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user