public override void OnApplicationStart() { MelonPreferences_Category category = MelonPreferences.CreateCategory("ReloadAvatars", "ReloadAvatars Settings"); reloadAvatarPref = category.CreateEntry("ReloadAvatar", true, "Enable/Disable Reload Avatar Button"); reloadAllAvatarsPref = category.CreateEntry("ReloadAllAvatars", true, "Enable/Disable Reload All Avatars Button"); foreach (MelonPreferences_Entry entry in category.Entries) { entry.OnValueChangedUntyped += OnPrefChanged; } ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UserQuickMenu).AddSimpleButton("Reload Avatar", new Action(() => { try { VRCUtils.ReloadAvatar(VRCUtils.ActivePlayerInQuickMenu.prop_VRCPlayer_0); } catch (Exception ex) { MelonLogger.Error("Error while reloading single avatar:\n" + ex.ToString()); } // Ignore }), new Action <GameObject>((gameObject) => { reloadAvatarButton = gameObject; reloadAvatarButton.SetActive(reloadAllAvatarsPref.Value); OnPrefChanged(); })); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.QuickMenu).AddSimpleButton("Reload All Avatars", new Action(() => { try { VRCUtils.ReloadAllAvatars(); } catch (Exception ex) { MelonLogger.Error("Error while reloading all avatars:\n" + ex.ToString()); } // Ignore }), new Action <GameObject>((gameObject) => { reloadAllAvatarsButton = gameObject; reloadAllAvatarsButton.SetActive(reloadAvatarPref.Value); OnPrefChanged(); })); MelonLogger.Msg("Initialized!"); }
public static void OnStaticConfigChange() { OnEnable = null; OnDisable = null; foreach (AvatarHiderPlayer playerProp in PlayerManager.filteredPlayers.Values) { playerProp.SetActive(); playerProp.active = false; // Do this so avatar sounds run on the first time } setActiveDelegate = setActiveCompletelyDelegate; setInactiveDelegate = setInactiveCompletelyDelegate; if (Config.DisableSpawnSound.Value) { foreach (AvatarHiderPlayer ahPlayer in PlayerManager.filteredPlayers.Values) { ahPlayer.hasLetAudioPlay = false; } OnEnable += new Action <AvatarHiderPlayer>((ahPlayer) => { if (ahPlayer.hasLetAudioPlay) { ahPlayer.StopAudio(); } }); OnDisable += new Action <AvatarHiderPlayer>((ahPlayer) => { if (!ahPlayer.hasLetAudioPlay) { ahPlayer.hasLetAudioPlay = true; } }); } if (Config.LimitAudioDistance.Value) { wasLimitOnBefore = true; foreach (AvatarHiderPlayer ahPlayer in PlayerManager.players.Values) { if (!ahPlayer.active) { continue; } ahPlayer.LimitAudioDistance(); ahPlayer.hasLimitedAudio = true; } OnEnable += new Action <AvatarHiderPlayer>((ahPlayer) => { if (!ahPlayer.hasLimitedAudio) { ahPlayer.LimitAudioDistance(); ahPlayer.hasLimitedAudio = true; } }); } else if (wasLimitOnBefore) { VRCUtils.ReloadAllAvatars(); } RefreshManager.Refresh(); }