refactor: 重构 Transition 查询逻辑,移除 PathId 改用 ContainerId 匹配

This commit is contained in:
2026-04-28 15:30:01 +08:00
parent 2fa3fa49d7
commit 8ea862b546
13 changed files with 204 additions and 78 deletions
@@ -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);
}
}
}