Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
        }