You're breathtaking!
This commit is contained in:
177
Source/Editor/CustomEditors/Dedicated/CurveObjectEditor.cs
Normal file
177
Source/Editor/CustomEditors/Dedicated/CurveObjectEditor.cs
Normal file
@@ -0,0 +1,177 @@
|
||||
// Copyright (c) 2012-2020 Wojciech Figat. All rights reserved.
|
||||
|
||||
using FlaxEditor.GUI;
|
||||
using FlaxEngine;
|
||||
|
||||
namespace FlaxEditor.CustomEditors.Dedicated
|
||||
{
|
||||
/// <summary>
|
||||
/// Custom editor for <see cref="BezierCurve{T}"/>.
|
||||
/// </summary>
|
||||
class BezierCurveObjectEditor<T> : CustomEditor where T : struct
|
||||
{
|
||||
private bool _isSetting;
|
||||
private BezierCurveEditor<T> _curve;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Initialize(LayoutElementsContainer layout)
|
||||
{
|
||||
var item = layout.CustomContainer<BezierCurveEditor<T>>();
|
||||
_curve = item.CustomControl;
|
||||
_curve.Height = 120.0f;
|
||||
_curve.Edited += OnCurveEdited;
|
||||
}
|
||||
|
||||
private void OnCurveEdited()
|
||||
{
|
||||
if (_isSetting)
|
||||
return;
|
||||
|
||||
_isSetting = true;
|
||||
SetValue(new BezierCurve<T>(_curve.Keyframes));
|
||||
_isSetting = false;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Refresh()
|
||||
{
|
||||
base.Refresh();
|
||||
|
||||
var value = (BezierCurve<T>)Values[0];
|
||||
if (value != null && !_curve.IsUserEditing && !Utils.ArraysEqual(value.Keyframes, _curve.Keyframes))
|
||||
{
|
||||
_isSetting = true;
|
||||
_curve.SetKeyframes(value.Keyframes);
|
||||
_isSetting = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Deinitialize()
|
||||
{
|
||||
_curve = null;
|
||||
|
||||
base.Deinitialize();
|
||||
}
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(BezierCurve<int>)), DefaultEditor]
|
||||
sealed class IntBezierCurveObjectEditor : BezierCurveObjectEditor<int>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(BezierCurve<float>)), DefaultEditor]
|
||||
sealed class FloatBezierCurveObjectEditor : BezierCurveObjectEditor<float>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(BezierCurve<Vector2>)), DefaultEditor]
|
||||
sealed class Vector2BezierCurveObjectEditor : BezierCurveObjectEditor<Vector2>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(BezierCurve<Vector3>)), DefaultEditor]
|
||||
sealed class Vector3BezierCurveObjectEditor : BezierCurveObjectEditor<Vector3>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(BezierCurve<Vector4>)), DefaultEditor]
|
||||
sealed class Vector4BezierCurveObjectEditor : BezierCurveObjectEditor<Vector4>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(BezierCurve<Quaternion>)), DefaultEditor]
|
||||
sealed class QuaternionBezierCurveObjectEditor : BezierCurveObjectEditor<Quaternion>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(BezierCurve<Color>)), DefaultEditor]
|
||||
sealed class ColorBezierCurveObjectEditor : BezierCurveObjectEditor<Color>
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Custom editor for <see cref="LinearCurve{T}"/>.
|
||||
/// </summary>
|
||||
class LinearCurveObjectEditor<T> : CustomEditor where T : struct
|
||||
{
|
||||
private bool _isSetting;
|
||||
private LinearCurveEditor<T> _curve;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Initialize(LayoutElementsContainer layout)
|
||||
{
|
||||
var item = layout.CustomContainer<LinearCurveEditor<T>>();
|
||||
_curve = item.CustomControl;
|
||||
_curve.Height = 120.0f;
|
||||
_curve.Edited += OnCurveEdited;
|
||||
}
|
||||
|
||||
private void OnCurveEdited()
|
||||
{
|
||||
if (_isSetting)
|
||||
return;
|
||||
|
||||
_isSetting = true;
|
||||
SetValue(new LinearCurve<T>(_curve.Keyframes));
|
||||
_isSetting = false;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Refresh()
|
||||
{
|
||||
base.Refresh();
|
||||
|
||||
var value = (LinearCurve<T>)Values[0];
|
||||
if (value != null && !_curve.IsUserEditing && !Utils.ArraysEqual(value.Keyframes, _curve.Keyframes))
|
||||
{
|
||||
_isSetting = true;
|
||||
_curve.SetKeyframes(value.Keyframes);
|
||||
_isSetting = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Deinitialize()
|
||||
{
|
||||
_curve = null;
|
||||
|
||||
base.Deinitialize();
|
||||
}
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(LinearCurve<int>)), DefaultEditor]
|
||||
sealed class IntLinearCurveObjectEditor : LinearCurveObjectEditor<int>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(LinearCurve<float>)), DefaultEditor]
|
||||
sealed class FloatLinearCurveObjectEditor : LinearCurveObjectEditor<float>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(LinearCurve<Vector2>)), DefaultEditor]
|
||||
sealed class Vector2LinearCurveObjectEditor : LinearCurveObjectEditor<Vector2>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(LinearCurve<Vector3>)), DefaultEditor]
|
||||
sealed class Vector3LinearCurveObjectEditor : LinearCurveObjectEditor<Vector3>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(LinearCurve<Vector4>)), DefaultEditor]
|
||||
sealed class Vector4LinearCurveObjectEditor : LinearCurveObjectEditor<Vector4>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(LinearCurve<Quaternion>)), DefaultEditor]
|
||||
sealed class QuaternionLinearCurveObjectEditor : LinearCurveObjectEditor<Quaternion>
|
||||
{
|
||||
}
|
||||
|
||||
[CustomEditor(typeof(LinearCurve<Color>)), DefaultEditor]
|
||||
sealed class ColorLinearCurveObjectEditor : LinearCurveObjectEditor<Color>
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user