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; } }
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; } }
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; } }