From a9c64fe52142ac7343101ff153b9952a83dd2abe Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Fri, 1 Apr 2016 10:49:19 +0000
Subject: [PATCH] Changed, Texture Browser window: "All" textures group is now
 saved/reselected like the rest of the texture groups when closing/opening the
 window. Changed, Classic modes: bigger Thing arrows are now rendered when
 thing sprite rendering is skipped. Changed, Classic modes: when "Fixed Things
 Scale" option is enabled, thing size stays at 2x scale instead of 1x when
 extra bounding box is rendered. Added Preferences -> Appearance -> "Things
 transparency (Things mode)" slider. Renamed Preferences -> Appearance ->
 "Things transparency" to "Things transparency (other modes)". Externalized
 thing bounding box and arrow texture, used to render things in Classic modes
 (Textures/ThingTexture2D.png). Updated ZDoom_DECORATE.cfg (A_SetUserVarFloat,
 A_SetUserArrayFloat).

---
 Build/Scripting/ZDoom_DECORATE.cfg            |   2 +
 Build/Textures/ThingTexture2D.png             | Bin 0 -> 13556 bytes
 Source/Core/Builder.csproj                    |   2 +-
 Source/Core/Config/ProgramConfiguration.cs    |   4 +
 Source/Core/Data/DataManager.cs               |  18 ++-
 Source/Core/Rendering/Renderer2D.cs           |  96 +++++++------
 Source/Core/Resources/Thing2D.png             | Bin 12745 -> 0 bytes
 Source/Core/Resources/ThingTexture2D.png      | Bin 0 -> 13556 bytes
 .../Core/Windows/PreferencesForm.Designer.cs  | 136 ++++++++++++------
 Source/Core/Windows/PreferencesForm.cs        |   9 ++
 Source/Core/Windows/TextureBrowserForm.cs     |  12 +-
 .../BuilderModes/ClassicModes/BridgeMode.cs   |   2 +-
 .../ClassicModes/CurveLinedefsMode.cs         |   2 +-
 .../ClassicModes/DragLinedefsMode.cs          |   6 +-
 .../ClassicModes/DragSectorsMode.cs           |   6 +-
 .../ClassicModes/DragThingsMode.cs            |   6 +-
 .../ClassicModes/DragVerticesMode.cs          |   6 +-
 .../ClassicModes/DrawGeometryMode.cs          |   2 +-
 .../ClassicModes/EditSelectionMode.cs         |   8 +-
 .../ClassicModes/ErrorCheckMode.cs            |   2 +-
 .../ClassicModes/FindReplaceMode.cs           |   2 +-
 .../ClassicModes/FlatAlignMode.cs             |   2 +-
 .../BuilderModes/ClassicModes/LinedefsMode.cs |   2 +-
 .../ClassicModes/MakeSectorMode.cs            |   2 +-
 .../BuilderModes/ClassicModes/SectorsMode.cs  |   2 +-
 .../BuilderModes/ClassicModes/ThingsMode.cs   |  11 +-
 .../BuilderModes/ClassicModes/VerticesMode.cs |   2 +-
 .../ResultInvalidPolyobjectThings.cs          |   2 +-
 .../ErrorChecks/ResultObsoleteThing.cs        |   2 +-
 .../ErrorChecks/ResultStuckThingInLine.cs     |   2 +-
 .../ErrorChecks/ResultStuckThingInThing.cs    |   4 +-
 .../ErrorChecks/ResultThingOutside.cs         |   2 +-
 .../ErrorChecks/ResultUnknownThing.cs         |   2 +-
 .../ErrorChecks/ResultUnusedThing.cs          |   2 +-
 .../BuilderModes/FindReplace/BaseFindThing.cs |   2 +-
 .../BuilderModes/General/BuilderPlug.cs       |   6 +-
 .../SoundEnvironmentMode.cs                   |   5 +-
 .../SoundPropagationMode.cs                   |   2 +-
 .../StairSectorBuilderMode.cs                 |   2 +-
 39 files changed, 224 insertions(+), 151 deletions(-)
 create mode 100644 Build/Textures/ThingTexture2D.png
 delete mode 100644 Source/Core/Resources/Thing2D.png
 create mode 100644 Source/Core/Resources/ThingTexture2D.png

diff --git a/Build/Scripting/ZDoom_DECORATE.cfg b/Build/Scripting/ZDoom_DECORATE.cfg
index 9676ae921..e95ed2a89 100644
--- a/Build/Scripting/ZDoom_DECORATE.cfg
+++ b/Build/Scripting/ZDoom_DECORATE.cfg
@@ -248,6 +248,7 @@ keywords
 	A_SetTics = "A_SetTics(int tics)";
 	A_SetTranslucent = "A_SetTranslucent(float alpha[, int mode = 0])";
 	A_SetUserVar = "A_SetUserVar(str name, int value)";
+	A_SetUserVarFloat = "A_SetUserVarFloat(str name, float value)";
 	A_TransferPointer = "A_TransferPointer(int source, int recipient, int sourcefield, int recipientfield[, int flags])\nflags: PTROP flags.";
 	A_UnHideThing = "A_UnHideThing";
 	A_UnsetFloat = "A_UnsetFloat";
@@ -379,6 +380,7 @@ keywords
 	A_RocketInFlight = "A_RocketInFlight";
 	A_SetGravity = "A_SetGravity(float gravity)\nSets the amount of gravity for the calling actor.";
 	A_SetUserArray = "A_SetUserArray(str name, int index, int value)";
+	A_SetUserArrayFloat = "A_SetUserArrayFloat(str name, int index, float value)";
 	A_ShootGun = "A_ShootGun";
 	A_SPosAttackUseAtkSound = "A_SPosAttackUseAtkSound";
 //Mathematical functions
diff --git a/Build/Textures/ThingTexture2D.png b/Build/Textures/ThingTexture2D.png
new file mode 100644
index 0000000000000000000000000000000000000000..9d53dfff1e7978766825b35afc60389e45e129c7
GIT binary patch
literal 13556
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
aww(KD=k-7Ti~m0)>7q9m{`y*Y`u_p<V7YMs

literal 0
HcmV?d00001

diff --git a/Source/Core/Builder.csproj b/Source/Core/Builder.csproj
index 0bcb02467..439f09ff0 100644
--- a/Source/Core/Builder.csproj
+++ b/Source/Core/Builder.csproj
@@ -682,7 +682,7 @@
     </EmbeddedResource>
     <EmbeddedResource Include="Resources\Actions.cfg" />
     <EmbeddedResource Include="Resources\display2d.fx" />
-    <EmbeddedResource Include="Resources\Thing2D.png" />
+    <EmbeddedResource Include="Resources\ThingTexture2D.png" />
     <EmbeddedResource Include="Resources\things2d.fx" />
     <EmbeddedResource Include="Resources\world3d.fx" />
   </ItemGroup>
diff --git a/Source/Core/Config/ProgramConfiguration.cs b/Source/Core/Config/ProgramConfiguration.cs
index 179327495..cfc3f13f6 100644
--- a/Source/Core/Config/ProgramConfiguration.cs
+++ b/Source/Core/Config/ProgramConfiguration.cs
@@ -50,6 +50,7 @@ namespace CodeImp.DoomBuilder.Config
 		private float visualmousesensy;
 		private int imagebrightness;
 		private float doublesidedalpha;
+		private float activethingsalpha; //mxd
 		private float inactivethingsalpha; //mxd
 		private float hiddenthingsalpha; //mxd
 		private byte doublesidedalphabyte;
@@ -153,6 +154,7 @@ namespace CodeImp.DoomBuilder.Config
 		public int ImageBrightness { get { return imagebrightness; } internal set { imagebrightness = value; } }
 		public float DoubleSidedAlpha { get { return doublesidedalpha; } internal set { doublesidedalpha = value; doublesidedalphabyte = (byte)(doublesidedalpha * 255f); } }
 		public byte DoubleSidedAlphaByte { get { return doublesidedalphabyte; } }
+		public float ActiveThingsAlpha { get { return activethingsalpha; } internal set { activethingsalpha = value; } } //mxd
 		public float InactiveThingsAlpha { get { return inactivethingsalpha; } internal set { inactivethingsalpha = value; } } //mxd
 		public float HiddenThingsAlpha { get { return hiddenthingsalpha; } internal set { hiddenthingsalpha = value; } } //mxd
 		public float BackgroundAlpha { get { return backgroundalpha; } internal set { backgroundalpha = value; } }
@@ -282,6 +284,7 @@ namespace CodeImp.DoomBuilder.Config
 				imagebrightness = cfg.ReadSetting("imagebrightness", 3);
 				doublesidedalpha = cfg.ReadSetting("doublesidedalpha", 0.4f);
 				doublesidedalphabyte = (byte)(doublesidedalpha * 255f);
+				activethingsalpha = cfg.ReadSetting("activethingsalpha", Presentation.THINGS_ALPHA); //mxd
 				inactivethingsalpha = cfg.ReadSetting("inactivethingsalpha", Presentation.THINGS_BACK_ALPHA); //mxd
 				hiddenthingsalpha = cfg.ReadSetting("hiddenthingsalpha", Presentation.THINGS_HIDDEN_ALPHA); //mxd
 				backgroundalpha = cfg.ReadSetting("backgroundalpha", 1.0f);
@@ -392,6 +395,7 @@ namespace CodeImp.DoomBuilder.Config
 			cfg.WriteSetting("qualitydisplay", qualitydisplay);
 			cfg.WriteSetting("testmonsters", testmonsters);
 			cfg.WriteSetting("doublesidedalpha", doublesidedalpha);
+			cfg.WriteSetting("activethingsalpha", activethingsalpha); //mxd
 			cfg.WriteSetting("inactivethingsalpha", inactivethingsalpha); //mxd
 			cfg.WriteSetting("hiddenthingsalpha", hiddenthingsalpha); //mxd
 			cfg.WriteSetting("backgroundalpha", backgroundalpha);
diff --git a/Source/Core/Data/DataManager.cs b/Source/Core/Data/DataManager.cs
index 64dba501f..1646ef8ad 100644
--- a/Source/Core/Data/DataManager.cs
+++ b/Source/Core/Data/DataManager.cs
@@ -124,6 +124,7 @@ namespace CodeImp.DoomBuilder.Data
 		private Dictionary<string, ImageData> internalsprites;
 		private ImageData whitetexture;
 		private ImageData blacktexture; //mxd
+		private ImageData thingtexture; //mxd
 
 		//mxd. Sky textures
 		private CubeTexture skybox; // GZDoom skybox
@@ -180,6 +181,7 @@ namespace CodeImp.DoomBuilder.Data
 		public ImageData CrosshairBusy3D { get { return crosshairbusy; } }
 		public ImageData WhiteTexture { get { return whitetexture; } }
 		public ImageData BlackTexture { get { return blacktexture; } } //mxd
+		public ImageData ThingTexture { get { return thingtexture; } } //mxd
 		public ImageData[] CommentTextures { get { return commenttextures; } } //mxd
 		internal CubeTexture SkyBox { get { return skybox; } } //mxd
 		public List<ThingCategory> ThingCategories { get { return thingcategories; } }
@@ -258,6 +260,8 @@ namespace CodeImp.DoomBuilder.Data
 				whitetexture = null;
 				blacktexture.Dispose(); //mxd
 				blacktexture = null; //mxd
+				thingtexture.Dispose(); //mxd
+				thingtexture = null; //mxd
 				unknownimage.Dispose(); //mxd
 				unknownimage = null; //mxd
 				for(int i = 0; i < commenttextures.Length; i++) //mxd
@@ -1195,11 +1199,15 @@ namespace CodeImp.DoomBuilder.Data
 		//mxd
 		private void LoadInternalTextures()
 		{
-			missingtexture3d = LoadInternalTexture("MissingTexture3D.png"); //mxd
-			unknowntexture3d = LoadInternalTexture("UnknownTexture3D.png"); //mxd
-			hourglass3d = LoadInternalTexture("Hourglass3D.png"); //mxd
-			crosshair = LoadInternalTexture("Crosshair.png"); //mxd
-			crosshairbusy = LoadInternalTexture("CrosshairBusy.png"); //mxd
+			missingtexture3d = LoadInternalTexture("MissingTexture3D.png");
+			unknowntexture3d = LoadInternalTexture("UnknownTexture3D.png");
+			thingtexture = LoadInternalTexture("ThingTexture2D.png");
+			hourglass3d = LoadInternalTexture("Hourglass3D.png");
+			crosshair = LoadInternalTexture("Crosshair.png");
+			crosshairbusy = LoadInternalTexture("CrosshairBusy.png");
+
+			thingtexture.UseColorCorrection = false;
+			thingtexture.CreateTexture();
 		}
 
 		//mxd
diff --git a/Source/Core/Rendering/Renderer2D.cs b/Source/Core/Rendering/Renderer2D.cs
index 57d6e5528..7d1de4114 100644
--- a/Source/Core/Rendering/Renderer2D.cs
+++ b/Source/Core/Rendering/Renderer2D.cs
@@ -51,11 +51,7 @@ namespace CodeImp.DoomBuilder.Rendering
 		private const float THING_SPRITE_SHRINK = 2f;
 		private const int THING_BUFFER_SIZE = 100;
 		private const float MINIMUM_THING_RADIUS = 1.5f; //mxd
-		private const float MINIMUM_SPRITE_RADIUS = 5.5f; //mxd
-
-		private const string FONT_NAME = "Verdana";
-		private const int FONT_WIDTH = 0;
-		private const int FONT_HEIGHT = 0;
+		private const float MINIMUM_SPRITE_RADIUS = 8.0f; //mxd
 
 		internal const int NUM_VIEW_MODES = 4;
 		
@@ -80,9 +76,6 @@ namespace CodeImp.DoomBuilder.Rendering
 		private Size thingssize;
 		private Size overlaysize;
 		private Size backsize;
-		
-		// Font
-		private SlimDX.Direct3D9.Font font;
 
 		// Geometry plotter
 		private Plotter plotter;
@@ -101,9 +94,6 @@ namespace CodeImp.DoomBuilder.Rendering
 		// Surfaces
 		private SurfaceManager surfaces;
 		
-		// Images
-		private ResourceImage thingtexture;
-		
 		// View settings (world coordinates)
 		private ViewMode viewmode;
 		private float scale;
@@ -146,11 +136,6 @@ namespace CodeImp.DoomBuilder.Rendering
 		// Constructor
 		internal Renderer2D(D3DDevice graphics) : base(graphics)
 		{
-			//mxd. Load thing texture
-			thingtexture = new ResourceImage("CodeImp.DoomBuilder.Resources.Thing2D.png") { UseColorCorrection = false };
-			thingtexture.LoadImage();
-			thingtexture.CreateTexture();
-
 			// Create surface manager
 			surfaces = new SurfaceManager();
 
@@ -169,7 +154,6 @@ namespace CodeImp.DoomBuilder.Rendering
 			{
 				// Destroy rendertargets
 				DestroyRendertargets();
-				thingtexture.Dispose(); //mxd
 				
 				// Dispose surface manager
 				surfaces.Dispose();
@@ -371,10 +355,6 @@ namespace CodeImp.DoomBuilder.Rendering
 			thingsvertices = null;
 			lastgridscale = -1f;
 			lastgridsize = 0;
-
-			// Trash font
-			if(font != null) font.Dispose();
-			font = null;
 		}
 		
 		// Allocates new image memory to render on
@@ -417,9 +397,6 @@ namespace CodeImp.DoomBuilder.Rendering
 			graphics.ClearRendertarget(General.Colors.Background.WithAlpha(0).ToColorValue(), thingstex.GetSurfaceLevel(0), null);
 			graphics.ClearRendertarget(General.Colors.Background.WithAlpha(0).ToColorValue(), overlaytex.GetSurfaceLevel(0), null);
 			
-			// Create font
-			font = new SlimDX.Direct3D9.Font(graphics.Device, FONT_WIDTH, FONT_HEIGHT, FontWeight.Bold, 1, false, CharacterSet.Ansi, Precision.Default, FontQuality.Antialiased, PitchAndFamily.Default, FONT_NAME);
-			
 			// Create vertex buffers
 			screenverts = new VertexBuffer(graphics.Device, 4 * sizeof(FlatVertex), Usage.Dynamic | Usage.WriteOnly, VertexFormat.None, Pool.Default);
 			thingsvertices = new VertexBuffer(graphics.Device, THING_BUFFER_SIZE * 12 * sizeof(FlatVertex), Usage.Dynamic | Usage.WriteOnly, VertexFormat.None, Pool.Default);
@@ -957,14 +934,15 @@ 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, ref List<Line3D> bboxes, Dictionary<Thing, Vector2D> thingsByPosition, int offset, PixelColor c, byte bboxalpha)
+		private bool CreateThingBoxVerts(Thing t, ref FlatVertex[] verts, ref List<Line3D> bboxes, Dictionary<Thing, Vector3D> thingsByPosition, int offset, PixelColor c, byte bboxalpha)
 		{
 			if(t.Size * scale < MINIMUM_THING_RADIUS) return false; //mxd. Don't render tiny little things
 
 			// 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
+			float fixedscaler = (t.FixedSize ? 1.0f : 2.0f); //mxd
+			float circlesize = ((t.FixedSize || General.Settings.FixedThingsScale) && (scale > fixedscaler) ? t.Size * fixedscaler : t.Size * scale);
+			float bboxsize = ((!t.FixedSize && General.Settings.FixedThingsScale) && (scale > 2.0f) ? t.Size * scale : -1); //mxd
+			float screensize = (bboxsize > 0 ? bboxsize : circlesize); //mxd
 			
 			// Transform to screen coordinates
 			Vector2D screenpos = ((Vector2D)t.Position).GetTransformed(translatex, translatey, scale, -scale);
@@ -1030,32 +1008,50 @@ namespace CodeImp.DoomBuilder.Rendering
 		}
 
 		//mxd
-		private void CreateThingArrowVerts(Thing t, ref FlatVertex[] verts, Vector2D screenpos, int offset) 
+		private void CreateThingArrowVerts(Thing t, ref FlatVertex[] verts, Vector3D screenpos, int offset) 
 		{
 			// Determine size
-			float arrowsize = ((t.FixedSize || General.Settings.FixedThingsScale) && (scale > 1.0f) ? t.Size : t.Size * scale) * THING_ARROW_SIZE; //mxd
+			float fixedscaler = (t.FixedSize ? 1.0f : 2.0f);
+			float arrowsize = ((t.FixedSize || General.Settings.FixedThingsScale) && (scale > fixedscaler) ? t.Size * fixedscaler : t.Size * scale) * THING_ARROW_SIZE; //mxd
 
 			// 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;
 
+			// Sprite is not rendered?
+			float ut, ub, ul, ur;
+			if(screenpos.z < 0)
+			{
+				ul = 0.625f;
+				ur = 0.874f;
+				ut = -0.039f;
+				ub = 0.46f;
+			}
+			else
+			{
+				ul = 0.501f;
+				ur = 0.999f;
+				ut = 0.001f;
+				ub = 0.999f;
+			}
+
 			verts[offset].x = screenpos.x + sinarrowsize;
 			verts[offset].y = screenpos.y + cosarrowsize;
 			verts[offset].c = -1;
-			verts[offset].u = 0.501f;
-			verts[offset].v = 0.001f;
+			verts[offset].u = ul;
+			verts[offset].v = ut;
 			offset++;
 			verts[offset].x = screenpos.x - cosarrowsize;
 			verts[offset].y = screenpos.y + sinarrowsize;
 			verts[offset].c = -1;
-			verts[offset].u = 0.999f;
-			verts[offset].v = 0.001f;
+			verts[offset].u = ur;
+			verts[offset].v = ut;
 			offset++;
 			verts[offset].x = screenpos.x + cosarrowsize;
 			verts[offset].y = screenpos.y - sinarrowsize;
 			verts[offset].c = -1;
-			verts[offset].u = 0.501f;
-			verts[offset].v = 0.999f;
+			verts[offset].u = ul;
+			verts[offset].v = ub;
 			offset++;
 			verts[offset] = verts[offset - 2];
 			offset++;
@@ -1064,8 +1060,8 @@ namespace CodeImp.DoomBuilder.Rendering
 			verts[offset].x = screenpos.x - sinarrowsize;
 			verts[offset].y = screenpos.y - cosarrowsize;
 			verts[offset].c = -1;
-			verts[offset].u = 0.999f;
-			verts[offset].v = 0.999f;
+			verts[offset].u = ur;
+			verts[offset].v = ub;
 		}
 
 		//mxd
@@ -1125,7 +1121,7 @@ namespace CodeImp.DoomBuilder.Rendering
 				graphics.Device.SetStreamSource(0, thingsvertices, 0, FlatVertex.Stride);
 				
 				// Set things texture
-				graphics.Shaders.Things2D.Texture1 = thingtexture.Texture;
+				graphics.Shaders.Things2D.Texture1 = General.Map.Data.ThingTexture.Texture; //mxd
 				SetWorldTransformation(false);
 				graphics.Shaders.Things2D.SetSettings(alpha);
 				
@@ -1141,7 +1137,7 @@ namespace CodeImp.DoomBuilder.Rendering
 				//mxd
 				Dictionary<int, List<Thing>> thingsByType = new Dictionary<int, List<Thing>>();
 				Dictionary<int, List<Thing>> modelsByType = new Dictionary<int, List<Thing>>();
-				Dictionary<Thing, Vector2D> thingsByPosition = new Dictionary<Thing, Vector2D>();
+				Dictionary<Thing, Vector3D> thingsByPosition = new Dictionary<Thing, Vector3D>();
 
 				// Go for all things
 				int buffercount = 0;
@@ -1236,7 +1232,8 @@ namespace CodeImp.DoomBuilder.Rendering
 					totalcount = 0;
 
 					float spriteWidth, spriteHeight;
-					float spriteScale = ((group.Value[0].FixedSize || General.Settings.FixedThingsScale) && (scale > 1.0f)) ? 1.0f : scale;
+					float fixedscaler = (group.Value[0].FixedSize ? 1.0f : 2.0f);
+					float spriteScale = ((group.Value[0].FixedSize || General.Settings.FixedThingsScale) && (scale > fixedscaler)) ? fixedscaler : scale;
 
 					if(sprite.Width > sprite.Height) 
 					{
@@ -1258,7 +1255,16 @@ namespace CodeImp.DoomBuilder.Rendering
 					{
 						if(t.IsModel && (General.Settings.GZDrawModelsMode == ModelRenderMode.ALL || (General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && t.Selected) || (General.Settings.GZDrawModelsMode == ModelRenderMode.ACTIVE_THINGS_FILTER && alpha == 1.0f))) continue;
 						float scaler = t.Size / info.Radius;
-						if(Math.Max(spriteWidth, spriteHeight) * scaler < MINIMUM_SPRITE_RADIUS) continue; //don't render tiny little sprites
+						if(Math.Max(spriteWidth, spriteHeight) * scaler < MINIMUM_SPRITE_RADIUS)
+						{
+							// Hackish way to tell arrow rendering code to draw bigger arrow...
+							Vector3D v = thingsByPosition[t];
+							v.z = -1; 
+							thingsByPosition[t] = v;
+							
+							// Don't render tiny little sprites
+							continue; 
+						}
 						
 						CreateThingSpriteVerts(thingsByPosition[t], spriteWidth * scaler, spriteHeight * scaler, ref verts, buffercount * 6, t.Selected ? selectionColor : 0xFFFFFF);
 						buffercount++;
@@ -1298,7 +1304,7 @@ namespace CodeImp.DoomBuilder.Rendering
 				graphics.Shaders.Things2D.EndPass();
 
 				//mxd. Render thing arrows
-				graphics.Shaders.Things2D.Texture1 = thingtexture.Texture;
+				graphics.Shaders.Things2D.Texture1 = General.Map.Data.ThingTexture.Texture;
 				graphics.Shaders.Things2D.BeginPass(0);
 
 				// Determine next lock size
@@ -1309,7 +1315,7 @@ namespace CodeImp.DoomBuilder.Rendering
 				buffercount = 0;
 				totalcount = 0;
 
-				foreach(KeyValuePair<Thing, Vector2D> group in thingsByPosition) 
+				foreach(KeyValuePair<Thing, Vector3D> group in thingsByPosition) 
 				{
 					if(!group.Key.IsDirectional) continue;
 
@@ -1368,7 +1374,7 @@ namespace CodeImp.DoomBuilder.Rendering
 
 					foreach(KeyValuePair<int, List<Thing>> group in modelsByType)
 					{
-						ModelData mde = General.Map.Data.ModeldefEntries[@group.Key];
+						ModelData mde = General.Map.Data.ModeldefEntries[group.Key];
 						foreach(Thing t in group.Value) 
 						{
 							if((General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && !t.Selected) || (General.Settings.GZDrawModelsMode == ModelRenderMode.ACTIVE_THINGS_FILTER && alpha < 1.0f)) continue;
diff --git a/Source/Core/Resources/Thing2D.png b/Source/Core/Resources/Thing2D.png
deleted file mode 100644
index 1969e2f6761ed1cbe36ac26937b72a102b19675c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12745
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

diff --git a/Source/Core/Resources/ThingTexture2D.png b/Source/Core/Resources/ThingTexture2D.png
new file mode 100644
index 0000000000000000000000000000000000000000..87cb8939bb7e6ac343b773e02a674e0f3c01e70d
GIT binary patch
literal 13556
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
CU$@x+

literal 0
HcmV?d00001

diff --git a/Source/Core/Windows/PreferencesForm.Designer.cs b/Source/Core/Windows/PreferencesForm.Designer.cs
index 476e07d48..fcebeae94 100644
--- a/Source/Core/Windows/PreferencesForm.Designer.cs
+++ b/Source/Core/Windows/PreferencesForm.Designer.cs
@@ -144,6 +144,9 @@ namespace CodeImp.DoomBuilder.Windows
 			this.blackbrowsers = new System.Windows.Forms.CheckBox();
 			this.cbMarkExtraFloors = new System.Windows.Forms.CheckBox();
 			this.appearancegroup1 = new System.Windows.Forms.GroupBox();
+			this.activethingsalphalabel = new System.Windows.Forms.Label();
+			this.label31 = new System.Windows.Forms.Label();
+			this.activethingsalpha = new System.Windows.Forms.TrackBar();
 			this.hiddenthingsalphalabel = new System.Windows.Forms.Label();
 			this.label32 = new System.Windows.Forms.Label();
 			this.inactivethingsalphalabel = new System.Windows.Forms.Label();
@@ -246,6 +249,7 @@ namespace CodeImp.DoomBuilder.Windows
 			this.tabcolors.SuspendLayout();
 			this.groupBox10.SuspendLayout();
 			this.appearancegroup1.SuspendLayout();
+			((System.ComponentModel.ISupportInitialize)(this.activethingsalpha)).BeginInit();
 			((System.ComponentModel.ISupportInitialize)(this.antialiasing)).BeginInit();
 			((System.ComponentModel.ISupportInitialize)(this.anisotropicfiltering)).BeginInit();
 			((System.ComponentModel.ISupportInitialize)(this.tbDynLightIntensity)).BeginInit();
@@ -580,7 +584,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// label1
 			// 
 			label1.AutoSize = true;
-			label1.Location = new System.Drawing.Point(45, 134);
+			label1.Location = new System.Drawing.Point(45, 171);
 			label1.Name = "label1";
 			label1.Size = new System.Drawing.Size(143, 13);
 			label1.TabIndex = 20;
@@ -590,7 +594,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// label18
 			// 
 			label18.AutoSize = true;
-			label18.Location = new System.Drawing.Point(41, 171);
+			label18.Location = new System.Drawing.Point(41, 208);
 			label18.Name = "label18";
 			label18.Size = new System.Drawing.Size(147, 13);
 			label18.TabIndex = 25;
@@ -602,7 +606,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// label20
 			// 
 			label20.AutoSize = true;
-			label20.Location = new System.Drawing.Point(94, 208);
+			label20.Location = new System.Drawing.Point(94, 245);
 			label20.Name = "label20";
 			label20.Size = new System.Drawing.Size(94, 13);
 			label20.TabIndex = 28;
@@ -612,7 +616,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// label21
 			// 
 			label21.AutoSize = true;
-			label21.Location = new System.Drawing.Point(74, 245);
+			label21.Location = new System.Drawing.Point(74, 282);
 			label21.Name = "label21";
 			label21.Size = new System.Drawing.Size(114, 13);
 			label21.TabIndex = 31;
@@ -622,7 +626,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// label27
 			// 
 			label27.AutoSize = true;
-			label27.Location = new System.Drawing.Point(90, 282);
+			label27.Location = new System.Drawing.Point(90, 319);
 			label27.Name = "label27";
 			label27.Size = new System.Drawing.Size(98, 13);
 			label27.TabIndex = 35;
@@ -632,7 +636,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// label29
 			// 
 			label29.AutoSize = true;
-			label29.Location = new System.Drawing.Point(97, 319);
+			label29.Location = new System.Drawing.Point(97, 356);
 			label29.Name = "label29";
 			label29.Size = new System.Drawing.Size(91, 13);
 			label29.TabIndex = 38;
@@ -817,7 +821,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// doublesidedalphalabel
 			// 
 			this.doublesidedalphalabel.AutoSize = true;
-			this.doublesidedalphalabel.Location = new System.Drawing.Point(360, 23);
+			this.doublesidedalphalabel.Location = new System.Drawing.Point(359, 23);
 			this.doublesidedalphalabel.Name = "doublesidedalphalabel";
 			this.doublesidedalphalabel.Size = new System.Drawing.Size(21, 13);
 			this.doublesidedalphalabel.TabIndex = 16;
@@ -826,10 +830,10 @@ namespace CodeImp.DoomBuilder.Windows
 			// cbStretchView
 			// 
 			this.cbStretchView.AutoSize = true;
-			this.cbStretchView.Location = new System.Drawing.Point(229, 363);
+			this.cbStretchView.Location = new System.Drawing.Point(229, 413);
 			this.cbStretchView.Name = "cbStretchView";
 			this.cbStretchView.Size = new System.Drawing.Size(172, 17);
-			this.cbStretchView.TabIndex = 12;
+			this.cbStretchView.TabIndex = 13;
 			this.cbStretchView.Text = "Stretched view in visual modes";
 			this.toolTip1.SetToolTip(this.cbStretchView, "When enabled, visual mode will emulate \r\n(G)ZDoom\'s way of rendering by increasin" +
 					"g\r\nvertical scale of the world geometry and \r\nsprites by 15%.\r\n");
@@ -838,10 +842,10 @@ namespace CodeImp.DoomBuilder.Windows
 			// qualitydisplay
 			// 
 			this.qualitydisplay.AutoSize = true;
-			this.qualitydisplay.Location = new System.Drawing.Point(18, 363);
+			this.qualitydisplay.Location = new System.Drawing.Point(18, 413);
 			this.qualitydisplay.Name = "qualitydisplay";
 			this.qualitydisplay.Size = new System.Drawing.Size(128, 17);
-			this.qualitydisplay.TabIndex = 9;
+			this.qualitydisplay.TabIndex = 10;
 			this.qualitydisplay.Text = "High quality rendering";
 			this.qualitydisplay.UseVisualStyleBackColor = true;
 			// 
@@ -1551,6 +1555,9 @@ namespace CodeImp.DoomBuilder.Windows
 			this.appearancegroup1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
 						| System.Windows.Forms.AnchorStyles.Left)
 						| System.Windows.Forms.AnchorStyles.Right)));
+			this.appearancegroup1.Controls.Add(this.activethingsalphalabel);
+			this.appearancegroup1.Controls.Add(this.label31);
+			this.appearancegroup1.Controls.Add(this.activethingsalpha);
 			this.appearancegroup1.Controls.Add(this.hiddenthingsalphalabel);
 			this.appearancegroup1.Controls.Add(this.label32);
 			this.appearancegroup1.Controls.Add(this.inactivethingsalphalabel);
@@ -1591,10 +1598,41 @@ namespace CodeImp.DoomBuilder.Windows
 			this.appearancegroup1.TabStop = false;
 			this.appearancegroup1.Text = " Rendering ";
 			// 
+			// activethingsalphalabel
+			// 
+			this.activethingsalphalabel.AutoSize = true;
+			this.activethingsalphalabel.Location = new System.Drawing.Point(359, 60);
+			this.activethingsalphalabel.Name = "activethingsalphalabel";
+			this.activethingsalphalabel.Size = new System.Drawing.Size(21, 13);
+			this.activethingsalphalabel.TabIndex = 48;
+			this.activethingsalphalabel.Text = "0%";
+			// 
+			// label31
+			// 
+			this.label31.AutoSize = true;
+			this.label31.Location = new System.Drawing.Point(12, 60);
+			this.label31.Name = "label31";
+			this.label31.Size = new System.Drawing.Size(176, 13);
+			this.label31.TabIndex = 47;
+			this.label31.Text = "Things transparency (Things mode):";
+			this.label31.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			this.toolTip1.SetToolTip(this.label31, "Sets Things transparency in all classic\r\nmodes except Things mode");
+			// 
+			// activethingsalpha
+			// 
+			this.activethingsalpha.BackColor = System.Drawing.SystemColors.Window;
+			this.activethingsalpha.LargeChange = 3;
+			this.activethingsalpha.Location = new System.Drawing.Point(199, 49);
+			this.activethingsalpha.Name = "activethingsalpha";
+			this.activethingsalpha.Size = new System.Drawing.Size(154, 45);
+			this.activethingsalpha.TabIndex = 1;
+			this.activethingsalpha.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
+			this.activethingsalpha.ValueChanged += new System.EventHandler(this.activethingsalpha_ValueChanged);
+			// 
 			// hiddenthingsalphalabel
 			// 
 			this.hiddenthingsalphalabel.AutoSize = true;
-			this.hiddenthingsalphalabel.Location = new System.Drawing.Point(359, 97);
+			this.hiddenthingsalphalabel.Location = new System.Drawing.Point(359, 134);
 			this.hiddenthingsalphalabel.Name = "hiddenthingsalphalabel";
 			this.hiddenthingsalphalabel.Size = new System.Drawing.Size(21, 13);
 			this.hiddenthingsalphalabel.TabIndex = 45;
@@ -1603,7 +1641,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// label32
 			// 
 			this.label32.AutoSize = true;
-			this.label32.Location = new System.Drawing.Point(45, 97);
+			this.label32.Location = new System.Drawing.Point(45, 134);
 			this.label32.Name = "label32";
 			this.label32.Size = new System.Drawing.Size(143, 13);
 			this.label32.TabIndex = 44;
@@ -1614,7 +1652,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// inactivethingsalphalabel
 			// 
 			this.inactivethingsalphalabel.AutoSize = true;
-			this.inactivethingsalphalabel.Location = new System.Drawing.Point(359, 60);
+			this.inactivethingsalphalabel.Location = new System.Drawing.Point(359, 97);
 			this.inactivethingsalphalabel.Name = "inactivethingsalphalabel";
 			this.inactivethingsalphalabel.Size = new System.Drawing.Size(21, 13);
 			this.inactivethingsalphalabel.TabIndex = 42;
@@ -1623,18 +1661,18 @@ namespace CodeImp.DoomBuilder.Windows
 			// label30
 			// 
 			this.label30.AutoSize = true;
-			this.label30.Location = new System.Drawing.Point(82, 60);
+			this.label30.Location = new System.Drawing.Point(16, 97);
 			this.label30.Name = "label30";
-			this.label30.Size = new System.Drawing.Size(106, 13);
+			this.label30.Size = new System.Drawing.Size(173, 13);
 			this.label30.TabIndex = 41;
-			this.label30.Text = "Things transparency:";
+			this.label30.Text = "Things transparency (other modes):";
 			this.label30.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			this.toolTip1.SetToolTip(this.label30, "Sets Things transparency in all classic\r\nmodes except Things mode");
 			// 
 			// labelantialiasing
 			// 
 			this.labelantialiasing.AutoSize = true;
-			this.labelantialiasing.Location = new System.Drawing.Point(359, 319);
+			this.labelantialiasing.Location = new System.Drawing.Point(359, 356);
 			this.labelantialiasing.Name = "labelantialiasing";
 			this.labelantialiasing.Size = new System.Drawing.Size(54, 13);
 			this.labelantialiasing.TabIndex = 39;
@@ -1644,11 +1682,11 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.antialiasing.BackColor = System.Drawing.SystemColors.Window;
 			this.antialiasing.LargeChange = 1;
-			this.antialiasing.Location = new System.Drawing.Point(199, 308);
+			this.antialiasing.Location = new System.Drawing.Point(199, 345);
 			this.antialiasing.Maximum = 3;
 			this.antialiasing.Name = "antialiasing";
 			this.antialiasing.Size = new System.Drawing.Size(154, 45);
-			this.antialiasing.TabIndex = 8;
+			this.antialiasing.TabIndex = 9;
 			this.antialiasing.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.antialiasing.Value = 3;
 			this.antialiasing.ValueChanged += new System.EventHandler(this.antialiasing_ValueChanged);
@@ -1656,7 +1694,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// labelanisotropicfiltering
 			// 
 			this.labelanisotropicfiltering.AutoSize = true;
-			this.labelanisotropicfiltering.Location = new System.Drawing.Point(359, 282);
+			this.labelanisotropicfiltering.Location = new System.Drawing.Point(359, 319);
 			this.labelanisotropicfiltering.Name = "labelanisotropicfiltering";
 			this.labelanisotropicfiltering.Size = new System.Drawing.Size(24, 13);
 			this.labelanisotropicfiltering.TabIndex = 36;
@@ -1666,11 +1704,11 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.anisotropicfiltering.BackColor = System.Drawing.SystemColors.Window;
 			this.anisotropicfiltering.LargeChange = 1;
-			this.anisotropicfiltering.Location = new System.Drawing.Point(199, 271);
+			this.anisotropicfiltering.Location = new System.Drawing.Point(199, 308);
 			this.anisotropicfiltering.Maximum = 4;
 			this.anisotropicfiltering.Name = "anisotropicfiltering";
 			this.anisotropicfiltering.Size = new System.Drawing.Size(154, 45);
-			this.anisotropicfiltering.TabIndex = 7;
+			this.anisotropicfiltering.TabIndex = 8;
 			this.anisotropicfiltering.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.anisotropicfiltering.Value = 4;
 			this.anisotropicfiltering.ValueChanged += new System.EventHandler(this.anisotropicfiltering_ValueChanged);
@@ -1678,10 +1716,10 @@ namespace CodeImp.DoomBuilder.Windows
 			// cbOldHighlightMode
 			// 
 			this.cbOldHighlightMode.AutoSize = true;
-			this.cbOldHighlightMode.Location = new System.Drawing.Point(229, 409);
+			this.cbOldHighlightMode.Location = new System.Drawing.Point(229, 459);
 			this.cbOldHighlightMode.Name = "cbOldHighlightMode";
 			this.cbOldHighlightMode.Size = new System.Drawing.Size(207, 17);
-			this.cbOldHighlightMode.TabIndex = 14;
+			this.cbOldHighlightMode.TabIndex = 15;
 			this.cbOldHighlightMode.Text = "Always show selection in visual modes";
 			this.toolTip1.SetToolTip(this.cbOldHighlightMode, "If enabled, selected surfaces will be highlighted in Visual mode\r\neven if \"Show h" +
 					"ighlight\" mode is disabled \r\n(Doom Builder 2 behaviour).");
@@ -1690,7 +1728,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// labelDynLightIntensity
 			// 
 			this.labelDynLightIntensity.AutoSize = true;
-			this.labelDynLightIntensity.Location = new System.Drawing.Point(359, 245);
+			this.labelDynLightIntensity.Location = new System.Drawing.Point(359, 282);
 			this.labelDynLightIntensity.Name = "labelDynLightIntensity";
 			this.labelDynLightIntensity.Size = new System.Drawing.Size(22, 13);
 			this.labelDynLightIntensity.TabIndex = 32;
@@ -1700,11 +1738,11 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.tbDynLightIntensity.BackColor = System.Drawing.SystemColors.Window;
 			this.tbDynLightIntensity.LargeChange = 1;
-			this.tbDynLightIntensity.Location = new System.Drawing.Point(199, 234);
+			this.tbDynLightIntensity.Location = new System.Drawing.Point(199, 271);
 			this.tbDynLightIntensity.Minimum = 1;
 			this.tbDynLightIntensity.Name = "tbDynLightIntensity";
 			this.tbDynLightIntensity.Size = new System.Drawing.Size(154, 45);
-			this.tbDynLightIntensity.TabIndex = 6;
+			this.tbDynLightIntensity.TabIndex = 7;
 			this.tbDynLightIntensity.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.tbDynLightIntensity.Value = 10;
 			this.tbDynLightIntensity.ValueChanged += new System.EventHandler(this.tbDynLightIntensity_ValueChanged);
@@ -1712,7 +1750,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// labelDynLightSize
 			// 
 			this.labelDynLightSize.AutoSize = true;
-			this.labelDynLightSize.Location = new System.Drawing.Point(359, 208);
+			this.labelDynLightSize.Location = new System.Drawing.Point(359, 245);
 			this.labelDynLightSize.Name = "labelDynLightSize";
 			this.labelDynLightSize.Size = new System.Drawing.Size(22, 13);
 			this.labelDynLightSize.TabIndex = 29;
@@ -1722,12 +1760,12 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.tbDynLightSize.BackColor = System.Drawing.SystemColors.Window;
 			this.tbDynLightSize.LargeChange = 1;
-			this.tbDynLightSize.Location = new System.Drawing.Point(199, 197);
+			this.tbDynLightSize.Location = new System.Drawing.Point(199, 234);
 			this.tbDynLightSize.Maximum = 20;
 			this.tbDynLightSize.Minimum = 1;
 			this.tbDynLightSize.Name = "tbDynLightSize";
 			this.tbDynLightSize.Size = new System.Drawing.Size(154, 45);
-			this.tbDynLightSize.TabIndex = 5;
+			this.tbDynLightSize.TabIndex = 6;
 			this.tbDynLightSize.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.tbDynLightSize.Value = 10;
 			this.tbDynLightSize.ValueChanged += new System.EventHandler(this.tbDynLightSize_ValueChanged);
@@ -1735,7 +1773,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// labelDynLightCount
 			// 
 			this.labelDynLightCount.AutoSize = true;
-			this.labelDynLightCount.Location = new System.Drawing.Point(359, 171);
+			this.labelDynLightCount.Location = new System.Drawing.Point(359, 208);
 			this.labelDynLightCount.Name = "labelDynLightCount";
 			this.labelDynLightCount.Size = new System.Drawing.Size(19, 13);
 			this.labelDynLightCount.TabIndex = 26;
@@ -1745,12 +1783,12 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.tbDynLightCount.BackColor = System.Drawing.SystemColors.Window;
 			this.tbDynLightCount.LargeChange = 3;
-			this.tbDynLightCount.Location = new System.Drawing.Point(199, 160);
+			this.tbDynLightCount.Location = new System.Drawing.Point(199, 197);
 			this.tbDynLightCount.Maximum = 32;
 			this.tbDynLightCount.Minimum = 1;
 			this.tbDynLightCount.Name = "tbDynLightCount";
 			this.tbDynLightCount.Size = new System.Drawing.Size(154, 45);
-			this.tbDynLightCount.TabIndex = 4;
+			this.tbDynLightCount.TabIndex = 5;
 			this.tbDynLightCount.TickFrequency = 4;
 			this.tbDynLightCount.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.tbDynLightCount.Value = 1;
@@ -1760,20 +1798,20 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.imagebrightness.BackColor = System.Drawing.SystemColors.Window;
 			this.imagebrightness.LargeChange = 3;
-			this.imagebrightness.Location = new System.Drawing.Point(199, 123);
+			this.imagebrightness.Location = new System.Drawing.Point(199, 160);
 			this.imagebrightness.Name = "imagebrightness";
 			this.imagebrightness.Size = new System.Drawing.Size(154, 45);
-			this.imagebrightness.TabIndex = 3;
+			this.imagebrightness.TabIndex = 4;
 			this.imagebrightness.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.imagebrightness.ValueChanged += new System.EventHandler(this.imagebrightness_ValueChanged);
 			// 
 			// animatevisualselection
 			// 
 			this.animatevisualselection.AutoSize = true;
-			this.animatevisualselection.Location = new System.Drawing.Point(229, 386);
+			this.animatevisualselection.Location = new System.Drawing.Point(229, 436);
 			this.animatevisualselection.Name = "animatevisualselection";
 			this.animatevisualselection.Size = new System.Drawing.Size(190, 17);
-			this.animatevisualselection.TabIndex = 13;
+			this.animatevisualselection.TabIndex = 14;
 			this.animatevisualselection.Text = "Animated selection in visual modes";
 			this.animatevisualselection.UseVisualStyleBackColor = true;
 			// 
@@ -1781,10 +1819,10 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.hiddenthingsalpha.BackColor = System.Drawing.SystemColors.Window;
 			this.hiddenthingsalpha.LargeChange = 3;
-			this.hiddenthingsalpha.Location = new System.Drawing.Point(199, 86);
+			this.hiddenthingsalpha.Location = new System.Drawing.Point(199, 123);
 			this.hiddenthingsalpha.Name = "hiddenthingsalpha";
 			this.hiddenthingsalpha.Size = new System.Drawing.Size(154, 45);
-			this.hiddenthingsalpha.TabIndex = 2;
+			this.hiddenthingsalpha.TabIndex = 3;
 			this.hiddenthingsalpha.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.hiddenthingsalpha.ValueChanged += new System.EventHandler(this.hiddenthingsalpha_ValueChanged);
 			// 
@@ -1792,37 +1830,37 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			this.inactivethingsalpha.BackColor = System.Drawing.SystemColors.Window;
 			this.inactivethingsalpha.LargeChange = 3;
-			this.inactivethingsalpha.Location = new System.Drawing.Point(199, 49);
+			this.inactivethingsalpha.Location = new System.Drawing.Point(199, 86);
 			this.inactivethingsalpha.Name = "inactivethingsalpha";
 			this.inactivethingsalpha.Size = new System.Drawing.Size(154, 45);
-			this.inactivethingsalpha.TabIndex = 1;
+			this.inactivethingsalpha.TabIndex = 2;
 			this.inactivethingsalpha.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
 			this.inactivethingsalpha.ValueChanged += new System.EventHandler(this.inactivethingsalpha_ValueChanged);
 			// 
 			// visualbilinear
 			// 
 			this.visualbilinear.AutoSize = true;
-			this.visualbilinear.Location = new System.Drawing.Point(18, 409);
+			this.visualbilinear.Location = new System.Drawing.Point(18, 459);
 			this.visualbilinear.Name = "visualbilinear";
 			this.visualbilinear.Size = new System.Drawing.Size(171, 17);
-			this.visualbilinear.TabIndex = 11;
+			this.visualbilinear.TabIndex = 12;
 			this.visualbilinear.Text = "Bilinear filtering in visual modes";
 			this.visualbilinear.UseVisualStyleBackColor = true;
 			// 
 			// classicbilinear
 			// 
 			this.classicbilinear.AutoSize = true;
-			this.classicbilinear.Location = new System.Drawing.Point(18, 386);
+			this.classicbilinear.Location = new System.Drawing.Point(18, 436);
 			this.classicbilinear.Name = "classicbilinear";
 			this.classicbilinear.Size = new System.Drawing.Size(176, 17);
-			this.classicbilinear.TabIndex = 10;
+			this.classicbilinear.TabIndex = 11;
 			this.classicbilinear.Text = "Bilinear filtering in classic modes";
 			this.classicbilinear.UseVisualStyleBackColor = true;
 			// 
 			// imagebrightnesslabel
 			// 
 			this.imagebrightnesslabel.AutoSize = true;
-			this.imagebrightnesslabel.Location = new System.Drawing.Point(359, 134);
+			this.imagebrightnesslabel.Location = new System.Drawing.Point(360, 171);
 			this.imagebrightnesslabel.Name = "imagebrightnesslabel";
 			this.imagebrightnesslabel.Size = new System.Drawing.Size(30, 13);
 			this.imagebrightnesslabel.TabIndex = 22;
@@ -2438,6 +2476,7 @@ namespace CodeImp.DoomBuilder.Windows
 			this.groupBox10.PerformLayout();
 			this.appearancegroup1.ResumeLayout(false);
 			this.appearancegroup1.PerformLayout();
+			((System.ComponentModel.ISupportInitialize)(this.activethingsalpha)).EndInit();
 			((System.ComponentModel.ISupportInitialize)(this.antialiasing)).EndInit();
 			((System.ComponentModel.ISupportInitialize)(this.anisotropicfiltering)).EndInit();
 			((System.ComponentModel.ISupportInitialize)(this.tbDynLightIntensity)).EndInit();
@@ -2634,5 +2673,8 @@ namespace CodeImp.DoomBuilder.Windows
 		private System.Windows.Forms.Label hiddenthingsalphalabel;
 		private System.Windows.Forms.Label label32;
 		private System.Windows.Forms.TrackBar hiddenthingsalpha;
+		private System.Windows.Forms.Label activethingsalphalabel;
+		private System.Windows.Forms.Label label31;
+		private System.Windows.Forms.TrackBar activethingsalpha;
 	}
 }
\ No newline at end of file
diff --git a/Source/Core/Windows/PreferencesForm.cs b/Source/Core/Windows/PreferencesForm.cs
index a97a5c5f2..d7ea83d51 100644
--- a/Source/Core/Windows/PreferencesForm.cs
+++ b/Source/Core/Windows/PreferencesForm.cs
@@ -63,6 +63,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// Interface
 			imagebrightness.Value = General.Settings.ImageBrightness;
 			doublesidedalpha.Value = General.Clamp((int)((1.0f - General.Settings.DoubleSidedAlpha) * 10.0f), doublesidedalpha.Minimum, doublesidedalpha.Maximum);
+			activethingsalpha.Value = General.Clamp((int)((1.0f - General.Settings.ActiveThingsAlpha) * 10.0f), activethingsalpha.Minimum, activethingsalpha.Maximum); //mxd
 			inactivethingsalpha.Value = General.Clamp((int)((1.0f - General.Settings.InactiveThingsAlpha) * 10.0f), inactivethingsalpha.Minimum, inactivethingsalpha.Maximum); //mxd
 			hiddenthingsalpha.Value = General.Clamp((int)((1.0f - General.Settings.HiddenThingsAlpha) * 10.0f), hiddenthingsalpha.Minimum, hiddenthingsalpha.Maximum); //mxd
 			defaultviewmode.SelectedIndex = General.Settings.DefaultViewMode;
@@ -263,6 +264,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// Apply interface
 			General.Settings.ImageBrightness = imagebrightness.Value;
 			General.Settings.DoubleSidedAlpha = 1.0f - (doublesidedalpha.Value * 0.1f);
+			General.Settings.ActiveThingsAlpha = 1.0f - (activethingsalpha.Value * 0.1f); //mxd
 			General.Settings.InactiveThingsAlpha = 1.0f - (inactivethingsalpha.Value * 0.1f); //mxd
 			General.Settings.HiddenThingsAlpha = 1.0f - (hiddenthingsalpha.Value * 0.1f); //mxd
 			General.Settings.DefaultViewMode = defaultviewmode.SelectedIndex;
@@ -937,6 +939,13 @@ namespace CodeImp.DoomBuilder.Windows
 			doublesidedalphalabel.Text = percent + "%";
 		}
 
+		//mxd
+		private void activethingsalpha_ValueChanged(object sender, EventArgs e)
+		{
+			int percent = activethingsalpha.Value * 10;
+			activethingsalphalabel.Text = percent + "%";
+		}
+
 		//mxd
 		private void inactivethingsalpha_ValueChanged(object sender, EventArgs e)
 		{
diff --git a/Source/Core/Windows/TextureBrowserForm.cs b/Source/Core/Windows/TextureBrowserForm.cs
index e2a549811..f2f7b0c42 100644
--- a/Source/Core/Windows/TextureBrowserForm.cs
+++ b/Source/Core/Windows/TextureBrowserForm.cs
@@ -129,17 +129,17 @@ namespace CodeImp.DoomBuilder.Windows
 			if(General.Settings.LocateTextureGroup)
 			{
 				//mxd. Get the previously selected texture set
-				string selectname = General.Settings.ReadSetting("browserwindow.textureset", "");
+				string prevtextureset = General.Settings.ReadSetting("browserwindow.textureset", "");
 				TreeNode match;
 
-				// When texture name is empty, select "All" texture set
-				if(string.IsNullOrEmpty(selectname) || selectname == "-")
+				// When texture set name is empty, select "All" texture set
+				if(string.IsNullOrEmpty(prevtextureset))
 				{
 					match = tvTextureSets.Nodes[tvTextureSets.Nodes.Count - 1];
 				}
 				else
 				{
-					match = FindNodeByName(tvTextureSets.Nodes, selectname);
+					match = FindNodeByName(tvTextureSets.Nodes, prevtextureset);
 				}
 
 				if(match != null)
@@ -466,8 +466,8 @@ namespace CodeImp.DoomBuilder.Windows
 			General.Settings.WriteSetting("browserwindow.splittercollapsed", splitter.IsCollapsed); //mxd
 			General.Settings.WriteSetting("browserwindow.usedgroupcollapsed", browser.IsGroupCollapsed(usedgroup)); //mxd
 
-			//mxd. Save last selected texture set, if it's not "All" (it will be selected anyway if search for initial texture set fails)
-			if(this.DialogResult == DialogResult.OK && tvTextureSets.SelectedNodes.Count > 0 && !(tvTextureSets.SelectedNodes[0].Tag is AllTextureSet))
+			//mxd. Save last selected texture set
+			if(this.DialogResult == DialogResult.OK && tvTextureSets.SelectedNodes.Count > 0)
 				General.Settings.WriteSetting("browserwindow.textureset", tvTextureSets.SelectedNodes[0].Name);
 
 			//mxd. Save ImageBrowserControl settings
diff --git a/Source/Plugins/BuilderModes/ClassicModes/BridgeMode.cs b/Source/Plugins/BuilderModes/ClassicModes/BridgeMode.cs
index f9bb25fc0..d42c8cfe4 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/BridgeMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/BridgeMode.cs
@@ -372,7 +372,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.ClassicModes
 			// Render things
 			if(renderer.StartThings(true)) 
 			{
-				renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/CurveLinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/CurveLinedefsMode.cs
index 0923d5652..297cc7326 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/CurveLinedefsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/CurveLinedefsMode.cs
@@ -244,7 +244,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			// Render things
 			if(renderer.StartThings(true))
 			{
-				renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs
index 52b20e379..ab513b415 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs
@@ -128,7 +128,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// Start rendering things
 				if(renderer.StartThings(true))
 				{
-					renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+					renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 					renderer.Finish();
 				}
 			}
@@ -160,8 +160,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true)) 
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(unselectedthings, Presentation.THINGS_ALPHA);
-				renderer.RenderThingSet(selectedthings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(unselectedthings, General.Settings.ActiveThingsAlpha);
+				renderer.RenderThingSet(selectedthings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs
index 4e65b09be..1509cab54 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs
@@ -147,7 +147,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			{
 				if(renderer.StartThings(true))
 				{
-					renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+					renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 					renderer.Finish();
 				}
 			}
@@ -180,8 +180,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true)) 
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(unselectedthings, Presentation.THINGS_ALPHA);
-				renderer.RenderThingSet(selectedthings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(unselectedthings, General.Settings.ActiveThingsAlpha);
+				renderer.RenderThingSet(selectedthings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs
index 70663794f..67293ed67 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs
@@ -314,13 +314,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			{
 				// Render things
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(unselectedthings, Presentation.THINGS_ALPHA);
-				renderer.RenderThingSet(selectedthings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(unselectedthings, General.Settings.ActiveThingsAlpha);
+				renderer.RenderThingSet(selectedthings, General.Settings.ActiveThingsAlpha);
 
 				// Draw the dragged item highlighted
 				// This is important to know, because this item is used
 				// for snapping to the grid and snapping to nearest items
-				renderer.RenderThing(dragitem, General.Colors.Highlight, Presentation.THINGS_ALPHA);
+				renderer.RenderThing(dragitem, General.Colors.Highlight, General.Settings.ActiveThingsAlpha);
 
 				// Done
 				renderer.Finish();
diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs
index 1061d6b03..5ee768696 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs
@@ -116,7 +116,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			{
 				if(renderer.StartThings(true))
 				{
-					renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+					renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 					renderer.Finish();
 				}
 			}
@@ -148,8 +148,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true)) 
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(unselectedthings, Presentation.THINGS_ALPHA);
-				renderer.RenderThingSet(selectedthings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(unselectedthings, General.Settings.ActiveThingsAlpha);
+				renderer.RenderThingSet(selectedthings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs
index e42128c81..00ccb9fea 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/DrawGeometryMode.cs
@@ -718,7 +718,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			// Render things
 			if(renderer.StartThings(true))
 			{
-				renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs b/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs
index 17794d4e2..fa88b0b2d 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs
@@ -344,7 +344,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				{
 					if(renderer.StartThings(false))
 					{
-						renderer.RenderThing((Thing)highlighted, renderer.DetermineThingColor((Thing)highlighted), Presentation.THINGS_ALPHA);
+						renderer.RenderThing((Thing)highlighted, renderer.DetermineThingColor((Thing)highlighted), General.Settings.ActiveThingsAlpha);
 						renderer.Finish();
 					}
 				}
@@ -368,7 +368,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				{
 					if(renderer.StartThings(false))
 					{
-						renderer.RenderThing((Thing)highlighted, General.Colors.Highlight, Presentation.THINGS_ALPHA);
+						renderer.RenderThing((Thing)highlighted, General.Colors.Highlight, General.Settings.ActiveThingsAlpha);
 						renderer.Finish();
 					}
 				}
@@ -1569,8 +1569,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true))
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, Presentation.THINGS_ALPHA);
-				if(highlighted is Thing) renderer.RenderThing((Thing)highlighted, General.Colors.Highlight, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, General.Settings.ActiveThingsAlpha);
+				if(highlighted is Thing) renderer.RenderThing((Thing)highlighted, General.Colors.Highlight, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/ErrorCheckMode.cs b/Source/Plugins/BuilderModes/ClassicModes/ErrorCheckMode.cs
index 65d1c4333..13b06d4d1 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/ErrorCheckMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/ErrorCheckMode.cs
@@ -136,7 +136,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			// Render things
 			if(renderer.StartThings(true))
 			{
-				renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 				//foreach(ErrorResult result in selection) result.RenderThingsSelection(renderer); //mxd
 				renderer.Finish();
 			}
diff --git a/Source/Plugins/BuilderModes/ClassicModes/FindReplaceMode.cs b/Source/Plugins/BuilderModes/ClassicModes/FindReplaceMode.cs
index 5c790fb7a..5b1bbd568 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/FindReplaceMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/FindReplaceMode.cs
@@ -141,7 +141,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			// Render things
 			if(renderer.StartThings(true))
 			{
-				renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 				if(BuilderPlug.Me.FindReplaceForm.Finder != null)
 					BuilderPlug.Me.FindReplaceForm.Finder.RenderThingsSelection(renderer, selection);
 				renderer.Finish();
diff --git a/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs b/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs
index 538555114..e0317c75a 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/FlatAlignMode.cs
@@ -876,7 +876,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true))
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs
index 08ab04af9..443bd13e1 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs
@@ -412,7 +412,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true))
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs b/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs
index 60bd7ae76..7a62cceda 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs
@@ -345,7 +345,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true))
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs
index 7d8621907..6cb7a16f3 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs
@@ -764,7 +764,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true))
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs
index 59e77e87f..4fa4017ab 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs
@@ -188,13 +188,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			// Render things
 			if(renderer.StartThings(true))
 			{
+				float alpha = (General.Settings.FixedThingsScale ? Presentation.THINGS_ALPHA : General.Settings.ActiveThingsAlpha); //mxd
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, alpha);
 				for(int i = 0; i < Thing.NUM_ARGS; i++) BuilderPlug.RenderAssociations(renderer, association[i], eventlines);
 				
 				if((highlighted != null) && !highlighted.IsDisposed)
 				{
-					renderer.RenderThing(highlighted, General.Colors.Highlight, Presentation.THINGS_ALPHA);
+					renderer.RenderThing(highlighted, General.Colors.Highlight, alpha);
 					BuilderPlug.RenderReverseAssociations(renderer, highlightasso, eventlines); //mxd
 				}
 
@@ -302,7 +303,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				if(renderer.StartThings(false))
 				{
 					// Redraw highlight to show selection
-					renderer.RenderThing(highlighted, renderer.DetermineThingColor(highlighted), Presentation.THINGS_ALPHA);
+					renderer.RenderThing(highlighted, renderer.DetermineThingColor(highlighted), General.Settings.FixedThingsScale ? Presentation.THINGS_ALPHA : General.Settings.ActiveThingsAlpha);
 					renderer.Finish();
 					renderer.Present();
 				}
@@ -327,7 +328,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 					if(renderer.StartThings(false))
 					{
 						// Render highlighted item
-						renderer.RenderThing(highlighted, General.Colors.Highlight, Presentation.THINGS_ALPHA);
+						renderer.RenderThing(highlighted, General.Colors.Highlight, General.Settings.FixedThingsScale ? Presentation.THINGS_ALPHA : General.Settings.ActiveThingsAlpha);
 						renderer.Finish();
 						renderer.Present();
 					}
@@ -370,7 +371,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				if(renderer.StartThings(false))
 				{
 					// Redraw highlight to show selection
-					renderer.RenderThing(highlighted, renderer.DetermineThingColor(highlighted), Presentation.THINGS_ALPHA);
+					renderer.RenderThing(highlighted, renderer.DetermineThingColor(highlighted), General.Settings.FixedThingsScale ? Presentation.THINGS_ALPHA : General.Settings.ActiveThingsAlpha);
 					renderer.Finish();
 					renderer.Present();
 				}
diff --git a/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs b/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs
index 9619318ee..d67428b4f 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs
@@ -156,7 +156,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(renderer.StartThings(true))
 			{
 				renderer.RenderThingSet(General.Map.ThingsFilter.HiddenThings, General.Settings.HiddenThingsAlpha);
-				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
diff --git a/Source/Plugins/BuilderModes/ErrorChecks/ResultInvalidPolyobjectThings.cs b/Source/Plugins/BuilderModes/ErrorChecks/ResultInvalidPolyobjectThings.cs
index fd7bb85f6..80a25f109 100644
--- a/Source/Plugins/BuilderModes/ErrorChecks/ResultInvalidPolyobjectThings.cs
+++ b/Source/Plugins/BuilderModes/ErrorChecks/ResultInvalidPolyobjectThings.cs
@@ -81,7 +81,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public override void RenderOverlaySelection(IRenderer2D renderer) 
 		{
 			foreach(Thing thing in things)
-				renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+				renderer.RenderThing(thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 
 		#endregion
diff --git a/Source/Plugins/BuilderModes/ErrorChecks/ResultObsoleteThing.cs b/Source/Plugins/BuilderModes/ErrorChecks/ResultObsoleteThing.cs
index f20dfa047..56f8d150f 100644
--- a/Source/Plugins/BuilderModes/ErrorChecks/ResultObsoleteThing.cs
+++ b/Source/Plugins/BuilderModes/ErrorChecks/ResultObsoleteThing.cs
@@ -60,7 +60,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// Rendering
 		public override void  RenderOverlaySelection(IRenderer2D renderer) 
 		{
-			renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+			renderer.RenderThing(thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 		
 		// This removes the thing
diff --git a/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInLine.cs b/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInLine.cs
index f24118bf0..17ad99721 100644
--- a/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInLine.cs
+++ b/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInLine.cs
@@ -75,7 +75,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// Rendering
 		public override void RenderOverlaySelection(IRenderer2D renderer)
 		{
-			renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+			renderer.RenderThing(thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 
 		// mxd. More rencering
diff --git a/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInThing.cs b/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInThing.cs
index f9e35fade..d17ca912f 100644
--- a/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInThing.cs
+++ b/Source/Plugins/BuilderModes/ErrorChecks/ResultStuckThingInThing.cs
@@ -84,8 +84,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// Rendering
 		public override void RenderOverlaySelection(IRenderer2D renderer)
 		{
-			renderer.RenderThing(thing1, General.Colors.Selection, Presentation.THINGS_ALPHA);
-			renderer.RenderThing(thing2, General.Colors.Selection, Presentation.THINGS_ALPHA);
+			renderer.RenderThing(thing1, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
+			renderer.RenderThing(thing2, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 
 		// This removes the first thing
diff --git a/Source/Plugins/BuilderModes/ErrorChecks/ResultThingOutside.cs b/Source/Plugins/BuilderModes/ErrorChecks/ResultThingOutside.cs
index fcb39c4e6..a11980e18 100644
--- a/Source/Plugins/BuilderModes/ErrorChecks/ResultThingOutside.cs
+++ b/Source/Plugins/BuilderModes/ErrorChecks/ResultThingOutside.cs
@@ -73,7 +73,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// Rendering
 		public override void  RenderOverlaySelection(IRenderer2D renderer)
 		{
-			renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+			renderer.RenderThing(thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 		
 		// This removes the thing
diff --git a/Source/Plugins/BuilderModes/ErrorChecks/ResultUnknownThing.cs b/Source/Plugins/BuilderModes/ErrorChecks/ResultUnknownThing.cs
index f3330704c..9ba45da08 100644
--- a/Source/Plugins/BuilderModes/ErrorChecks/ResultUnknownThing.cs
+++ b/Source/Plugins/BuilderModes/ErrorChecks/ResultUnknownThing.cs
@@ -57,7 +57,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// Rendering
 		public override void  RenderOverlaySelection(IRenderer2D renderer) 
 		{
-			renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+			renderer.RenderThing(thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 		
 		// This removes the thing
diff --git a/Source/Plugins/BuilderModes/ErrorChecks/ResultUnusedThing.cs b/Source/Plugins/BuilderModes/ErrorChecks/ResultUnusedThing.cs
index fd44ab0dd..3e1835878 100644
--- a/Source/Plugins/BuilderModes/ErrorChecks/ResultUnusedThing.cs
+++ b/Source/Plugins/BuilderModes/ErrorChecks/ResultUnusedThing.cs
@@ -59,7 +59,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// Rendering
 		public override void  RenderOverlaySelection(IRenderer2D renderer) 
 		{
-			renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+			renderer.RenderThing(thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 		
 		// This removes the thing
diff --git a/Source/Plugins/BuilderModes/FindReplace/BaseFindThing.cs b/Source/Plugins/BuilderModes/FindReplace/BaseFindThing.cs
index 5af3c7f85..335628309 100644
--- a/Source/Plugins/BuilderModes/FindReplace/BaseFindThing.cs
+++ b/Source/Plugins/BuilderModes/FindReplace/BaseFindThing.cs
@@ -34,7 +34,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public override void RenderThingsSelection(IRenderer2D renderer, FindReplaceObject[] selection) 
 		{
 			foreach(FindReplaceObject o in selection)
-				renderer.RenderThing(o.Thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+				renderer.RenderThing(o.Thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 		}
 
 		// Edit objects
diff --git a/Source/Plugins/BuilderModes/General/BuilderPlug.cs b/Source/Plugins/BuilderModes/General/BuilderPlug.cs
index f637bca06..71d2eea7e 100644
--- a/Source/Plugins/BuilderModes/General/BuilderPlug.cs
+++ b/Source/Plugins/BuilderModes/General/BuilderPlug.cs
@@ -629,7 +629,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 					foreach(Thing t in General.Map.Map.Things)
 					{
 						if(!asso.Tags.Contains(t.Tag)) continue;
-						renderer.RenderThing(t, General.Colors.Indication, Presentation.THINGS_ALPHA);
+						renderer.RenderThing(t, General.Colors.Indication, General.Settings.ActiveThingsAlpha);
 						if(General.Settings.GZShowEventLines) eventlines.Add(new Line3D(asso.Center, t.Position)); //mxd
 					}
 					break;
@@ -706,7 +706,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 						 ((action.Args[3].Type == (int)asso.Type) && (asso.Tags.Contains(t.Args[3]))) ||
 						 ((action.Args[4].Type == (int)asso.Type) && (asso.Tags.Contains(t.Args[4]))))
 					{
-						renderer.RenderThing(t, General.Colors.Indication, Presentation.THINGS_ALPHA);
+						renderer.RenderThing(t, General.Colors.Indication, General.Settings.ActiveThingsAlpha);
 						if(General.Settings.GZShowEventLines) eventlines.Add(new Line3D(t.Position, asso.Center)); //mxd
 					}
 				}
@@ -722,7 +722,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 						     ((ti.Args[3].Type == (int)asso.Type) && (asso.Tags.Contains(t.Args[3]))) ||
 						     ((ti.Args[4].Type == (int)asso.Type) && (asso.Tags.Contains(t.Args[4]))))
 						{
-							renderer.RenderThing(t, General.Colors.Indication, Presentation.THINGS_ALPHA);
+							renderer.RenderThing(t, General.Colors.Indication, General.Settings.ActiveThingsAlpha);
 							if(General.Settings.GZShowEventLines) eventlines.Add(new Line3D(t.Position, asso.Center));
 						}
 					}
diff --git a/Source/Plugins/SoundPropagationMode/SoundEnvironmentMode.cs b/Source/Plugins/SoundPropagationMode/SoundEnvironmentMode.cs
index c4e5a62ab..2493cda05 100644
--- a/Source/Plugins/SoundPropagationMode/SoundEnvironmentMode.cs
+++ b/Source/Plugins/SoundPropagationMode/SoundEnvironmentMode.cs
@@ -313,12 +313,13 @@ namespace CodeImp.DoomBuilder.SoundPropagationMode
 				{
 					foreach(SoundEnvironment se in BuilderPlug.Me.SoundEnvironments)
 					{
-						if(se.Things.Count > 0) renderer.RenderThingSet(se.Things, Presentation.THINGS_ALPHA);
+						if(se.Things.Count > 0) renderer.RenderThingSet(se.Things, General.Settings.ActiveThingsAlpha);
 					}
 				}
 
 				//mxd. Render highlighted thing
-				if(highlightedthing != null) renderer.RenderThing(highlightedthing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+				if(highlightedthing != null) 
+					renderer.RenderThing(highlightedthing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 
 				renderer.Finish();
 			}
diff --git a/Source/Plugins/SoundPropagationMode/SoundPropagationMode.cs b/Source/Plugins/SoundPropagationMode/SoundPropagationMode.cs
index abb65193d..4e073fccf 100644
--- a/Source/Plugins/SoundPropagationMode/SoundPropagationMode.cs
+++ b/Source/Plugins/SoundPropagationMode/SoundPropagationMode.cs
@@ -280,7 +280,7 @@ namespace CodeImp.DoomBuilder.SoundPropagationMode
 				renderer.RenderThingSet(General.Map.ThingsFilter.VisibleThings, General.Settings.InactiveThingsAlpha);
 				foreach(Thing thing in huntingThings)
 				{
-					renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
+					renderer.RenderThing(thing, General.Colors.Selection, General.Settings.ActiveThingsAlpha);
 				}
 
 				renderer.Finish();
diff --git a/Source/Plugins/StairSectorBuilder/StairSectorBuilderMode.cs b/Source/Plugins/StairSectorBuilder/StairSectorBuilderMode.cs
index 3ad040b96..b915eed1b 100644
--- a/Source/Plugins/StairSectorBuilder/StairSectorBuilderMode.cs
+++ b/Source/Plugins/StairSectorBuilder/StairSectorBuilderMode.cs
@@ -1388,7 +1388,7 @@ namespace CodeImp.DoomBuilder.StairSectorBuilderMode
 			// Render things
 			if(renderer.StartThings(true))
 			{
-				renderer.RenderThingSet(General.Map.Map.Things, Presentation.THINGS_ALPHA);
+				renderer.RenderThingSet(General.Map.Map.Things, General.Settings.ActiveThingsAlpha);
 				renderer.Finish();
 			}
 
-- 
GitLab