From d63d3cedd258ead4ea21d587ec7691753cd766da Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Wed, 11 Jun 2025 14:38:36 +0200 Subject: [PATCH] Add convex mesh colliders for GLTF meshes --- Unity/Thing.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Unity/Thing.cs b/Unity/Thing.cs index db37889..866b7a0 100644 --- a/Unity/Thing.cs +++ b/Unity/Thing.cs @@ -177,6 +177,7 @@ namespace RoboidControl.Unity { #if GLTF bool loadingModel = false; + private async void ProcessGltfModel(RoboidControl.Thing coreThing) { if (!loadingModel) { loadingModel = true; @@ -192,7 +193,7 @@ namespace RoboidControl.Unity { Thing[] things = FindObjectsOfType(); Thing parentThing = null; foreach (Thing thing in things) { - if (thing.core.owner.networkId == coreThing.owner.networkId && thing.core.id == coreThing.id) { + if (thing.core != null && thing.core.owner.networkId == coreThing.owner.networkId && thing.core.id == coreThing.id) { parentTransform = thing.transform; parentThing = thing; } @@ -212,7 +213,8 @@ namespace RoboidControl.Unity { } else ScanForThings(parentTransform); - } + + AddMeshColliders(parentTransform); } else { this.transform.localScale = Vector3.one * 1; } @@ -262,6 +264,15 @@ namespace RoboidControl.Unity { return null; } + private void AddMeshColliders(Transform rootTransform) { + MeshRenderer[] meshRenderers = rootTransform.GetComponentsInChildren(); + foreach (MeshRenderer meshRenderer in meshRenderers) { + MeshFilter meshFilter = meshRenderer.GetComponent(); + MeshCollider meshCollider = meshRenderer.gameObject.AddComponent(); + meshCollider.sharedMesh = meshFilter.sharedMesh; + meshCollider.convex = true; + } + } /// /// Handle a Pose event