UPaperTileLayer* UPaperTileMap::AddNewLayer(int32 InsertionIndex) { // Create the new layer UPaperTileLayer* NewLayer = NewObject<UPaperTileLayer>(this); NewLayer->SetFlags(RF_Transactional); NewLayer->DestructiveAllocateMap(MapWidth, MapHeight); NewLayer->LayerName = GenerateNewLayerName(this); // Insert the new layer if (TileLayers.IsValidIndex(InsertionIndex)) { TileLayers.Insert(NewLayer, InsertionIndex); } else { TileLayers.Add(NewLayer); } return NewLayer; }
UPaperTileLayer* FPaperTileMapDetailsCustomization::AddLayer(bool bCollisionLayer) { UPaperTileLayer* NewLayer = NULL; if (UPaperTileMap* TileMap = TileMapPtr.Get()) { const FScopedTransaction Transaction( LOCTEXT("TileMapAddLayer", "Add New Layer") ); TileMap->SetFlags(RF_Transactional); TileMap->Modify(); NewLayer = NewObject<UPaperTileLayer>(TileMap); NewLayer->SetFlags(RF_Transactional); NewLayer->LayerWidth = TileMap->MapWidth; NewLayer->LayerHeight = TileMap->MapHeight; NewLayer->DestructiveAllocateMap(NewLayer->LayerWidth, NewLayer->LayerHeight); NewLayer->LayerName = LOCTEXT("DefaultNewLayerName", "New Layer"); NewLayer->bCollisionLayer = bCollisionLayer; TileMap->TileLayers.Add(NewLayer); } return NewLayer; }