@ -0,0 +1,49 @@
|
||||
#include "CSAsyncActionBase.h"
|
||||
#include "UnrealSharpAsync.h"
|
||||
|
||||
void UCSAsyncActionBase::Destroy()
|
||||
{
|
||||
if (UGameInstance* GameInstance = GetWorld()->GetGameInstance())
|
||||
{
|
||||
GameInstance->UnregisterReferencedObject(this);
|
||||
}
|
||||
|
||||
ManagedCallback.Dispose();
|
||||
MarkAsGarbage();
|
||||
}
|
||||
|
||||
void UCSAsyncActionBase::InvokeManagedCallback(bool bDispose)
|
||||
{
|
||||
InvokeManagedCallback(this, bDispose);
|
||||
}
|
||||
|
||||
void UCSAsyncActionBase::InvokeManagedCallback(UObject* WorldContextObject, bool bDispose)
|
||||
{
|
||||
ManagedCallback.Invoke(WorldContextObject, bDispose);
|
||||
|
||||
if (bDispose)
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
void UCSAsyncActionBase::InitializeManagedCallback(FGCHandleIntPtr Callback)
|
||||
{
|
||||
ManagedCallback = FGCHandle(Callback, GCHandleType::WeakHandle);
|
||||
|
||||
if (UGameInstance* GameInstance = GetWorld()->GetGameInstance())
|
||||
{
|
||||
GameInstance->RegisterReferencedObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
void UUCSAsyncBaseExporter::InitializeAsyncObject(UCSAsyncActionBase* AsyncAction, FGCHandleIntPtr Callback)
|
||||
{
|
||||
if (!IsValid(AsyncAction))
|
||||
{
|
||||
UE_LOG(LogUnrealSharpAsync, Warning, TEXT("UUCSAsyncBaseExporter::InitializeAsyncObject: AsyncAction is null"));
|
||||
return;
|
||||
}
|
||||
|
||||
AsyncAction->InitializeManagedCallback(Callback);
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
#include "CSAsyncLoadPrimaryDataAssets.h"
|
||||
#include "Engine/AssetManager.h"
|
||||
|
||||
void UCSAsyncLoadPrimaryDataAssets::LoadPrimaryDataAssets(const TArray<FPrimaryAssetId>& AssetIds, const TArray<FName>& AssetBundles)
|
||||
{
|
||||
UAssetManager& AssetManager = UAssetManager::Get();
|
||||
AssetManager.LoadPrimaryAssets(AssetIds, AssetBundles, FStreamableDelegate::CreateUObject(this, &UCSAsyncLoadPrimaryDataAssets::OnPrimaryDataAssetsLoaded));
|
||||
}
|
||||
|
||||
void UCSAsyncLoadPrimaryDataAssets::OnPrimaryDataAssetsLoaded()
|
||||
{
|
||||
InvokeManagedCallback();
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
#include "CSAsyncLoadSoftObjectPtr.h"
|
||||
#include "Engine/AssetManager.h"
|
||||
#include "Engine/StreamableManager.h"
|
||||
|
||||
void UCSAsyncLoadSoftPtr::LoadSoftObjectPaths(const TArray<FSoftObjectPath>& SoftObjectPtr)
|
||||
{
|
||||
UAssetManager::Get().GetStreamableManager().RequestAsyncLoad(SoftObjectPtr,
|
||||
FStreamableDelegate::CreateUObject(this, &UCSAsyncLoadSoftPtr::OnAsyncLoadComplete));
|
||||
}
|
||||
|
||||
void UCSAsyncLoadSoftPtr::OnAsyncLoadComplete()
|
||||
{
|
||||
InvokeManagedCallback();
|
||||
}
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
#include "UnrealSharpAsync.h"
|
||||
|
||||
#define LOCTEXT_NAMESPACE "FUnrealSharpAsyncModule"
|
||||
|
||||
DEFINE_LOG_CATEGORY(LogUnrealSharpAsync);
|
||||
|
||||
void FUnrealSharpAsyncModule::StartupModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void FUnrealSharpAsyncModule::ShutdownModule()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#undef LOCTEXT_NAMESPACE
|
||||
|
||||
IMPLEMENT_MODULE(FUnrealSharpAsyncModule, UnrealSharpAsync)
|
||||
Reference in New Issue
Block a user