// Fill out your copyright notice in the Description page of Project Settings. #include "TangibleManager.h" #include "Tangible.h" #include "DebugPrint.h" using namespace DebugPrint; UlxTangibleManager::UlxTangibleManager() { World = nullptr; ClassTangibleActor = nullptr; Player = 0; Near = IdView(); } void UlxTangibleManager::Init(UWorld* world, UClass* tanact) { World = world; ClassTangibleActor = tanact; Player = 0; Near = IdView(); } UlxTangible* UlxTangibleManager::GetTangible(int64 id) { UlxTangible** p = IdToTangible.Find(id); if (p == nullptr) { return nullptr; } else { return *p; } } UlxTangible* UlxTangibleManager::MakeTangible(int64 id) { UlxTangible*& t = IdToTangible.FindOrAdd(id); if (t == nullptr) { t = NewObject(); t->Init(this, id); // TODO: fix this. The blueprint needs to be assigned // during animation queue parsing, based on the animation // queue keyword 'bp'. t->SetActorBlueprintClass(ClassTangibleActor); } return t; } void UlxTangibleManager::DeleteTangible(int64 id) { // IMPLEMENT ME } UlxTangibleManager::IdArray UlxTangibleManager::GetLive() { IdArray result; result.SetNum(IdToTangible.Num()); int next = 0; for (auto& pair : IdToTangible) { result[next++] = pair.Key; } return result; }