diff --git a/Source/Plugins/BuilderModes/ClassicModes/DrawCurveMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DrawCurveMode.cs index 15e1c303ba41dcaab26ae5161d7ba3c378362219..8044fa808e26bcce65dfed89f853b16aa6955593 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/DrawCurveMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DrawCurveMode.cs @@ -101,13 +101,16 @@ namespace CodeImp.DoomBuilder.BuilderModes curve = CurveTools.CurveThroughPoints(verts, 0.5f, 0.75f, segmentlength); // Render lines - for(int i = 1; i < curve.Shape.Count; i++) + if (!placethingsatvertices) { - // Determine line color - PixelColor c = snaptonearest ? stitchcolor : losecolor; + for (int i = 1; i < curve.Shape.Count; i++) + { + // Determine line color + PixelColor c = snaptonearest ? stitchcolor : losecolor; - // Render line - renderer.RenderLine(curve.Shape[i - 1], curve.Shape[i], LINE_THICKNESS, c, true); + // Render line + renderer.RenderLine(curve.Shape[i - 1], curve.Shape[i], LINE_THICKNESS, c, true); + } } //render "inactive" vertices @@ -237,7 +240,27 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Make the drawing - if(Tools.DrawLines(verts, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) //mxd + if (placethingsatvertices) + { + List<Vector2D> points = new List<Vector2D>(); + for (int i = 0; i < verts.Count; i++) + if (!points.Contains(verts[i].pos)) points.Add(verts[i].pos); + + PlaceThingsAtPositions(points); + + // Snap to map format accuracy + General.Map.Map.SnapAllToAccuracy(); + + // Clear selection + General.Map.Map.ClearAllSelected(); + + // Update cached values + General.Map.Map.Update(); + + // Map is changed + General.Map.IsChanged = true; + } + else if (Tools.DrawLines(verts, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) //mxd { // Snap to map format accuracy General.Map.Map.SnapAllToAccuracy(); @@ -249,11 +272,11 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.Map.Update(); //mxd. Outer sectors may require some splittin... - if(General.Settings.SplitJoinedSectors) Tools.SplitOuterSectors(General.Map.Map.GetMarkedLinedefs(true)); + if (General.Settings.SplitJoinedSectors) Tools.SplitOuterSectors(General.Map.Map.GetMarkedLinedefs(true)); // Edit new sectors? List<Sector> newsectors = General.Map.Map.GetMarkedSectors(true); - if(BuilderPlug.Me.EditNewSector && (newsectors.Count > 0)) + if (BuilderPlug.Me.EditNewSector && (newsectors.Count > 0)) General.Interface.ShowEditSectors(newsectors); // Update the used textures @@ -320,10 +343,12 @@ namespace CodeImp.DoomBuilder.BuilderModes panel.OnValueChanged += OptionsPanelOnValueChanged; panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged; panel.OnAutoCloseDrawingChanged += OnAutoCloseDrawingChanged; + panel.OnPlaceThingsAtVerticesChanged += OnPlaceThingsAtVerticesChanged; // Needs to be set after adding the events... panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawcurvemode.continuousdrawing", false); - panel.AutoCloseDrawing = General.Settings.ReadPluginSetting("drawlinesmode.autoclosedrawing", false); + panel.AutoCloseDrawing = General.Settings.ReadPluginSetting("drawcurvemode.autoclosedrawing", false); + panel.PlaceThingsAtVertices = General.Settings.ReadPluginSetting("drawcurvemode.placethingsatvertices", false); } protected override void AddInterface() @@ -336,7 +361,8 @@ namespace CodeImp.DoomBuilder.BuilderModes // Store settings General.Settings.WritePluginSetting("drawcurvemode.segmentlength", segmentlength); General.Settings.WritePluginSetting("drawcurvemode.continuousdrawing", panel.ContinuousDrawing); - General.Settings.WritePluginSetting("drawlinesmode.autoclosedrawing", panel.AutoCloseDrawing); + General.Settings.WritePluginSetting("drawcurvemode.autoclosedrawing", panel.AutoCloseDrawing); + General.Settings.WritePluginSetting("drawcurvemode.placethingsatvertices", panel.PlaceThingsAtVertices); // Remove the buttons panel.Unregister(); diff --git a/Source/Plugins/BuilderModes/ClassicModes/DrawEllipseMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DrawEllipseMode.cs index f462069a11bb1393faa80d88ee6e1da629b39708..118cd00daf12b3c55e877369583ffbdd7a55b9dd 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/DrawEllipseMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DrawEllipseMode.cs @@ -69,11 +69,13 @@ namespace CodeImp.DoomBuilder.BuilderModes panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged; panel.OnShowGuidelinesChanged += OnShowGuidelinesChanged; panel.OnRadialDrawingChanged += OnRadialDrawingChanged; + panel.OnPlaceThingsAtVerticesChanged += OnPlaceThingsAtVerticesChanged; // Needs to be set after adding the OnContinuousDrawingChanged event... panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawellipsemode.continuousdrawing", false); panel.ShowGuidelines = General.Settings.ReadPluginSetting("drawellipsemode.showguidelines", false); panel.RadialDrawing = General.Settings.ReadPluginSetting("drawellipsemode.radialdrawing", false); + panel.PlaceThingsAtVertices = General.Settings.ReadPluginSetting("drawellipsemode.placethingsatvertices", false); } override protected void AddInterface() @@ -90,7 +92,8 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Settings.WritePluginSetting("drawellipsemode.continuousdrawing", panel.ContinuousDrawing); General.Settings.WritePluginSetting("drawellipsemode.showguidelines", panel.ShowGuidelines); General.Settings.WritePluginSetting("drawellipsemode.radialdrawing", panel.RadialDrawing); - + General.Settings.WritePluginSetting("drawellipsemode.placethingsatvertices", panel.PlaceThingsAtVertices); + // Remove the buttons panel.Unregister(); diff --git a/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs index a3ab3a128ebf53982343b089ed30f3328e013058..5f482d78e5549ced40a0ece6c14ac34d87c66e26 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs @@ -65,6 +65,7 @@ namespace CodeImp.DoomBuilder.BuilderModes protected bool autoclosedrawing; //mxd. Finish drawing when new points and existing geometry form a closed shape protected bool drawingautoclosed; //mxd protected bool showguidelines; //mxd + protected bool placethingsatvertices; //mxd. Map area bounds private Line2D top, bottom, left, right; @@ -951,11 +952,17 @@ namespace CodeImp.DoomBuilder.BuilderModes showguidelines = (bool)value; General.Interface.RedrawDisplay(); } - + + protected void OnPlaceThingsAtVerticesChanged(object value, EventArgs e) + { + placethingsatvertices = (bool)value; + General.Interface.RedrawDisplay(); + } + #endregion - + #region ================== Actions - + // Drawing a point [BeginAction("drawpoint")] public void DrawPoint() diff --git a/Source/Plugins/BuilderModes/ClassicModes/DrawRectangleMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DrawRectangleMode.cs index 9b3da24f34d658a33292ee14e94a5510dc16a466..6a5da358950d3921d90053b77c64dd42a81c51e0 100755 --- a/Source/Plugins/BuilderModes/ClassicModes/DrawRectangleMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DrawRectangleMode.cs @@ -104,11 +104,13 @@ namespace CodeImp.DoomBuilder.BuilderModes panel.OnContinuousDrawingChanged += OnContinuousDrawingChanged; panel.OnShowGuidelinesChanged += OnShowGuidelinesChanged; panel.OnRadialDrawingChanged += OnRadialDrawingChanged; + panel.OnPlaceThingsAtVerticesChanged += OnPlaceThingsAtVerticesChanged; // Needs to be set after adding the OnContinuousDrawingChanged event... panel.ContinuousDrawing = General.Settings.ReadPluginSetting("drawrectanglemode.continuousdrawing", false); panel.ShowGuidelines = General.Settings.ReadPluginSetting("drawrectanglemode.showguidelines", false); panel.RadialDrawing = General.Settings.ReadPluginSetting("drawrectanglemode.radialdrawing", false); + panel.PlaceThingsAtVertices = General.Settings.ReadPluginSetting("drawrectanglemode.placethingsatvertices", false); } protected override void AddInterface() @@ -124,6 +126,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Settings.WritePluginSetting("drawrectanglemode.continuousdrawing", panel.ContinuousDrawing); General.Settings.WritePluginSetting("drawrectanglemode.showguidelines", panel.ShowGuidelines); General.Settings.WritePluginSetting("drawrectanglemode.radialdrawing", panel.RadialDrawing); + General.Settings.WritePluginSetting("drawrectanglemode.placethingsatvertices", panel.PlaceThingsAtVertices); // Remove the buttons panel.Unregister(); @@ -173,8 +176,11 @@ namespace CodeImp.DoomBuilder.BuilderModes RenderGuidelines(startrotated, endrotated, General.Colors.Guideline.WithAlpha(80), -General.Map.Grid.GridRotate); //render shape - for(int i = 1; i < shape.Length; i++) - renderer.RenderLine(shape[i - 1], shape[i], LINE_THICKNESS, color, true); + if (!placethingsatvertices) + { + for (int i = 1; i < shape.Length; i++) + renderer.RenderLine(shape[i - 1], shape[i], LINE_THICKNESS, color, true); + } //vertices for(int i = 0; i < shape.Length; i++) @@ -440,7 +446,27 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.DisplayStatus(StatusType.Action, "Created " + a + word + " " + shapename + "."); // Make the drawing - if(Tools.DrawLines(points, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) + if (placethingsatvertices) + { + List<Vector2D> verts = new List<Vector2D>(); + for (int i = 0; i < points.Count; i++) + if (!verts.Contains(new Vector2D(points[i].pos.x, points[i].pos.y))) verts.Add(new Vector2D(points[i].pos.x, points[i].pos.y)); + + PlaceThingsAtPositions(verts); + + // Snap to map format accuracy + General.Map.Map.SnapAllToAccuracy(); + + // Clear selection + General.Map.Map.ClearAllSelected(); + + // Update cached values + General.Map.Map.Update(); + + // Map is changed + General.Map.IsChanged = true; + } + else if (Tools.DrawLines(points, true, BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate)) { // Snap to map format accuracy General.Map.Map.SnapAllToAccuracy(); diff --git a/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.Designer.cs b/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.Designer.cs index 853cf270d22a1304350d3f9671b676e78f1ce685..46fab6a734dd6ed05ede30844ad4a492e1a7e3f8 100755 --- a/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.Designer.cs @@ -31,6 +31,7 @@ this.toolstrip = new System.Windows.Forms.ToolStrip(); this.continuousdrawing = new System.Windows.Forms.ToolStripButton(); this.autoclosedrawing = new System.Windows.Forms.ToolStripButton(); + this.placethingsatvertices = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.seglabel = new System.Windows.Forms.ToolStripLabel(); this.seglen = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown(); @@ -43,7 +44,8 @@ this.toolstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.continuousdrawing, this.autoclosedrawing, - this.toolStripSeparator1, + this.placethingsatvertices, + this.toolStripSeparator1, this.seglabel, this.seglen, this.reset}); @@ -74,6 +76,16 @@ this.autoclosedrawing.Text = "Auto-close drawing"; this.autoclosedrawing.CheckedChanged += new System.EventHandler(this.autoclosedrawing_CheckedChanged); // + // placethingsatvertices + // + this.placethingsatvertices.CheckOnClick = true; + this.placethingsatvertices.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; + this.placethingsatvertices.ImageTransparentColor = System.Drawing.Color.Magenta; + this.placethingsatvertices.Name = "placethingsatvertices"; + this.placethingsatvertices.Size = new System.Drawing.Size(135, 22); + this.placethingsatvertices.Text = "Place things"; + this.placethingsatvertices.CheckedChanged += new System.EventHandler(this.placethingsatvertices_CheckedChanged); + // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; @@ -142,6 +154,6 @@ private System.Windows.Forms.ToolStripButton continuousdrawing; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripButton autoclosedrawing; - + private System.Windows.Forms.ToolStripButton placethingsatvertices; } } diff --git a/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.cs b/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.cs index 6342b03fdaae9349221a89f60ad5372ba5e8be16..059e2834550bc57024ac07c25dae3be8603d0478 100755 --- a/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawCurveOptionsPanel.cs @@ -8,11 +8,13 @@ namespace CodeImp.DoomBuilder.BuilderModes public event EventHandler OnValueChanged; public event EventHandler OnContinuousDrawingChanged; public event EventHandler OnAutoCloseDrawingChanged; + public event EventHandler OnPlaceThingsAtVerticesChanged; private bool blockevents; public int SegmentLength { get { return (int)seglen.Value; } set { blockevents = true; seglen.Value = value; blockevents = false; } } public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } } public bool AutoCloseDrawing { get { return autoclosedrawing.Checked; } set { autoclosedrawing.Checked = value; } } + public bool PlaceThingsAtVertices { get { return placethingsatvertices.Checked; } set { placethingsatvertices.Checked = value; } } public DrawCurveOptionsPanel(int minLength, int maxLength) { @@ -29,6 +31,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.BeginToolbarUpdate(); General.Interface.AddButton(continuousdrawing); General.Interface.AddButton(autoclosedrawing); + General.Interface.AddButton(placethingsatvertices); General.Interface.AddButton(toolStripSeparator1); General.Interface.AddButton(seglabel); General.Interface.AddButton(seglen); @@ -43,6 +46,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.RemoveButton(seglen); General.Interface.RemoveButton(seglabel); General.Interface.RemoveButton(toolStripSeparator1); + General.Interface.RemoveButton(placethingsatvertices); General.Interface.RemoveButton(autoclosedrawing); General.Interface.RemoveButton(continuousdrawing); General.Interface.EndToolbarUpdate(); @@ -67,5 +71,10 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(OnAutoCloseDrawingChanged != null) OnAutoCloseDrawingChanged(autoclosedrawing.Checked, EventArgs.Empty); } + + private void placethingsatvertices_CheckedChanged(object sender, EventArgs e) + { + if (OnPlaceThingsAtVerticesChanged != null) OnPlaceThingsAtVerticesChanged(placethingsatvertices.Checked, EventArgs.Empty); + } } } diff --git a/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.Designer.cs b/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.Designer.cs index 282914177dcf939eb69f5b3075852c8ba2bf5dc4..4ee927b54ac62348781afb7ee214472307b0416b 100755 --- a/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.Designer.cs @@ -31,6 +31,7 @@ this.toolStrip1 = new System.Windows.Forms.ToolStrip(); this.continuousdrawing = new System.Windows.Forms.ToolStripButton(); this.radialdrawing = new System.Windows.Forms.ToolStripButton(); + this.placethingsatvertices = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.subdivslabel = new System.Windows.Forms.ToolStripLabel(); this.subdivs = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown(); @@ -49,7 +50,8 @@ this.continuousdrawing, this.showguidelines, this.radialdrawing, - this.toolStripSeparator1, + this.placethingsatvertices, + this.toolStripSeparator1, this.subdivslabel, this.subdivs, this.spikinesslabel, @@ -73,6 +75,16 @@ this.continuousdrawing.Text = "Continuous drawing"; this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged); // + // placethingsatvertices + // + this.placethingsatvertices.CheckOnClick = true; + this.placethingsatvertices.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; + this.placethingsatvertices.ImageTransparentColor = System.Drawing.Color.Magenta; + this.placethingsatvertices.Name = "placethingsatvertices"; + this.placethingsatvertices.Size = new System.Drawing.Size(135, 22); + this.placethingsatvertices.Text = "Place things"; + this.placethingsatvertices.CheckedChanged += new System.EventHandler(this.placethingsatvertices_CheckedChanged); + // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; @@ -225,5 +237,6 @@ private System.Windows.Forms.ToolStripLabel anglelabel; private CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown angle; private System.Windows.Forms.ToolStripButton showguidelines; + private System.Windows.Forms.ToolStripButton placethingsatvertices; } } diff --git a/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.cs b/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.cs index af681df73f63b7c2fa066859d0a74fef5d0cecb0..309d73b2313c5de312f06a0628a2ef59556cc608 100755 --- a/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawEllipseOptionsPanel.cs @@ -9,6 +9,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public event EventHandler OnContinuousDrawingChanged; public event EventHandler OnShowGuidelinesChanged; public event EventHandler OnRadialDrawingChanged; + public event EventHandler OnPlaceThingsAtVerticesChanged; private bool blockevents; @@ -22,7 +23,8 @@ namespace CodeImp.DoomBuilder.BuilderModes public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } } public bool ShowGuidelines { get { return showguidelines.Checked; } set { showguidelines.Checked = value; } } public bool RadialDrawing { get { return radialdrawing.Checked; } set { radialdrawing.Checked = value; } } - + public bool PlaceThingsAtVertices { get { return placethingsatvertices.Checked; } set { placethingsatvertices.Checked = value; } } + public DrawEllipseOptionsPanel() { InitializeComponent(); @@ -38,6 +40,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.AddButton(continuousdrawing); General.Interface.AddButton(showguidelines); General.Interface.AddButton(radialdrawing); + General.Interface.AddButton(placethingsatvertices); General.Interface.AddButton(toolStripSeparator1); General.Interface.AddButton(subdivslabel); General.Interface.AddButton(subdivs); @@ -63,6 +66,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.RemoveButton(showguidelines); General.Interface.RemoveButton(continuousdrawing); General.Interface.RemoveButton(radialdrawing); + General.Interface.RemoveButton(placethingsatvertices); General.Interface.EndToolbarUpdate(); } @@ -98,5 +102,10 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(OnRadialDrawingChanged != null) OnRadialDrawingChanged(radialdrawing.Checked, EventArgs.Empty); } + + private void placethingsatvertices_CheckedChanged(object sender, EventArgs e) + { + if (OnPlaceThingsAtVerticesChanged != null) OnPlaceThingsAtVerticesChanged(placethingsatvertices.Checked, EventArgs.Empty); + } } } diff --git a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs index 002bdc53754df1a728a2e8580345ba8e6c0bf1a5..bfaae798b1cae8004cbd63745bbcbc0561c9ca60 100755 --- a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs @@ -32,6 +32,7 @@ this.continuousdrawing = new System.Windows.Forms.ToolStripButton(); this.showguidelines = new System.Windows.Forms.ToolStripButton(); this.radialdrawing = new System.Windows.Forms.ToolStripButton(); + this.placethingsatvertices = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.radiuslabel = new System.Windows.Forms.ToolStripLabel(); this.radius = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown(); @@ -47,6 +48,7 @@ this.continuousdrawing, this.showguidelines, this.radialdrawing, + this.placethingsatvertices, this.toolStripSeparator1, this.radiuslabel, this.radius, @@ -69,6 +71,16 @@ this.continuousdrawing.Text = "Continuous drawing"; this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged); // + // placethingsatvertices + // + this.placethingsatvertices.CheckOnClick = true; + this.placethingsatvertices.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; + this.placethingsatvertices.ImageTransparentColor = System.Drawing.Color.Magenta; + this.placethingsatvertices.Name = "placethingsatvertices"; + this.placethingsatvertices.Size = new System.Drawing.Size(135, 22); + this.placethingsatvertices.Text = "Place things"; + this.placethingsatvertices.CheckedChanged += new System.EventHandler(this.placethingsatvertices_CheckedChanged); + // // showguidelines // this.showguidelines.CheckOnClick = true; @@ -190,5 +202,6 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripButton showguidelines; private System.Windows.Forms.ToolStripButton radialdrawing; + private System.Windows.Forms.ToolStripButton placethingsatvertices; } } diff --git a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs index f60b60d4865a7d0d177977181a28354544a00f92..efbfaa4e738a0cae213818e4bbcaa8b8ced99368 100755 --- a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs @@ -9,6 +9,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public event EventHandler OnContinuousDrawingChanged; public event EventHandler OnShowGuidelinesChanged; public event EventHandler OnRadialDrawingChanged; + public event EventHandler OnPlaceThingsAtVerticesChanged; private bool blockevents; @@ -21,6 +22,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } } public bool ShowGuidelines { get { return showguidelines.Checked; } set { showguidelines.Checked = value; } } public bool RadialDrawing { get { return radialdrawing.Checked; } set { radialdrawing.Checked = value; } } + public bool PlaceThingsAtVertices { get { return placethingsatvertices.Checked; } set { placethingsatvertices.Checked = value; } } public DrawRectangleOptionsPanel() { @@ -36,6 +38,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.AddButton(continuousdrawing); General.Interface.AddButton(showguidelines); General.Interface.AddButton(radialdrawing); + General.Interface.AddButton(placethingsatvertices); General.Interface.AddButton(toolStripSeparator1); General.Interface.AddButton(radiuslabel); General.Interface.AddButton(radius); @@ -55,6 +58,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.RemoveButton(radiuslabel); General.Interface.RemoveButton(toolStripSeparator1); General.Interface.RemoveButton(showguidelines); + General.Interface.RemoveButton(placethingsatvertices); General.Interface.RemoveButton(continuousdrawing); General.Interface.RemoveButton(radialdrawing); General.Interface.EndToolbarUpdate(); @@ -91,5 +95,10 @@ namespace CodeImp.DoomBuilder.BuilderModes { if(OnRadialDrawingChanged != null) OnRadialDrawingChanged(radialdrawing.Checked, EventArgs.Empty); } + + private void placethingsatvertices_CheckedChanged(object sender, EventArgs e) + { + if (OnPlaceThingsAtVerticesChanged != null) OnPlaceThingsAtVerticesChanged(placethingsatvertices.Checked, EventArgs.Empty); + } } }