protected void UpdateFiltered() { FilteredNode = Filter(RootNode, n => n is RenderableList || (_filter?.Filter(n.Name) ?? n.Name?.IndexOf("ROAD", StringComparison.Ordinal) == 1)); FilteredNode.UpdateBoundingBox(); TrianglesCount = FilteredNode.BoundingBox.HasValue ? FilteredNode.GetTrianglesCount() : 0; IsDirty = true; }
private void filterBtn_OnClick(object sender, EventArgs e) { SearchCriteriaForm criteraForm = new SearchCriteriaForm(false); if (filteredNodes.Count > 0) { filterBtn.Enabled = false; searchBtn.Enabled = false; resultTree.BeginUpdate(); unfilterNodes(); resultTree.EndUpdate(); filterBtn.Enabled = true; searchBtn.Enabled = true; filterBtn.Text = "Filter"; } else { if (criteraForm.ShowDialog(this) == DialogResult.OK) { filterBtn.Enabled = false; searchBtn.Enabled = false; resultTree.BeginUpdate(); if (!filterNode(resultTree.Nodes[0], criteraForm.GetSearchCriteria())) { foreach (TreeNode childNode in resultTree.Nodes[0].Nodes) { FilteredNode filteredNode = new FilteredNode(childNode, resultTree.Nodes[0]); filteredNodes.Add(filteredNode); } resultTree.Nodes[0].Nodes.Clear(); } resultTree.EndUpdate(); filterBtn.Enabled = true; searchBtn.Enabled = true; if (filteredNodes.Count > 0) { filterBtn.Text = "Unfilter"; } } } }
private bool filterNode(TreeNode rootNode, SearchCriteria criteria) { bool nodeMatch = rootNode.Tag == null ? false : rootNode.CompareSearchCriteria(criteria); if (rootNode.Nodes.Count > 0) { List <TreeNode> failedNodes = new List <TreeNode>(); foreach (TreeNode childNode in rootNode.Nodes) { if (filterNode(childNode, criteria)) { nodeMatch = true; } else { failedNodes.Add(childNode); } } if (nodeMatch && failedNodes.Count > 0) { foreach (TreeNode failedNode in failedNodes) { if (failedNode.Tag != null) { FilteredNode filteredNode = new FilteredNode(failedNode, rootNode); filteredNodes.Add(filteredNode); rootNode.Nodes.Remove(failedNode); } } } } return(nodeMatch); }
protected override void DrawOverride() { EnsureAiLaneAllRight(); Camera.UpdateViewMatrix(); // just in case DeviceContext.ClearRenderTargetView(_buffer0.TargetView, Color.Black); DeviceContext.ClearRenderTargetView(_buffer1.TargetView, Color.Black); DeviceContext.ClearRenderTargetView(RenderTargetView, Color.Transparent); // render to buffer-0 DeviceContext.OutputMerger.SetTargets(_buffer0.TargetView); DeviceContext.OutputMerger.BlendState = null; DeviceContext.Rasterizer.State = DeviceContextHolder.States.DoubleSidedState; FilteredNode.Draw(DeviceContextHolder, Camera, SpecialRenderMode.Simple); DeviceContext.Rasterizer.State = null; // blur to buffer-0 using buffer-1 as temporary DeviceContextHolder.GetHelper <TrackMapBlurRenderHelper>().Blur(DeviceContextHolder, _buffer0, _buffer1); // outline map and add inset shadow to buffer-1 (alpha is in green channel for optional FXAA) DeviceContextHolder.GetHelper <TrackMapRenderHelper>().Draw(DeviceContextHolder, _buffer0.View, _buffer1.TargetView); // move alpha from green channel to alpha-channel if (UseFxaa) { // applying FXAA first DeviceContextHolder.GetHelper <FxaaHelper>().Draw(DeviceContextHolder, _buffer1.View, _buffer0.TargetView); DeviceContextHolder.GetHelper <TrackMapRenderHelper>().Final(DeviceContextHolder, _buffer0.View, RenderTargetView, !ShotMode); } else { // directly DeviceContextHolder.GetHelper <TrackMapRenderHelper>().Final(DeviceContextHolder, _buffer1.View, RenderTargetView, !ShotMode); } }