private void OnScenarioEvent(object sender, ScenarioSignalEventArgs e)
        {
            var ev = e.Data;

            var appealType = commonResourceProperties.appealType;

            switch (ev.type)
            {
            case (int)ScenarioDataType.AppealStart: {
                if (appealType == AppealType.None)
                {
                    break;
                }

                var triggerName = CommonAnimationControllerBuilder.GetEnterTriggerNameFromAppealType(appealType);
                _cameraAnimator.SetTrigger(triggerName);
                _cameraAnimator.SetLayerWeight((int)appealType, 1);
                Debug.Log($"Enter appeal: {triggerName}");

                break;
            }

            case (int)ScenarioDataType.AppealEnd: {
                if (appealType == AppealType.None)
                {
                    break;
                }

                var triggerName = CommonAnimationControllerBuilder.GetExitTriggerNameFromAppealType(appealType);
                _cameraAnimator.SetTrigger(triggerName);
                _cameraAnimator.SetLayerWeight((int)appealType, 0);
                Debug.Log($"Exit appeal: {triggerName}");

                break;
            }

            default:
                break;
            }
        }
        private void OnScenarioEvent(object sender, ScenarioSignalEventArgs e)
        {
            var ev = e.Data;

            switch (ev.type)
            {
            case (int)ScenarioDataType.FormationChange: {
                var appealType = commonResourceProperties.appealType;

                if (ev.layer == 0 || ev.layer == (int)appealType)
                {
                    var     formation = ev.formation;
                    Vector4 idolOffset;

                    if (formation.Length < placement.formationNumber)
                    {
                        idolOffset = Vector4.zero;
                    }
                    else
                    {
                        idolOffset = formation[placement.formationNumber - 1];
                    }

                    var t = _modelRoot.transform;

                    var euler = t.localEulerAngles;
                    euler.y            = idolOffset.w;
                    t.localEulerAngles = euler;

                    t.localPosition = new Vector3(idolOffset.x, idolOffset.y, idolOffset.z);
                }

                break;
            }

            case (int)ScenarioDataType.DanceAnimationSeekFrame: {
                if (ev.idol == placement.formationNumber + 10)
                {
                    var seconds = (float)ev.seekFrame / FrameRate.Mltd;
                    _modelAnimator.PlayInFixedTime(CommonAnimationControllerBuilder.SeekFrameTargetName, (int)AppealType.None, seconds);
                }

                break;
            }

            case (int)ScenarioDataType.AppealStart: {
                var appealType = commonResourceProperties.appealType;

                if (appealType == AppealType.None)
                {
                    break;
                }

                var triggerName = CommonAnimationControllerBuilder.GetEnterTriggerNameFromAppealType(appealType);
                _modelAnimator.SetTrigger(triggerName);
                _modelAnimator.SetLayerWeight((int)appealType, 1);

                break;
            }

            case (int)ScenarioDataType.AppealEnd: {
                var appealType = commonResourceProperties.appealType;

                if (appealType == AppealType.None)
                {
                    break;
                }

                var triggerName = CommonAnimationControllerBuilder.GetExitTriggerNameFromAppealType(appealType);
                _modelAnimator.SetTrigger(triggerName);
                _modelAnimator.SetLayerWeight((int)appealType, 0);

                break;
            }

            default:
                break;
            }
        }