public void Update(DXViewportView MainDXViewportView)
            {
                Color4 preC = Color4.White;

                for (int i = 0; i < colors.Count; i++)
                {
                    Color4 c = colors[i];
                    colors[i] = WColor.GetColor(i, preC);
                    preC      = colors[i];
                }

                if (material == null)
                {
                    return;
                }

                material.PositionColors = colors.ToArray();
                material.Update();

                var sceneNode = MainDXViewportView.GetSceneNodeForWpfObject(node.GetGeometryModel3D());

                if (sceneNode != null)
                {
                    sceneNode.NotifySceneNodeChange(SceneNode.SceneNodeDirtyFlags.MaterialChanged);
                }
            }
        public LinesSelector()
        {
            InitializeComponent();
            WColor.SetColor(new Color4(0, 0, 1, 1),
                            new Color4(1, 0, 0, 1), new Color4(1, 1, 0, 1));

            _lineSelectorData = new List <LineSelectorData>();

            for (int i = 0; i < 10; i++)
            {
                CreateColoredPolyLine(20000, i);
            }

            _isCameraChanged       = true; // When true, the CalculateScreenSpacePositions method is called before calculating line distances
            Camera1.CameraChanged += delegate(object sender, CameraChangedRoutedEventArgs e)
            {
                _isCameraChanged = true;
                UpdateClosestLine();
            };

            this.MouseMove += delegate(object sender, MouseEventArgs e)
            {
                _lastMousePosition = e.GetPosition(MainBorder);
                UpdateClosestLine();
            };

            // Cleanup
            this.Unloaded += delegate(object sender, RoutedEventArgs args)
            {
                //if (lineMaterial != null)
                //{
                //    lineMaterial.Dispose();
                //    lineMaterial = null;
                //}

                MainDXViewportView.Dispose();
            };

            startStatusBarTimer();
        }