// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "CommonTypes.h" #include "Tangible.h" #include "TangibleManager.generated.h" USTRUCT() struct INTEGRATION_API FTangibleManager { GENERATED_BODY() public: // Import these types into our Namespace. using IdArray = CommonTypes::IdArray; using IdView = CommonTypes::IdView; // A pointer to the UWorld. UWorld* World; // A pointer to uclass TangibleActor. UPROPERTY() TSubclassOf ClassTangibleActor; // Given a tangible ID, look up actor pointer (or NULL if actor was deleted) UPROPERTY() TMap IdToTangible; // Actor tangible Id. int64 Actor; // Tangibles near the actor. IdView Near; public: FTangibleManager(); // Initialize the tangible manager. // void Init(UWorld *world, UClass* tanact); // Get the tangible if it exists, otherwise return NULL UTangible* GetTangible(int64 id); // Get the tangible if it exists, otherwise create it. UTangible* MakeTangible(int64 id); // Delete the tangible. void DeleteTangible(int64 id); // Get/Set the Id of the actor. // int64 GetActor() const { return Actor; }; void SetActor(int64 id) { Actor = id; } // Get/Set the list of tangibles near the player, according to Luprex. // IdView GetNear() const { return Near; } void SetNear(IdView near) { Near = near; } // Get the Live list. // // Efficiency note: this makes a copy of the array. // IdArray GetLive(); };