< Summary

Class:DCL.Backpack.BackpackEditorHUDV2ComponentView
Assembly:BackpackEditorHUDV2
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BackpackEditorHUDV2/BackpackEditorHUDV2ComponentView.cs
Covered lines:110
Uncovered lines:112
Coverable lines:222
Total lines:482
Line coverage:49.5% (110 of 222)
Covered branches:0
Total branches:0
Covered methods:22
Total methods:54
Method coverage:40.7% (22 of 54)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BackpackEditorHUDV2ComponentView()0%110100%
Awake()0%110100%
Initialize(...)0%110100%
BackFromDetails()0%6200%
OnVRMExportButtonClicked()0%20400%
OnDetailsPanelVRMExportButtonClicked()0%12300%
SetOutfitsEnabled(...)0%2100%
ToggleOutfitSection()0%12300%
ToggleNormalSection()0%110100%
ToggleVRMDetailsSection()0%6200%
Update()0%110100%
Dispose()0%110100%
Create()0%110100%
Show(...)0%110100%
Hide(...)0%110100%
RefreshControl()0%2100%
SetAsFullScreenMenuMode(...)0%12300%
PlayPreviewEmote(...)0%110100%
PlayPreviewEmote(...)0%2.062075%
UpdateAvatarPreview(...)0%4.074083.33%
SetAvatarPreviewFocus(...)0%110100%
>c__DisplayClass119_0/<<TakeSnapshotsAfterStopPreviewAnimation()0%12300%
TakeSnapshotsAfterStopPreviewAnimation(...)0%2100%
SetColorPickerVisibility(...)0%110100%
SetColorPickerAsSkinMode(...)0%330100%
UpdateHideUnhideStatus(...)0%2100%
SetColorPickerValue(...)0%110100%
ShowContinueSignup()0%2100%
HideContinueSignup()0%2100%
SetVRMButtonActive(...)0%2100%
SetVRMButtonEnabled(...)0%2100%
SetVRMSuccessToastActive(...)0%2100%
SetWarningForVRMExportButton(...)0%6200%
SetSignUpModeActive(...)0%6200%
SetSignUpStage(...)0%12300%
OnPointerDown(...)0%6200%
ConfigureSectionSelector()0%110100%
OnEmotesCustomizationSelected(...)0%220100%
ResetPreviewPanel()0%110100%
<UpdateAvatarModelWhenNeeded()0%7.184041.67%
UpdateAvatarModelWhenNeeded()0%220100%
OnColorPickerColorChanged(...)0%6200%
ColorPickerToggle()0%6200%
PlayTransitionAnimation(...)0%56700%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BackpackEditorHUDV2/BackpackEditorHUDV2ComponentView.cs

#LineLine coverage
 1using AvatarSystem;
 2using Cysharp.Threading.Tasks;
 3using DCL.Tasks;
 4using DG.Tweening;
 5using MainScripts.DCL.Controllers.HUD.CharacterPreview;
 6using System;
 7using System.Collections.Generic;
 8using System.Threading;
 9using TMPro;
 10using UIComponents.Scripts.Components;
 11using UnityEngine;
 12using UnityEngine.EventSystems;
 13using UnityEngine.UI;
 14
 15namespace DCL.Backpack
 16{
 17    public class BackpackEditorHUDV2ComponentView : BaseComponentView<BackpackEditorHUDModel>, IBackpackEditorHUDView, I
 18    {
 19        private const string SIGN_UP_HEADER_TITLE_FOR_FISRT_STEP = "Customize Your Avatar";
 20        private const string SIGN_UP_HEADER_TITLE_FOR_SECOND_STEP = "Final Details";
 21
 22        public event Action<Color> OnColorChanged;
 23        public event Action OnColorPickerToggle;
 24        public event Action OnContinueSignup;
 25        public event Action OnAvatarUpdated;
 26        public event Action OnOutfitsOpened;
 27        public event Action OnVRMExport;
 28        public event Action OnVRMDetailsOpened;
 29        public event Action OnVRMDetailsClosed;
 30        public event Action<SignUpStage> OnSignUpBackClicked;
 31
 32        private const int AVATAR_SECTION_INDEX = 0;
 33        private const int EMOTES_SECTION_INDEX = 1;
 34        private const int MS_TO_RESET_PREVIEW_ANIMATION = 200;
 35
 36        [SerializeField] internal SectionSelectorComponentView sectionSelector;
 37        [SerializeField] internal GameObject wearablesSection;
 38        [SerializeField] internal CanvasGroup wearablesSectionCanvasGroup;
 39        [SerializeField] internal Image wearablesSectionBackground;
 40        [SerializeField] internal GameObject emotesSection;
 41        [SerializeField] private BackpackPreviewPanel backpackPreviewPanel;
 42        [SerializeField] private WearableGridComponentView wearableGridComponentView;
 43        [SerializeField] private AvatarSlotsView avatarSlotsView;
 44        [SerializeField] internal ColorPickerComponentView colorPickerComponentView;
 45        [SerializeField] internal ColorPresetsSO colorPresetsSO;
 46        [SerializeField] internal ColorPresetsSO skinColorPresetsSO;
 47        [SerializeField] internal Color selectedOutfitButtonColor;
 48        [SerializeField] private BackpackFiltersComponentView backpackFiltersComponentView;
 49        [SerializeField] private OutfitsSectionComponentView outfitsSectionComponentView;
 50        [SerializeField] internal Button saveAvatarButton;
 51        [SerializeField] internal GameObject normalSection;
 52        [SerializeField] internal GameObject outfitSection;
 53        [SerializeField] internal GameObject vrmDetailsSection;
 54        [SerializeField] internal Button outfitButton;
 55        [SerializeField] internal Image outfitButtonIcon;
 56        [SerializeField] internal GameObject background;
 57        [SerializeField] internal GameObject hints;
 58
 59        [Header("VRM Export")]
 60        [SerializeField] internal Button vrmExportButton;
 61        [SerializeField] internal TooltipComponentView vrmExportTooltipComponentView;
 62        [SerializeField] internal GameObject vrmWarningBubble;
 63        [SerializeField] internal RectTransform vrmExportedToast;
 64        [SerializeField] private VRMDetailsComponentView vrmDetailsComponentView;
 65
 66        [Header("Sign Up Mode")]
 67        [SerializeField] internal GameObject signUpHeader;
 68        [SerializeField] internal TMP_Text signUpHeaderTitle;
 69        [SerializeField] internal GameObject backgroundForSignUp;
 70        [SerializeField] internal Button backButton;
 71        [SerializeField] internal Button nextButton;
 72        [SerializeField] internal GameObject[] objectsToDeactivateInSignUpMode;
 73
 74        [Header("SignUp Mode Transitions")]
 75        [SerializeField] internal RectTransform wearablesBackgroundForSignUp;
 76        [SerializeField] internal CanvasGroup wearablesBackgroundForSignUpCanvasGroup;
 1877        [SerializeField] internal Ease transitionEase = Ease.InOutExpo;
 1878        [SerializeField] internal float transitionDuration = 0.5f;
 1879        [SerializeField] internal float transitionDistance = 1800f;
 80
 081        public IReadOnlyList<SkinnedMeshRenderer> originalVisibleRenderers => backpackPreviewPanel?.originalVisibleRende
 082        public IAvatarEmotesController EmotesController => backpackPreviewPanel?.EmotesController;
 083        public override bool isVisible => gameObject.activeInHierarchy;
 084        public Transform EmotesSectionTransform => emotesSection.transform;
 085        public WearableGridComponentView WearableGridComponentView => wearableGridComponentView;
 086        public AvatarSlotsView AvatarSlotsView => avatarSlotsView;
 087        public BackpackFiltersComponentView BackpackFiltersComponentView => backpackFiltersComponentView;
 088        public OutfitsSectionComponentView OutfitsSectionComponentView => outfitsSectionComponentView;
 089        public IVRMDetailsComponentView VrmDetailsComponentView => vrmDetailsComponentView;
 90
 5491        private DataStore_EmotesCustomization emotesCustomizationDataStore => DataStore.i.emotesCustomization;
 92        private Transform thisTransform;
 93        private bool isAvatarDirty;
 94        private AvatarModel avatarModelToUpdate;
 1895        private CancellationTokenSource updateAvatarCts = new ();
 1896        private CancellationTokenSource snapshotsCts = new ();
 97        private SignUpStage currentStage;
 98        private Vector2 originalAnchorPositionOfWearablesBackgroundForSignUp;
 99        private Vector2 originalAnchorPositionOfWearablesSection;
 100        private bool vrmWarningEnabled;
 101
 102        public override void Awake()
 103        {
 17104            base.Awake();
 105
 17106            thisTransform = transform;
 17107            backpackPreviewPanel.SetLoadingActive(false);
 17108            originalAnchorPositionOfWearablesBackgroundForSignUp = wearablesBackgroundForSignUp.anchoredPosition;
 17109            originalAnchorPositionOfWearablesSection = ((RectTransform)wearablesSection.transform).anchoredPosition;
 17110            saveAvatarButton.onClick.AddListener(() => OnContinueSignup?.Invoke());
 17111            nextButton.onClick.AddListener(() => OnContinueSignup?.Invoke());
 17112            backButton.onClick.AddListener(() => OnSignUpBackClicked?.Invoke(currentStage));
 17113            ToggleNormalSection();
 17114        }
 115
 116        public void Initialize(
 117            ICharacterPreviewFactory characterPreviewFactory,
 118            IPreviewCameraRotationController avatarPreviewRotationController,
 119            IPreviewCameraPanningController avatarPreviewPanningController,
 120            IPreviewCameraZoomController avatarPreviewZoomController)
 121        {
 17122            ConfigureSectionSelector();
 123
 17124            backpackPreviewPanel.Initialize(
 125                characterPreviewFactory,
 126                avatarPreviewRotationController,
 127                avatarPreviewPanningController,
 128                avatarPreviewZoomController);
 129
 17130            colorPickerComponentView.OnColorChanged += OnColorPickerColorChanged;
 17131            colorPickerComponentView.OnColorPickerToggle += ColorPickerToggle;
 132
 17133            outfitButton.onClick.RemoveAllListeners();
 17134            outfitButton.onClick.AddListener(ToggleOutfitSection);
 135
 17136            vrmExportButton.onClick.RemoveAllListeners();
 17137            vrmExportButton.onClick.AddListener(OnVRMExportButtonClicked);
 138
 17139            vrmDetailsComponentView.OnVRMExportButtonPressed += OnDetailsPanelVRMExportButtonClicked;
 17140            vrmDetailsComponentView.OnBackButtonPressed += BackFromDetails;
 17141            outfitsSectionComponentView.OnBackButtonPressed += ToggleNormalSection;
 17142        }
 143
 144        private void BackFromDetails()
 145        {
 0146            ToggleNormalSection();
 0147            OnVRMDetailsClosed?.Invoke();
 0148        }
 149
 150        private void OnVRMExportButtonClicked()
 151        {
 0152            if (vrmDetailsSection.activeInHierarchy) return;
 153
 0154            if (vrmWarningEnabled)
 155            {
 0156                SetWarningForVRMExportButton(false);
 0157                ToggleVRMDetailsSection();
 158            }
 159            else
 0160                OnVRMExport?.Invoke();
 0161        }
 162
 163        private void OnDetailsPanelVRMExportButtonClicked()
 164        {
 0165            if (vrmWarningEnabled) return;
 166
 0167            OnVRMExport?.Invoke();
 0168        }
 169
 170        public void SetOutfitsEnabled(bool isEnabled) =>
 0171            outfitButton.gameObject.SetActive(isEnabled);
 172
 173        private void ToggleOutfitSection()
 174        {
 0175            if (outfitSection.activeInHierarchy)
 0176                ToggleNormalSection();
 177            else
 178            {
 0179                outfitSection.SetActive(true);
 0180                normalSection.SetActive(false);
 0181                vrmDetailsSection.SetActive(false);
 0182                outfitButton.image.color = selectedOutfitButtonColor;
 0183                outfitButtonIcon.color = Color.white;
 0184                vrmExportButton.image.color = Color.white;
 0185                OnOutfitsOpened?.Invoke();
 186            }
 0187        }
 188
 189        private void ToggleNormalSection()
 190        {
 18191            normalSection.SetActive(true);
 18192            outfitSection.SetActive(false);
 18193            vrmDetailsSection.SetActive(false);
 18194            outfitButton.image.color = Color.white;
 18195            outfitButtonIcon.color = Color.black;
 18196            vrmExportButton.image.color = Color.white;
 18197        }
 198
 199        private void ToggleVRMDetailsSection()
 200        {
 0201            vrmDetailsSection.SetActive(true);
 0202            outfitSection.SetActive(false);
 0203            normalSection.SetActive(false);
 0204            vrmExportButton.image.color = selectedOutfitButtonColor;
 0205            OnVRMDetailsOpened?.Invoke();
 0206        }
 207
 208        private void Update() =>
 3209            UpdateAvatarModelWhenNeeded();
 210
 211        public override void Dispose()
 212        {
 34213            base.Dispose();
 214
 34215            updateAvatarCts.SafeCancelAndDispose();
 34216            updateAvatarCts = null;
 217
 34218            snapshotsCts.SafeCancelAndDispose();
 34219            snapshotsCts = null;
 220
 34221            sectionSelector.GetSection(AVATAR_SECTION_INDEX).onSelect.RemoveAllListeners();
 34222            sectionSelector.GetSection(EMOTES_SECTION_INDEX).onSelect.RemoveAllListeners();
 34223            emotesCustomizationDataStore.isEmotesCustomizationSelected.OnChange -= OnEmotesCustomizationSelected;
 34224            backpackPreviewPanel.Dispose();
 225
 34226            colorPickerComponentView.OnColorChanged -= OnColorPickerColorChanged;
 34227            colorPickerComponentView.OnColorPickerToggle -= ColorPickerToggle;
 228
 34229            outfitsSectionComponentView.OnBackButtonPressed -= ToggleNormalSection;
 34230            outfitButton.onClick.RemoveAllListeners();
 231
 34232            vrmExportButton.onClick.RemoveAllListeners();
 34233            vrmDetailsComponentView.OnVRMExportButtonPressed -= OnDetailsPanelVRMExportButtonClicked;
 34234            vrmDetailsComponentView.OnBackButtonPressed -= BackFromDetails;
 34235        }
 236
 237        public static BackpackEditorHUDV2ComponentView Create() =>
 17238            Instantiate(Resources.Load<BackpackEditorHUDV2ComponentView>("BackpackEditorHUDV2"));
 239
 240        public override void Show(bool instant = false)
 241        {
 1242            gameObject.SetActive(true);
 1243            backpackPreviewPanel.SetPreviewEnabled(true);
 1244        }
 245
 246        public override void Hide(bool instant = false)
 247        {
 1248            ToggleNormalSection();
 1249            gameObject.SetActive(false);
 1250            backpackPreviewPanel.SetPreviewEnabled(false);
 1251            colorPickerComponentView.SetActive(false);
 1252        }
 253
 0254        public override void RefreshControl() { }
 255
 256        public void SetAsFullScreenMenuMode(Transform parentTransform)
 257        {
 0258            if (parentTransform == null)
 0259                return;
 260
 0261            thisTransform.SetParent(parentTransform);
 0262            thisTransform.localScale = Vector3.one;
 263
 0264            RectTransform rectTransform = thisTransform as RectTransform;
 0265            if (rectTransform == null) return;
 0266            rectTransform.anchorMin = Vector2.zero;
 0267            rectTransform.anchorMax = Vector2.one;
 0268            rectTransform.pivot = new Vector2(0.5f, 0.5f);
 0269            rectTransform.localPosition = Vector2.zero;
 0270            rectTransform.offsetMax = Vector2.zero;
 0271            rectTransform.offsetMin = Vector2.zero;
 0272        }
 273
 274        public void PlayPreviewEmote(string emoteId) =>
 1275            backpackPreviewPanel.PlayPreviewEmote(emoteId);
 276
 277        public void PlayPreviewEmote(string emoteId, long timestamp)
 278        {
 1279            if (avatarModelToUpdate != null)
 0280                avatarModelToUpdate.expressionTriggerTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
 281
 1282            backpackPreviewPanel.PlayPreviewEmote(emoteId, timestamp);
 1283        }
 284
 285        public void UpdateAvatarPreview(AvatarModel avatarModel)
 286        {
 1287            if (avatarModel?.wearables == null)
 0288                return;
 289
 290            // We delay the updating of the avatar 1 frame to disengage from the kernel message flow
 291            // otherwise the cancellation of the updating task throws an exception that is catch by
 292            // kernel setthrew method, which floods the analytics.
 293            // Also it updates just once if its called many times in a row
 1294            isAvatarDirty = true;
 1295            avatarModelToUpdate = avatarModel;
 296
 1297            backpackPreviewPanel.SetLoadingActive(true);
 1298        }
 299
 300        public void SetAvatarPreviewFocus(PreviewCameraFocus focus, bool useTransition = true) =>
 6301            backpackPreviewPanel.SetFocus(focus, useTransition);
 302
 303        public void TakeSnapshotsAfterStopPreviewAnimation(IBackpackEditorHUDView.OnSnapshotsReady onSuccess, Action onF
 304        {
 305            async UniTaskVoid TakeSnapshotsAfterStopPreviewAnimationAsync(CancellationToken ct)
 306            {
 0307                ResetPreviewPanel();
 0308                await UniTask.Delay(MS_TO_RESET_PREVIEW_ANIMATION, cancellationToken: ct);
 309
 0310                backpackPreviewPanel.TakeSnapshots(
 0311                    (face256, body) => onSuccess?.Invoke(face256, body),
 0312                    () => onFailed?.Invoke());
 0313            }
 314
 0315            snapshotsCts = snapshotsCts.SafeRestart();
 0316            TakeSnapshotsAfterStopPreviewAnimationAsync(snapshotsCts.Token).Forget();
 0317        }
 318
 319        public void SetColorPickerVisibility(bool isActive) =>
 2320            colorPickerComponentView.gameObject.SetActive(isActive);
 321
 322        public void SetColorPickerAsSkinMode(bool isSkinMode)
 323        {
 2324            colorPickerComponentView.SetShowOnlyPresetColors(isSkinMode);
 2325            colorPickerComponentView.SetColorList(isSkinMode ? skinColorPresetsSO.colors : colorPresetsSO.colors);
 2326        }
 327
 328        public void UpdateHideUnhideStatus(string slotCategory, HashSet<string> forceRender) =>
 0329            avatarSlotsView.SetHideUnhideStatus(slotCategory, forceRender.Contains(slotCategory));
 330
 331        public void SetColorPickerValue(Color color)
 332        {
 1333            colorPickerComponentView.SetColorSelector(color);
 1334            colorPickerComponentView.UpdateSliderValues(color);
 1335        }
 336
 337        public void ShowContinueSignup() =>
 0338            saveAvatarButton.gameObject.SetActive(true);
 339
 340        public void HideContinueSignup() =>
 0341            saveAvatarButton.gameObject.SetActive(false);
 342
 343        public void SetVRMButtonActive(bool enabled)
 344        {
 0345            vrmExportButton.gameObject.SetActive(enabled);
 0346        }
 347
 348        public void SetVRMButtonEnabled(bool enabled)
 349        {
 0350            vrmExportButton.enabled = enabled;
 0351        }
 352
 353        public void SetVRMSuccessToastActive(bool active)
 354        {
 0355            vrmExportedToast.gameObject.SetActive(active);
 0356        }
 357
 358        public void SetWarningForVRMExportButton(bool enable)
 359        {
 0360            vrmWarningEnabled = enable;
 0361            if (vrmWarningEnabled)
 362            {
 0363                vrmWarningBubble.SetActive(true);
 0364                vrmExportTooltipComponentView.isViewEnabled = true;
 365            }
 366            else
 367            {
 0368                vrmWarningBubble.SetActive(false);
 0369                vrmExportTooltipComponentView.isViewEnabled = false;
 370            }
 0371        }
 372
 373        public void SetSignUpModeActive(bool isActive)
 374        {
 0375            signUpHeader.SetActive(isActive);
 0376            backgroundForSignUp.SetActive(isActive);
 0377            background.SetActive(!isActive);
 0378            wearablesSectionBackground.enabled = !isActive;
 379
 0380            foreach (GameObject go in objectsToDeactivateInSignUpMode)
 0381                go.SetActive(!isActive);
 0382        }
 383
 384        public void SetSignUpStage(SignUpStage stage)
 385        {
 0386            currentStage = stage;
 0387            nextButton.gameObject.SetActive(stage == SignUpStage.CustomizeAvatar);
 0388            signUpHeaderTitle.text = stage == SignUpStage.CustomizeAvatar ? SIGN_UP_HEADER_TITLE_FOR_FISRT_STEP : SIGN_U
 0389            hints.SetActive(stage == SignUpStage.CustomizeAvatar);
 0390            PlayTransitionAnimation(stage);
 0391        }
 392
 393        public void OnPointerDown(PointerEventData eventData)
 394        {
 0395            if (eventData.pointerPressRaycast.gameObject != colorPickerComponentView.gameObject)
 0396                colorPickerComponentView.SetActive(false);
 0397        }
 398
 399        private void ConfigureSectionSelector()
 400        {
 17401            sectionSelector.GetSection(AVATAR_SECTION_INDEX)
 402                           .onSelect.AddListener((isSelected) =>
 403                            {
 3404                                wearablesSection.SetActive(isSelected);
 405
 3406                                if (isSelected)
 1407                                    ResetPreviewPanel();
 3408                            });
 409
 17410            sectionSelector.GetSection(EMOTES_SECTION_INDEX)
 411                           .onSelect.AddListener((isSelected) =>
 412                            {
 3413                                emotesCustomizationDataStore.isEmotesCustomizationSelected.Set(isSelected);
 414
 3415                                emotesSection.SetActive(isSelected);
 416
 3417                                if (isSelected)
 2418                                    ResetPreviewPanel();
 3419                            });
 420
 17421            emotesCustomizationDataStore.isEmotesCustomizationSelected.OnChange += OnEmotesCustomizationSelected;
 17422        }
 423
 424        private void OnEmotesCustomizationSelected(bool current, bool previous)
 425        {
 2426            if (current)
 1427                sectionSelector.GetSection(EMOTES_SECTION_INDEX).SelectToggle();
 2428        }
 429
 430        public void ResetPreviewPanel()
 431        {
 4432            backpackPreviewPanel.ResetPreviewEmote();
 4433            backpackPreviewPanel.ResetPreviewRotation();
 4434            SetAvatarPreviewFocus(PreviewCameraFocus.DefaultEditing, false);
 4435        }
 436
 437        private void UpdateAvatarModelWhenNeeded()
 438        {
 439            async UniTaskVoid UpdateAvatarAsync(CancellationToken ct)
 440            {
 441                try
 442                {
 1443                    await backpackPreviewPanel.TryUpdatePreviewModelAsync(avatarModelToUpdate, ct);
 1444                    backpackPreviewPanel.SetLoadingActive(false);
 1445                    OnAvatarUpdated?.Invoke();
 1446                }
 0447                catch (OperationCanceledException) { Debug.LogWarning("Update avatar preview cancelled"); }
 0448                catch (Exception e) { Debug.LogException(e); }
 1449            }
 450
 3451            if (!isAvatarDirty)
 2452                return;
 453
 1454            updateAvatarCts = updateAvatarCts.SafeRestart();
 1455            UpdateAvatarAsync(updateAvatarCts.Token).Forget();
 1456            isAvatarDirty = false;
 1457        }
 458
 459        private void OnColorPickerColorChanged(Color newColor) =>
 0460            OnColorChanged?.Invoke(newColor);
 461
 462        private void ColorPickerToggle() =>
 0463            OnColorPickerToggle?.Invoke();
 464
 465        private void PlayTransitionAnimation(SignUpStage stage)
 466        {
 0467            Vector2 wearablesBackgroundForSignUpEndPosition = originalAnchorPositionOfWearablesBackgroundForSignUp;
 0468            if (stage == SignUpStage.SetNameAndEmail)
 0469                wearablesBackgroundForSignUpEndPosition.x += transitionDistance;
 0470            wearablesBackgroundForSignUp.DOAnchorPos(wearablesBackgroundForSignUpEndPosition, transitionDuration).SetEas
 0471            wearablesBackgroundForSignUpCanvasGroup.DOFade(stage == SignUpStage.CustomizeAvatar ? 1f : 0f, transitionDur
 0472            wearablesBackgroundForSignUpCanvasGroup.blocksRaycasts = stage == SignUpStage.CustomizeAvatar;
 473
 0474            Vector2 wearablesSectionEndPosition = originalAnchorPositionOfWearablesSection;
 0475            if (stage == SignUpStage.SetNameAndEmail)
 0476                wearablesSectionEndPosition.x += transitionDistance;
 0477            (wearablesSection.transform as RectTransform).DOAnchorPos(wearablesSectionEndPosition, transitionDuration).S
 0478            wearablesSectionCanvasGroup.DOFade(stage == SignUpStage.CustomizeAvatar ? 1f : 0f, transitionDuration).SetEa
 0479            wearablesSectionCanvasGroup.blocksRaycasts = stage == SignUpStage.CustomizeAvatar;
 0480        }
 481    }
 482}

Methods/Properties

BackpackEditorHUDV2ComponentView()
originalVisibleRenderers()
EmotesController()
isVisible()
EmotesSectionTransform()
WearableGridComponentView()
AvatarSlotsView()
BackpackFiltersComponentView()
OutfitsSectionComponentView()
VrmDetailsComponentView()
emotesCustomizationDataStore()
Awake()
Initialize(MainScripts.DCL.Controllers.HUD.CharacterPreview.ICharacterPreviewFactory, MainScripts.DCL.Controllers.HUD.CharacterPreview.IPreviewCameraRotationController, MainScripts.DCL.Controllers.HUD.CharacterPreview.IPreviewCameraPanningController, MainScripts.DCL.Controllers.HUD.CharacterPreview.IPreviewCameraZoomController)
BackFromDetails()
OnVRMExportButtonClicked()
OnDetailsPanelVRMExportButtonClicked()
SetOutfitsEnabled(System.Boolean)
ToggleOutfitSection()
ToggleNormalSection()
ToggleVRMDetailsSection()
Update()
Dispose()
Create()
Show(System.Boolean)
Hide(System.Boolean)
RefreshControl()
SetAsFullScreenMenuMode(UnityEngine.Transform)
PlayPreviewEmote(System.String)
PlayPreviewEmote(System.String, System.Int64)
UpdateAvatarPreview(AvatarModel)
SetAvatarPreviewFocus(MainScripts.DCL.Controllers.HUD.CharacterPreview.PreviewCameraFocus, System.Boolean)
>c__DisplayClass119_0/<<TakeSnapshotsAfterStopPreviewAnimation()
TakeSnapshotsAfterStopPreviewAnimation(DCL.Backpack.IBackpackEditorHUDView/OnSnapshotsReady, System.Action)
SetColorPickerVisibility(System.Boolean)
SetColorPickerAsSkinMode(System.Boolean)
UpdateHideUnhideStatus(System.String, System.Collections.Generic.HashSet[String])
SetColorPickerValue(UnityEngine.Color)
ShowContinueSignup()
HideContinueSignup()
SetVRMButtonActive(System.Boolean)
SetVRMButtonEnabled(System.Boolean)
SetVRMSuccessToastActive(System.Boolean)
SetWarningForVRMExportButton(System.Boolean)
SetSignUpModeActive(System.Boolean)
SetSignUpStage(DCL.Backpack.SignUpStage)
OnPointerDown(UnityEngine.EventSystems.PointerEventData)
ConfigureSectionSelector()
OnEmotesCustomizationSelected(System.Boolean, System.Boolean)
ResetPreviewPanel()
<UpdateAvatarModelWhenNeeded()
UpdateAvatarModelWhenNeeded()
OnColorPickerColorChanged(UnityEngine.Color)
ColorPickerToggle()
PlayTransitionAnimation(DCL.Backpack.SignUpStage)