Files
integration/Source/Integration/TangibleManager.h

71 lines
1.5 KiB
C
Raw Normal View History

2023-09-02 01:33:11 -04:00
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "CommonTypes.h"
2023-09-15 00:01:41 -04:00
#include "Tangible.h"
2023-09-02 01:33:11 -04:00
#include "TangibleManager.generated.h"
2023-09-25 14:25:24 -04:00
UCLASS()
class INTEGRATION_API UTangibleManager : public UObject
2023-09-02 01:33:11 -04:00
{
GENERATED_BODY()
2023-09-25 14:25:24 -04:00
public:
// Import these types into our Namespace.
using IdArray = CommonTypes::IdArray;
using IdView = CommonTypes::IdView;
2023-09-02 01:33:11 -04:00
// A pointer to the UWorld.
UWorld* World;
2023-09-02 01:33:11 -04:00
// A pointer to uclass TangibleActor.
UPROPERTY()
TSubclassOf<AActor> ClassTangibleActor;
2023-09-02 01:33:11 -04:00
// Given a tangible ID, look up actor pointer (or NULL if actor was deleted)
UPROPERTY()
2023-09-15 13:28:18 -04:00
TMap<int64, UlxTangible*> IdToTangible;
// Actor tangible Id.
int64 Actor;
// Tangibles near the actor.
IdView Near;
2023-09-02 01:33:11 -04:00
public:
2023-09-25 14:25:24 -04:00
UTangibleManager();
// Initialize the tangible manager.
//
void Init(UWorld *world, UClass* tanact);
2023-09-02 01:33:11 -04:00
// Get the tangible if it exists, otherwise return NULL
2023-09-15 13:28:18 -04:00
UlxTangible* GetTangible(int64 id);
2023-09-02 01:33:11 -04:00
// Get the tangible if it exists, otherwise create it.
2023-09-15 13:28:18 -04:00
UlxTangible* MakeTangible(int64 id);
2023-09-02 01:33:11 -04:00
// 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();
2023-09-02 01:33:11 -04:00
};