RealtimeStyleTransferRuntime/Plugins/PocketWorlds/Source/Public/PocketLevelInstance.h

64 lines
1.3 KiB
C
Raw Normal View History

2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "PocketLevelInstance.generated.h"
class UPocketLevel;
class ULocalPlayer;
class ULevelStreamingDynamic;
class UPocketLevelInstance;
DECLARE_MULTICAST_DELEGATE_OneParam(FPocketLevelInstanceEvent, UPocketLevelInstance*);
/**
*
*/
UCLASS(Within = PocketLevelSubsystem, BlueprintType)
class POCKETWORLDS_API UPocketLevelInstance : public UObject
{
GENERATED_BODY()
public:
UPocketLevelInstance();
virtual void BeginDestroy() override;
void StreamIn();
void StreamOut();
FDelegateHandle AddReadyCallback(FPocketLevelInstanceEvent::FDelegate Callback);
void RemoveReadyCallback(FDelegateHandle CallbackToRemove);
virtual class UWorld* GetWorld() const override { return World; }
private:
bool Initialize(ULocalPlayer* LocalPlayer, UPocketLevel* PocketLevel, FVector SpawnPoint);
UFUNCTION()
void HandlePocketLevelLoaded();
UFUNCTION()
void HandlePocketLevelShown();
private:
UPROPERTY()
ULocalPlayer* LocalPlayer;
UPROPERTY()
UPocketLevel* PocketLevel;
UPROPERTY()
UWorld* World;
UPROPERTY()
ULevelStreamingDynamic* StreamingPocketLevel;
FPocketLevelInstanceEvent OnReadyEvent;
FBoxSphereBounds Bounds;
friend class UPocketLevelSubsystem;
};