Add convex mesh colliders for GLTF meshes

This commit is contained in:
Pascal Serrarens 2025-06-11 14:38:36 +02:00
parent 48d538a73a
commit d63d3cedd2

View File

@ -177,6 +177,7 @@ namespace RoboidControl.Unity {
#if GLTF #if GLTF
bool loadingModel = false; bool loadingModel = false;
private async void ProcessGltfModel(RoboidControl.Thing coreThing) { private async void ProcessGltfModel(RoboidControl.Thing coreThing) {
if (!loadingModel) { if (!loadingModel) {
loadingModel = true; loadingModel = true;
@ -192,7 +193,7 @@ namespace RoboidControl.Unity {
Thing[] things = FindObjectsOfType<Thing>(); Thing[] things = FindObjectsOfType<Thing>();
Thing parentThing = null; Thing parentThing = null;
foreach (Thing thing in things) { 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; parentTransform = thing.transform;
parentThing = thing; parentThing = thing;
} }
@ -212,7 +213,8 @@ namespace RoboidControl.Unity {
} }
else else
ScanForThings(parentTransform); ScanForThings(parentTransform);
}
AddMeshColliders(parentTransform); }
else { else {
this.transform.localScale = Vector3.one * 1; this.transform.localScale = Vector3.one * 1;
} }
@ -262,6 +264,15 @@ namespace RoboidControl.Unity {
return null; return null;
} }
private void AddMeshColliders(Transform rootTransform) {
MeshRenderer[] meshRenderers = rootTransform.GetComponentsInChildren<MeshRenderer>();
foreach (MeshRenderer meshRenderer in meshRenderers) {
MeshFilter meshFilter = meshRenderer.GetComponent<MeshFilter>();
MeshCollider meshCollider = meshRenderer.gameObject.AddComponent<MeshCollider>();
meshCollider.sharedMesh = meshFilter.sharedMesh;
meshCollider.convex = true;
}
}
/// <summary> /// <summary>
/// Handle a Pose event /// Handle a Pose event