コード例 #1
0
 public SelectCommand(EditCurve curve, EditCurveKeySelection newSelection,
                                         EditCurveKeySelection oldSelection)
 {
     this.curve = curve;
     this.oldSelection = oldSelection;
     this.newSelection = newSelection;
 }
コード例 #2
0
        public EditCurveKeyAddRemoveCommand(EditCurve curve, EditCurveKey addKey,
                                                    EditCurveKeySelection selection)
        {
            this.curve = curve;
            this.addKey = true;
            this.selection = selection.Clone();

            keys = new List<EditCurveKey>();
            keys.Add(addKey.Clone());
        }
コード例 #3
0
        /// <summary>
        /// Select keys and key tangents.
        /// </summary>
        /// <param name="selectRegion">Selection region in unit coordinate.</param>
        /// <param name="tangentScale">Tangent scale in unit coordinate.</param>
        /// <param name="keyView"></param>
        /// <param name="tangentView"></param>
        /// <param name="toggleSelection"></param>
        /// <param name="singleSelection"></param>
        public void Select(BoundingBox selectRegion, Vector2 tangentScale,
                            EditCurveView keyView, EditCurveView tangentView,
                                bool toggleSelection, bool singleSelect)
        {
            if (!Editable) return;

            EditCurveKeySelection newSelection = new EditCurveKeySelection();

            // Check Intersection of Keys and Tangents.
            if (keyView != EditCurveView.Never)
            {
                ICollection<EditCurveKey> targetKeys =
                        (keyView == EditCurveView.Always) ?
                        (ICollection<EditCurveKey>)keys :
                        (ICollection<EditCurveKey>)selectedKeys.Values;
                newSelection.SelectKeys(targetKeys, selectRegion, singleSelect);
            }

            // Check Tangents if any keys are not selected.
            if (newSelection.Count == 0 && tangentView != EditCurveView.Never)
            {
                ICollection<EditCurveKey> targetKeys
                    = (tangentView == EditCurveView.Always) ?
                        (ICollection<EditCurveKey>)keys :
                        (ICollection<EditCurveKey>)selectedKeys.Values;

                newSelection.SelectTangents(targetKeys, selectRegion, tangentScale,
                                                singleSelect);
            }

            if (toggleSelection)
                newSelection = EditCurveKeySelection.ToggleSelection(
                                                    selection, newSelection);

            ApplySelection(newSelection, true);
        }
コード例 #4
0
        /// <summary>
        /// Apply key selection.
        /// </summary>
        /// <param name="newSelection"></param>
        /// <param name="generateCommand"></param>
        public void ApplySelection(EditCurveKeySelection newSelection,
                                    bool generateCommand)
        {
            // Re-create selected keys and store selection information from
            // new selection.
            selectedKeys.Clear();;
            foreach (long id in newSelection.Keys)
            {
                EditCurveKey key = keys.GetValue(id);
                key.Selection = newSelection[id];
                selectedKeys.Add(key.Id, key);
            }

            // Clear de-selected keys selection information.
            foreach (long id in selection.Keys)
            {
                if (!newSelection.ContainsKey(id))
                {
                    EditCurveKey key;
                    if ( keys.TryGetValue(id, out key))
                        key.Selection = EditCurveSelections.None;
                }
            }

            // Invoke selection change event.
            if ( generateCommand == true && !newSelection.Equals(selection) &&
                commandHistory != null)
                commandHistory.Add(new SelectCommand(this, newSelection, selection));

            // Update selection.
            selection = newSelection;
        }