From 5dccf0c6b25e1cb6e411af43a846556eb41276fe Mon Sep 17 00:00:00 2001 From: Ashley Rogers Date: Tue, 21 Jan 2025 17:07:37 -0500 Subject: [PATCH 1/4] Replace uriparser usage --- .../Private/UnrealAssetAccessor.cpp | 30 ++----------------- extern/cesium-native | 2 +- 2 files changed, 4 insertions(+), 28 deletions(-) diff --git a/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp b/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp index 6ede3bb33..ffb9ca25e 100644 --- a/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp +++ b/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp @@ -7,6 +7,7 @@ #include "CesiumAsync/AsyncSystem.h" #include "CesiumAsync/IAssetRequest.h" #include "CesiumAsync/IAssetResponse.h" +#include "CesiumUtility/Uri.h" #include "CesiumCommon.h" #include "CesiumRuntime.h" #include "HttpManager.h" @@ -21,7 +22,6 @@ #include #include #include -#include namespace { @@ -338,32 +338,8 @@ const std::string UnrealFileAssetRequestResponse::getMethod = "GET"; const CesiumAsync::HttpHeaders UnrealFileAssetRequestResponse::emptyHeaders{}; std::string convertFileUriToFilename(const std::string& url) { - // According to the uriparser docs, both uriUriStringToWindowsFilenameA and - // uriUriStringToUnixFilenameA require an output buffer with space for at most - // length(url)+1 characters. - // https://uriparser.github.io/doc/api/latest/Uri_8h.html#a4afbc8453c7013b9618259bc57d81a39 - std::string result(url.size() + 1, '\0'); - -#ifdef _WIN32 - int errorCode = uriUriStringToWindowsFilenameA(url.c_str(), result.data()); -#else - int errorCode = uriUriStringToUnixFilenameA(url.c_str(), result.data()); -#endif - - // Truncate the string if necessary by finding the first null character. - size_t end = result.find('\0'); - if (end != std::string::npos) { - result.resize(end); - } - - // Remove query parameters from the URL if present, as they are no longer - // ignored by Unreal. - size_t pos = result.find("?"); - if (pos != std::string::npos) { - result.erase(pos); - } - - return result; + CesiumUtility::Uri parsedUri(url); + return CesiumUtility::Uri::uriPathToNativePath(std::string(parsedUri.getPath())); } class FCesiumReadFileWorker : public FNonAbandonableTask { diff --git a/extern/cesium-native b/extern/cesium-native index 4bc3e809a..38c1e31c6 160000 --- a/extern/cesium-native +++ b/extern/cesium-native @@ -1 +1 @@ -Subproject commit 4bc3e809a206b6e410fa0530ac0e93f2939e98ea +Subproject commit 38c1e31c632c7a8173a9d823b4f0f3117452b4ca From 9b2504955a7a3b46772a27b594a9a1785004aff4 Mon Sep 17 00:00:00 2001 From: Ashley Rogers Date: Tue, 21 Jan 2025 17:29:33 -0500 Subject: [PATCH 2/4] Fix missing defines errors --- Source/CesiumEditor/Private/CesiumIonSession.cpp | 2 ++ Source/CesiumEditor/Private/CesiumIonTokenTroubleshooting.cpp | 2 ++ Source/CesiumEditor/Private/CesiumPanel.cpp | 2 ++ Source/CesiumEditor/Private/IonQuickAddPanel.cpp | 2 ++ Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp | 2 ++ 5 files changed, 10 insertions(+) diff --git a/Source/CesiumEditor/Private/CesiumIonSession.cpp b/Source/CesiumEditor/Private/CesiumIonSession.cpp index 2c64997a9..68f37d727 100644 --- a/Source/CesiumEditor/Private/CesiumIonSession.cpp +++ b/Source/CesiumEditor/Private/CesiumIonSession.cpp @@ -6,7 +6,9 @@ #include "CesiumIonServer.h" #include "CesiumRuntimeSettings.h" #include "CesiumSourceControl.h" +THIRD_PARTY_INCLUDES_START #include "CesiumUtility/Uri.h" +THIRD_PARTY_INCLUDES_END #include "FileHelpers.h" #include "HAL/PlatformProcess.h" #include "Misc/App.h" diff --git a/Source/CesiumEditor/Private/CesiumIonTokenTroubleshooting.cpp b/Source/CesiumEditor/Private/CesiumIonTokenTroubleshooting.cpp index 74d1962da..c25b6456b 100644 --- a/Source/CesiumEditor/Private/CesiumIonTokenTroubleshooting.cpp +++ b/Source/CesiumEditor/Private/CesiumIonTokenTroubleshooting.cpp @@ -8,7 +8,9 @@ #include "CesiumIonRasterOverlay.h" #include "CesiumIonServerDisplay.h" #include "CesiumRuntimeSettings.h" +THIRD_PARTY_INCLUDES_START #include "CesiumUtility/Uri.h" +THIRD_PARTY_INCLUDES_END #include "EditorStyleSet.h" #include "LevelEditor.h" #include "ScopedTransaction.h" diff --git a/Source/CesiumEditor/Private/CesiumPanel.cpp b/Source/CesiumEditor/Private/CesiumPanel.cpp index 43fd08fb9..db5f33de5 100644 --- a/Source/CesiumEditor/Private/CesiumPanel.cpp +++ b/Source/CesiumEditor/Private/CesiumPanel.cpp @@ -10,7 +10,9 @@ #include "CesiumIonServerSelector.h" #include "CesiumRuntime.h" #include "CesiumRuntimeSettings.h" +THIRD_PARTY_INCLUDES_START #include "CesiumUtility/Uri.h" +THIRD_PARTY_INCLUDES_END #include "Editor.h" #include "Framework/MultiBox/MultiBoxBuilder.h" #include "Interfaces/IPluginManager.h" diff --git a/Source/CesiumEditor/Private/IonQuickAddPanel.cpp b/Source/CesiumEditor/Private/IonQuickAddPanel.cpp index 4ca8000b8..89d930f86 100644 --- a/Source/CesiumEditor/Private/IonQuickAddPanel.cpp +++ b/Source/CesiumEditor/Private/IonQuickAddPanel.cpp @@ -8,7 +8,9 @@ #include "CesiumIonRasterOverlay.h" #include "CesiumIonServer.h" #include "CesiumRuntimeSettings.h" +THIRD_PARTY_INCLUDES_START #include "CesiumUtility/Uri.h" +THIRD_PARTY_INCLUDES_END #include "Editor.h" #include "PropertyCustomizationHelpers.h" #include "SelectCesiumIonToken.h" diff --git a/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp b/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp index ffb9ca25e..dce761b08 100644 --- a/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp +++ b/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp @@ -7,7 +7,9 @@ #include "CesiumAsync/AsyncSystem.h" #include "CesiumAsync/IAssetRequest.h" #include "CesiumAsync/IAssetResponse.h" +THIRD_PARTY_INCLUDES_START #include "CesiumUtility/Uri.h" +THIRD_PARTY_INCLUDES_END #include "CesiumCommon.h" #include "CesiumRuntime.h" #include "HttpManager.h" From 792952db663c13606092b0c767cf7cbbba1c83d1 Mon Sep 17 00:00:00 2001 From: Ashley Rogers Date: Tue, 21 Jan 2025 17:34:58 -0500 Subject: [PATCH 3/4] Format --- Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp b/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp index dce761b08..663ff7a8f 100644 --- a/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp +++ b/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp @@ -341,7 +341,8 @@ const CesiumAsync::HttpHeaders UnrealFileAssetRequestResponse::emptyHeaders{}; std::string convertFileUriToFilename(const std::string& url) { CesiumUtility::Uri parsedUri(url); - return CesiumUtility::Uri::uriPathToNativePath(std::string(parsedUri.getPath())); + return CesiumUtility::Uri::uriPathToNativePath( + std::string(parsedUri.getPath())); } class FCesiumReadFileWorker : public FNonAbandonableTask { From bd1ff53c507183cec2035f272b85f1e2dd16d9ea Mon Sep 17 00:00:00 2001 From: Ashley Rogers Date: Mon, 27 Jan 2025 13:35:14 -0500 Subject: [PATCH 4/4] Update cesium-native --- extern/cesium-native | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/cesium-native b/extern/cesium-native index 38c1e31c6..4b3e558ee 160000 --- a/extern/cesium-native +++ b/extern/cesium-native @@ -1 +1 @@ -Subproject commit 38c1e31c632c7a8173a9d823b4f0f3117452b4ca +Subproject commit 4b3e558eec7bd8ac01a5b871eba2edce9a579d73