NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

audiomanager.py (5470B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\audio2\audiomanager.py
      2 import audio2
      3 INIT_BANK = 'Init.bnk'
      4 
      5 class AudioManager(object):
      6 
      7     def __init__(self, baseSoundbankPath, languageDirectory, applicationName, stereoAudioDeviceName = '', spatialAudioDeviceName = '', spatialAudioEnabled = True):
      8         self.defaultSoundBanks = []
      9         self.manager = audio2.GetOrCreateManager()
     10         self.staticDataRepository = audio2.GetStaticDataRepository()
     11         self.banksWaitingToLoad = set()
     12         self.enabled = False
     13         self.settings = self._CreateAudioSettings(baseSoundbankPath, languageDirectory, applicationName, stereoAudioDeviceName=stereoAudioDeviceName, spatialAudioDeviceName=spatialAudioDeviceName, spatialAudioEnabled=spatialAudioEnabled)
     14         self.manager.UpdateSettings(self.settings)
     15 
     16     def AddAndLoadDefaultSoundBank(self, soundBankName):
     17         if soundBankName not in self.defaultSoundBanks:
     18             self.defaultSoundBanks.append(soundBankName)
     19             self.LoadSoundBank(soundBankName)
     20 
     21     def Disable(self):
     22         self.banksWaitingToLoad = set(self.GetLoadedSoundBanks())
     23         self.manager.Disable()
     24         self.enabled = False
     25 
     26     def DisableSoundPrioritization(self):
     27         self.manager.DisableAudioCulling()
     28 
     29     def DisableSpatialAudio(self):
     30         return self.manager.DisableSpatialAudio()
     31 
     32     def Enable(self, soundBanksToLoad = []):
     33         self.manager.Enable(self.defaultSoundBanks + soundBanksToLoad + list(self.banksWaitingToLoad))
     34         audio2.GetListener()
     35         self.enabled = True
     36         self.banksWaitingToLoad = set()
     37 
     38     def EnableSoundPrioritization(self):
     39         self.manager.EnableAudioCulling()
     40 
     41     def EnableSpatialAudio(self):
     42         return self.manager.EnableSpatialAudio()
     43 
     44     def GetAudioEmitter(self, emitterID):
     45         return self.manager.GetAudioEmitter(emitterID)
     46 
     47     def GetLoadedSoundBanks(self):
     48         return self.manager.GetLoadedSoundBanks()
     49 
     50     def GetSoundPrioritizationEnabled(self):
     51         return self.manager.audioCullingEnabled
     52 
     53     def GetSpatialAudioEnabled(self):
     54         return self.manager.spatialAudioEnabled
     55 
     56     def GetPrioritizedEmitters(self):
     57         return self.manager.GetPrioritizedEmitters()
     58 
     59     def Initialize(self, audioMetadata, defaultSoundBanks = []):
     60         self.defaultSoundBanks = defaultSoundBanks
     61         self.staticDataRepository.Initialize(audioMetadata)
     62 
     63     def LoadSoundBank(self, bankName):
     64         if not self.enabled:
     65             self.banksWaitingToLoad.add(bankName)
     66         else:
     67             self.manager.LoadBank(bankName)
     68 
     69     def LoadSoundBanks(self, banksToLoad):
     70         for bank in banksToLoad:
     71             self.LoadSoundBank(bank)
     72 
     73     def RegisterAudioDeviceChangeCallback(self, callback):
     74         self.manager.RegisterAudioDeviceChangeCallback(callback)
     75 
     76     def ReloadSoundBanks(self):
     77         banksBeforeReload = self.manager.GetLoadedSoundBanks()
     78         self.Disable()
     79         self.Enable(soundBanksToLoad=banksBeforeReload)
     80 
     81     def RemoveAndUnloadDefaultSoundBank(self, soundBankName):
     82         if soundBankName in self.defaultSoundBanks:
     83             self.defaultSoundBanks.remove(soundBankName)
     84             self.UnloadSoundBank(soundBankName)
     85 
     86     def SetGlobalRTPC(self, rtpcName, value):
     87         return self.manager.SetGlobalRTPC(rtpcName, value)
     88 
     89     def SetState(self, stateGroup, stateName):
     90         return self.manager.SetState(stateGroup, stateName)
     91 
     92     def SpatialAudioIsSupported(self):
     93         return self.manager.SpatialAudioIsSupported()
     94 
     95     def StopAllPlayingSounds(self):
     96         self.manager.StopAll()
     97 
     98     def SwapSoundBanks(self, banksToLoad):
     99         if self.enabled:
    100             loadedBanks = set(self.GetLoadedSoundBanks())
    101         else:
    102             loadedBanks = self.banksWaitingToLoad
    103         excludedBanks = set(self.defaultSoundBanks).union(set(banksToLoad))
    104         banksToUnload = loadedBanks.difference(excludedBanks)
    105         banksToLoad = set(banksToLoad).difference(loadedBanks)
    106         self.LoadSoundBanks(banksToLoad)
    107         self.UnloadSoundBanks(banksToUnload)
    108 
    109     def UnloadSoundBanks(self, soundBanksToUnload):
    110         for soundBank in soundBanksToUnload:
    111             self.UnloadSoundBank(soundBank)
    112 
    113     def UnloadSoundBank(self, bankName):
    114         if bankName not in self.defaultSoundBanks and bankName != INIT_BANK:
    115             if not self.enabled:
    116                 if bankName in self.banksWaitingToLoad:
    117                     self.banksWaitingToLoad.remove(bankName)
    118             self.manager.UnloadBank(bankName)
    119 
    120     def StartProfilerCapture(self):
    121         return self.manager.StartProfilerCapture()
    122 
    123     def StopProfilerCapture(self):
    124         return self.manager.StopProfilerCapture()
    125 
    126     def IsProfilerCapturing(self):
    127         return self.manager.IsProfilerCapturing()
    128 
    129     def _CreateAudioSettings(self, baseSoundbankPath, language, applicationName, stereoAudioDeviceName = '', spatialAudioDeviceName = '', spatialAudioEnabled = True):
    130         settings = audio2.AudSettings()
    131         settings.applicationName = applicationName
    132         settings.baseSoundbankPath = baseSoundbankPath
    133         settings.soundbankLanguage = language
    134         settings.spatialAudioEnabled = spatialAudioEnabled
    135         if stereoAudioDeviceName:
    136             settings.stereoAudioDeviceName = stereoAudioDeviceName
    137         if spatialAudioDeviceName:
    138             settings.spatialAudioDeviceName = spatialAudioDeviceName
    139         return settings