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
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>();
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<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>
/// Handle a Pose event