private void CheckWarnings()
        {
            bool IsBoneWeightValid(float weight) => weight == Mathf.Clamp(weight, 0, 1);

            bool isOutOfRange = false;

            foreach (var slider in weightsSliders)
            {
                isOutOfRange |= !IsBoneWeightValid(slider.Value);
            }
            if (isOutOfRange)
            {
                if (customWarningsContainer.Nodes.Count == 0)
                {
                    customWarningsContainer.AddNode(
                        CommonPropertyEditor.CreateWarning(
                            message: "Bone weight should be in the range [0, 1].",
                            validationResult: ValidationResult.Warning));
                }
            }
            else
            {
                customWarningsContainer.Nodes.Clear();
            }
        }
 public BezierHandle(
     int index,
     CommonPropertyEditor <BezierEasing> editor,
     IDataflowProvider <CoalescedValue <BezierEasing> > valueProvider,
     Action <BezierEasing> propertySetter,
     Widget canvas)
 {
     this.index          = index;
     this.editor         = editor;
     this.valueProvider  = valueProvider;
     this.propertySetter = propertySetter;
     this.canvas         = canvas;
     canvas.CompoundPostPresenter.Add(new SyncDelegatePresenter <Widget>(Render));
     canvas.Tasks.Add(DragTask(canvas));
 }
 public EasingEditorPanel(
     CommonPropertyEditor <BezierEasing> editor,
     IDataflowProvider <CoalescedValue <BezierEasing> > valueProvider,
     Action <BezierEasing> propertySetter)
 {
     this.valueProvider = valueProvider;
     canvas             = new Widget {
         MinMaxSize    = new Vector2(160, 120),
         Padding       = new Thickness(6),
         LayoutCell    = new LayoutCell(Alignment.Center),
         HitTestTarget = true
     };
     Widget = new Frame {
         ClipChildren = ClipMethod.ScissorTest,
         Layout       = new StackLayout(),
         Nodes        = { canvas, new Widget() }
     };
     new BezierHandle(0, editor, valueProvider, propertySetter, canvas);
     new BezierHandle(1, editor, valueProvider, propertySetter, canvas);
     canvas.CompoundPostPresenter.Add(new SyncDelegatePresenter <Widget>(RenderSpline));
     canvas.CompoundPostPresenter.Add(new WidgetBoundsPresenter(ColorTheme.Current.Inspector.BorderAroundKeyframeColorbox));
 }