// Mode starts public override void OnEngage() { Cursor.Current = Cursors.WaitCursor; base.OnEngage(); //mxd bool haveNodes = General.Map.LumpExists("NODES"); bool haveZnodes = General.Map.LumpExists("ZNODES"); bool haveSectors = General.Map.LumpExists("SSECTORS"); bool haveSegs = General.Map.LumpExists("SEGS"); bool haveVerts = General.Map.LumpExists("VERTEXES"); if (General.Map.IsChanged || !(haveZnodes || (haveNodes || haveSectors || haveSegs || haveVerts))) { // We need to build the nodes! if (!General.Map.RebuildNodes(General.Map.ConfigSettings.NodebuilderSave, true)) { return; } //mxd. Update nodes availability haveNodes = General.Map.LumpExists("NODES"); haveZnodes = General.Map.LumpExists("ZNODES"); haveSectors = General.Map.LumpExists("SSECTORS"); haveSegs = General.Map.LumpExists("SEGS"); haveVerts = General.Map.LumpExists("VERTEXES"); } //mxd if (haveZnodes) { General.Interface.DisplayStatus(StatusType.Busy, "Reading map nodes..."); if (!LoadZNodes()) { General.Interface.DisplayStatus(StatusType.Warning, "Failed to read map nodes."); General.Editing.CancelMode(); return; } } else { if (!haveNodes) { MessageBox.Show("Unable to find the NODES lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } if (!haveSectors) { MessageBox.Show("Unable to find the SSECTORS lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } if (!haveSegs) { MessageBox.Show("Unable to find the SEGS lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } if (!haveVerts) { MessageBox.Show("Unable to find the VERTEXES lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } General.Interface.DisplayStatus(StatusType.Busy, "Reading map nodes..."); if (!LoadClassicStructures()) { General.Interface.DisplayStatus(StatusType.Warning, "Failed to read map nodes."); General.Editing.CancelMode(); return; } } // Setup presentation CustomPresentation presentation = new CustomPresentation(); presentation.AddLayer(new PresentLayer(RendererLayer.Background, BlendingMode.Mask, General.Settings.BackgroundAlpha)); presentation.AddLayer(new PresentLayer(RendererLayer.Grid, BlendingMode.Mask)); presentation.AddLayer(new PresentLayer(RendererLayer.Overlay, BlendingMode.Alpha, 1f, true)); presentation.AddLayer(new PresentLayer(RendererLayer.Geometry, BlendingMode.Alpha, 1f, true)); renderer.SetPresentation(presentation); General.Interface.DisplayStatus(StatusType.Busy, "Building subsectors..."); RecursiveBuildSubsectorPoly(nodes.Length - 1, new Stack <Split>(nodes.Length / 2 + 1)); // Load and display dialog window form = new NodesForm(this); form.Text += " (" + nodesformat + " format)"; form.Show((Form)General.Interface); Cursor.Current = Cursors.Default; General.Interface.DisplayReady(); General.Interface.RedrawDisplay(); }
// Mode starts public override void OnEngage() { Cursor.Current = Cursors.WaitCursor; base.OnEngage(); if (!General.Map.LumpExists("NODES") || !General.Map.LumpExists("SSECTORS") || !General.Map.LumpExists("SEGS") || !General.Map.LumpExists("VERTEXES")) { // We need to build the nodes! if (!General.Map.RebuildNodes(General.Map.ConfigSettings.NodebuilderSave, true)) { return; } } if (!General.Map.LumpExists("NODES")) { MessageBox.Show("Unable to find the NODES lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } if (!General.Map.LumpExists("SSECTORS")) { MessageBox.Show("Unable to find the SSECTORS lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } if (!General.Map.LumpExists("SEGS")) { MessageBox.Show("Unable to find the SEGS lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } if (!General.Map.LumpExists("VERTEXES")) { MessageBox.Show("Unable to find the VERTEXES lump. It may be that the nodes could not be built correctly.", "Nodes Viewer mode", MessageBoxButtons.OK, MessageBoxIcon.Error); General.Editing.CancelMode(); return; } General.Interface.DisplayStatus(StatusType.Busy, "Reading map nodes..."); LoadStructures(); // Setup presentation CustomPresentation presentation = new CustomPresentation(); presentation.AddLayer(new PresentLayer(RendererLayer.Background, BlendingMode.Mask, General.Settings.BackgroundAlpha)); presentation.AddLayer(new PresentLayer(RendererLayer.Grid, BlendingMode.Mask)); presentation.AddLayer(new PresentLayer(RendererLayer.Overlay, BlendingMode.Alpha, 1f, true)); presentation.AddLayer(new PresentLayer(RendererLayer.Geometry, BlendingMode.Alpha, 1f, true)); renderer.SetPresentation(presentation); General.Interface.DisplayStatus(StatusType.Busy, "Building subsectors..."); RecursiveBuildSubsectorPoly(nodes.Length - 1, new Stack <Split>(nodes.Length / 2 + 1)); // Load and display dialog window form = new NodesForm(this); form.Show((Form)General.Interface); Cursor.Current = Cursors.Default; General.Interface.DisplayReady(); General.Interface.RedrawDisplay(); }