refactor: 重构 Transition 查询逻辑,移除 PathId 改用 ContainerId 匹配
This commit is contained in:
@@ -18,9 +18,7 @@ namespace OCES.Audio
|
||||
internal event Action<uint> OnBar;
|
||||
internal event Action<uint> OnGrid;
|
||||
|
||||
// 记录上一次两个通道各自匹配到的 PathId,用于查 Transition 表
|
||||
uint m_lastMusicPathId;
|
||||
uint m_lastAmbiencePathId;
|
||||
|
||||
|
||||
internal IReadOnlyDictionary<Type, Enum> ActiveStates
|
||||
{
|
||||
@@ -37,12 +35,12 @@ namespace OCES.Audio
|
||||
AudioSourcePool musicPool,
|
||||
AudioSourcePool ambiencePool)
|
||||
{
|
||||
MusicContainerPlayer musicContainerPlayer = new(containers, segments, musicPool, this);
|
||||
MusicContainerPlayer ambientContainerPlayer = new(containers, segments, ambiencePool, this);
|
||||
LongAudioContainerPlayer longAudioContainerPlayer = new(containers, segments, musicPool, this);
|
||||
LongAudioContainerPlayer ambientContainerPlayer = new(containers, segments, ambiencePool, this);
|
||||
|
||||
this.m_stateRouter = new MusicStateRouter(musicPaths, ambiencePaths);
|
||||
this.m_musicChannel = new MusicChannelPlayer(
|
||||
containers, musicTransitions, musicContainerPlayer, this,
|
||||
containers, musicTransitions, longAudioContainerPlayer, this,
|
||||
id => OnBeat?.Invoke(id),
|
||||
id => OnBar?.Invoke(id),
|
||||
id => OnGrid?.Invoke(id));
|
||||
@@ -61,14 +59,8 @@ namespace OCES.Audio
|
||||
out uint musicContainerId,
|
||||
out uint ambienceContainerId);
|
||||
|
||||
uint newMusicPathId = this.m_stateRouter.LastMusicPathId;
|
||||
uint newAmbiencePathId = this.m_stateRouter.LastAmbiencePathId;
|
||||
|
||||
this.m_musicChannel.SwitchTo(musicContainerId, this.m_lastMusicPathId, newMusicPathId);
|
||||
this.m_ambienceChannel.SwitchTo(ambienceContainerId, this.m_lastAmbiencePathId, newAmbiencePathId);
|
||||
|
||||
this.m_lastMusicPathId = newMusicPathId;
|
||||
this.m_lastAmbiencePathId = newAmbiencePathId;
|
||||
this.m_musicChannel.SwitchTo(musicContainerId);
|
||||
this.m_ambienceChannel.SwitchTo(ambienceContainerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user