UInstancedStaticMeshComponent &ACityMapMeshHolder::GetInstantiator(ECityMapMeshTag Tag) { UInstancedStaticMeshComponent *instantiator = MeshInstatiators[CityMapMeshTag::ToUInt(Tag)]; if (instantiator == nullptr) { // Create and register an instantiator. instantiator = NewObject<UInstancedStaticMeshComponent>(this); instantiator->SetMobility(EComponentMobility::Static); instantiator->SetCollisionObjectType(ECollisionChannel::ECC_WorldStatic); instantiator->SetupAttachment(SceneRootComponent); instantiator->SetStaticMesh(GetStaticMesh(Tag)); MeshInstatiators[CityMapMeshTag::ToUInt(Tag)] = instantiator; instantiator->RegisterComponent(); } check(instantiator != nullptr); return *instantiator; }