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.