public GradientControlPointWidget(GradientControlPoint controlPoint) { ControlPoint = controlPoint; Pivot = new Vector2(0.5f, 0); CompoundPresenter.Add(new SyncDelegatePresenter <Widget>(Render)); HitTestTarget = true; chessTexture = PrepareChessTexture(Color4.White, Color4.Black); }
private void SelectPoint(GradientControlPoint point) { colorEditor.Tasks.Clear(); positionEditor.Tasks.Clear(); selectedPointColorProperty = new Property <Color4>(point, nameof(GradientControlPoint.Color)); selectedPointPositionProperty = new Property <float>(point, nameof(GradientControlPoint.Position)); currentColorString = selectedPointColorProperty.DistinctUntilChanged().Select(i => i.ToString(Color4.StringPresentation.Dec)); colorEditor.Tasks.Add(currentColorString.Consume(v => colorEditor.Text = v)); colorPanel.Color = selectedPointColorProperty.GetValue(); colorEditor.Tasks.Add(selectedPointColorProperty.DistinctUntilChanged().Consume(v => { if (colorPanel.Color != v) { colorPanel.Color = v; } })); positionEditor.Tasks.Add(selectedPointPositionProperty.DistinctUntilChanged().Consume(v => positionEditor.Text = v.ToString())); }