From 977fdb27d2770c4d2637c5ce10985af5d258c54c Mon Sep 17 00:00:00 2001 From: Josh Hughes Date: Sun, 15 Feb 2026 18:57:55 +0000 Subject: [PATCH] Adds tilemap modifier support for Physics Colliders --- NavMeshComponents/Scripts/NavMeshBuilder2d.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/NavMeshComponents/Scripts/NavMeshBuilder2d.cs b/NavMeshComponents/Scripts/NavMeshBuilder2d.cs index b8f1eaa..7cdd844 100644 --- a/NavMeshComponents/Scripts/NavMeshBuilder2d.cs +++ b/NavMeshComponents/Scripts/NavMeshBuilder2d.cs @@ -190,6 +190,11 @@ public static void CollectSources(List sources, NavMeshBuild { if (builder.CollectGeometry == NavMeshCollectGeometry.PhysicsColliders) { + var tilemap = modifier.GetComponent(); + if (tilemap != null) + { + CollectTileSources(sources, tilemap, area, builder, true); + } var collider = modifier.GetComponent(); if (collider != null) { @@ -286,7 +291,7 @@ public static void CollectSources(List sources, Collider2D c builder.lookupCallback?.Invoke(collider.gameObject, src); } - public static void CollectTileSources(List sources, Tilemap tilemap, int area, NavMeshBuilder2dState builder) + public static void CollectTileSources(List sources, Tilemap tilemap, int area, NavMeshBuilder2dState builder, bool onlyTileModifier = false) { var bound = tilemap.cellBounds; @@ -323,11 +328,19 @@ public static void CollectTileSources(List sources, Tilemap continue; } + bool hadTileModifier = false; CollectTile(tilemap, builder, vec3int, size, sharedMesh, rot, ref src); if (modifierTilemap && modifierTilemap.TryGetTileModifier(vec3int, tilemap, out NavMeshModifierTilemap.TileModifier tileModifier)) { src.area = tileModifier.overrideArea ? tileModifier.area : area; - } + hadTileModifier = tileModifier.overrideArea; + } + + if (onlyTileModifier && !hadTileModifier) + { + continue; + } + sources.Add(src); builder.lookupCallback?.Invoke(tilemap.GetInstantiatedObject(vec3int), src);