From 9904b619c1f7b473deb05e9fdb4be508300ea291 Mon Sep 17 00:00:00 2001 From: dexy Date: Mon, 10 Jan 2022 21:35:01 +1100 Subject: [PATCH] Fix for loading scenarios with empty chains --- CodeWalker.Core/World/Scenarios.cs | 41 ++++++++++++++++-------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/CodeWalker.Core/World/Scenarios.cs b/CodeWalker.Core/World/Scenarios.cs index f5dba22..367f82b 100644 --- a/CodeWalker.Core/World/Scenarios.cs +++ b/CodeWalker.Core/World/Scenarios.cs @@ -319,32 +319,35 @@ namespace CodeWalker.World { chainedges.Clear(); - foreach (var edgeId in chain.EdgeIds) + if (chain.EdgeIds != null) { - if (edgeId >= rpe.Length) - { continue; } - var edge = rpe[edgeId]; + foreach (var edgeId in chain.EdgeIds) + { + if (edgeId >= rpe.Length) + { continue; } + var edge = rpe[edgeId]; - if (edge.NodeIndexFrom >= rpn.Length) - { continue; } - if (edge.NodeIndexTo >= rpn.Length) - { continue; } + if (edge.NodeIndexFrom >= rpn.Length) + { continue; } + if (edge.NodeIndexTo >= rpn.Length) + { continue; } - edge.NodeFrom = rpn[edge.NodeIndexFrom]; - edge.NodeTo = rpn[edge.NodeIndexTo]; + edge.NodeFrom = rpn[edge.NodeIndexFrom]; + edge.NodeTo = rpn[edge.NodeIndexTo]; - var nfc = edge.NodeFrom?.Chain; - var ntc = edge.NodeTo?.Chain; + var nfc = edge.NodeFrom?.Chain; + var ntc = edge.NodeTo?.Chain; - if ((nfc != null) && (nfc != chain)) - { } - if ((ntc != null) && (ntc != chain)) - { } + if ((nfc != null) && (nfc != chain)) + { } + if ((ntc != null) && (ntc != chain)) + { } - if (edge.NodeFrom != null) edge.NodeFrom.Chain = chain; - if (edge.NodeTo != null) edge.NodeTo.Chain = chain; + if (edge.NodeFrom != null) edge.NodeFrom.Chain = chain; + if (edge.NodeTo != null) edge.NodeTo.Chain = chain; - chainedges.Add(edge); + chainedges.Add(edge); + } } chain.Edges = chainedges.ToArray();