From f5be49609bbd6b1407c7ec7c94b229b7af6c1be4 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 25 Jan 2024 18:32:13 +0300 Subject: [PATCH] feat: NotNullWhen to TryDetect --- Engine.Physics2D/CollisionDetector.cs | 11 +++++++++-- Engine.Physics2D/ICollisionDetector.cs | 4 +++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Engine.Physics2D/CollisionDetector.cs b/Engine.Physics2D/CollisionDetector.cs index 78cae49..648f9e9 100644 --- a/Engine.Physics2D/CollisionDetector.cs +++ b/Engine.Physics2D/CollisionDetector.cs @@ -1,3 +1,5 @@ +using System.Diagnostics.CodeAnalysis; + using Syntriax.Engine.Core; using Syntriax.Engine.Physics2D.Abstract; @@ -5,7 +7,7 @@ namespace Syntriax.Engine.Physics2D; public class CollisionDetector : ICollisionDetector { - public bool TryDetect(T1 left, T2 right, out CollisionDetectionInformation? collisionInformation) + public bool TryDetect(T1 left, T2 right, [NotNullWhen(true)] out CollisionDetectionInformation? collisionInformation) where T1 : ICollider2D where T2 : ICollider2D { @@ -20,7 +22,7 @@ public class CollisionDetector : ICollisionDetector else if (left is ICircleCollider2D circleColliderLeft) { if (right is IShapeCollider2D shapeColliderRight) - return DetectShapeCircle(shapeColliderRight, circleColliderLeft, out collisionInformation); + return DetectCircleShape(circleColliderLeft, shapeColliderRight, out collisionInformation); else if (right is ICircleCollider2D circleColliderRight) return DetectCircleCircle(circleColliderLeft, circleColliderRight, out collisionInformation); } @@ -28,6 +30,11 @@ public class CollisionDetector : ICollisionDetector return false; } + private bool DetectCircleShape(ICircleCollider2D circleCollider, IShapeCollider2D shapeCollider, out CollisionDetectionInformation? collisionInformation) + { + throw new System.NotImplementedException(); + } + private static bool DetectShapeShape(IShapeCollider2D left, IShapeCollider2D right, out CollisionDetectionInformation? collisionInformation) { throw new System.NotImplementedException(); diff --git a/Engine.Physics2D/ICollisionDetector.cs b/Engine.Physics2D/ICollisionDetector.cs index 3180126..460e5bb 100644 --- a/Engine.Physics2D/ICollisionDetector.cs +++ b/Engine.Physics2D/ICollisionDetector.cs @@ -1,8 +1,10 @@ +using System.Diagnostics.CodeAnalysis; + using Syntriax.Engine.Physics2D.Abstract; namespace Syntriax.Engine.Physics2D; public interface ICollisionDetector { - bool TryDetect(T1 left, T2 right, out CollisionDetectionInformation? collisionInformation) where T1 : ICollider2D where T2 : ICollider2D; + bool TryDetect(T1 left, T2 right, [NotNullWhen(returnValue: true)] out CollisionDetectionInformation? collisionInformation) where T1 : ICollider2D where T2 : ICollider2D; }