public void RemoveCurves(IEnumerable <EditorCurveBinding> bindings) { m_DataSource.RemoveCurves(bindings); m_BindingHierarchy.RefreshTree(); TimelineWindow.instance.state.CalculateRowRects(); m_LastClipVersion = m_DataSource.GetClipVersion(); }
internal void RemovePropertiesByIds(IEnumerable <int> ids, bool removeCompleteGroup = true) { List <EditorCurveBinding> bindingsToRemove = new List <EditorCurveBinding>(); foreach (int selectedId in ids) { BindingTreeViewDataSource bindingTree = m_BindingHierarchy.treeViewController.data as BindingTreeViewDataSource; CurveTreeViewNode node = bindingTree.FindItem(selectedId) as CurveTreeViewNode; if (node == null) { continue; } foreach (EditorCurveBinding editorCurveBinding in node.bindings) { if (bindingsToRemove.Contains(editorCurveBinding)) { continue; } CurveTreeViewNode currentNode = node; do { //check if property is part of a group bool isRoot = currentNode.depth == 0; bool isGroup = currentNode.displayName == BindingTreeViewDataSource.GroupName(editorCurveBinding); if (!isRoot && !isGroup && removeCompleteGroup) { currentNode = currentNode.parent as CurveTreeViewNode; } else { if (!AnimationWindowUtility.ForceGrouping(editorCurveBinding)) { bindingsToRemove.Add(editorCurveBinding); } else //Group to remove { bindingsToRemove.AddRange(currentNode.bindings); } break; } }while (currentNode != null); } } RemoveProperty(bindingsToRemove); m_BindingHierarchy.RefreshTree(); TimelineWindow.instance.state.CalculateRowRects(); }
void UpdateCurveEditorIfNeeded(WindowState state) { if ((Event.current.type != EventType.Layout) || (m_DataSource == null) || (m_BindingHierarchy == null) || (m_DataSource.animationClip == null)) { return; } AnimationClipCurveInfo curveInfo = AnimationClipCurveCache.Instance.GetCurveInfo(m_DataSource.animationClip); int version = curveInfo.version; if (version != m_LastClipVersion) { // tree has changed if (m_LastCurveCount != curveInfo.curves.Length) { m_BindingHierarchy.RefreshTree(); m_LastCurveCount = curveInfo.curves.Length; } else { // update just the curves m_BindingHierarchy.RefreshCurves(); } // auto frame the clip only at first update if (m_LastClipVersion == -1) { FrameClip(); } m_LastClipVersion = version; } if (state.timeInFrames) { m_CurveEditor.state = new FrameFormatCurveEditorState(); } else { m_CurveEditor.state = new UnformattedCurveEditorState(); } m_CurveEditor.invSnap = state.referenceSequence.frameRate; }