public void ResizeAvatar(SpawnedAvatar avatar)
        {
            if (!avatar.customAvatar.descriptor.allowHeightCalibration)
            {
                return;
            }

            // compute scale
            float            scale;
            AvatarResizeMode resizeMode = SettingsManager.settings.resizeMode;

            switch (resizeMode)
            {
            case AvatarResizeMode.ArmSpan:
                float playerArmLength = SettingsManager.settings.playerArmSpan;
                var   avatarArmLength = avatar.customAvatar.GetArmSpan();

                scale = playerArmLength / avatarArmLength;
                break;

            case AvatarResizeMode.Height:
                scale = BeatSaberUtil.GetPlayerEyeHeight() / avatar.customAvatar.eyeHeight;
                break;

            default:
                scale = 1.0f;
                break;
            }

            // apply scale
            avatar.behaviour.scale = scale;

            SharedCoroutineStarter.instance.StartCoroutine(FloorMendingWithDelay(avatar));
        }
Exemplo n.º 2
0
        private void ResizeCurrentAvatar()
        {
            if (!currentlySpawnedAvatar || !currentlySpawnedAvatar.avatar.descriptor.allowHeightCalibration)
            {
                return;
            }

            float            scale;
            AvatarResizeMode resizeMode = _settings.resizeMode;

            switch (resizeMode)
            {
            case AvatarResizeMode.ArmSpan:
                float avatarArmLength = currentlySpawnedAvatar.avatar.armSpan;

                if (avatarArmLength > 0)
                {
                    scale = _settings.playerArmSpan / avatarArmLength;
                }
                else
                {
                    scale = 1.0f;
                }

                break;

            case AvatarResizeMode.Height:
                float avatarEyeHeight = currentlySpawnedAvatar.avatar.eyeHeight;
                float playerEyeHeight = _beatSaberUtilities.GetRoomAdjustedPlayerEyeHeight();

                if (avatarEyeHeight > 0)
                {
                    scale = playerEyeHeight / avatarEyeHeight;
                }
                else
                {
                    scale = 1.0f;
                }

                break;

            default:
                scale = 1.0f;
                break;
            }

            if (scale <= 0)
            {
                _logger.Warning("Calculated scale is <= 0; reverting to 1");
                scale = 1.0f;
            }

            currentlySpawnedAvatar.scale = scale;

            UpdateFloorOffsetForCurrentAvatar();

            avatarScaleChanged?.Invoke(scale);
        }
Exemplo n.º 3
0
        public void ResizeAvatar(SpawnedAvatar avatar)
        {
            if (!avatar.customAvatar.descriptor.allowHeightCalibration || !avatar.customAvatar.isIKAvatar)
            {
                return;
            }

            // compute scale
            float            scale;
            AvatarResizeMode resizeMode = SettingsManager.settings.resizeMode;

            switch (resizeMode)
            {
            case AvatarResizeMode.ArmSpan:
                float avatarArmLength = avatar.customAvatar.GetArmSpan();

                if (avatarArmLength > 0)
                {
                    scale = SettingsManager.settings.playerArmSpan / avatarArmLength;
                }
                else
                {
                    scale = 1.0f;
                }

                break;

            case AvatarResizeMode.Height:
                float avatarEyeHeight = avatar.customAvatar.eyeHeight;

                if (avatarEyeHeight > 0)
                {
                    scale = BeatSaberUtil.GetPlayerEyeHeight() / avatarEyeHeight;
                }
                else
                {
                    scale = 1.0f;
                }

                break;

            default:
                scale = 1.0f;
                break;
            }

            if (scale <= 0)
            {
                Plugin.logger.Warn("Calculated scale is <= 0; reverting to 1");
                scale = 1.0f;
            }

            // apply scale
            avatar.tracking.scale = scale;

            SharedCoroutineStarter.instance.StartCoroutine(FloorMendingWithDelay(avatar));
        }
Exemplo n.º 4
0
        public void ResizeAvatar(SpawnedAvatar spawnedAvatar)
        {
            if (!spawnedAvatar.avatar.descriptor.allowHeightCalibration || !spawnedAvatar.avatar.isIKAvatar)
            {
                return;
            }

            // compute scale
            float            scale;
            AvatarResizeMode resizeMode = _settings.resizeMode;

            switch (resizeMode)
            {
            case AvatarResizeMode.ArmSpan:
                float avatarArmLength = spawnedAvatar.avatar.armSpan;

                if (avatarArmLength > 0)
                {
                    scale = _settings.playerArmSpan / avatarArmLength;
                }
                else
                {
                    scale = 1.0f;
                }

                break;

            case AvatarResizeMode.Height:
                float avatarEyeHeight = spawnedAvatar.avatar.eyeHeight;

                if (avatarEyeHeight > 0)
                {
                    scale = _playerEyeHeight / avatarEyeHeight;
                }
                else
                {
                    scale = 1.0f;
                }

                break;

            default:
                scale = 1.0f;
                break;
            }

            if (scale <= 0)
            {
                _logger.Warning("Calculated scale is <= 0; reverting to 1");
                scale = 1.0f;
            }

            // apply scale
            spawnedAvatar.scale = scale;

            SharedCoroutineStarter.instance.StartCoroutine(FloorMendingWithDelay(spawnedAvatar));
        }
        protected override void DidActivate(bool firstActivation, ActivationType type)
        {
            visibleInFirstPerson             = SettingsManager.settings.isAvatarVisibleInFirstPerson;
            resizeMode                       = SettingsManager.settings.resizeMode;
            floorHeightAdjust                = SettingsManager.settings.enableFloorAdjust;
            calibrateFullBodyTrackingOnStart = SettingsManager.settings.calibrateFullBodyTrackingOnStart;

            base.DidActivate(firstActivation, type);

            armSpanLabel.SetText($"{SettingsManager.settings.playerArmSpan:0.00} m");
        }
Exemplo n.º 6
0
 private void OnResizeModeChanged(AvatarResizeMode value)
 {
     _settings.resizeMode = value;
     _avatarManager.ResizeCurrentAvatar();
 }
 private void OnSettingsResizeModeChanged(AvatarResizeMode resizeMode)
 {
     _heightAdjustWarningText.gameObject.SetActive(resizeMode != AvatarResizeMode.None && _playerDataModel.playerData.playerSpecificSettings.automaticPlayerHeight);
 }
 private void OnResizeModeChanged(AvatarResizeMode value)
 {
     SettingsManager.settings.resizeMode = value;
     AvatarManager.instance.ResizeCurrentAvatar();
 }
Exemplo n.º 9
0
 private void OnResizeModeChanged(AvatarResizeMode resizeMode)
 {
     ResizeCurrentAvatar();
 }
Exemplo n.º 10
0
 private void OnResizeModeChanged(AvatarResizeMode value)
 {
     _settings.resizeMode.value = value;
 }