using System; using UnityEngine; namespace MoleMole { public class LDEvtFirstSection : BaseLDEvent { private BaseMonoAvatar _localAvatar; public LDEvtFirstSection(string sectionLevelAnim) { LevelActor levelActor = Singleton.Instance.levelActor; if (!levelActor.HasPlugin()) { Singleton.Instance.FireNotify(new Notify(NotifyTypes.DestroyLoadingScene)); Singleton.Instance.GetInLevelUICanvas().FadeInStageTransitPanel(); } if (!string.IsNullOrEmpty(sectionLevelAnim)) { Singleton.Instance.PlayCameraAnimationOnEnv(sectionLevelAnim, false, false, true, CameraAnimationCullingType.CullAvatars); } BaseMonoAvatar localAvatar = Singleton.Instance.GetLocalAvatar(); localAvatar.onAnimatorStateChanged = (Action)Delegate.Combine(localAvatar.onAnimatorStateChanged, new Action(WaitAppearAnimCallback)); _localAvatar = localAvatar; } public override void Core() { if (_localAvatar.IsAnimatorInTag(AvatarData.AvatarTagGroup.AllowTriggerInput) && Singleton.Instance.levelActor.levelState == LevelActor.LevelState.LevelRunning) { BaseMonoAvatar localAvatar = _localAvatar; localAvatar.onAnimatorStateChanged = (Action)Delegate.Remove(localAvatar.onAnimatorStateChanged, new Action(WaitAppearAnimCallback)); Done(); } } private void WaitAppearAnimCallback(AnimatorStateInfo fromState, AnimatorStateInfo toState) { if (fromState.tagHash == AvatarData.AVATAR_APPEAR_TAG) { BaseMonoAvatar localAvatar = Singleton.Instance.GetLocalAvatar(); localAvatar.onAnimatorStateChanged = (Action)Delegate.Remove(localAvatar.onAnimatorStateChanged, new Action(WaitAppearAnimCallback)); Done(); } } } }