Example #1
0
            public static void PlotRP2Lines(DisposableIterator rp2_lines_iterator,
                                            UnityEngine.Color colour,
                                            Style style)
            {
                UnityEngine.GL.Color(colour);

                // First evaluate the total size of the lines.
                int size = 0;

                for (;
                     !rp2_lines_iterator.IteratorAtEnd();
                     rp2_lines_iterator.IteratorIncrement())
                {
                    using (DisposableIterator rp2_line_iterator =
                               rp2_lines_iterator.IteratorGetRP2LinesIterator()) {
                        size += rp2_line_iterator.IteratorSize();
                    }
                }

                // Reset the iterator and do the actual plotting.
                rp2_lines_iterator.IteratorReset();
                int index = 0;

                for (;
                     !rp2_lines_iterator.IteratorAtEnd();
                     rp2_lines_iterator.IteratorIncrement())
                {
                    using (DisposableIterator rp2_line_iterator =
                               rp2_lines_iterator.IteratorGetRP2LinesIterator()) {
                        XY?previous_rp2_point = null;
                        for (;
                             !rp2_line_iterator.IteratorAtEnd();
                             rp2_line_iterator.IteratorIncrement())
                        {
                            XY current_rp2_point = ToScreen(
                                rp2_line_iterator.IteratorGetRP2LineXY());
                            if (previous_rp2_point.HasValue)
                            {
                                if (style == Style.Faded)
                                {
                                    colour.a = 1 - (float)(4 * index) / (float)(5 * size);
                                    UnityEngine.GL.Color(colour);
                                }
                                if (style != Style.Dashed || index % 2 == 1)
                                {
                                    UnityEngine.GL.Vertex3((float)previous_rp2_point.Value.x,
                                                           (float)previous_rp2_point.Value.y,
                                                           0);
                                    UnityEngine.GL.Vertex3((float)current_rp2_point.x,
                                                           (float)current_rp2_point.y,
                                                           0);
                                }
                            }
                            previous_rp2_point = current_rp2_point;
                            ++index;
                        }
                    }
                }
            }