public void Load(BspSegment splitter, HashSet <BspVertex> collinearVertices) { Debug.Assert(collinearVertices.Count >= 2, "Requires two or more vertices for miniseg generation (the splitter should have contributed two)"); States = new MinisegStates(); foreach (BspVertex vertex in collinearVertices) { double splitterTime = splitter.ToTime(vertex); VertexSplitterTime vertexSplitterTime = new VertexSplitterTime(vertex, splitterTime); States.Vertices.Add(vertexSplitterTime); } States.Vertices.Sort(); }
public void Execute() { Debug.Assert(States.State != MinisegState.Finished, "Trying to do miniseg generation when already finished"); Debug.Assert(States.CurrentVertexListIndex + 1 < States.Vertices.Count, "Overflow of vertex sliding window"); VertexSplitterTime first = States.Vertices[States.CurrentVertexListIndex]; VertexSplitterTime second = States.Vertices[States.CurrentVertexListIndex + 1]; States.CurrentVertexListIndex++; HandleMinisegGeneration(first.Vertex, second.Vertex); bool isDone = (States.CurrentVertexListIndex + 1 >= States.Vertices.Count); States.State = (isDone ? MinisegState.Finished : MinisegState.Working); }