From 8d95d499246741b075ffa2e3fb6cfdd0119d91ef Mon Sep 17 00:00:00 2001 From: Stephen Date: Sat, 17 Feb 2024 13:15:56 +0000 Subject: [PATCH] Check for undefined layer and throw on collision actor insertion --- .../CollisionComponent.cs | 8 +++++++- .../Layers/UndefinedLayerException.cs | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/cs/MonoGame.Extended.Collisions/Layers/UndefinedLayerException.cs diff --git a/src/cs/MonoGame.Extended.Collisions/CollisionComponent.cs b/src/cs/MonoGame.Extended.Collisions/CollisionComponent.cs index 9677c14f..d615220e 100644 --- a/src/cs/MonoGame.Extended.Collisions/CollisionComponent.cs +++ b/src/cs/MonoGame.Extended.Collisions/CollisionComponent.cs @@ -104,7 +104,13 @@ namespace MonoGame.Extended.Collisions /// Target to insert. public void Insert(ICollisionActor target) { - _layers[target.LayerName ?? DEFAULT_LAYER_NAME].Space.Insert(target); + var layerName = target.LayerName ?? DEFAULT_LAYER_NAME; + if (!_layers.TryGetValue(layerName, out var layer)) + { + throw new UndefinedLayerException(layerName); + } + + layer.Space.Insert(target); } /// diff --git a/src/cs/MonoGame.Extended.Collisions/Layers/UndefinedLayerException.cs b/src/cs/MonoGame.Extended.Collisions/Layers/UndefinedLayerException.cs new file mode 100644 index 00000000..a27b5b6b --- /dev/null +++ b/src/cs/MonoGame.Extended.Collisions/Layers/UndefinedLayerException.cs @@ -0,0 +1,18 @@ +namespace MonoGame.Extended.Collisions.Layers; + +using System; + +/// +/// Thrown when the collision system has no layer defined with the specified name +/// +public class UndefinedLayerException : Exception +{ + /// + /// Thrown when the collision system has no layer defined with the specified name + /// + /// The undefined layer name + public UndefinedLayerException(string layerName) + : base($"Layer with name '{layerName}' is undefined") + { + } +}