// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. using FlaxEditor.GUI; using FlaxEngine; namespace FlaxEditor.CustomEditors.Dedicated { /// /// Custom editor for . /// class BezierCurveObjectEditor : CustomEditor where T : struct { private bool _isSetting; private BezierCurveEditor _curve; /// public override void Initialize(LayoutElementsContainer layout) { var item = layout.CustomContainer>(); _curve = item.CustomControl; _curve.Height = 120.0f; _curve.Edited += OnCurveEdited; } private void OnCurveEdited() { if (_isSetting) return; _isSetting = true; SetValue(new BezierCurve(_curve.Keyframes)); _isSetting = false; } /// public override void Refresh() { base.Refresh(); var value = (BezierCurve)Values[0]; if (value != null && !_curve.IsUserEditing && !Utils.ArraysEqual(value.Keyframes, _curve.Keyframes)) { _isSetting = true; _curve.SetKeyframes(value.Keyframes); _isSetting = false; } } /// protected override void Deinitialize() { _curve = null; base.Deinitialize(); } } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class IntBezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class FloatBezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class Vector2BezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class Vector3BezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class Vector4BezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class Float2BezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class Float3BezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class Float4BezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class QuaternionBezierCurveObjectEditor : BezierCurveObjectEditor { } [CustomEditor(typeof(BezierCurve)), DefaultEditor] sealed class ColorBezierCurveObjectEditor : BezierCurveObjectEditor { } /// /// Custom editor for . /// class LinearCurveObjectEditor : CustomEditor where T : struct { private bool _isSetting; private LinearCurveEditor _curve; /// public override void Initialize(LayoutElementsContainer layout) { var item = layout.CustomContainer>(); _curve = item.CustomControl; _curve.Height = 120.0f; _curve.Edited += OnCurveEdited; } private void OnCurveEdited() { if (_isSetting) return; _isSetting = true; SetValue(new LinearCurve(_curve.Keyframes)); _isSetting = false; } /// public override void Refresh() { base.Refresh(); var value = (LinearCurve)Values[0]; if (value != null && !_curve.IsUserEditing && !Utils.ArraysEqual(value.Keyframes, _curve.Keyframes)) { _isSetting = true; _curve.SetKeyframes(value.Keyframes); _isSetting = false; } } /// protected override void Deinitialize() { _curve = null; base.Deinitialize(); } } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class IntLinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class FloatLinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class Vector2LinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class Vector3LinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class Vector4LinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class Float2LinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class Float3LinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class Float4LinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class QuaternionLinearCurveObjectEditor : LinearCurveObjectEditor { } [CustomEditor(typeof(LinearCurve)), DefaultEditor] sealed class ColorLinearCurveObjectEditor : LinearCurveObjectEditor { } }