Example #1
0
 private static void OnPlayerAwake(VRCPlayer __instance)
 {
     __instance.Method_Public_add_Void_OnAvatarIsReady_0(new Action(()
                                                                    => OnAvatarInstantiate(__instance.prop_VRCAvatarManager_0, __instance.field_Private_ApiAvatar_0, __instance.field_Internal_GameObject_0))
                                                         );
 }
Example #2
0
        private static void VRCPlayerAwakePostfix(VRCPlayer __instance)
        {
            if (__instance == null)
            {
                return;
            }

            __instance.Method_Public_add_Void_OnAvatarIsReady_0(new Action(() =>
            {
                var player = __instance._player;
                if (player == null)
                {
                    return;
                }

                var avatarManager = __instance.prop_VRCAvatarManager_0;
                if (avatarManager == null)
                {
                    return;
                }

                if (__instance._player.field_Private_APIUser_0 != null)
                {
                    if (__instance == VRCPlayer.field_Internal_Static_VRCPlayer_0)
                    {
                        return;
                    }

                    APIUser apiUser = __instance._player.prop_APIUser_0;

                    if (apiUser == null)
                    {
                        return;
                    }

                    if (IsAvatarExplicityShown(apiUser.id))
                    {
                        return;
                    }

                    string selectedTrust = GetUserTrustRank(apiUser);

                    if (DBSMod.CanUseBones.ContainsKey(selectedTrust.ToString()))
                    {
                        if (!DBSMod.CanUseBones[selectedTrust.ToString()])
                        {
                            Il2CppArrayBase <DynamicBoneCollider> dynamicBoneColliderComponents =
                                avatarManager.prop_GameObject_0.GetComponentsInChildren <DynamicBoneCollider>(true);
                            Il2CppArrayBase <DynamicBone> dynamicBoneComponents =
                                avatarManager.prop_GameObject_0.GetComponentsInChildren <DynamicBone>(true);

                            foreach (DynamicBoneCollider dynamicBoneCollider in dynamicBoneColliderComponents)
                            {
                                GameObject.DestroyImmediate(dynamicBoneCollider, true);
                            }

                            foreach (DynamicBone dynamicBone in dynamicBoneComponents)
                            {
                                GameObject.DestroyImmediate(dynamicBone, true);
                            }
                        }
                    }
                }
            }));
        }