Skip to content

Commit 1e1ad62

Browse files
committed
Use MeshColliders instead of BoxColliders for selectable/hoverable nodes that don't have a collider during import
1 parent 6aa9c4d commit 1e1ad62

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

Runtime/Scripts/Interactivity/Playback/Context/Import/InteractivityImportContext.cs

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ public override void OnAfterImportScene(GLTFScene scene, int sceneIndex, GameObj
156156

157157
for (int i = 0; i < _selectableOrHoverableObjects.Count; i++)
158158
{
159-
AddCollidersToChildrenOfInteractableNode(_selectableOrHoverableObjects[i]);
159+
AddCollidersToChildSkinnedMeshRenderers(_selectableOrHoverableObjects[i]);
160+
AddCollidersToChildMeshRenderers(_selectableOrHoverableObjects[i]);
160161
}
161162

162163
try
@@ -205,7 +206,28 @@ public override void OnAfterImportScene(GLTFScene scene, int sceneIndex, GameObj
205206
}
206207
}
207208

208-
private void AddCollidersToChildrenOfInteractableNode(GameObject nodeObject)
209+
private void AddCollidersToChildSkinnedMeshRenderers(GameObject nodeObject)
210+
{
211+
var smrs = nodeObject.GetComponentsInChildren<SkinnedMeshRenderer>();
212+
213+
if (smrs.Length <= 0)
214+
return;
215+
216+
GameObject go;
217+
218+
for (int i = 0; i < smrs.Length; i++)
219+
{
220+
go = smrs[i].gameObject;
221+
222+
if (!go.TryGetComponent(out Collider collider))
223+
{
224+
var mc = go.AddComponent<MeshCollider>();
225+
mc.sharedMesh = smrs[i].sharedMesh;
226+
}
227+
}
228+
}
229+
230+
private void AddCollidersToChildMeshRenderers(GameObject nodeObject)
209231
{
210232
var meshFilters = nodeObject.GetComponentsInChildren<MeshFilter>();
211233

@@ -219,7 +241,10 @@ private void AddCollidersToChildrenOfInteractableNode(GameObject nodeObject)
219241
go = meshFilters[i].gameObject;
220242

221243
if (!go.TryGetComponent(out Collider collider))
222-
go.AddComponent<BoxCollider>();
244+
{
245+
var mc = go.AddComponent<MeshCollider>();
246+
mc.sharedMesh = meshFilters[i].sharedMesh;
247+
}
223248
}
224249
}
225250
}

0 commit comments

Comments
 (0)