using Core.Audio; using Fort23.UTool; using Utility.CustomizeTimeLogic.FxLogic.TimeLineEvent; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; #if !COMBAT_SERVER using UnityEngine.EventSystems; using CombatLibrary.CombatLibrary.CombatCore.Utility; using UnityEngine; #endif namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic { public class TimeLineAudioEventLogic : TimeLineEventLogicBasic { private AudioSourcePool audioSourcePool; protected override void ProSetCombatInfo() { } protected override async void ProEnter() { #if !COMBAT_SERVER TimeLineAudioSeralization timeLineAudioSeralization = mTimeLineAssetSerialization as TimeLineAudioSeralization; if (!string.IsNullOrEmpty(timeLineAudioSeralization.audioName)) { ITimeLineAudio iTimeLineSkillStart = TimeLineSingletonEventManager.Instance.GetTimeLine(); if (iTimeLineSkillStart != null) { AudioSourcePool audioSourcePool = await iTimeLineSkillStart.PlayAudio( timeLineAudioSeralization.audioName, timeLineAudioSeralization.isLoop); if (timeLineAudioSeralization.isLoop) { this.audioSourcePool = audioSourcePool; } if (audioSourcePool != null) { audioSourcePool.TimeLineAudioEventLogic = this; } } } #endif } protected override void ProLeave() { } protected override void ProTimeUpdate() { } protected override void ProBreakTimeLine() { if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this) { this.audioSourcePool.Finish(); } } protected override void ProDispose() { if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this) { this.audioSourcePool.Finish(); } } } }