diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d8f06b843..91606ff36 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -226,6 +226,15 @@ jobs: with: name: CesiumForUnreal-50-windows-${{ env.CESIUM_UNREAL_VERSION}} path: combine + - name: Unreal Marketplace Workaround + run: | + # The UE Marketplace deletes our Intermediates directory and fails to produces new + # intermediates for the Linux platform. The Marketplace team has suggested we copy + # them to the LinuxIntermediate directory instead, as a workaround. Users still have + # to move these files to the correct place manually, though, in order for Linux builds + # to succeed. + mkdir -p combine/CesiumForUnreal/LinuxIntermediate/Build/Linux + cp -r combine/CesiumForUnreal/Intermediate/Build/Linux/* combine/CesiumForUnreal/LinuxIntermediate/Build/Linux - name: Publish combined package artifact if: ${{ success() }} uses: actions/upload-artifact@v3 @@ -467,6 +476,15 @@ jobs: with: name: CesiumForUnreal-51-windows-${{ env.CESIUM_UNREAL_VERSION}} path: combine + - name: Unreal Marketplace Workaround + run: | + # The UE Marketplace deletes our Intermediates directory and fails to produces new + # intermediates for the Linux platform. The Marketplace team has suggested we copy + # them to the LinuxIntermediate directory instead, as a workaround. Users still have + # to move these files to the correct place manually, though, in order for Linux builds + # to succeed. + mkdir -p combine/CesiumForUnreal/LinuxIntermediate/Build/Linux + cp -r combine/CesiumForUnreal/Intermediate/Build/Linux/* combine/CesiumForUnreal/LinuxIntermediate/Build/Linux - name: Publish combined package artifact if: ${{ success() }} uses: actions/upload-artifact@v3 @@ -642,7 +660,7 @@ jobs: name: ${{ env.BUILD_CESIUM_UNREAL_PACKAGE_NAME}} path: packages iOS52: - runs-on: macos-13 + runs-on: macos-12 env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -727,6 +745,15 @@ jobs: with: name: CesiumForUnreal-52-windows-${{ env.CESIUM_UNREAL_VERSION}} path: combine + - name: Unreal Marketplace Workaround + run: | + # The UE Marketplace deletes our Intermediates directory and fails to produces new + # intermediates for the Linux platform. The Marketplace team has suggested we copy + # them to the LinuxIntermediate directory instead, as a workaround. Users still have + # to move these files to the correct place manually, though, in order for Linux builds + # to succeed. + mkdir -p combine/CesiumForUnreal/LinuxIntermediate/Build/Linux + cp -r combine/CesiumForUnreal/Intermediate/Build/Linux/* combine/CesiumForUnreal/LinuxIntermediate/Build/Linux - name: Publish combined package artifact if: ${{ success() }} uses: actions/upload-artifact@v3 diff --git a/.github/workflows/buildWindows.yml b/.github/workflows/buildWindows.yml index 7d8b87633..593e5d59e 100644 --- a/.github/workflows/buildWindows.yml +++ b/.github/workflows/buildWindows.yml @@ -34,16 +34,22 @@ jobs: $env:BUILD_CESIUM_UNREAL_PACKAGE_PATH="$env:GITHUB_WORKSPACE/packages/CesiumForUnreal" $env:UNREAL_BATCH_FILES_PATH="${{ inputs.unreal-batch-files-path }}" + # Store temp files on the D drive, which is much faster than the EBS-backed C drive. + mkdir -p d:\cesium\temp + $env:TEMP="d:\cesium\temp" + # Make these available to subsequent steps echo "BUILD_CESIUM_UNREAL_PACKAGE_NAME=${env:BUILD_CESIUM_UNREAL_PACKAGE_NAME}" >> $env:GITHUB_ENV echo "BUILD_CESIUM_UNREAL_PACKAGE_PATH=${env:BUILD_CESIUM_UNREAL_PACKAGE_PATH}" >> $env:GITHUB_ENV echo "UNREAL_BATCH_FILES_PATH=${env:UNREAL_BATCH_FILES_PATH}" >> $env:GITHUB_ENV + echo "TEMP=${env:TEMP}" >> $env:GITHUB_ENV # Confirm vars to the console echo "" echo BUILD_CESIUM_UNREAL_PACKAGE_NAME=$env:BUILD_CESIUM_UNREAL_PACKAGE_NAME echo BUILD_CESIUM_UNREAL_PACKAGE_PATH=$env:BUILD_CESIUM_UNREAL_PACKAGE_PATH echo UNREAL_BATCH_FILES_PATH=$env:UNREAL_BATCH_FILES_PATH + echo TEMP=$env:TEMP - name: Install nasm uses: ilammy/setup-nasm@v1.4.0 - name: Build cesium-native @@ -57,6 +63,7 @@ jobs: - name: Build CesiumForUnreal plugin timeout-minutes: 120 run: | + echo "Temp directory: $env:TEMP" cd "$env:UNREAL_BATCH_FILES_PATH" ./RunUAT.bat BuildPlugin -Plugin="$env:GITHUB_WORKSPACE/CesiumForUnreal.uplugin" -Package="$env:BUILD_CESIUM_UNREAL_PACKAGE_PATH" -CreateSubFolder -TargetPlatforms=Win64 - name: Upload plugin artifact @@ -64,4 +71,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: ${{ env.BUILD_CESIUM_UNREAL_PACKAGE_NAME}} - path: packages \ No newline at end of file + path: packages diff --git a/.github/workflows/testWindows.yml b/.github/workflows/testWindows.yml index 32f2513fe..de977099a 100644 --- a/.github/workflows/testWindows.yml +++ b/.github/workflows/testWindows.yml @@ -61,48 +61,83 @@ jobs: dir Get-Content "CesiumForUnreal.uplugin" | select-string -pattern "EngineVersion" - name: Run Cesium tests - continue-on-error: true - timeout-minutes: 30 + timeout-minutes: 60 run: | cd "${{ inputs.unreal-binaries-path }}" ./UnrealEditor-Cmd.exe "$env:TESTS_PROJECT_ROOT/TestsProject.uproject" -execcmds="Automation RunTests Cesium.Unit.;quit" -nullrhi -unattended -nosplash -ReportExportPath="$env:TESTS_PROJECT_LOGS" - name: Display tests log + if: always() run: | cd "$env:TESTS_PROJECT_LOGS" dir Get-Content TestsProject.log - name: Display tests report + if: always() run: | cd "$env:TESTS_PROJECT_LOGS" Get-Content index.json - name: Evaluate tests results + if: always() run: | - $env:TEST_STATUS="Pending" - echo "test_status=$env:TEST_STATUS" >> $env:GITHUB_ENV - cd "$env:TESTS_PROJECT_LOGS" - # Define function to parse json recursively - function Parse-JsonRecursively($jsonObject) { - foreach ($property in $jsonObject.PSObject.Properties) { - $name = $property.Name - $value = $property.Value + $failedTests = "" + $succeededTests = "" + + function Parse-Test($jsonObject) { + $currTestName = "" + foreach ($property in $jsonObject.PSObject.Properties) { + $name = $property.Name + $value = $property.Value + + if($name -eq "fullTestPath") { + $currTestName = $value + } + + if($name -eq "state") { + if ($value -eq "Success") { + $global:succeededTests += $currTestName + "`n" + } + else { + $global:failedTests += $currTestName + "`n" + } + } + } + } + + function Parse-Json($jsonObject) { + foreach ($property in $jsonObject.PSObject.Properties) { + $name = $property.Name + $value = $property.Value - # If the property value is another object, call function recursively - if ($value -is [PSCustomObject]) { - Parse-JsonRecursively($value) - } - else { - # If "state:fail" entry is found in json, set failure state - if($name -eq "state" -and $value -eq "fail") { - $env:TEST_STATUS="Failure" - return - } - } - } + # If the property value is another object, call function recursively + if ($name -eq "tests" -and $value -is [System.Object[]]) { + for (($i = 0); $i -lt $value.Count; $i++) { + Parse-Test($value[$i]) + } + } + } } - $env:TEST_STATUS="Success" # Set status to success at start $json = Get-Content -Path 'index.json' | ConvertFrom-Json # Read in json - Parse-JsonRecursively -jsonObject $json # Parse json - echo "test_status=$env:TEST_STATUS" >> $env:GITHUB_ENV # Export result to github environment variables \ No newline at end of file + Parse-Json -jsonObject $json # Parse json + + echo " " + if ($failedTests.Length -eq 0) { + echo "All tests passed:" + echo "-----------------" + echo "$succeededTests" + + exit 0 + } + else { + echo "Passing tests:" + echo "--------------" + echo "$succeededTests" + + echo "FAILED tests:" + echo "-------------" + echo "$failedTests" + + exit -1 + } \ No newline at end of file diff --git a/CHANGES.md b/CHANGES.md index 0703b40f9..737eb5a68 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,6 +20,14 @@ - `ACesiumGeoreference`, `ACesiumCameraManager`, and `ACesiumCreditSystem` are now created in the Persistent Level, even if the object that triggered their automatic creation (such as `ACesium3DTileset`) exists in a sub-level. It is very rarely useful to have instances of these objects within a sub-level. - An instance of `ACesiumCreditSystem` in a sub-level will no longer cause overlapping and broken-looking credits. However, we still recommend deleting credit system instances from sub-levels. +### v1.30.1 - 2023-09-03 + +This release fixes an important bug by updating [cesium-native](https://github.com/CesiumGS/cesium-native) from v0.27.0 to v0.27.1. See the [changelog](https://github.com/CesiumGS/cesium-native/blob/main/CHANGES.md) for a complete list of changes in cesium-native. + +### v1.30.0 - 2023-09-01 + +This release updates [cesium-native](https://github.com/CesiumGS/cesium-native) from v0.26.0 to v0.27.0. See the [changelog](https://github.com/CesiumGS/cesium-native/blob/main/CHANGES.md) for a complete list of changes in cesium-native. + ### v1.29.0 - 2023-08-01 ##### Fixes :wrench: diff --git a/CesiumForUnreal.uplugin b/CesiumForUnreal.uplugin index 1fdbc1be1..f3072b208 100644 --- a/CesiumForUnreal.uplugin +++ b/CesiumForUnreal.uplugin @@ -1,7 +1,7 @@ { "FileVersion": 3, - "Version": 47, - "VersionName": "1.29.0", + "Version": 49, + "VersionName": "1.30.1", "FriendlyName": "Cesium for Unreal", "Description": "Unlock the 3D geospatial ecosystem in Unreal Engine with real-world 3D content and a high accuracy full-scale WGS84 globe.", "Category": "Geospatial", diff --git a/Config/FilterPlugin.ini b/Config/FilterPlugin.ini index 37b008195..b1cfb8c47 100644 --- a/Config/FilterPlugin.ini +++ b/Config/FilterPlugin.ini @@ -8,3 +8,13 @@ /Shaders/* /Intermediate/Build/Linux/* /Binaries/Linux/* +/LinuxIntermediate/Build/Linux/UnrealEditor/Inc/CesiumEditor/UHT/* +/LinuxIntermediate/Build/Linux/UnrealEditor/Inc/CesiumRuntime/UHT/* +/LinuxIntermediate/Build/Linux/UnrealGame/Development/CesiumRuntime/* +/LinuxIntermediate/Build/Linux/UnrealGame/Inc/CesiumRuntime/UHT/* +/LinuxIntermediate/Build/Linux/UnrealGame/Shipping/CesiumRuntime/* +/LinuxIntermediate/Build/Linux/x64/UnrealGame/Development/CesiumRuntime/* +/LinuxIntermediate/Build/Linux/x64/UnrealGame/Shipping/CesiumRuntime/* +/LinuxIntermediate/Build/Linux/B4D820EA/UnrealGame/Development/CesiumRuntime/* +/LinuxIntermediate/Build/Linux/B4D820EA/UnrealGame/Inc/CesiumRuntime/UHT/* +/LinuxIntermediate/Build/Linux/B4D820EA/UnrealGame/Shipping/CesiumRuntime/* diff --git a/Source/CesiumRuntime/CesiumRuntime.Build.cs b/Source/CesiumRuntime/CesiumRuntime.Build.cs index 9cbd2b379..d2b708b65 100644 --- a/Source/CesiumRuntime/CesiumRuntime.Build.cs +++ b/Source/CesiumRuntime/CesiumRuntime.Build.cs @@ -81,6 +81,8 @@ public CesiumRuntime(ReadOnlyTargetRules Target) : base(Target) string[] libs = new string[] { "async++", + "Cesium3DTiles", + "Cesium3DTilesReader", "Cesium3DTilesSelection", "CesiumAsync", "CesiumGeometry", diff --git a/extern/cesium-native b/extern/cesium-native index 172ac5ddc..1248522db 160000 --- a/extern/cesium-native +++ b/extern/cesium-native @@ -1 +1 @@ -Subproject commit 172ac5ddcce602c8b268ad342639554dea2f6004 +Subproject commit 1248522dba50e06e13800baae8169592971308a9 diff --git a/package.json b/package.json index 407e0dd3e..769410fce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cesium-unreal", - "version": "1.29.0", + "version": "1.30.1", "description": "Cesium for Unreal", "main": "index.js", "directories": {