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 6ede3bb33..663ff7a8f 100644 --- a/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp +++ b/Source/CesiumRuntime/Private/UnrealAssetAccessor.cpp @@ -7,6 +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" @@ -21,7 +24,6 @@ #include #include #include -#include namespace { @@ -338,32 +340,9 @@ 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 79537a593..5ec42ed41 160000 --- a/extern/cesium-native +++ b/extern/cesium-native @@ -1 +1 @@ -Subproject commit 79537a59379102f222a9c9fd1a7ee18133757bd7 +Subproject commit 5ec42ed417db11061e6a82229eb588326d60edc9