Skip to content

Commit 5c7ad6d

Browse files
authored
Merge branch 'CesiumGS:main' into ue5-main
2 parents 4967a14 + 4c614e8 commit 5c7ad6d

File tree

80 files changed

+3028
-1062
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+3028
-1062
lines changed

Diff for: CHANGES.md

+30
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
11
# Change Log
22

3+
### v2.2.0 - 2023-12-14
4+
5+
##### Breaking Changes :mega:
6+
7+
- Deprecated `IonAssetEndpointUrl` on `Cesium3DTileset` and `CesiumIonRasterOverlay`. Use the new `CesiumIonServer` property instead.
8+
9+
##### Additions :tada:
10+
11+
- Added support for multiple Cesium ion servers by creating `CesiumIonServer` data assets.
12+
13+
In addition to the above, this release updates [cesium-native](https://github.com/CesiumGS/cesium-native) from v0.30.0 to v0.31.0. See the [changelog](https://github.com/CesiumGS/cesium-native/blob/main/CHANGES.md) for a complete list of changes in cesium-native.
14+
15+
### v2.1.0 - 2023-12-01
16+
17+
##### Additions :tada:
18+
19+
- Added support for styling with property textures in `EXT_structural_metadata`.
20+
- Significantly improved tile download performance by adding `HttpThreadActiveFrameTimeInSeconds=0.001` to `Engine.ini`. This results in a major performance improvement for all tilesets, particularly Google Photorealistic 3D Tiles.
21+
- Added `HttpMaxConnectionsPerServer=40` to `Engine.ini`. By default, only 16 connections are allowed, which limits the performance when downloading tiles.
22+
23+
##### Fixes :wrench:
24+
25+
- Fixed a bug in the "Select New Token" dialog that caused an error when trying to create a new token without being connected.
26+
- Fixed a bug where an `EditConditio`n was not parsed correctly and caused Output Log window errors.
27+
- Removed query parameters from filepaths if present, as they are no longer ignored by Unreal. This fixes a bug where the URL would not load correctly in some cases.
28+
- Fixed a Tile Excluder bug that computed incorrect tile bounds, making tiles invisible when moving the tileset in the sample scene.
29+
- Fixed a bug where viewports could appear wider than configured in the Dynamic Pawn's Camera Field of View. Noticed in Unreal Engine v5.3 when in Play-In-Editor mode, or a packaged game. In extreme cases, tiles would be missing near the edges of the view.
30+
31+
In addition to the above, this release updates [cesium-native](https://github.com/CesiumGS/cesium-native) from v0.29.0 to v0.30.0. See the [changelog](https://github.com/CesiumGS/cesium-native/blob/main/CHANGES.md) for a complete list of changes in cesium-native.
32+
333
### v2.0.0 - 2023-11-01
434

535
This release no longer supports Unreal Engine v5.0. Unreal Engine v5.1, v5.2, or v5.3 is required.

Diff for: CesiumForUnreal.uplugin

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"FileVersion": 3,
3-
"Version": 53,
4-
"VersionName": "2.0.0",
3+
"Version": 55,
4+
"VersionName": "2.2.0",
55
"FriendlyName": "Cesium for Unreal",
66
"Description": "Unlock the 3D geospatial ecosystem in Unreal Engine with real-world 3D content and a high accuracy full-scale WGS84 globe.",
77
"Category": "Geospatial",

Diff for: Config/Engine.ini

+14
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@
55
[HTTP.HttpThread]
66
RunningThreadedRequestLimit=100
77

8+
# Set HttpThreadActiveFrameTimeInSeconds - Network download speed is very sensitive to this value
9+
# Maps to the sleep time (ms) between every loop of our libcurl processing thread
10+
# The value of 0.001 (or 1 ms) has the same performance as 0, yet still reserves some time for idle
11+
#
12+
# Set HttpMaxConnectionsPerServer - maps to libcurl's CURLMOPT_MAX_HOST_CONNECTIONS
13+
# Unreal defaults to 16, but this is lower than a typical value for MaximumSimultaneousTileLoads
14+
# Use a number just past the highest reasonable value we think a user should ever pick
15+
[HTTP]
16+
HttpThreadActiveFrameTimeInSeconds=0.001
17+
HttpMaxConnectionsPerServer=40
18+
19+
[/Script/Engine.LocalPlayer]
20+
AspectRatioAxisConstraint=AspectRatio_MaintainXFOV
21+
822
[CoreRedirects]
923
+FunctionRedirects=(OldName="CesiumMetadataFeatureTableBlueprintLibrary.GetPropertiesForFeatureID",NewName="GetMetadataValuesForFeatureID")
1024

Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright 2020-2023 CesiumGS, Inc. and Contributors
2+
3+
#include "Cesium3DTilesetCustomization.h"
4+
#include "Cesium3DTileset.h"
5+
#include "CesiumCustomization.h"
6+
#include "DetailCategoryBuilder.h"
7+
#include "DetailLayoutBuilder.h"
8+
9+
void FCesium3DTilesetCustomization::Register(
10+
FPropertyEditorModule& PropertyEditorModule) {
11+
PropertyEditorModule.RegisterCustomClassLayout(
12+
ACesium3DTileset::StaticClass()->GetFName(),
13+
FOnGetDetailCustomizationInstance::CreateStatic(
14+
&FCesium3DTilesetCustomization::MakeInstance));
15+
}
16+
17+
void FCesium3DTilesetCustomization::Unregister(
18+
FPropertyEditorModule& PropertyEditorModule) {
19+
PropertyEditorModule.UnregisterCustomClassLayout(
20+
ACesium3DTileset::StaticClass()->GetFName());
21+
}
22+
23+
TSharedRef<IDetailCustomization> FCesium3DTilesetCustomization::MakeInstance() {
24+
return MakeShareable(new FCesium3DTilesetCustomization);
25+
}
26+
27+
void FCesium3DTilesetCustomization::CustomizeDetails(
28+
IDetailLayoutBuilder& DetailBuilder) {
29+
DetailBuilder.SortCategories(&SortCustomDetailsCategories);
30+
}
31+
32+
void FCesium3DTilesetCustomization::SortCustomDetailsCategories(
33+
const TMap<FName, IDetailCategoryBuilder*>& AllCategoryMap) {
34+
(*AllCategoryMap.Find(FName("TransformCommon")))->SetSortOrder(0);
35+
(*AllCategoryMap.Find(FName("Cesium")))->SetSortOrder(1);
36+
(*AllCategoryMap.Find(FName("Rendering")))->SetSortOrder(2);
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Copyright 2020-2023 CesiumGS, Inc. and Contributors
2+
3+
#pragma once
4+
5+
#include "IDetailCustomization.h"
6+
7+
class IDetailCategoryBuilder;
8+
9+
/**
10+
* An implementation of the IDetailCustomization interface that customizes
11+
* the Details View of a Cesium3DTileset. It is registered in
12+
* FCesiumEditorModule::StartupModule.
13+
*/
14+
class FCesium3DTilesetCustomization : public IDetailCustomization {
15+
public:
16+
virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override;
17+
18+
static void Register(FPropertyEditorModule& PropertyEditorModule);
19+
static void Unregister(FPropertyEditorModule& PropertyEditorModule);
20+
21+
static TSharedRef<IDetailCustomization> MakeInstance();
22+
23+
static void SortCustomDetailsCategories(
24+
const TMap<FName, IDetailCategoryBuilder*>& AllCategoryMap);
25+
};

Diff for: Source/CesiumEditor/Private/CesiumEditor.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
#include "CesiumEditor.h"
44
#include "Cesium3DTilesSelection/Tileset.h"
55
#include "Cesium3DTileset.h"
6+
#include "Cesium3DTilesetCustomization.h"
67
#include "CesiumCartographicPolygon.h"
78
#include "CesiumCommands.h"
89
#include "CesiumGeoreferenceCustomization.h"
910
#include "CesiumGlobeAnchorCustomization.h"
1011
#include "CesiumIonPanel.h"
1112
#include "CesiumIonRasterOverlay.h"
13+
#include "CesiumIonServer.h"
1214
#include "CesiumIonTokenTroubleshooting.h"
1315
#include "CesiumPanel.h"
1416
#include "CesiumRuntime.h"
@@ -111,6 +113,7 @@ void registerDetailCustomization() {
111113

112114
FCesiumGeoreferenceCustomization::Register(PropertyEditorModule);
113115
FCesiumGlobeAnchorCustomization::Register(PropertyEditorModule);
116+
FCesium3DTilesetCustomization::Register(PropertyEditorModule);
114117

115118
PropertyEditorModule.NotifyCustomizationModuleChanged();
116119
}
@@ -126,6 +129,7 @@ void unregisterDetailCustomization() {
126129

127130
FCesiumGeoreferenceCustomization::Unregister(PropertyEditorModule);
128131
FCesiumGlobeAnchorCustomization::Unregister(PropertyEditorModule);
132+
FCesium3DTilesetCustomization::Unregister(PropertyEditorModule);
129133
}
130134
}
131135

@@ -265,9 +269,7 @@ void FCesiumEditorModule::StartupModule() {
265269

266270
registerDetailCustomization();
267271

268-
this->_pIonSession =
269-
std::make_shared<CesiumIonSession>(getAsyncSystem(), getAssetAccessor());
270-
this->_pIonSession->resume();
272+
this->_serverManager.Initialize();
271273

272274
// Only register style once
273275
if (!StyleSet.IsValid()) {

Diff for: Source/CesiumEditor/Private/CesiumEditor.h

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "CesiumEditorReparentHandler.h"
66
#include "CesiumEditorSubLevelMutex.h"
7+
#include "CesiumIonServerManager.h"
78
#include "CesiumIonSession.h"
89
#include "CoreMinimal.h"
910
#include "Modules/ModuleManager.h"
@@ -17,6 +18,7 @@ class UCesiumRasterOverlay;
1718
class UCesiumIonRasterOverlay;
1819
struct FCesium3DTilesetLoadFailureDetails;
1920
struct FCesiumRasterOverlayLoadFailureDetails;
21+
class UCesiumIonServer;
2022

2123
DECLARE_LOG_CATEGORY_EXTERN(LogCesiumEditor, Log, All);
2224

@@ -34,9 +36,9 @@ class FCesiumEditorModule : public IModuleInterface {
3436

3537
static FCesiumEditorModule* get() { return _pModule; }
3638

37-
static CesiumIonSession& ion() {
39+
static CesiumIonServerManager& serverManager() {
3840
assert(_pModule);
39-
return *_pModule->_pIonSession;
41+
return get()->_serverManager;
4042
}
4143

4244
static ACesium3DTileset* FindFirstTilesetSupportingOverlays();
@@ -109,7 +111,7 @@ class FCesiumEditorModule : public IModuleInterface {
109111
void OnTilesetIonTroubleshooting(ACesium3DTileset* pTileset);
110112
void OnRasterOverlayIonTroubleshooting(UCesiumRasterOverlay* pOverlay);
111113

112-
std::shared_ptr<CesiumIonSession> _pIonSession;
114+
CesiumIonServerManager _serverManager;
113115
FDelegateHandle _tilesetLoadFailureSubscription;
114116
FDelegateHandle _rasterOverlayLoadFailureSubscription;
115117
FDelegateHandle _tilesetIonTroubleshootingSubscription;

Diff for: Source/CesiumEditor/Private/CesiumEditorSettings.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
// Copyright 2020-2021 CesiumGS, Inc. and Contributors
22

33
#include "CesiumEditorSettings.h"
4+
#include "CesiumSourceControl.h"
45

56
UCesiumEditorSettings::UCesiumEditorSettings(
67
const FObjectInitializer& ObjectInitializer)
78
: Super(ObjectInitializer) {}
9+
10+
void UCesiumEditorSettings::Save() {
11+
CesiumSourceControl::PromptToCheckoutConfigFile(
12+
this->GetClass()->GetConfigName());
13+
this->Modify();
14+
this->SaveConfig();
15+
}

Diff for: Source/CesiumEditor/Private/CesiumEditorSettings.h

+20-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#pragma once
44

5+
#include "CesiumIonServer.h"
56
#include "CoreMinimal.h"
67
#include "Engine/DeveloperSettings.h"
78
#include "CesiumEditorSettings.generated.h"
@@ -14,16 +15,29 @@ class UCesiumEditorSettings : public UDeveloperSettings {
1415
GENERATED_UCLASS_BODY()
1516

1617
public:
18+
UPROPERTY(
19+
Config,
20+
meta =
21+
(DeprecatedProperty,
22+
DeprecationMessage = "Set UserAccessTokenMap instead."))
23+
FString UserAccessToken_DEPRECATED;
24+
1725
/**
18-
* The token representing the signed-in user to Cesium ion. If this is blank
19-
* or invalid, the Cesium panel will prompt you to log in to Cesium ion with
20-
* OAuth2. This is set automatically by logging in with the UI; it is not
21-
* usually necessary to set it directly.
26+
* The Cesium ion server that is currently selected in the user interface.
2227
*/
2328
UPROPERTY(
2429
Config,
2530
EditAnywhere,
2631
Category = "Cesium ion",
27-
meta = (DisplayName = "User Access Token"))
28-
FString UserAccessToken;
32+
meta = (DisplayName = "Current Cesium ion Server"))
33+
TSoftObjectPtr<UCesiumIonServer> CurrentCesiumIonServer;
34+
35+
UPROPERTY(
36+
Config,
37+
EditAnywhere,
38+
Category = "Cesium ion",
39+
meta = (DisplayName = "Token Map"))
40+
TMap<TSoftObjectPtr<UCesiumIonServer>, FString> UserAccessTokenMap;
41+
42+
void Save();
2943
};

0 commit comments

Comments
 (0)