void AWorldSettings::PostRegisterAllComponents()
{
	Super::PostRegisterAllComponents();

	UWorld* World = GetWorld();
	if (FAudioDevice* AudioDevice = World->GetAudioDevice())
	{
		AudioDevice->SetDefaultAudioSettings(World, DefaultReverbSettings, DefaultAmbientZoneSettings);
	}
}
void APlayerCameraManager::StopAudioFade()
{
	if (GEngine)
	{
		UWorld* World = GetWorld();
		if (World)
		{
			if (FAudioDevice* AudioDevice = World->GetAudioDevice())
			{
				AudioDevice->TransientMasterVolume = 1.0f;
			}
		}
	}
}
void APlayerCameraManager::ApplyAudioFade()
{
	if (GEngine)
	{
		UWorld* World = GetWorld();
		if (World)
		{
			if (FAudioDevice* AudioDevice = World->GetAudioDevice())
			{
				AudioDevice->SetTransientMasterVolume(1.0f - FadeAmount);
			}
		}
	}
}
void AWorldSettings::PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChangedEvent)
{
	Super::PostEditChangeChainProperty(PropertyChangedEvent);

	const FName MemberPropertyName = PropertyChangedEvent.PropertyChain.GetActiveMemberNode()->GetValue()->GetFName();

	if (MemberPropertyName == GET_MEMBER_NAME_CHECKED(AWorldSettings, DefaultReverbSettings) || MemberPropertyName == GET_MEMBER_NAME_CHECKED(AWorldSettings, DefaultAmbientZoneSettings))
	{
		UWorld* World = GetWorld();
		if (FAudioDevice* AudioDevice = World->GetAudioDevice())
		{
			AudioDevice->SetDefaultAudioSettings(World, DefaultReverbSettings, DefaultAmbientZoneSettings);
		}
	}
}
void AAudioVolume::UpdateProxy() const
{
	UWorld* World = GetWorld();

	if (FAudioDevice* AudioDevice = World->GetAudioDevice())
	{
		DECLARE_CYCLE_STAT(TEXT("FAudioThreadTask.UpdateAudioVolumeProxy"), STAT_AudioUpdateAudioVolumeProxy, STATGROUP_TaskGraphTasks);

		FAudioVolumeProxy Proxy(this);

		FAudioThread::RunCommandOnAudioThread([AudioDevice, Proxy]()
		{
			AudioDevice->UpdateAudioVolumeProxy(Proxy);
		}, GET_STATID(STAT_AudioUpdateAudioVolumeProxy));
	}
}
void AAudioVolume::RemoveProxy() const
{
	// World will be NULL during exit purge.
	UWorld* World = GetWorld();
	if (World)
	{
		if (FAudioDevice* AudioDevice = World->GetAudioDevice())
		{
			DECLARE_CYCLE_STAT(TEXT("FAudioThreadTask.RemoveAudioVolumeProxy"), STAT_AudioRemoveAudioVolumeProxy, STATGROUP_TaskGraphTasks);

			const uint32 AudioVolumeID = GetUniqueID();
			FAudioThread::RunCommandOnAudioThread([AudioDevice, AudioVolumeID]()
			{
				AudioDevice->RemoveAudioVolumeProxy(AudioVolumeID);
			}, GET_STATID(STAT_AudioRemoveAudioVolumeProxy));
		}
	}
}
Example #7
0
FAudioDevice* UAudioComponent::GetAudioDevice() const
{
	FAudioDevice* AudioDevice = nullptr;

	if (GEngine)
	{
		UWorld* World = GetWorld();
		if (World)
		{
			AudioDevice = World->GetAudioDevice();
		}
		else
		{
			AudioDevice = GEngine->GetMainAudioDevice();
		}
	}
	return AudioDevice;
}
void FJavascriptInGameScene::Destroy()
{
	if (bDestroyed) return;

	// Stop any audio components playing in this scene
	if (GEngine)
	{
		UWorld* World = GetWorld();
		if (World)
		{
			if (FAudioDevice* AudioDevice = World->GetAudioDevice())
			{
				AudioDevice->Flush(GetWorld(), false);
			}
		}
	}

	// Remove all the attached components
	for (int32 ComponentIndex = 0; ComponentIndex < Components.Num(); ComponentIndex++)
	{
		UActorComponent* Component = Components[ComponentIndex];

		if (bForceAllUsedMipsResident)
		{
			// Remove the mip streaming override on the mesh to be removed
			UMeshComponent* pMesh = Cast<UMeshComponent>(Component);
			if (pMesh != NULL)
			{
				pMesh->SetTextureForceResidentFlag(false);
			}
		}

		Component->UnregisterComponent();
	}

	if (GEngine) 
	{
		PreviewWorld->CleanupWorld();
		GEngine->DestroyWorldContext(GetWorld());
	}
	bDestroyed = true;
}