void FLevelModel::UpdateDisplayName() { if (IsPersistent()) { DisplayName = LOCTEXT("PersistentTag", "Persistent Level").ToString(); } else { DisplayName = GetLongPackageName().ToString(); if (!LevelCollectionModel.GetDisplayPathsState()) { DisplayName = FPackageName::GetShortName(DisplayName); } } if (HasValidPackage()) { // Append actors count if (LevelCollectionModel.GetDisplayActorsCountState() && IsLoaded()) { DisplayName += TEXT(" ("); DisplayName.AppendInt(LevelActorsCount); DisplayName += TEXT(")"); } } else { DisplayName+= LOCTEXT("MissingLevelErrorText", " [Missing Level] ").ToString(); } }
void FLevelModel::OnAssetRenamed(const FAssetData& AssetData, const FString& OldObjectPath) { const FString CurrentPackage = GetLongPackageName().ToString(); if (FPackageName::ObjectPathToPackageName(OldObjectPath) == CurrentPackage) { UpdateAsset(AssetData); UpdateDisplayName(); } }
bool FLevelModel::IsFileReadOnly() const { if (HasValidPackage()) { FName PackageName = GetLongPackageName(); FString PackageFileName; if (FPackageName::DoesPackageExist(PackageName.ToString(), NULL, &PackageFileName)) { return IFileManager::Get().IsReadOnly(*PackageFileName); } } return false; }
FString FLevelModel::GetPackageFileName() const { return FPackageName::LongPackageNameToFilename(GetLongPackageName().ToString(), FPackageName::GetMapPackageExtension()); }
void FLevelModel::UpdateSimulationStatus(UWorld* InWorld) { check(InWorld); SimulationStatus = FSimulationLevelStatus(); // Matcher for finding streaming level in PIE world by package name struct FSimulationLevelStreamingMatcher { FSimulationLevelStreamingMatcher( const FName& InPackageName ) : PackageName( InPackageName ) {} bool Matches( const ULevelStreaming* Candidate ) const { if (Candidate->PackageNameToLoad != NAME_None) { return Candidate->PackageNameToLoad == PackageName; } return Candidate->PackageName == PackageName; } FName PackageName; }; // Find corresponding streaming level int32 StreamingLevelIdx = InWorld->StreamingLevels.FindMatch(FSimulationLevelStreamingMatcher(GetLongPackageName())); if (StreamingLevelIdx != INDEX_NONE) { ULevelStreaming* StreamingLevel = InWorld->StreamingLevels[StreamingLevelIdx]; if (StreamingLevel->GetLoadedLevel()) { SimulationStatus.bLoaded = true; if (StreamingLevel->GetLoadedLevel()->bIsVisible) { SimulationStatus.bVisible = true; } } else if (StreamingLevel->bHasLoadRequestPending) { SimulationStatus.bLoading = true; } } }