コード例 #1
0
        private void OnSignal(object sender, ScenarioSignalEventArgs e)
        {
            var ev = e.Data;

            if (ev.type == (int)ScenarioDataType.CameraOverride)
            {
                Debug.Assert(ev.camCut >= 0);

                if (ev.param == 0)
                {
                    _overrideType = OverrideType.FaceCloseUp;
                }
                else if (ev.param == 1)
                {
                    _overrideType = OverrideType.UpperBodyCloseUp;
                }
                else if (ev.param == 2)
                {
                    _overrideType = OverrideType.Unknown1;
                }
                else
                {
                    _overrideType = OverrideType.None;
                }

                _currentEvent = ev;
            }
        }
コード例 #2
0
        private void OnScenarioEventEmitted(object sender, [NotNull] ScenarioSignalEventArgs e)
        {
            var ev = e.Data;

            _currentTick = ev.tick;

            switch (ev.type)
            {
            case (int)ScenarioDataType.SingControl: {
                if (ev.mute.Length >= placement.formationNumber)
                {
                    _isSinging = ev.mute[placement.formationNumber - 1];
                }

                break;
            }

            case (int)ScenarioDataType.LipSync: {
                if (_isSinging)
                {
                    var lipCode = (LipCode)ev.param;

                    if (lipCode.IsVoice())
                    {
                        _prevLipDeform    = _currLipDeform;
                        _currLipDeform    = LipDeform.FromLipCode(lipCode);
                        _lipSyncStartTime = playerControl.relativeTime;
                    }
                }

                break;
            }

            case (int)ScenarioDataType.FacialExpression: {
                if (ev.idol == placement.formationNumber - 1)
                {
                    ProcessFacialExpression(ev);
                }

                break;
            }

            default:
                break;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
            }
        }