From 6705f261a6ea0959f5b0934680481d40e9be10be Mon Sep 17 00:00:00 2001
From: biwa <6475593+biwa@users.noreply.github.com>
Date: Sun, 5 Jul 2020 22:52:10 +0200
Subject: [PATCH] OBJ Exporter: fixed a crash when trying to export geometry
 with missing textures

---
 .../BuilderModes/IO/WavefrontExporter.cs        | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/Source/Plugins/BuilderModes/IO/WavefrontExporter.cs b/Source/Plugins/BuilderModes/IO/WavefrontExporter.cs
index 1d90a758..d5609dd2 100755
--- a/Source/Plugins/BuilderModes/IO/WavefrontExporter.cs
+++ b/Source/Plugins/BuilderModes/IO/WavefrontExporter.cs
@@ -106,6 +106,9 @@ namespace CodeImp.DoomBuilder.BuilderModes.IO
 			Obj = string.Empty;
 			Textures = null;
 			Flats = null;
+
+			if (ExportForGZDoom)
+				SkipTextures.Add("-");
 		}
 	}
 
@@ -393,7 +396,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.IO
 			}
 
 			//sort geometry
-			List<Dictionary<string, List<WorldVertex[]>>> geometryByTexture = SortGeometry(visualSectors, data.SkipTextures);
+			List<Dictionary<string, List<WorldVertex[]>>> geometryByTexture = SortGeometry(visualSectors, data.SkipTextures, !data.ExportForGZDoom);
 
 			//restore vm settings
 			if(renderingEffectsDisabled) mode.ToggleEnhancedRendering();
@@ -427,14 +430,18 @@ namespace CodeImp.DoomBuilder.BuilderModes.IO
 			data.Valid = true;
 		}
 
-		private static List<Dictionary<string, List<WorldVertex[]>>> SortGeometry(List<BaseVisualSector> visualSectors, List<string>skipTextures) 
+		private static List<Dictionary<string, List<WorldVertex[]>>> SortGeometry(List<BaseVisualSector> visualSectors, List<string>skipTextures, bool defaultOnMissingTextures) 
 		{
 			var texturegeo = new Dictionary<string, List<WorldVertex[]>>(StringComparer.Ordinal);
-			//texturegeo.Add(DEFAULT, new List<WorldVertex[]>());
 			var flatgeo = new Dictionary<string, List<WorldVertex[]>>(StringComparer.Ordinal);
-			//flatgeo.Add(DEFAULT, new List<WorldVertex[]>());
 
-			foreach(BaseVisualSector vs in visualSectors) 
+			if (defaultOnMissingTextures)
+			{
+				texturegeo.Add(DEFAULT, new List<WorldVertex[]>());
+				flatgeo.Add(DEFAULT, new List<WorldVertex[]>());
+			}
+
+			foreach (BaseVisualSector vs in visualSectors) 
 			{
 				//floor
 				string texture;