예제 #1
0
        public override async void Execute()
        {
            RTAnimationCurve rtAnimationCurve = CurveService.GetAnimationCurve();

            rtAnimationCurve.ShowCurveEditor();
            rtAnimationCurve.NewWindow();

            AnimationCurve animationCurve = BrushService.GetBrushWidthCurve();

            rtAnimationCurve.Add(ref animationCurve);

            rtAnimationCurve.SetGradXRange(0, 1f);
            rtAnimationCurve.SetGradYRange(0, 0.5f);

            await TaskEx.WaitWhile(CurveService.IsEditorOpen);

            BrushService.SetBrushWidthCurve(animationCurve);
        }
예제 #2
0
        public override async void Execute()
        {
            RTAnimationCurve rtAnimationCurve = CurveService.GetAnimationCurve();

            rtAnimationCurve.ShowCurveEditor();
            rtAnimationCurve.NewWindow();
            AnimationCurve animationCurve = AnimationCurve.Constant(0, 1, 0.5f);

            switch (CurveType)
            {
            case CurveType.Animation:
                animationCurve = LineModel.KochLineProperty.AnimationCurve;
                break;

            case CurveType.Width:
                animationCurve = LineModel.WidthCurve;
                break;

            case CurveType.Lerp:
                animationCurve = LineModel.PhyllotaxisProperty.LerpInterpolationCurve;
                break;

            case CurveType.Scale:
                animationCurve = LineModel.PhyllotaxisProperty.ScaleInterpolationCurve;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            rtAnimationCurve.Add(ref animationCurve);

            switch (CurveType)
            {
            case CurveType.Animation:
            case CurveType.Lerp:
            case CurveType.Scale:
                rtAnimationCurve.SetGradYRange(0, 1);
                break;

            case CurveType.Width:
                rtAnimationCurve.SetGradYRange(0, 0.5f);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            rtAnimationCurve.SetGradXRange(0, 1);

            await TaskEx.WaitWhile(CurveService.IsEditorOpen);

            switch (CurveType)
            {
            case CurveType.Animation:
                LineModel.KochLineProperty.AnimationCurve = animationCurve;
                break;

            case CurveType.Width:
                LineModel.WidthCurve = animationCurve;
                break;

            case CurveType.Lerp:
                LineModel.PhyllotaxisProperty.LerpInterpolationCurve = animationCurve;
                break;

            case CurveType.Scale:
                LineModel.PhyllotaxisProperty.ScaleInterpolationCurve = animationCurve;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            UpdateLineSignal.Dispatch(LineModel);
        }