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(); }