Change fileset tools to read base names and full names

This commit is contained in:
Steve Streeting 2020-10-06 17:14:23 +01:00
parent 23aa985658
commit 9b189a4d3e
3 changed files with 20 additions and 11 deletions

View File

@ -1,4 +1,4 @@
function Find-File-Set {
function Find-Files {
param (
[string]$startDir,
[string]$pattern,
@ -7,19 +7,25 @@ function Find-File-Set {
[array]$excludeBaseNames
)
$set = [System.Collections.Generic.HashSet[string]]::New()
$basenames = [System.Collections.ArrayList]::New()
$fullpaths = [System.Collections.ArrayList]::New()
Get-ChildItem -Path $startDir -Filter $pattern -Recurse | ForEach-Object {
if ($includeByDefault) {
if ($excludeBaseNames -notcontains $_.BaseName) {
$set.Add($_.BaseName) > $null
$basenames.Add($_.BaseName) > $null
$fullpaths.Add($_.FullName) > $null
}
} else {
if ($includeBaseNames -contains $_.BaseName) {
$set.Add($_.BaseName) > $null
$basenames.Add($_.BaseName) > $null
$fullpaths.Add($_.FullName) > $null
}
}
}
return $set
return [PSCustomObject]@{
BaseNames = $basenames
FullNames = $fullpaths
}
}

View File

@ -132,7 +132,9 @@ try {
Write-Warning "Unknown variant(s) ignored: $($unmatchedVariants -join ", ")"
}
$maps = Find-File-Set -startDir:$(Join-Path $src "Content") -pattern:*.umap -includeByDefault:$config.CookAllMaps -includeBaseNames:$config.MapsIncluded -excludeBaseNames:$config.MapsExcluded
$foundmaps = Find-Files -startDir:$(Join-Path $src "Content") -pattern:*.umap -includeByDefault:$config.CookAllMaps -includeBaseNames:$config.MapsIncluded -excludeBaseNames:$config.MapsExcluded
$maps = $foundmaps.BaseNames
Write-Output ""
Write-Output "Project File : $projfile"

View File

@ -17,6 +17,7 @@ param (
. $PSScriptRoot\inc\projectversion.ps1
. $PSScriptRoot\inc\uproject.ps1
. $PSScriptRoot\inc\ueinstall.ps1
. $PSScriptRoot\inc\filetools.ps1
function Write-Usage {
Write-Output "Steve's UE4 lightmap rebuilding tool"
@ -60,17 +61,17 @@ try {
if ($maps) {
# Explicit list of maps provided on command line
$mapsToRebuild = Find-File-Set -startDir:$(Join-Path $src "Content") -pattern:*.umap -includeByDefault:$false -includeBaseNames:$maps
$foundmaps = Find-File-Set -startDir:$(Join-Path $src "Content") -pattern:*.umap -includeByDefault:$false -includeBaseNames:$maps
if ($mapsToRebuild.Count -ne $maps.Count) {
Write-Warning "Ignoring missing map(s): $($maps | Where-Object { $_ -notin $mapsToRebuild })"
}
} else {
# Derive maps from cook settings
$mapsToRebuild = Find-File-Set -startDir:$(Join-Path $src "Content") -pattern:*.umap -includeByDefault:$config.CookAllMaps -includeBaseNames:$config.MapsIncluded -excludeBaseNames:$config.MapsExcluded
$foundmaps = Find-Files -startDir:$(Join-Path $src "Content") -pattern:*.umap -includeByDefault:$config.CookAllMaps -includeBaseNames:$config.MapsIncluded -excludeBaseNames:$config.MapsExcluded
}
if ($mapsToRebuild.Count -eq 0) {
if ($foundmaps.BaseNames.Count -eq 0) {
throw "No maps found to rebuild"
}
@ -88,7 +89,7 @@ try {
Write-Output "UE Version : $ueVersion"
Write-Output "UE Install : $ueinstall"
Write-Output ""
Write-Output "Maps : $mapsToRebuild"
Write-Output "Maps : $($foundmaps.BaseNames)"
Write-Output "Quality : $quality"
Write-Output ""
@ -103,7 +104,7 @@ try {
$argList.Add("-AllowCommandletRendering") > $null
$argList.Add("-SkipSkinVerify") > $null
$argList.Add("-Quality=$quality") > $null
$argList.Add("-Map=$($mapsToRebuild -join "+")") > $null
$argList.Add("-Map=$($foundmaps.BaseNames -join "+")") > $null
$ueEditorCmd = Join-Path $ueinstall "Engine/Binaries/Win64/UE4Editor-Cmd$exeSuffix"