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") + { + } +}