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;