From 7fb94ee097f548440c7b60113f42a446987f5948 Mon Sep 17 00:00:00 2001 From: Dreadrith Date: Mon, 10 Apr 2023 14:03:13 +0300 Subject: [PATCH] Fix allowCollision SDK compatibility --- .../DescriptorCollidersSendersHelper.cs | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/DescriptorCollidersSendersHelper.cs b/Runtime/Scripts/DescriptorCollidersSendersHelper.cs index 5a1e9ef..667da7b 100644 --- a/Runtime/Scripts/DescriptorCollidersSendersHelper.cs +++ b/Runtime/Scripts/DescriptorCollidersSendersHelper.cs @@ -50,7 +50,27 @@ public static void ExtractDescriptorColliders(VRCAvatarDescriptor descriptor, De } List createdColliders = new List(); - var collidingBones = descriptor.GetComponentsInChildren().Where(p => 0 != (int)p.allowCollision); + var collidingBones = descriptor.GetComponentsInChildren().Where(p => + { + using (var so = new SerializedObject(p)) + { + var allowCollision = so.FindProperty("allowCollision"); + if (allowCollision.propertyType == SerializedPropertyType.Boolean) + return allowCollision.boolValue; + + switch (allowCollision.enumValueIndex) + { + default: return false; + case 1: return true; + case 2: + { + var collisionFilter = so.FindProperty("collisionFilter"); + return collisionFilter.FindPropertyRelative("allowSelf").boolValue; + } + } + + } + }); void ExtractCollider(VRCAvatarDescriptor.ColliderConfig config, HumanBodyBones matchedBone, string collisionName, bool isSenderOnly = false) {