Exemple #1
0
        private void OnAudioManagerApplyMusicCue(On.AudioManager.orig_ApplyMusicCue orig, AudioManager self,
                                                 MusicCue musicCue, float delayTime, float transitionTime, bool applySnapshot)
        {
            var changed        = false;
            var infosFieldInfo = musicCue.GetType()
                                 .GetField("channelInfos", BindingFlags.NonPublic | BindingFlags.Instance);
            var infos = (MusicCue.MusicChannelInfo[])infosFieldInfo.GetValue(musicCue);

            foreach (var info in infos)
            {
                var audioFieldInfo = info.GetType().GetField("clip", BindingFlags.NonPublic | BindingFlags.Instance);
                var origAudio      = (AudioClip)audioFieldInfo.GetValue(info);

                if (origAudio != null)
                {
                    var possibleReplace = GetAudioClip(origAudio.name);
                    if (possibleReplace != null)
                    {
                        // Change Audio Clip
                        audioFieldInfo.SetValue(info, possibleReplace);
                        changed = true;
                    }
                }
            }

            if (changed)
            {
                infosFieldInfo.SetValue(musicCue, infos);
            }

            orig(self, musicCue, delayTime, transitionTime, applySnapshot);
        }
Exemple #2
0
 static void AudioManager_ApplyMusicCue(On.AudioManager.orig_ApplyMusicCue orig, AudioManager self, MusicCue musicCue, float delayTime, float transitionTime, bool applySnapshot)
 {
     orig(self, musicCue, delayTime, transitionTime, applySnapshot);
 }