From d60e3bc240900248018eb4e6f519e8b21e4ee1e4 Mon Sep 17 00:00:00 2001 From: aaronkwan <123356351+aaronkwan@users.noreply.github.com> Date: Sun, 17 May 2026 18:06:22 -0700 Subject: [PATCH 1/2] feat: Use PhysicsScene2D.OverlapCollider in NetworkCollider2D Use PhysicsScene2D.OverlapCollider to allow NetworkCollider2D to work with any 2D collider shape. This removes the need for shape-specific checks. Note: A similar change is not possible for 3D colliders, as Unity's PhysicsScene does not provide a generic OverlapCollider method. --- .../Component/Prediction/NetworkCollider2D.cs | 30 +------------------ 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs b/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs index e7ddacd5..660fd3b9 100644 --- a/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs +++ b/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs @@ -121,14 +121,7 @@ protected override void CheckColliders(uint localTick) continue; // Number of hits from the checks. - // Number of hits from the checks. - int hits; - if (col is CircleCollider2D circleCollider) - hits = GetCircleCollider2DHits(circleCollider, InteractableLayers); - else if (col is BoxCollider2D boxCollider) - hits = GetBoxCollider2DHits(boxCollider, rotation, InteractableLayers); - else - hits = 0; + int hits = PhysicsScene2D.OverlapCollider(col, _hits, InteractableLayers); /* Check hits for enter/exit callbacks. */ for (int i = 0; i < hits; i++) @@ -215,28 +208,7 @@ protected override void CheckColliders(uint localTick) } } - /// - /// Checks for circle collisions. - /// - /// Number of colliders hit. - private int GetCircleCollider2DHits(CircleCollider2D circleCollider, int layerMask) - { - circleCollider.GetCircleOverlapParams(out Vector3 center, out float radius); - radius += AdditionalSize; - return gameObject.scene.GetPhysicsScene2D().OverlapCircle(center, radius, _hits, layerMask); - } - /// - /// Checks for Box collisions. - /// - /// Number of colliders hit. - private int GetBoxCollider2DHits(BoxCollider2D boxCollider, Quaternion rotation, int layerMask) - { - boxCollider.GetBox2DOverlapParams(out Vector3 center, out Vector3 halfExtents); - Vector3 additional = Vector3.one * AdditionalSize; - halfExtents += additional; - return gameObject.scene.GetPhysicsScene2D().OverlapBox(center, halfExtents, rotation.z, _hits, layerMask); - } /// /// Finds colliders on this object to check. From 54dc8b123d487b57902cd5942ed5366dd2c2ae3a Mon Sep 17 00:00:00 2001 From: aaronkwan <123356351+aaronkwan@users.noreply.github.com> Date: Sun, 17 May 2026 18:40:48 -0700 Subject: [PATCH 2/2] feat: Use PhysicsScene2D.OverlapCollider in NetworkCollider2D Use PhysicsScene2D.OverlapCollider to allow NetworkCollider2D to work with any 2D collider shape. This removes the need for shape-specific checks. Note: A similar change is not possible for 3D colliders, as Unity's PhysicsScene does not provide a generic OverlapCollider method. --- .../Component/Prediction/NetworkCollider2D.cs | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs b/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs index 660fd3b9..5933fc32 100644 --- a/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs +++ b/Assets/FishNet/Runtime/Generated/Component/Prediction/NetworkCollider2D.cs @@ -121,7 +121,14 @@ protected override void CheckColliders(uint localTick) continue; // Number of hits from the checks. - int hits = PhysicsScene2D.OverlapCollider(col, _hits, InteractableLayers); + // Number of hits from the checks. + int hits; + if (col is CircleCollider2D circleCollider) + hits = GetCircleCollider2DHits(circleCollider, InteractableLayers); + else if (col is BoxCollider2D boxCollider) + hits = GetBoxCollider2DHits(boxCollider, rotation, InteractableLayers); + else + hits = PhysicsScene2D.OverlapCollider(col, _hits, InteractableLayers); /* Check hits for enter/exit callbacks. */ for (int i = 0; i < hits; i++) @@ -208,7 +215,28 @@ protected override void CheckColliders(uint localTick) } } + /// + /// Checks for circle collisions. + /// + /// Number of colliders hit. + private int GetCircleCollider2DHits(CircleCollider2D circleCollider, int layerMask) + { + circleCollider.GetCircleOverlapParams(out Vector3 center, out float radius); + radius += AdditionalSize; + return gameObject.scene.GetPhysicsScene2D().OverlapCircle(center, radius, _hits, layerMask); + } + /// + /// Checks for Box collisions. + /// + /// Number of colliders hit. + private int GetBoxCollider2DHits(BoxCollider2D boxCollider, Quaternion rotation, int layerMask) + { + boxCollider.GetBox2DOverlapParams(out Vector3 center, out Vector3 halfExtents); + Vector3 additional = Vector3.one * AdditionalSize; + halfExtents += additional; + return gameObject.scene.GetPhysicsScene2D().OverlapBox(center, halfExtents, rotation.z, _hits, layerMask); + } /// /// Finds colliders on this object to check.