From 12f32e2bc60d1d6316d4d88d144833ad38db3807 Mon Sep 17 00:00:00 2001 From: biwa <6475593+biwa@users.noreply.github.com> Date: Tue, 28 Dec 2021 11:21:37 +0100 Subject: [PATCH] UDBScript: fixed a bug where Map.nearestLinedef, Map.nearestThing, Map.nearestVertex, and Map.nearestSidedef would not return valid objects when no nearest map element was found --- Source/Plugins/UDBScript/API/MapWrapper.cs | 36 +++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/Source/Plugins/UDBScript/API/MapWrapper.cs b/Source/Plugins/UDBScript/API/MapWrapper.cs index 5b574fe87..e1e432ddf 100644 --- a/Source/Plugins/UDBScript/API/MapWrapper.cs +++ b/Source/Plugins/UDBScript/API/MapWrapper.cs @@ -263,11 +263,17 @@ namespace CodeImp.DoomBuilder.UDBScript.Wrapper try { Vector2D v = (Vector2D)BuilderPlug.Me.GetVectorFromObject(pos, false); + Linedef nearest = null; if (double.IsNaN(maxrange)) - return new LinedefWrapper(General.Map.Map.NearestLinedef(v)); + nearest = General.Map.Map.NearestLinedef(v); else - return new LinedefWrapper(General.Map.Map.NearestLinedefRange(v, maxrange)); + nearest = General.Map.Map.NearestLinedefRange(v, maxrange); + + if (nearest == null) + return null; + + return new LinedefWrapper(nearest); } catch (CantConvertToVectorException e) { @@ -286,11 +292,17 @@ namespace CodeImp.DoomBuilder.UDBScript.Wrapper try { Vector2D v = (Vector2D)BuilderPlug.Me.GetVectorFromObject(pos, false); + Thing nearest = null; if (double.IsNaN(maxrange)) - return new ThingWrapper(General.Map.Map.NearestThingSquareRange(v, double.MaxValue)); + nearest = General.Map.Map.NearestThingSquareRange(v, double.MaxValue); else - return new ThingWrapper(General.Map.Map.NearestThingSquareRange(v, maxrange)); + nearest = General.Map.Map.NearestThingSquareRange(v, maxrange); + + if (nearest == null) + return null; + + return new ThingWrapper(nearest); } catch (CantConvertToVectorException e) { @@ -309,11 +321,17 @@ namespace CodeImp.DoomBuilder.UDBScript.Wrapper try { Vector2D v = (Vector2D)BuilderPlug.Me.GetVectorFromObject(pos, false); + Vertex nearest = null; if (double.IsNaN(maxrange)) - return new VertexWrapper(General.Map.Map.NearestVertexSquareRange(v, double.MaxValue)); + nearest = General.Map.Map.NearestVertexSquareRange(v, double.MaxValue); else - return new VertexWrapper(General.Map.Map.NearestVertexSquareRange(v, maxrange)); + nearest = General.Map.Map.NearestVertexSquareRange(v, maxrange); + + if (nearest == null) + return null; + + return new VertexWrapper(nearest); } catch (CantConvertToVectorException e) { @@ -332,8 +350,12 @@ namespace CodeImp.DoomBuilder.UDBScript.Wrapper try { Vector2D v = (Vector2D)BuilderPlug.Me.GetVectorFromObject(pos, false); + Sidedef nearest = MapSet.NearestSidedef(General.Map.Map.Sidedefs, v); + + if (nearest == null) + return null; - return new SidedefWrapper(MapSet.NearestSidedef(General.Map.Map.Sidedefs, v)); + return new SidedefWrapper(nearest); } catch (CantConvertToVectorException e) { -- GitLab