public void SetCheckPriorityWithSnapInfo(SnapInfo si) { if (si.PriorityMatch == SnapInfo.MatchType.X_MATCH) { CheckPriority = Priority.PRIORITY_X; } else if (si.PriorityMatch == SnapInfo.MatchType.Y_MATCH) { CheckPriority = Priority.PRIORITY_Y; } else { CheckPriority = Priority.NONE; } }
SnapInfo ClosestMagnet(double time) { SnapInfo candidate = null; var min = double.MaxValue; foreach (var magnetInfo in m_Magnets) { var m = Math.Abs(magnetInfo.time - time); if (m < min) { candidate = magnetInfo; min = m; } } if (candidate != null && candidate.IsInInfluenceZone(time, m_State)) { return(candidate); } return(null); }
public ZfsSnapshots(string snapshotList) { m_snaps = new Dictionary <string, List <SnapInfo> >(); foreach (string snap in snapshotList.Split('\n')) { string[] parts = snap.Split('\t'); string name = parts[0]; long? size = (parts.Length > 1) ? (long?)parts[1].AsLong() : null; bool noAutoSnap = ((parts.Length > 2) && !string.IsNullOrEmpty(parts[2]) && (parts[2] != "-") && (parts[2] != "no")); var info = new SnapInfo(); info.Name = name; info.Size = size; info.NoAutoSnapshot = noAutoSnap; parts = name.Split(new char[] { '@' }, 2); info.Filesystem = parts[0]; parts = parts[1].Split(new char[] { '-' }, 3); try { info.Date = new DateTime(parts[0].AsInt(), parts[1].AsInt(), parts[2].AsInt()); } catch (FormatException) { // Snapshot name not in the date format. Skip it. continue; } if (!m_snaps.ContainsKey(info.Filesystem)) { m_snaps[info.Filesystem] = new List <SnapInfo>(); } m_snaps[info.Filesystem].Add(info); } }
public void Snap(Vector2 currentMousePosition, EventModifiers modifiers) { var d = m_State.PixelToTime(currentMousePosition.x) - m_GrabbedTime; m_CurrentTimes = m_GrabbedTimes.Translate(d); bool isLeft = m_ManipulateEdges == ManipulateEdges.Left || m_ManipulateEdges == ManipulateEdges.Both; bool isRight = m_ManipulateEdges == ManipulateEdges.Right || m_ManipulateEdges == ManipulateEdges.Both; bool attracted = false; m_SnapEnabled = modifiers == ManipulatorsUtils.actionModifier ? !m_State.edgeSnaps : m_State.edgeSnaps; if (m_SnapEnabled) { SnapInfo leftActiveMagnet = null; SnapInfo rightActiveMagnet = null; if (isLeft) { leftActiveMagnet = ClosestMagnet(m_CurrentTimes.left); } if (isRight) { rightActiveMagnet = ClosestMagnet(m_CurrentTimes.right); } if (leftActiveMagnet != null || rightActiveMagnet != null) { attracted = true; bool leftAttraction = false; if (rightActiveMagnet == null) { // Attracted by a left magnet only. leftAttraction = true; } else { if (leftActiveMagnet != null) { // Attracted by both magnets, choose the closest one. var leftDistance = Math.Abs(leftActiveMagnet.time - m_CurrentTimes.left); var rightDistance = Math.Abs(rightActiveMagnet.time - m_CurrentTimes.right); leftAttraction = leftDistance <= rightDistance; } // else, Attracted by right magnet only } if (leftAttraction) { m_AttractionHandler.OnAttractedEdge(m_Attractable, m_ManipulateEdges, AttractedEdge.Left, leftActiveMagnet.time); } else { m_AttractionHandler.OnAttractedEdge(m_Attractable, m_ManipulateEdges, AttractedEdge.Right, rightActiveMagnet.time); } } } if (!attracted) { var time = isLeft ? m_CurrentTimes.left : m_CurrentTimes.right; time = m_State.SnapToFrameIfRequired(time); m_AttractionHandler.OnAttractedEdge(m_Attractable, m_ManipulateEdges, AttractedEdge.None, time); } }
public static string Delete(SnapInfo snapshot) { return(Zfs.DestroySnapshot(snapshot.Name)); }