diff --git a/Source/Plugins/BuilderModes/Resources/Actions.cfg b/Source/Plugins/BuilderModes/Resources/Actions.cfg index 820f4671f57a357571617061319c300431196ae7..1b42359480be24b541d3db2ae5c14103ae637717 100755 --- a/Source/Plugins/BuilderModes/Resources/Actions.cfg +++ b/Source/Plugins/BuilderModes/Resources/Actions.cfg @@ -1135,6 +1135,26 @@ togglelowerunpegged allowscroll = true; } +togglepegmidtexture +{ + title = "Toggle Peg Midtexture"; + category = "visual"; + description = "Toggles the Peg Midtexture setting on the selected or targeted linedef."; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + +toggleslopeskew +{ + title = "Toggle Slope Skew"; + category = "visual"; + description = "Toggles the Slope Skew setting on the selected or targeted linedef."; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + togglegravity { title = "Toggle Gravity"; diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs index 54deed4680eec1aec3b845fafce2f520810ccd0c..7747022d590fc0b8a2d2c221dcd9b1c733213e63 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs @@ -390,6 +390,8 @@ namespace CodeImp.DoomBuilder.BuilderModes public virtual void OnTextureFit(FitTextureOptions options) { } //mxd public virtual void OnToggleUpperUnpegged() { } public virtual void OnToggleLowerUnpegged() { } + public virtual void OnTogglePegMidtexture() { } + public virtual void OnToggleSlopeSkew() { } public virtual void OnResetTextureOffset() { } public virtual void OnResetLocalTextureOffset() { } //mxd public virtual void OnCopyTextureOffsets() { } @@ -398,6 +400,7 @@ namespace CodeImp.DoomBuilder.BuilderModes protected virtual void SetTexture(string texturename) { } public virtual void ApplyUpperUnpegged(bool set) { } public virtual void ApplyLowerUnpegged(bool set) { } + public virtual void ApplyLineFlag(Linedef line, string flag, string name) { } protected abstract void MoveTextureOffset(int offsetx, int offsety); protected abstract Point GetTextureOffset(); public virtual void OnPaintSelectEnd() { } // biwa diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs index f49bb290420953bd7f1d4f54db8d98228e9026bd..8e8f1868875304a5be548b3c7b7ef1606c506eca 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs @@ -1060,7 +1060,32 @@ namespace CodeImp.DoomBuilder.BuilderModes } } - + // Toggle midtexture pegging + public virtual void OnTogglePegMidtexture() + { + mode.ApplyLineFlag(this.Sidedef.Line, "midpeg", "Peg Midtexture"); + } + + // Toggle slope skew + public virtual void OnToggleSlopeSkew() + { + switch (this.GeometryType) + { + case VisualGeometryType.WALL_LOWER: + case VisualGeometryType.WALL_UPPER: + mode.ApplyLineFlag(this.Sidedef.Line, "skewtd", "Slope Skew"); + break; + + case VisualGeometryType.WALL_MIDDLE_3D: + mode.ApplyLineFlag(this.GetControlLinedef(), "skewtd", "Slope Skew"); + break; + + case VisualGeometryType.WALL_MIDDLE: + mode.ApplyLineFlag(this.Sidedef.Line, "noskew", "No Midtexture Skew"); + break; + } + } + // This sets the Upper Unpegged flag public virtual void ApplyUpperUnpegged(bool set) { @@ -1092,7 +1117,6 @@ namespace CodeImp.DoomBuilder.BuilderModes } } - // This sets the Lower Unpegged flag public virtual void ApplyLowerUnpegged(bool set) { @@ -1124,6 +1148,37 @@ namespace CodeImp.DoomBuilder.BuilderModes } } + // This sets a specified flag + public virtual void ApplyLineFlag(Linedef line, string flag, string name) + { + if (line.IsFlagSet(flag)) + { + // Remove flag + mode.CreateUndo("Remove " + name + " flag"); + mode.SetActionResult("Removed " + name + " flag."); + line.SetFlag(flag, false); + } + else + { + // Add flag + mode.CreateUndo("Set " + name + " flag"); + mode.SetActionResult("Set " + name + " flag."); + line.SetFlag(flag, true); + } + + // Update sidedef geometry + VisualSidedefParts parts = Sector.GetSidedefParts(Sidedef); + parts.SetupAllParts(); + + // Update other sidedef geometry + if (Sidedef.Other != null) + { + BaseVisualSector othersector = (BaseVisualSector)mode.GetVisualSector(Sidedef.Other.Sector); + parts = othersector.GetSidedefParts(Sidedef.Other); + parts.SetupAllParts(); + } + } + // Flood-fill textures public virtual void OnTextureFloodfill() diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index 5ac9e80e6b0bed345117bacb41a301d57b4f53e8..4ccf56e68547e69d08087beab0f355d57a81c1b8 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -2248,6 +2248,16 @@ namespace CodeImp.DoomBuilder.BuilderModes } } + // Apply specified flag + public void ApplyLineFlag(Linedef line, string flag, string name) + { + List<IVisualEventReceiver> objs = GetSelectedObjects(false, true, false, false, false); + foreach (IVisualEventReceiver i in objs) + { + i.ApplyLineFlag(line, flag, name); + } + } + // Apply texture change public void ApplySelectTexture(string texture, bool flat) { @@ -3775,6 +3785,22 @@ namespace CodeImp.DoomBuilder.BuilderModes PostAction(); } + [BeginAction("togglepegmidtexture")] + public void TogglePegMidtexture() + { + PreAction(UndoGroup.None); + GetTargetEventReceiver(false).OnTogglePegMidtexture(); + PostAction(); + } + + [BeginAction("toggleslopeskew")] + public void ToggleSlopeSkew() + { + PreAction(UndoGroup.None); + GetTargetEventReceiver(false).OnToggleSlopeSkew(); + PostAction(); + } + [BeginAction("togglegravity")] public void ToggleGravity() { diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs index 1a8536b5ede1414230c3ef3596d58f69976255a9..c544c4304eba3ccb072fcab74374f022f3357fa4 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs @@ -120,6 +120,8 @@ namespace CodeImp.DoomBuilder.VisualModes public void OnTextureAlign(bool alignx, bool aligny) { } public void OnToggleUpperUnpegged() { } public void OnToggleLowerUnpegged() { } + public void OnTogglePegMidtexture() { } + public void OnToggleSlopeSkew() { } public void OnProcess(long deltatime) { } public void OnTextureFloodfill() { } public void OnInsert() { } @@ -127,6 +129,7 @@ namespace CodeImp.DoomBuilder.VisualModes public void ApplyTexture(string texture) { } public void ApplyUpperUnpegged(bool set) { } public void ApplyLowerUnpegged(bool set) { } + public void ApplyLineFlag(Linedef line, string flag, string name) { } public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd public virtual void OnPaintSelectEnd() { } // biwa public void OnChangeScale(int x, int y) { } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs index 0abe1d45b0093cbefdc805bafb1f98e0821bd0a4..ec81c7aeaa234e32f1051a3834298a34e96f3266 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs @@ -714,6 +714,8 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnTextureAlign(bool alignx, bool aligny) { } public void OnToggleUpperUnpegged() { } public void OnToggleLowerUnpegged() { } + public void OnTogglePegMidtexture() { } + public void OnToggleSlopeSkew() { } public void OnProcess(long deltatime) { } public void OnTextureFloodfill() { } public void OnInsert() { } @@ -721,6 +723,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void ApplyTexture(string texture) { } public void ApplyUpperUnpegged(bool set) { } public void ApplyLowerUnpegged(bool set) { } + public void ApplyLineFlag(Linedef line, string flag, string name) { } public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd public virtual void OnPaintSelectEnd() { } // biwa diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs index 575805ca10265f926a091c0e5fb005327f9b36e8..6526d8273be2bb4a983efd939880b9eab2d62f06 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs @@ -252,6 +252,8 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnTextureFit(FitTextureOptions options) { } //mxd public void OnToggleUpperUnpegged() { } public void OnToggleLowerUnpegged() { } + public void OnTogglePegMidtexture() { } + public void OnToggleSlopeSkew() { } public void OnResetTextureOffset() { } public void OnResetLocalTextureOffset() { } //mxd public void OnProcess(long deltatime) { } @@ -260,6 +262,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void ApplyTexture(string texture) { } public void ApplyUpperUnpegged(bool set) { } public void ApplyLowerUnpegged(bool set) { } + public void ApplyLineFlag(Linedef line, string flag, string name) { } public string GetTextureName() { return ""; } public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd public virtual void OnPaintSelectBegin() { } // biwa diff --git a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs index 587b381e330c52099119b35d94c80df9084a07ef..b280b32f65a20e2ade4249393aae3cca364bb78d 100644 --- a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs +++ b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs @@ -16,6 +16,7 @@ #region ================== Namespaces +using CodeImp.DoomBuilder.Map; using System.Windows.Forms; #endregion @@ -51,6 +52,8 @@ namespace CodeImp.DoomBuilder.BuilderModes void OnTextureFloodfill(); void OnToggleUpperUnpegged(); void OnToggleLowerUnpegged(); + void OnTogglePegMidtexture(); + void OnToggleSlopeSkew(); void OnProcess(long deltatime); void OnInsert(); void OnDelete(); @@ -61,7 +64,8 @@ namespace CodeImp.DoomBuilder.BuilderModes void ApplyTexture(string texture); void ApplyUpperUnpegged(bool set); void ApplyLowerUnpegged(bool set); - + void ApplyLineFlag(Linedef line, string flag, string name); + // Other methods string GetTextureName(); void SelectNeighbours(bool select, bool matchtexture, bool matchheight, bool stopatselected); //mxd diff --git a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs index e04ce6a79664b01f080ce6f71b6015a2a798636b..5e35629c2f3536bfa171a72085a6ce38a16affcf 100644 --- a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs +++ b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs @@ -16,6 +16,7 @@ #region ================== Namespaces +using CodeImp.DoomBuilder.Map; using System.Windows.Forms; #endregion @@ -50,6 +51,8 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnTextureFloodfill() { } public void OnToggleUpperUnpegged() { } public void OnToggleLowerUnpegged() { } + public void OnTogglePegMidtexture() { } + public void OnToggleSlopeSkew() { } public void OnProcess(long deltatime) { } public void OnInsert() { } public void OnDelete() { } @@ -58,6 +61,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void ApplyTexture(string texture) { } public void ApplyUpperUnpegged(bool set) { } public void ApplyLowerUnpegged(bool set) { } + public void ApplyLineFlag(Linedef line, string flag, string name) { } public string GetTextureName() { return ""; } public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd }