< Summary

Class:DCL.EmotesWheel.EmotesWheelController
Assembly:EmotesWheelHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/EmotesWheelHUD/EmotesWheelController.cs
Covered lines:129
Uncovered lines:105
Coverable lines:234
Total lines:415
Line coverage:55.1% (129 of 234)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
EmotesWheelController(...)0%110100%
SetVisibility(...)0%2100%
OnEmoteVisibleChanged(...)0%110100%
IsStartMenuOpenChanged(...)0%6200%
OnEquippedEmotesSet(...)0%110100%
UpdateEmoteSlots()0%15.669056.52%
OnAnimationAdded(...)0%2100%
RefreshSlotLoadingState(...)0%12300%
SetVisibility_Internal(...)0%8.817066.67%
Dispose()0%220100%
OnEmoteClicked(...)0%2100%
PlayEmote(...)0%2.062075%
ConfigureShortcuts()0%110100%
OnNumericShortcutInputActionTriggered(...)0%52567200%
OnViewClosed()0%2100%
OnAvatarEmoteSet(...)0%110100%
OnCloseWindowPressed(...)0%110100%
OnOpenEmotesCustomizationInputActionTriggered(...)0%6200%
OpenEmotesCustomizationSection()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/EmotesWheelHUD/EmotesWheelController.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using DCL.Emotes;
 4using UnityEngine;
 5
 6namespace DCL.EmotesWheel
 7{
 8    public class EmotesWheelController : IHUD
 9    {
 10        internal EmotesWheelView view;
 1311        private BaseVariable<bool> emotesVisible => DataStore.i.HUDs.emotesVisible;
 512        private BaseVariable<bool> emoteJustTriggeredFromShortcut => DataStore.i.HUDs.emoteJustTriggeredFromShortcut;
 013        private BaseVariable<bool> isAvatarEditorVisible => DataStore.i.HUDs.avatarEditorVisible;
 814        private BaseVariable<bool> isStartMenuOpen => DataStore.i.exploreV2.isOpen;
 515        private BaseVariable<bool> canStartMenuBeOpened => DataStore.i.exploreV2.isSomeModalOpen;
 016        private bool shortcutsCanBeUsed => !isStartMenuOpen.Get();
 1517        private DataStore_EmotesCustomization emotesCustomizationDataStore => DataStore.i.emotesCustomization;
 618        private BaseDictionary<(string bodyshapeId, string emoteId), EmoteClipData> emoteAnimations => DataStore.i.emote
 19
 620        private UserProfile ownUserProfile => UserProfile.GetOwnUserProfile();
 21        private InputAction_Trigger closeWindow;
 22        private InputAction_Hold openEmotesCustomizationInputAction;
 23        private InputAction_Trigger shortcut0InputAction;
 24        private InputAction_Trigger shortcut1InputAction;
 25        private InputAction_Trigger shortcut2InputAction;
 26        private InputAction_Trigger shortcut3InputAction;
 27        private InputAction_Trigger shortcut4InputAction;
 28        private InputAction_Trigger shortcut5InputAction;
 29        private InputAction_Trigger shortcut6InputAction;
 30        private InputAction_Trigger shortcut7InputAction;
 31        private InputAction_Trigger shortcut8InputAction;
 32        private InputAction_Trigger shortcut9InputAction;
 33        private InputAction_Trigger auxShortcut0InputAction;
 34        private InputAction_Trigger auxShortcut1InputAction;
 35        private InputAction_Trigger auxShortcut2InputAction;
 36        private InputAction_Trigger auxShortcut3InputAction;
 37        private InputAction_Trigger auxShortcut4InputAction;
 38        private InputAction_Trigger auxShortcut5InputAction;
 39        private InputAction_Trigger auxShortcut6InputAction;
 40        private InputAction_Trigger auxShortcut7InputAction;
 41        private InputAction_Trigger auxShortcut8InputAction;
 42        private InputAction_Trigger auxShortcut9InputAction;
 43        private UserProfile userProfile;
 44        private BaseDictionary<string, WearableItem> catalog;
 45        private readonly IEmotesCatalogService emoteCatalog;
 46        private bool ownedWearablesAlreadyRequested = false;
 347        private BaseDictionary<string, EmoteWheelSlot> slotsInLoadingState = new BaseDictionary<string, EmoteWheelSlot>(
 48
 349        public EmotesWheelController(UserProfile userProfile, BaseDictionary<string, WearableItem> catalog, IEmotesCatal
 50        {
 351            closeWindow = Resources.Load<InputAction_Trigger>("CloseWindow");
 352            closeWindow.OnTriggered += OnCloseWindowPressed;
 53
 354            view = EmotesWheelView.Create();
 355            view.OnClose += OnViewClosed;
 356            view.onEmoteClicked += OnEmoteClicked;
 357            view.OnCustomizeClicked += OpenEmotesCustomizationSection;
 58
 359            ownUserProfile.OnAvatarEmoteSet += OnAvatarEmoteSet;
 360            emotesVisible.OnChange += OnEmoteVisibleChanged;
 361            OnEmoteVisibleChanged(emotesVisible.Get(), false);
 62
 363            isStartMenuOpen.OnChange += IsStartMenuOpenChanged;
 64
 365            this.userProfile = userProfile;
 366            this.catalog = catalog;
 367            this.emoteCatalog = emoteCatalog;
 368            emotesCustomizationDataStore.equippedEmotes.OnSet += OnEquippedEmotesSet;
 369            OnEquippedEmotesSet(emotesCustomizationDataStore.equippedEmotes.Get());
 370            emoteAnimations.OnAdded += OnAnimationAdded;
 71
 372            ConfigureShortcuts();
 73
 374            emotesCustomizationDataStore.isWheelInitialized.Set(true);
 375        }
 76
 77        public void SetVisibility(bool visible)
 78        {
 79            //TODO once kernel sends visible properly
 80            //expressionsVisible.Set(visible);
 081        }
 82
 1083        private void OnEmoteVisibleChanged(bool current, bool previous) { SetVisibility_Internal(current); }
 84
 85        private void IsStartMenuOpenChanged(bool current, bool previous)
 86        {
 087            if (!current)
 088                return;
 89
 090            emotesVisible.Set(false);
 091        }
 92
 693        private void OnEquippedEmotesSet(IEnumerable<EquippedEmoteData> equippedEmotes) { UpdateEmoteSlots(); }
 94
 95        private void UpdateEmoteSlots()
 96        {
 397            List<EmotesWheelView.EmoteSlotData> emotesToSet = new List<EmotesWheelView.EmoteSlotData>();
 6698            foreach (EquippedEmoteData equippedEmoteData in emotesCustomizationDataStore.equippedEmotes.Get())
 99            {
 30100                if (equippedEmoteData != null)
 101                {
 0102                    emoteCatalog.TryGetLoadedEmote(equippedEmoteData.id, out var emoteItem);
 103
 0104                    if (emoteItem != null)
 105                    {
 0106                        emotesToSet.Add(new EmotesWheelView.EmoteSlotData
 107                        {
 108                            emoteItem = emoteItem,
 109                            thumbnailSprite = emoteItem.thumbnailSprite != null ? emoteItem.thumbnailSprite : equippedEm
 110                        });
 0111                    }
 112                    else
 113                    {
 0114                        emotesToSet.Add(null);
 115                    }
 0116                }
 117                else
 118                {
 30119                    emotesToSet.Add(null);
 120                }
 121            }
 122
 3123            List<EmoteWheelSlot> updatedWheelSlots = view.SetEmotes(emotesToSet);
 66124            foreach (EmoteWheelSlot slot in updatedWheelSlots)
 125            {
 30126                slot.SetAsLoading(false);
 30127                if (string.IsNullOrEmpty(slot.emoteId))
 128                    continue;
 129
 0130                slotsInLoadingState.Remove(slot.emoteId);
 131
 132
 0133                slot.SetAsLoading(true);
 0134                slotsInLoadingState.Add(slot.emoteId, slot);
 135
 0136                RefreshSlotLoadingState(slot.emoteId);
 137            }
 3138        }
 139
 0140        private void OnAnimationAdded((string bodyshapeId, string emoteId) values, EmoteClipData emoteClipData) { Refres
 141
 142        private void RefreshSlotLoadingState(string emoteId)
 143        {
 0144            if (emoteAnimations.ContainsKey((userProfile.avatar.bodyShape, emoteId)))
 145            {
 0146                slotsInLoadingState.TryGetValue(emoteId, out EmoteWheelSlot slot);
 0147                if (slot != null)
 148                {
 0149                    slot.SetAsLoading(false);
 0150                    slotsInLoadingState.Remove(emoteId);
 151                }
 152            }
 0153        }
 154
 155        public void SetVisibility_Internal(bool visible)
 156        {
 5157            if (isStartMenuOpen.Get())
 0158                return;
 159
 5160            if (emoteJustTriggeredFromShortcut.Get())
 161            {
 0162                emotesVisible.Set(false);
 0163                return;
 164            }
 165
 5166            view.SetVisiblity(visible);
 167
 5168            if (visible)
 169            {
 1170                DCL.Helpers.Utils.UnlockCursor();
 171
 1172                if (userProfile != null &&
 173                    !string.IsNullOrEmpty(userProfile.userId) &&
 174                    !ownedWearablesAlreadyRequested)
 175                {
 0176                    CatalogController.RequestOwnedWearables(userProfile.userId)
 177                        .Then((ownedWearables) =>
 178                        {
 0179                            ownedWearablesAlreadyRequested = true;
 0180                            userProfile.SetInventory(ownedWearables.Select(x => x.id).ToArray());
 0181                            UpdateEmoteSlots();
 0182                        });
 183                }
 184            }
 185
 5186            canStartMenuBeOpened.Set(visible);
 5187        }
 188
 189        public void Dispose()
 190        {
 3191            view.OnClose -= OnViewClosed;
 3192            view.onEmoteClicked -= OnEmoteClicked;
 3193            view.OnCustomizeClicked -= OpenEmotesCustomizationSection;
 3194            closeWindow.OnTriggered -= OnCloseWindowPressed;
 3195            ownUserProfile.OnAvatarEmoteSet -= OnAvatarEmoteSet;
 3196            emotesVisible.OnChange -= OnEmoteVisibleChanged;
 3197            emotesCustomizationDataStore.equippedEmotes.OnSet -= OnEquippedEmotesSet;
 3198            emoteAnimations.OnAdded -= OnAnimationAdded;
 3199            shortcut0InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3200            shortcut1InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3201            shortcut2InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3202            shortcut3InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3203            shortcut4InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3204            shortcut5InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3205            shortcut6InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3206            shortcut7InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3207            shortcut8InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3208            shortcut9InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3209            auxShortcut0InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3210            auxShortcut1InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3211            auxShortcut2InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3212            auxShortcut3InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3213            auxShortcut4InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3214            auxShortcut5InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3215            auxShortcut6InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3216            auxShortcut7InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3217            auxShortcut8InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 3218            auxShortcut9InputAction.OnTriggered -= OnNumericShortcutInputActionTriggered;
 219
 3220            if (view != null)
 221            {
 3222                view.CleanUp();
 3223                UnityEngine.Object.Destroy(view.gameObject);
 224            }
 3225        }
 226
 0227        public void OnEmoteClicked(string id) { PlayEmote(id, UserProfile.EmoteSource.EmotesWheel); }
 228
 229        public void PlayEmote(string id, UserProfile.EmoteSource source)
 230        {
 1231            if (string.IsNullOrEmpty(id))
 0232                return;
 233
 1234            UserProfile.GetOwnUserProfile().SetAvatarExpression(id, source);
 1235        }
 236
 237        private void ConfigureShortcuts()
 238        {
 3239            closeWindow = Resources.Load<InputAction_Trigger>("CloseWindow");
 3240            closeWindow.OnTriggered += OnCloseWindowPressed;
 241
 3242            openEmotesCustomizationInputAction = Resources.Load<InputAction_Hold>("DefaultConfirmAction");
 3243            openEmotesCustomizationInputAction.OnFinished += OnOpenEmotesCustomizationInputActionTriggered;
 244
 3245            shortcut0InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut0");
 3246            shortcut0InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 247
 3248            shortcut1InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut1");
 3249            shortcut1InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 250
 3251            shortcut2InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut2");
 3252            shortcut2InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 253
 3254            shortcut3InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut3");
 3255            shortcut3InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 256
 3257            shortcut4InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut4");
 3258            shortcut4InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 259
 3260            shortcut5InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut5");
 3261            shortcut5InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 262
 3263            shortcut6InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut6");
 3264            shortcut6InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 265
 3266            shortcut7InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut7");
 3267            shortcut7InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 268
 3269            shortcut8InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut8");
 3270            shortcut8InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 271
 3272            shortcut9InputAction = Resources.Load<InputAction_Trigger>("ToggleEmoteShortcut9");
 3273            shortcut9InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 274
 3275            auxShortcut0InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut0");
 3276            auxShortcut0InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 277
 3278            auxShortcut1InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut1");
 3279            auxShortcut1InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 280
 3281            auxShortcut2InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut2");
 3282            auxShortcut2InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 283
 3284            auxShortcut3InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut3");
 3285            auxShortcut3InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 286
 3287            auxShortcut4InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut4");
 3288            auxShortcut4InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 289
 3290            auxShortcut5InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut5");
 3291            auxShortcut5InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 292
 3293            auxShortcut6InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut6");
 3294            auxShortcut6InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 295
 3296            auxShortcut7InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut7");
 3297            auxShortcut7InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 298
 3299            auxShortcut8InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut8");
 3300            auxShortcut8InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 301
 3302            auxShortcut9InputAction = Resources.Load<InputAction_Trigger>("ToggleShortcut9");
 3303            auxShortcut9InputAction.OnTriggered += OnNumericShortcutInputActionTriggered;
 3304        }
 305
 306        private void OnNumericShortcutInputActionTriggered(DCLAction_Trigger action)
 307        {
 0308            if (!shortcutsCanBeUsed)
 0309                return;
 310
 311            switch (action)
 312            {
 313                case DCLAction_Trigger.ToggleEmoteShortcut0:
 0314                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[0]?.id, UserProfile.EmoteSource.Shortcut);
 0315                    emoteJustTriggeredFromShortcut.Set(true);
 0316                    break;
 317                case DCLAction_Trigger.ToggleEmoteShortcut1:
 0318                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[1]?.id, UserProfile.EmoteSource.Shortcut);
 0319                    emoteJustTriggeredFromShortcut.Set(true);
 0320                    break;
 321                case DCLAction_Trigger.ToggleEmoteShortcut2:
 0322                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[2]?.id, UserProfile.EmoteSource.Shortcut);
 0323                    emoteJustTriggeredFromShortcut.Set(true);
 0324                    break;
 325                case DCLAction_Trigger.ToggleEmoteShortcut3:
 0326                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[3]?.id, UserProfile.EmoteSource.Shortcut);
 0327                    emoteJustTriggeredFromShortcut.Set(true);
 0328                    break;
 329                case DCLAction_Trigger.ToggleEmoteShortcut4:
 0330                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[4]?.id, UserProfile.EmoteSource.Shortcut);
 0331                    emoteJustTriggeredFromShortcut.Set(true);
 0332                    break;
 333                case DCLAction_Trigger.ToggleEmoteShortcut5:
 0334                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[5]?.id, UserProfile.EmoteSource.Shortcut);
 0335                    emoteJustTriggeredFromShortcut.Set(true);
 0336                    break;
 337                case DCLAction_Trigger.ToggleEmoteShortcut6:
 0338                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[6]?.id, UserProfile.EmoteSource.Shortcut);
 0339                    emoteJustTriggeredFromShortcut.Set(true);
 0340                    break;
 341                case DCLAction_Trigger.ToggleEmoteShortcut7:
 0342                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[7]?.id, UserProfile.EmoteSource.Shortcut);
 0343                    emoteJustTriggeredFromShortcut.Set(true);
 0344                    break;
 345                case DCLAction_Trigger.ToggleEmoteShortcut8:
 0346                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[8]?.id, UserProfile.EmoteSource.Shortcut);
 0347                    emoteJustTriggeredFromShortcut.Set(true);
 0348                    break;
 349                case DCLAction_Trigger.ToggleEmoteShortcut9:
 0350                    PlayEmote(emotesCustomizationDataStore.equippedEmotes[9]?.id, UserProfile.EmoteSource.Shortcut);
 0351                    emoteJustTriggeredFromShortcut.Set(true);
 0352                    break;
 353                case DCLAction_Trigger.ToggleShortcut0:
 0354                    if (emotesVisible.Get())
 0355                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[0]?.id, UserProfile.EmoteSource.Shortcut);
 0356                    break;
 357                case DCLAction_Trigger.ToggleShortcut1:
 0358                    if (emotesVisible.Get())
 0359                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[1]?.id, UserProfile.EmoteSource.Shortcut);
 0360                    break;
 361                case DCLAction_Trigger.ToggleShortcut2:
 0362                    if (emotesVisible.Get())
 0363                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[2]?.id, UserProfile.EmoteSource.Shortcut);
 0364                    break;
 365                case DCLAction_Trigger.ToggleShortcut3:
 0366                    if (emotesVisible.Get())
 0367                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[3]?.id, UserProfile.EmoteSource.Shortcut);
 0368                    break;
 369                case DCLAction_Trigger.ToggleShortcut4:
 0370                    if (emotesVisible.Get())
 0371                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[4]?.id, UserProfile.EmoteSource.Shortcut);
 0372                    break;
 373                case DCLAction_Trigger.ToggleShortcut5:
 0374                    if (emotesVisible.Get())
 0375                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[5]?.id, UserProfile.EmoteSource.Shortcut);
 0376                    break;
 377                case DCLAction_Trigger.ToggleShortcut6:
 0378                    if (emotesVisible.Get())
 0379                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[6]?.id, UserProfile.EmoteSource.Shortcut);
 0380                    break;
 381                case DCLAction_Trigger.ToggleShortcut7:
 0382                    if (emotesVisible.Get())
 0383                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[7]?.id, UserProfile.EmoteSource.Shortcut);
 0384                    break;
 385                case DCLAction_Trigger.ToggleShortcut8:
 0386                    if (emotesVisible.Get())
 0387                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[8]?.id, UserProfile.EmoteSource.Shortcut);
 0388                    break;
 389                case DCLAction_Trigger.ToggleShortcut9:
 0390                    if (emotesVisible.Get())
 0391                        PlayEmote(emotesCustomizationDataStore.equippedEmotes[9]?.id, UserProfile.EmoteSource.Shortcut);
 392                    break;
 393            }
 0394        }
 395
 0396        private void OnViewClosed() { emotesVisible.Set(false); }
 2397        private void OnAvatarEmoteSet(string id, long timestamp, UserProfile.EmoteSource source) { emotesVisible.Set(fal
 6398        private void OnCloseWindowPressed(DCLAction_Trigger action) { emotesVisible.Set(false); }
 399
 400        private void OnOpenEmotesCustomizationInputActionTriggered(DCLAction_Hold action)
 401        {
 0402            if (!emotesVisible.Get())
 0403                return;
 404
 0405            OpenEmotesCustomizationSection();
 0406        }
 407
 408        private void OpenEmotesCustomizationSection()
 409        {
 0410            emotesVisible.Set(false);
 0411            isAvatarEditorVisible.Set(true);
 0412            emotesCustomizationDataStore.isEmotesCustomizationSelected.Set(true);
 0413        }
 414    }
 415}