private void Select(Vector2Int min, Vector2Int max) { Dopesheet.DsAnimationClip clip = Clip; int rows = clip.RowsCount; int cols = clip.ColsCount; max.x = Mathf.Min(max.x, cols - 1); min.x = Mathf.Max(min.x, 0); List <Dopesheet.DsKeyframe> selectKeyframes = new List <Dopesheet.DsKeyframe>(); for (int i = min.y; i <= max.y; i++) { for (int j = min.x; j <= max.x; j++) { if (!clip.IsSelected(i, j)) { Dopesheet.DsKeyframe kf = clip.GetKeyframe(i, j); if (kf != null) { selectKeyframes.Add(kf); } } } } clip.SelectKeyframes(selectKeyframes.ToArray()); m_renderGraphics = true; }
private void OnTimelineDrop() { Dopesheet.DsAnimationClip clip = Clip; Dopesheet.DsKeyframe[] selectedKeyframes = clip.SelectedKeyframes.ToArray(); Dictionary <int, Dopesheet.DsKeyframe> selectedKfDictionary = new Dictionary <int, Dopesheet.DsKeyframe>(); for (int i = 0; i < selectedKeyframes.Length; ++i) { Dopesheet.DsKeyframe keyframe = selectedKeyframes[i]; if (keyframe.Col < 0) { keyframe.Col = 0; } if (keyframe.Col >= m_pointer.ColumnsCount) { keyframe.Col = m_pointer.ColumnsCount - 1; } int key = keyframe.Row.Index * clip.ColsCount + keyframe.Col; if (!selectedKfDictionary.ContainsKey(key)) { selectedKfDictionary.Add(key, keyframe); } } clip.RemoveKeyframes(false, selectedKeyframes); clip.ClearSelectedKeyframes(); clip.AddKeyframes(selectedKfDictionary.Values.ToArray()); clip.SelectKeyframes(selectedKfDictionary.Values.ToArray()); clip.Refresh(true, true, true); m_renderGraphics = true; }