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