Ejemplo n.º 1
0
        private void XTimeClip_Thumb_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
        {
            var vm = DataContext as TimeClipViewModel;

            if (vm == null)
            {
                return;
            }

            _mousePositionAtDragStart = Mouse.GetPosition(_visualParent);
            _startTimeBeforeDrag      = vm.StartTime;
            _endTimeBeforeDrag        = vm.EndTime;
            _sourceInTimeBeforeDrag   = vm.SourceStartTime;
            _sourceOutTimeBeforeDrag  = vm.SourceEndTime;
            _layerBeforeDrag          = vm.Layer;
            _exceededDragThreshold    = false;
            _beingDragged             = true;

            _commandsForInputs = new Dictionary <OperatorPart, ICommand>();
            var commandList = new List <ICommand>();

            commandList.Add(BuildManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_STARTTIME_PARAM_INDEX], (float)vm.StartTime));
            commandList.Add(BuildManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_ENDTIME_PARAM_INDEX], (float)vm.EndTime));
            commandList.Add(BuildManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_SOURCEIN_PARAM_INDEX], (float)vm.SourceStartTime));
            commandList.Add(BuildManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_SOURCEOUT_PARAM_INDEX], (float)vm.SourceEndTime));
            commandList.Add(BuildManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_SOURCEOUT_LAYER_ID], (float)vm.Layer));
            _updateValueGroupMacroCommand = new MacroCommand("Update timeclip parameters", commandList);
            _updateValueGroupMacroCommand.Do();
        }
Ejemplo n.º 2
0
 public void ManipulateColor(float r, float g, float b, float a)
 {
     UpdateManipulationCommand(_rFloatEdit, r);
     UpdateManipulationCommand(_gFloatEdit, g);
     UpdateManipulationCommand(_bFloatEdit, b);
     UpdateManipulationCommand(_aFloatEdit, a);
     _updateColorsMacroCommand.Do();
 }
Ejemplo n.º 3
0
        public void CreateAndExecuteColorManipulationCommand(float r, float g, float b, float a)
        {
            _commandsForControls = new Dictionary <FloatParameterControl, ICommand>();

            var commandList = new List <ICommand>();

            commandList.Add(BuildManipulationCommand(_rFloatEdit, r));
            commandList.Add(BuildManipulationCommand(_gFloatEdit, g));
            commandList.Add(BuildManipulationCommand(_bFloatEdit, b));
            commandList.Add(BuildManipulationCommand(_aFloatEdit, a));
            _updateColorsMacroCommand = new MacroCommand("Update color parameters", commandList);
            _updateColorsMacroCommand.Do();
        }
Ejemplo n.º 4
0
        public void StartManimpulation()
        {
            _commandsForInputs         = new Dictionary <OperatorPart, ICommand>();
            _parameterValuesBeforeDrag = new Dictionary <GizmoParameterIds, float>();

            var commandList = new List <ICommand>();

            foreach (var pair in RelavantGizmoParameters)
            {
                GizmoParameter parameter = pair.Value;
                _parameterValuesBeforeDrag[pair.Key] = parameter.Value;
                commandList.Add(BuildManipulationCommand(parameter.Input, parameter.Value));
            }

            _updateValueGroupMacroCommand = new MacroCommand("Update Transform Gizmo", commandList);
            _updateValueGroupMacroCommand.Do();
        }
Ejemplo n.º 5
0
        public void StartManipulationHandler(object sender, EventArgs e)
        {
            _keepValuesBeforeManipulation.Clear();
            _commandsForControls = new Dictionary <FloatParameterControl, ICommand>();

            App.Current.MainWindow.CompositionView.XTimeView.XAnimationCurveEditor.DisableCurveUpdatesOnModifiedEvent = true;

            var commandList = new List <ICommand>();

            foreach (var control in _parameterControls)
            {
                var v = control.Value;
                commandList.Add(BuildManipulationCommand(control, v));
                _keepValuesBeforeManipulation.Add(v);
            }

            _updateValueGroupMacroCommand = new MacroCommand("Update parameters group", commandList);
            _updateValueGroupMacroCommand.Do();
        }
Ejemplo n.º 6
0
        private void XTimeClip_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
        {
            var vm = DataContext as TimeClipViewModel;

            if (vm == null)
            {
                return;
            }

            var horizontalDelta = (float)(Mouse.GetPosition(_visualParent).X - _mousePositionAtDragStart.X);
            var verticalDelta   = (float)(Mouse.GetPosition(_visualParent).Y - _mousePositionAtDragStart.Y);
            var timeDelta       = TV.XToTime(horizontalDelta) - TV.XToTime(0);

            if (!_exceededDragThreshold &&
                Math.Abs(horizontalDelta) < SystemParameters.MinimumHorizontalDragDistance &&
                Math.Abs(verticalDelta) < SystemParameters.MinimumVerticalDragDistance)
            {
                return;
            }

            _exceededDragThreshold = true;

            // Drag inside
            if (Keyboard.Modifiers == ModifierKeys.Control)
            {
                UpdateManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_SOURCEIN_PARAM_INDEX], (float)(_sourceInTimeBeforeDrag + timeDelta));
                UpdateManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_SOURCEOUT_PARAM_INDEX], (float)(_sourceOutTimeBeforeDrag + timeDelta));
            }
            else
            {
                var newStartTime = _startTimeBeforeDrag + timeDelta;
                var newEndTime   = _startTimeBeforeDrag + timeDelta;

                if (!Keyboard.Modifiers.HasFlag(ModifierKeys.Shift))
                {
                    var snapStartTime = TV.TimeSnapHandler.CheckForSnapping(newStartTime);
                    if (!Double.IsNaN(snapStartTime))
                    {
                        timeDelta += snapStartTime - newStartTime;
                    }
                    else
                    {
                        var snapEndTime = TV.TimeSnapHandler.CheckForSnapping(newEndTime);
                        if (!Double.IsNaN(snapEndTime))
                        {
                            timeDelta += snapEndTime - newEndTime;
                        }
                    }
                }

                UpdateManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_STARTTIME_PARAM_INDEX], (float)(_startTimeBeforeDrag + timeDelta));
                UpdateManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_ENDTIME_PARAM_INDEX], (float)(_endTimeBeforeDrag + timeDelta));

                const int MAX_LAYER_COUNT = 20;

                var newLayer = (int)(_layerBeforeDrag + verticalDelta / 21);
                newLayer = (int)MathUtil.Clamp(newLayer, 0, MAX_LAYER_COUNT);

                UpdateManipulationCommand(vm.OperatorWidget.Operator.Inputs[HACK_TIMECLIP_SOURCEOUT_LAYER_ID], newLayer);
            }
            _updateValueGroupMacroCommand.Do();

            App.Current.UpdateRequiredAfterUserInteraction = true;
            e.Handled = true;
        }