Added "Fixed Things Scale" setting (available in the View menu, as a button on the View toolbar and as the "Toggle Fixed Things Scale" action). When enabled, Things will no longer be scaled based on current zoom level in Classic modes, instead, thing bounding box will be drawn when appropriate (this option mimics DB1 things rendering style).

This commit is contained in:
spherallic 2022-10-12 22:04:50 +02:00
parent c668ff20c7
commit e05361e8bb
14 changed files with 129 additions and 41 deletions

View File

@ -1143,6 +1143,7 @@
<None Include="Resources\GroupRemove.png" />
<None Include="Resources\GridDecrease.png" />
<None Include="Resources\GridIncrease.png" />
<None Include="Resources\FixedThingsScale.png" />
<Content Include="Resources\Light.png" />
<None Include="Resources\Lightbulb.png" />
<None Include="Resources\LightDisabled.png" />

View File

@ -132,7 +132,8 @@ namespace CodeImp.DoomBuilder.Config
private bool storeSelectedEditTab;
private int maxbackups;
private bool checkforupdates;
private bool rendercomments;
private bool rendercomments; //mxd
private bool fixedthingsscale; //mxd
private bool rendergrid;
private bool rendernightspath;
private bool dynamicgridsize;
@ -243,6 +244,7 @@ namespace CodeImp.DoomBuilder.Config
internal int MaxBackups { get { return maxbackups; } set { maxbackups = value; } }
internal bool CheckForUpdates { get { return checkforupdates; } set { checkforupdates = value; } } //mxd
public bool RenderComments { get { return rendercomments; } internal set { rendercomments = value; } } //mxd
public bool FixedThingsScale { get { return fixedthingsscale; } internal set { fixedthingsscale = value; } } //mxd
public bool RenderGrid { get { return rendergrid; } internal set { rendergrid = value; } } //mxd
public bool RenderNiGHTSPath { get { return rendernightspath; } internal set { rendernightspath = value; } }
public bool DynamicGridSize { get { return dynamicgridsize; } internal set { dynamicgridsize = value; } } //mxd
@ -374,6 +376,7 @@ namespace CodeImp.DoomBuilder.Config
maxbackups = cfg.ReadSetting("maxbackups", 3);
checkforupdates = false; //No update checking for Zone Builder
rendercomments = cfg.ReadSetting("rendercomments", true); //mxd
fixedthingsscale = cfg.ReadSetting("fixedthingsscale", false); //mxd
rendergrid = cfg.ReadSetting("rendergrid", true); //mxd
rendernightspath = cfg.ReadSetting("rendernightspath", true);
dynamicgridsize = cfg.ReadSetting("dynamicgridsize", true); //mxd
@ -489,6 +492,7 @@ namespace CodeImp.DoomBuilder.Config
cfg.WriteSetting("maxbackups", maxbackups);
//cfg.WriteSetting("checkforupdates", checkforupdates); //mxd
cfg.WriteSetting("rendercomments", rendercomments); //mxd
cfg.WriteSetting("fixedthingsscale", fixedthingsscale); //mxd
cfg.WriteSetting("rendergrid", rendergrid); //mxd
cfg.WriteSetting("rendernightspath", rendernightspath); //mxd
cfg.WriteSetting("dynamicgridsize", dynamicgridsize); //mxd

View File

@ -22,6 +22,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Geometry
{
this.Start = start;
this.End = end;
this.Start2D = start;
this.End2D = end;
this.Color = General.Colors.InfoLine;
this.RenderArrowhead = true;
}
@ -30,6 +32,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Geometry
{
this.Start = start;
this.End = end;
this.Start2D = start;
this.End2D = end;
this.Color = General.Colors.InfoLine;
this.RenderArrowhead = renderArrowhead;
}
@ -38,6 +42,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Geometry
{
this.Start = start;
this.End = end;
this.Start2D = start;
this.End2D = end;
this.Color = color;
this.RenderArrowhead = true;
}
@ -46,6 +52,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Geometry
{
this.Start = start;
this.End = end;
this.Start2D = start;
this.End2D = end;
this.Color = color;
this.RenderArrowhead = renderArrowhead;
}

View File

@ -2721,7 +2721,7 @@ namespace CodeImp.DoomBuilder.Map
{
float px = t.Position.x;
float py = t.Position.y;
float ts = ((t.FixedSize && General.Map.Renderer2D.Scale > 1.0f) ? t.Size / General.Map.Renderer2D.Scale : t.Size);
float ts = (((t.FixedSize || General.Settings.FixedThingsScale) && General.Map.Renderer2D.Scale > 1.0f) ? t.Size / General.Map.Renderer2D.Scale : t.Size);
//mxd. Within range?
if(px < range.Left - ts || px > range.Right + ts || py < range.Top - ts || py > range.Bottom + ts) continue;

View File

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.42000
// This code was generated by a tool.
// Runtime Version:2.0.50727.5466
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
@ -370,9 +370,13 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap FixedThingsScale {
get {
object obj = ResourceManager.GetObject("FixedThingsScale", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap fog {
get {
object obj = ResourceManager.GetObject("fog", resourceCulture);

View File

@ -574,4 +574,7 @@
<data name="ScriptProperty" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptProperty.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FixedThingsScale" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FixedThingsScale.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -74,6 +74,7 @@ namespace CodeImp.DoomBuilder.Rendering
void RenderRectangleFilled(RectangleF rect, PixelColor c, bool transformrect, ImageData texture);
void RenderLine(Vector2D start, Vector2D end, float thickness, PixelColor c, bool transformcoords);
void RenderArrows(ICollection<Line3D> line); //mxd
void RenderArrows(ICollection<Line3D> line, bool transformcoords); //mxd
void RenderText(TextLabel text);
void RenderGeometry(FlatVertex[] vertices, ImageData texture, bool transformcoords);
void RenderHighlight(FlatVertex[] vertices, int color); //mxd

View File

@ -250,7 +250,6 @@ namespace CodeImp.DoomBuilder.Rendering
// BACKGROUND
case RendererLayer.Background:
if((backimageverts == null) || (General.Map.Grid.Background.Texture == null)) break;
graphics.Device.SetTexture(0, General.Map.Grid.Background.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Grid.Background.Texture;
graphics.Shaders.Display2D.SetSettings(1f / windowsize.Width, 1f / windowsize.Height, FSAA_FACTOR, layer.alpha, false);
graphics.Shaders.Display2D.BeginPass(aapass);
@ -261,7 +260,6 @@ namespace CodeImp.DoomBuilder.Rendering
// GRID
case RendererLayer.Grid:
graphics.Device.SetTexture(0, backtex);
graphics.Shaders.Display2D.Texture1 = backtex;
graphics.Shaders.Display2D.SetSettings(1f / backsize.Width, 1f / backsize.Height, FSAA_FACTOR, layer.alpha, false);
graphics.Shaders.Display2D.BeginPass(aapass);
@ -271,7 +269,6 @@ namespace CodeImp.DoomBuilder.Rendering
// GEOMETRY
case RendererLayer.Geometry:
graphics.Device.SetTexture(0, plottertex);
graphics.Shaders.Display2D.Texture1 = plottertex;
graphics.Shaders.Display2D.SetSettings(1f / structsize.Width, 1f / structsize.Height, FSAA_FACTOR, layer.alpha, false);
graphics.Shaders.Display2D.BeginPass(aapass);
@ -281,7 +278,6 @@ namespace CodeImp.DoomBuilder.Rendering
// THINGS
case RendererLayer.Things:
graphics.Device.SetTexture(0, thingstex);
graphics.Shaders.Display2D.Texture1 = thingstex;
graphics.Shaders.Display2D.SetSettings(1f / thingssize.Width, 1f / thingssize.Height, FSAA_FACTOR, layer.alpha, false);
graphics.Shaders.Display2D.BeginPass(aapass);
@ -291,7 +287,6 @@ namespace CodeImp.DoomBuilder.Rendering
// OVERLAY
case RendererLayer.Overlay:
graphics.Device.SetTexture(0, overlaytex);
graphics.Shaders.Display2D.Texture1 = overlaytex;
graphics.Shaders.Display2D.SetSettings(1f / overlaysize.Width, 1f / overlaysize.Height, FSAA_FACTOR, layer.alpha, false);
graphics.Shaders.Display2D.BeginPass(aapass);
@ -301,7 +296,6 @@ namespace CodeImp.DoomBuilder.Rendering
// SURFACE
case RendererLayer.Surface:
graphics.Device.SetTexture(0, surfacetex);
graphics.Shaders.Display2D.Texture1 = surfacetex;
graphics.Shaders.Display2D.SetSettings(1f / overlaysize.Width, 1f / overlaysize.Height, FSAA_FACTOR, layer.alpha, false);
graphics.Shaders.Display2D.BeginPass(aapass);
@ -317,7 +311,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Present();
// Release binds
graphics.Device.SetTexture(0, null);
graphics.Shaders.Display2D.Texture1 = null;
graphics.Device.SetStreamSource(0, null, 0, 0);
}
@ -985,20 +978,22 @@ namespace CodeImp.DoomBuilder.Rendering
// This makes vertices for a thing
// Returns false when not on the screen
private bool CreateThingBoxVerts(Thing t, ref FlatVertex[] verts, Dictionary<Thing, Vector2D> thingsByPosition, int offset, PixelColor c)
private bool CreateThingBoxVerts(Thing t, ref FlatVertex[] verts, ref List<Line3D> bboxes, Dictionary<Thing, Vector2D> thingsByPosition, int offset, PixelColor c, byte bboxalpha)
{
float thingsize = General.Settings.DrawThingsFixedSize ? General.Settings.DefaultThingSize : t.Size;
if(thingsize * scale < MINIMUM_THING_RADIUS) return false; //mxd. Don't render tiny little things
// Determine size
float circlesize = (t.FixedSize && (scale > 1.0f) ? thingsize /* * THING_CIRCLE_SIZE*/ : thingsize * scale /* * THING_CIRCLE_SIZE*/);
// Determine sizes
float circlesize = ((t.FixedSize || General.Settings.FixedThingsScale) && (scale > 1.0f) ? t.Size : t.Size * scale);
float bboxsize = ((!t.FixedSize && General.Settings.FixedThingsScale) && (scale > 1.0f) ? t.Size * scale : -1); //mxd
float screensize = Math.Max(circlesize, bboxsize); //mxd
// Transform to screen coordinates
Vector2D screenpos = ((Vector2D)t.Position).GetTransformed(translatex, translatey, scale, -scale);
// Check if the thing is actually on screen
if(((screenpos.x + circlesize) <= 0.0f) || ((screenpos.x - circlesize) >= windowsize.Width) ||
((screenpos.y + circlesize) <= 0.0f) || ((screenpos.y - circlesize) >= windowsize.Height))
if(((screenpos.x + screensize) <= 0.0f) || ((screenpos.x - screensize) >= windowsize.Width) ||
((screenpos.y + screensize) <= 0.0f) || ((screenpos.y - screensize) >= windowsize.Height))
return false;
// Get integral color
@ -1036,6 +1031,22 @@ namespace CodeImp.DoomBuilder.Rendering
//mxd. Add to list
thingsByPosition.Add(t, screenpos);
//mxd. Add bounding box?
if(bboxsize > 0)
{
PixelColor boxcolor = c.WithAlpha(bboxalpha);
Vector2D tl = new Vector2D(screenpos.x - bboxsize, screenpos.y - bboxsize);
Vector2D tr = new Vector2D(screenpos.x + bboxsize, screenpos.y - bboxsize);
Vector2D bl = new Vector2D(screenpos.x - bboxsize, screenpos.y + bboxsize);
Vector2D br = new Vector2D(screenpos.x + bboxsize, screenpos.y + bboxsize);
bboxes.Add(new Line3D(tl, tr, boxcolor, false));
bboxes.Add(new Line3D(tr, br, boxcolor, false));
bboxes.Add(new Line3D(bl, br, boxcolor, false));
bboxes.Add(new Line3D(tl, bl, boxcolor, false));
}
// Done
return true;
}
@ -1045,10 +1056,10 @@ namespace CodeImp.DoomBuilder.Rendering
{
// Determine size
float thingsize = General.Settings.DrawThingsFixedSize ? General.Settings.DefaultThingSize : t.Size;
float arrowsize = (t.FixedSize && (scale > 1.0f) ? thingsize : thingsize * scale) * THING_ARROW_SIZE; //mxd
float arrowsize = ((t.FixedSize || General.Settings.FixedThingsScale) && (scale > 1.0f) ? t.Size : t.Size * scale) * THING_ARROW_SIZE; //mxd
// Setup rotated rect for arrow
float sinarrowsize = (float)Math.Sin(t.Angle + Angle2D.PI * 0.25f) * arrowsize;
// Setup rotated rect for arrow
float sinarrowsize = (float)Math.Sin(t.Angle + Angle2D.PI * 0.25f) * arrowsize;
float cosarrowsize = (float)Math.Cos(t.Angle + Angle2D.PI * 0.25f) * arrowsize;
verts[offset].x = screenpos.x + sinarrowsize;
@ -1123,6 +1134,7 @@ namespace CodeImp.DoomBuilder.Rendering
// Make alpha color
Color4 alphacolor = new Color4(alpha, 1.0f, 1.0f, 1.0f);
byte bboxalpha = (byte)(alpha * (General.Editing.Mode.GetType().Name == "ThingsMode" ? 128 : 255));
// Set renderstates for things rendering
graphics.Device.SetRenderState(RenderState.CullMode, Cull.None);
@ -1136,7 +1148,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Device.SetStreamSource(0, thingsvertices, 0, FlatVertex.Stride);
// Set things texture
graphics.Device.SetTexture(0, thingtexture.Texture);
graphics.Shaders.Things2D.Texture1 = thingtexture.Texture;
SetWorldTransformation(false);
graphics.Shaders.Things2D.SetSettings(alpha);
@ -1148,6 +1159,7 @@ namespace CodeImp.DoomBuilder.Rendering
// Determine next lock size
int locksize = (things.Count > THING_BUFFER_SIZE) ? THING_BUFFER_SIZE : things.Count;
FlatVertex[] verts = new FlatVertex[THING_BUFFER_SIZE * 6];
List<Line3D> bboxes = new List<Line3D>(locksize); //mxd
//mxd
Dictionary<int, List<Thing>> thingsByType = new Dictionary<int, List<Thing>>();
@ -1171,7 +1183,7 @@ namespace CodeImp.DoomBuilder.Rendering
// Create vertices
PixelColor tc = fixedcolor ? c : DetermineThingColor(t);
if(CreateThingBoxVerts(t, ref verts, thingsByPosition, buffercount * 6, tc))
if(CreateThingBoxVerts(t, ref verts, ref bboxes, thingsByPosition, buffercount * 6, tc, bboxalpha))
{
buffercount++;
@ -1234,8 +1246,8 @@ namespace CodeImp.DoomBuilder.Rendering
}
if(sprite.Texture == null) sprite.CreateTexture();
graphics.Device.SetTexture(0, sprite.Texture);
graphics.Shaders.Things2D.Texture1 = sprite.Texture;
graphics.Shaders.Things2D.ApplySettings();
// Determine next lock size
locksize = (group.Value.Count > THING_BUFFER_SIZE) ? THING_BUFFER_SIZE : group.Value.Count;
@ -1246,7 +1258,7 @@ namespace CodeImp.DoomBuilder.Rendering
totalcount = 0;
float spriteWidth, spriteHeight;
float spriteScale = (group.Value[0].FixedSize && (scale > 1.0f)) ? 1.0f : scale;
float spriteScale = ((group.Value[0].FixedSize || General.Settings.FixedThingsScale) && (scale > 1.0f)) ? 1.0f : scale;
float radius = General.Settings.DrawThingsFixedSize ? General.Settings.DefaultThingSize : info.Radius;
if(sprite.Width > sprite.Height)
@ -1310,7 +1322,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Shaders.Things2D.EndPass();
//mxd. Render thing arrows
graphics.Device.SetTexture(0, thingtexture.Texture);
graphics.Shaders.Things2D.Texture1 = thingtexture.Texture;
graphics.Shaders.Things2D.BeginPass(0);
@ -1418,6 +1429,9 @@ namespace CodeImp.DoomBuilder.Rendering
}
graphics.Shaders.Things2D.End();
//mxd. Render thing boxes
RenderArrows(bboxes, false);
}
}
@ -1625,7 +1639,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetRenderState(RenderState.FogEnable, false);
graphics.Shaders.Display2D.Texture1 = t;
graphics.Device.SetTexture(0, t);
SetWorldTransformation(transformcoords);
graphics.Shaders.Display2D.SetSettings(1f, 1f, 0f, 1f, General.Settings.ClassicBilinear);
@ -1682,7 +1695,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Shaders.Display2D.Texture1 = graphics.FontTexture;
SetWorldTransformation(false);
graphics.Shaders.Display2D.SetSettings(1f, 1f, 0f, 1f, true);
graphics.Device.SetTexture(0, graphics.FontTexture);
graphics.Device.SetStreamSource(0, text.VertexBuffer, 0, FlatVertex.Stride);
// Draw
@ -1745,7 +1757,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetRenderState(RenderState.FogEnable, false);
SetWorldTransformation(false);
graphics.Device.SetTexture(0, General.Map.Data.WhiteTexture.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.WhiteTexture.Texture;
graphics.Shaders.Display2D.SetSettings(1f, 1f, 0f, 1f, General.Settings.ClassicBilinear);
@ -1784,7 +1795,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetRenderState(RenderState.FogEnable, false);
SetWorldTransformation(false);
graphics.Device.SetTexture(0, General.Map.Data.WhiteTexture.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.WhiteTexture.Texture;
graphics.Shaders.Display2D.SetSettings(1f, 1f, 0f, 1f, General.Settings.ClassicBilinear);
@ -1820,7 +1830,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetRenderState(RenderState.FogEnable, false);
SetWorldTransformation(false);
graphics.Device.SetTexture(0, texture.Texture);
graphics.Shaders.Display2D.Texture1 = texture.Texture;
graphics.Shaders.Display2D.SetSettings(1f, 1f, 0f, 1f, General.Settings.ClassicBilinear);
@ -1833,7 +1842,8 @@ namespace CodeImp.DoomBuilder.Rendering
}
//mxd
public void RenderArrows(ICollection<Line3D> lines)
public void RenderArrows(ICollection<Line3D> lines) { RenderArrows(lines, true); }
public void RenderArrows(ICollection<Line3D> lines, bool transformcoords)
{
if(lines.Count == 0) return;
int pointscount = 0;
@ -1841,9 +1851,12 @@ namespace CodeImp.DoomBuilder.Rendering
// Translate to screen coords, determine renderability
foreach(Line3D line in lines)
{
// Calculate screen positions
line.Start2D = ((Vector2D)line.Start).GetTransformed(translatex, translatey, scale, -scale); //start
line.End2D = ((Vector2D)line.End).GetTransformed(translatex, translatey, scale, -scale); //end
// Calculate screen positions?
if(transformcoords)
{
line.Start2D = ((Vector2D)line.Start).GetTransformed(translatex, translatey, scale, -scale); //start
line.End2D = ((Vector2D)line.End).GetTransformed(translatex, translatey, scale, -scale); //end
}
float maxx = Math.Max(line.Start2D.x, line.End2D.x);
float minx = Math.Min(line.Start2D.x, line.End2D.x);
@ -1922,7 +1935,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetRenderState(RenderState.FogEnable, false);
SetWorldTransformation(false);
graphics.Device.SetTexture(0, General.Map.Data.WhiteTexture.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.WhiteTexture.Texture;
graphics.Shaders.Display2D.SetSettings(1f, 1f, 0f, 1f, General.Settings.ClassicBilinear);
@ -1999,7 +2011,6 @@ namespace CodeImp.DoomBuilder.Rendering
graphics.Device.SetRenderState(RenderState.TextureFactor, -1);
graphics.Device.SetRenderState(RenderState.FogEnable, false);
SetWorldTransformation(false);
graphics.Device.SetTexture(0, General.Map.Data.WhiteTexture.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.WhiteTexture.Texture;
graphics.Shaders.Display2D.SetSettings(1f, 1f, 0f, 1f, General.Settings.ClassicBilinear);

View File

@ -1874,13 +1874,11 @@ namespace CodeImp.DoomBuilder.Rendering
if(crosshairbusy)
{
if(General.Map.Data.CrosshairBusy3D.Texture == null) General.Map.Data.CrosshairBusy3D.CreateTexture();
graphics.Device.SetTexture(0, General.Map.Data.CrosshairBusy3D.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.CrosshairBusy3D.Texture;
}
else
{
if(General.Map.Data.Crosshair3D.Texture == null) General.Map.Data.Crosshair3D.CreateTexture();
graphics.Device.SetTexture(0, General.Map.Data.Crosshair3D.Texture);
graphics.Shaders.Display2D.Texture1 = General.Map.Data.Crosshair3D.Texture;
}

View File

@ -1037,6 +1037,16 @@ togglecomments //mxd
allowscroll = false;
}
togglefixedthingsscale //mxd
{
title = "Toggle Fixed Things Scale";
category = "view";
description = "When enabled, Things will no longer be scaled based on current zoom level in Classic modes.";
allowkeys = true;
allowmouse = false;
allowscroll = false;
}
togglebrightness //mxd
{
title = "Toggle Full Brightness";

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -182,6 +182,7 @@ namespace CodeImp.DoomBuilder.Windows
this.buttonviewceilings = new System.Windows.Forms.ToolStripButton();
this.seperatorviews = new System.Windows.Forms.ToolStripSeparator();
this.buttontogglecomments = new System.Windows.Forms.ToolStripButton();
this.buttontogglefixedthingsscale = new System.Windows.Forms.ToolStripButton();
this.buttonsnaptogrid = new System.Windows.Forms.ToolStripButton();
this.buttonautomerge = new System.Windows.Forms.ToolStripButton();
this.buttonautoclearsidetextures = new System.Windows.Forms.ToolStripButton();
@ -256,6 +257,7 @@ namespace CodeImp.DoomBuilder.Windows
this.flowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
this.modecontrolsloolbar = new System.Windows.Forms.ToolStrip();
this.itemtogglecomments = new System.Windows.Forms.ToolStripMenuItem();
this.itemtogglefixedthingsscale = new System.Windows.Forms.ToolStripMenuItem();
this.itemdynamicgridsize = new System.Windows.Forms.ToolStripMenuItem();
this.itemrendernightspath = new System.Windows.Forms.ToolStripMenuItem();
toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
@ -741,6 +743,7 @@ namespace CodeImp.DoomBuilder.Windows
this.itemtogglegrid,
this.itemrendernightspath,
this.itemtogglecomments,
this.itemtogglefixedthingsscale,
this.toolStripSeparator4,
this.menuzoom,
this.itemgotocoords,
@ -1247,6 +1250,7 @@ namespace CodeImp.DoomBuilder.Windows
this.buttonfullbrightness,
this.buttontogglegrid,
this.buttontogglecomments,
this.buttontogglefixedthingsscale,
this.separatorfullbrightness,
this.buttonviewnormal,
this.buttonviewbrightness,
@ -1677,6 +1681,19 @@ namespace CodeImp.DoomBuilder.Windows
this.buttontogglecomments.Text = "Show Comments";
this.buttontogglecomments.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttontogglefixedthingsscale
//
this.buttontogglefixedthingsscale.Checked = true;
this.buttontogglefixedthingsscale.CheckState = System.Windows.Forms.CheckState.Checked;
this.buttontogglefixedthingsscale.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttontogglefixedthingsscale.Image = global::CodeImp.DoomBuilder.Properties.Resources.FixedThingsScale;
this.buttontogglefixedthingsscale.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttontogglefixedthingsscale.Name = "buttontogglefixedthingsscale";
this.buttontogglefixedthingsscale.Size = new System.Drawing.Size(23, 22);
this.buttontogglefixedthingsscale.Tag = "builder_togglefixedthingsscale";
this.buttontogglefixedthingsscale.Text = "Fixed Things Scale";
this.buttontogglefixedthingsscale.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonsnaptogrid
//
this.buttonsnaptogrid.Checked = true;
@ -2448,6 +2465,18 @@ namespace CodeImp.DoomBuilder.Windows
this.itemtogglecomments.Text = "Show Comments";
this.itemtogglecomments.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// itemtogglefixedthingsscale
//
this.itemtogglefixedthingsscale.Checked = true;
this.itemtogglefixedthingsscale.CheckOnClick = true;
this.itemtogglefixedthingsscale.CheckState = System.Windows.Forms.CheckState.Checked;
this.itemtogglefixedthingsscale.Image = global::CodeImp.DoomBuilder.Properties.Resources.FixedThingsScale;
this.itemtogglefixedthingsscale.Name = "itemtogglefixedthingsscale";
this.itemtogglefixedthingsscale.Size = new System.Drawing.Size(215, 22);
this.itemtogglefixedthingsscale.Tag = "builder_togglefixedthingsscale";
this.itemtogglefixedthingsscale.Text = "Fixed Things Scale";
this.itemtogglefixedthingsscale.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// itemdynamicgridsize
//
this.itemdynamicgridsize.Checked = true;
@ -2725,6 +2754,7 @@ namespace CodeImp.DoomBuilder.Windows
private ToolStripMenuItem item2zoom800;
private ToolStripMenuItem itemzoom800;
private ToolStripButton buttontogglecomments;
private ToolStripButton buttontogglefixedthingsscale;
private ToolStripMenuItem itemlinedefcolors;
private ToolStripSeparator separatorlinecolors;
private ToolStripButton buttonlinededfcolors;
@ -2737,5 +2767,6 @@ namespace CodeImp.DoomBuilder.Windows
private ToolStripMenuItem itemdynamicgridsize;
private ToolStripMenuItem itemrendernightspath;
private ToolStripMenuItem itemtogglecomments;
private ToolStripMenuItem itemtogglefixedthingsscale;
}
}

View File

@ -2025,6 +2025,8 @@ namespace CodeImp.DoomBuilder.Windows
itemrendernightspath.Checked = General.Settings.RenderNiGHTSPath;
buttontogglecomments.Visible = General.Settings.ToolbarViewModes && maploaded && General.Map.UDMF; //mxd
buttontogglecomments.Checked = General.Settings.RenderComments; //mxd
buttontogglefixedthingsscale.Visible = General.Settings.ToolbarViewModes && maploaded; //mxd
buttontogglefixedthingsscale.Checked = General.Settings.FixedThingsScale; //mxd
separatorfullbrightness.Visible = General.Settings.ToolbarViewModes && maploaded; //mxd
buttonviewbrightness.Visible = General.Settings.ToolbarViewModes && maploaded;
buttonviewceilings.Visible = General.Settings.ToolbarViewModes && maploaded;
@ -2774,6 +2776,19 @@ namespace CodeImp.DoomBuilder.Windows
RedrawDisplay();
}
//mxd. Action to toggle fixed things scale
[BeginAction("togglefixedthingsscale")]
internal void ToggleFixedThingsScale()
{
buttontogglefixedthingsscale.Checked = !buttontogglefixedthingsscale.Checked;
itemtogglefixedthingsscale.Checked = buttontogglefixedthingsscale.Checked;
General.Settings.FixedThingsScale = buttontogglefixedthingsscale.Checked;
DisplayStatus(StatusType.Action, "Fixed things scale is " + (buttontogglefixedthingsscale.Checked ? "ENABLED" : "DISABLED"));
// Redraw display to show changes
RedrawDisplay();
}
// Action to toggle snap to grid
[BeginAction("togglesnap")]
internal void ToggleSnapToGrid()
@ -2886,6 +2901,8 @@ namespace CodeImp.DoomBuilder.Windows
itemtoggleinfo.Checked = IsInfoPanelExpanded;
itemtogglecomments.Visible = (General.Map != null && General.Map.UDMF); //mxd
itemtogglecomments.Checked = General.Settings.RenderComments; //mxd
itemtogglefixedthingsscale.Visible = (General.Map != null); //mxd
itemtogglefixedthingsscale.Checked = General.Settings.FixedThingsScale; //mxd
// View mode items
if(General.Map != null)

View File

@ -761,7 +761,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
{
if(t.Fields.ContainsKey("comment"))
{
float size = ((t.FixedSize && renderer.Scale > 1.0f) ? t.Size / renderer.Scale : t.Size);
float size = (((t.FixedSize || General.Settings.FixedThingsScale) && renderer.Scale > 1.0f) ? t.Size / renderer.Scale : t.Size);
if(size * renderer.Scale < 1.5f) return; // Thing is too small to render
int iconindex = 0;