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(); }
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(); }
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(); }
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(); }
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(); }
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; }