void USoundBase::PostInitProperties() { Super::PostInitProperties(); if (USoundBase::DefaultSoundClassObject == nullptr) { const FStringAssetReference DefaultSoundClassName = GetDefault<UAudioSettings>()->DefaultSoundClassName; if (DefaultSoundClassName.IsValid()) { USoundBase::DefaultSoundClassObject = LoadObject<USoundClass>(nullptr, *DefaultSoundClassName.ToString()); } } SoundClassObject = USoundBase::DefaultSoundClassObject; if (USoundBase::DefaultSoundSubmixObject == nullptr) { const FStringAssetReference DefaultSoundSubmixName = GetDefault<UAudioSettings>()->DefaultSoundSubmixName; if (DefaultSoundSubmixName.IsValid()) { USoundBase::DefaultSoundSubmixObject = LoadObject<USoundSubmix>(nullptr, *DefaultSoundSubmixName.ToString()); } } SoundSubmixObject = USoundBase::DefaultSoundSubmixObject; if (USoundBase::DefaultSoundConcurrencyObject == nullptr) { const FStringAssetReference DefaultSoundConcurrencyName = GetDefault<UAudioSettings>()->DefaultSoundConcurrencyName; if (DefaultSoundConcurrencyName.IsValid()) { USoundBase::DefaultSoundConcurrencyObject = LoadObject<USoundConcurrency>(nullptr, *DefaultSoundConcurrencyName.ToString()); } } SoundConcurrencySettings = USoundBase::DefaultSoundConcurrencyObject; }
/** Handles cleaning up an object library if it matches the passed in object */ void UGameplayCueManager::HandleAssetDeleted(UObject *Object) { FStringAssetReference StringRefToRemove; UBlueprint* Blueprint = Cast<UBlueprint>(Object); if (Blueprint && Blueprint->GeneratedClass) { UGameplayCueNotify_Static* StaticCDO = Cast<UGameplayCueNotify_Static>(Blueprint->GeneratedClass->ClassDefaultObject); AGameplayCueNotify_Actor* ActorCDO = Cast<AGameplayCueNotify_Actor>(Blueprint->GeneratedClass->ClassDefaultObject); if (StaticCDO || ActorCDO) { StringRefToRemove.SetPath(Blueprint->GeneratedClass->GetPathName()); } } if (StringRefToRemove.IsValid()) { TArray<FStringAssetReference> StringRefs; StringRefs.Add(StringRefToRemove); check(GlobalCueSet); GlobalCueSet->RemoveCuesByStringRefs(StringRefs); OnGameplayCueNotifyAddOrRemove.Broadcast(); } }
void USoundBase::PostInitProperties() { Super::PostInitProperties(); const FStringAssetReference DefaultSoundClassName = GetDefault<UAudioSettings>()->DefaultSoundClassName; if (DefaultSoundClassName.IsValid()) { SoundClassObject = LoadObject<USoundClass>(NULL, *DefaultSoundClassName.ToString()); } }
UAudioComponent* CreateVoiceAudioComponent(uint32 SampleRate) { UAudioComponent* AudioComponent = nullptr; if (GEngine != nullptr) { if (FAudioDevice* AudioDevice = GEngine->GetMainAudioDevice()) { USoundWaveProcedural* SoundStreaming = NewObject<USoundWaveProcedural>(); SoundStreaming->SampleRate = SampleRate; SoundStreaming->NumChannels = 1; SoundStreaming->Duration = INDEFINITELY_LOOPING_DURATION; SoundStreaming->SoundGroup = SOUNDGROUP_Voice; SoundStreaming->bLooping = false; AudioComponent = AudioDevice->CreateComponent(SoundStreaming, nullptr, nullptr, false); if (AudioComponent) { AudioComponent->bIsUISound = true; AudioComponent->bAllowSpatialization = false; AudioComponent->SetVolumeMultiplier(1.5f); const FStringAssetReference VoiPSoundClassName = GetDefault<UAudioSettings>()->VoiPSoundClass; if (VoiPSoundClassName.IsValid()) { AudioComponent->SoundClassOverride = LoadObject<USoundClass>(nullptr, *VoiPSoundClassName.ToString()); } } else { UE_LOG(LogVoiceDecode, Warning, TEXT("Unable to create voice audio component!")); } } } return AudioComponent; }