├── .clang-format ├── .concierge ├── config.json └── templates │ ├── pullRequestOpened.hbs │ └── signature.hbs ├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yaml │ ├── config.yml │ └── feature_request.yaml ├── actions │ ├── install-unreal-linux │ │ └── action.yml │ ├── install-unreal-macos │ │ ├── action.yml │ │ └── exclude-from-unzip.lst │ ├── install-unreal-windows │ │ └── action.yml │ └── vcpkg-cache │ │ └── action.yml ├── pull_request_template.md └── workflows │ ├── build.yml │ ├── buildAndroid.yml │ ├── buildApple.yml │ ├── buildLinux.yml │ ├── buildWindows.yml │ ├── prod.yml │ ├── testPackageOnWindows.yml │ └── testWindows.yml ├── .gitignore ├── .gitmodules ├── CHANGES.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CesiumForUnreal.uplugin ├── Config ├── Editor.ini ├── Engine.ini └── FilterPlugin.ini ├── Content ├── Cesium-128x128.png ├── Cesium-64x64.png ├── Cesium-for-Unreal-Logo-BlackH.png ├── Cesium-for-Unreal-Logo-Micro-BlackV.png ├── Cesium-for-Unreal-Logo-WhiteBGH.jpg ├── Cesium-for-Unreal-Logo-WhiteH.png ├── Cesium-icon-16x16.png ├── CesiumButton.png ├── CesiumCreditSystemBP.uasset ├── Cesium_for_Unreal_light_color_vertical-height150.png ├── Cesium_for_Unreal_light_color_vertical.png ├── Curve_AltitudeProfile_Float.uasset ├── Curve_MaxAltitude_Float.uasset ├── Curve_PawnMovementSpeed_Float.uasset ├── Curve_Progress_Float.uasset ├── Curves │ └── FlyTo │ │ ├── Curve_CesiumFlyToDefaultHeightPercentage_Float.uasset │ │ ├── Curve_CesiumFlyToDefaultMaximumHeightByDistance_Float.uasset │ │ └── Curve_CesiumFlyToDefaultProgress_Float.uasset ├── DynamicPawn.uasset ├── FloatingGameMode.uasset ├── FontAwesome │ ├── attribution.txt │ ├── book-reader-solid.png │ ├── book-reader-solid.svg │ ├── check-solid.png │ ├── check-solid.svg │ ├── cloud-upload-alt-solid.png │ ├── cloud-upload-alt-solid.svg │ ├── hands-helping-solid.png │ ├── hands-helping-solid.svg │ ├── key-solid.png │ ├── key-solid.svg │ ├── plus-solid.png │ ├── plus-solid.svg │ ├── sign-out-alt-solid.png │ ├── sign-out-alt-solid.svg │ ├── sync-alt-solid.png │ ├── sync-alt-solid.svg │ ├── times-solid.png │ └── times-solid.svg ├── Materials │ ├── Blends │ │ ├── MLB_AngleMask.uasset │ │ ├── MLB_CesiumAlphaBlendBaseColor.uasset │ │ ├── MLB_CesiumClipping.uasset │ │ ├── MLB_CesiumSimpleWater.uasset │ │ └── MLB_DitherFade.uasset │ ├── CesiumWaterMaterialFunctions │ │ ├── CesiumSimpleWaterSurface.uasset │ │ ├── CesiumWaterTextureWaves.uasset │ │ ├── MF_CesiumWaterAbsorption.uasset │ │ ├── MF_CesiumWaterAttributes.uasset │ │ ├── MF_CesiumWaterColorScale.uasset │ │ ├── MF_CesiumWaterMaskSample.uasset │ │ ├── MF_CesiumWaterScattering.uasset │ │ ├── MF_CesiumWaterWaves.uasset │ │ └── ML_CesiumLandWaterBlend.uasset │ ├── Deprecated │ │ ├── M_DEPRECATED_CesiumDefaultMasked.uasset │ │ ├── M_DEPRECATED_CesiumOverlay.uasset │ │ ├── M_DEPRECATED_CesiumOverlayComplexWater.uasset │ │ └── M_DEPRECATED_CesiumOverlayWater.uasset │ ├── Instances │ │ ├── MI_CesiumThreeOverlaysAndClipping.uasset │ │ ├── MI_CesiumThreeOverlaysAndClippingAndWater.uasset │ │ └── MI_CesiumThreeOverlaysAndClippingTranslucent.uasset │ ├── Layers │ │ ├── ML_CesiumGltf.uasset │ │ ├── ML_CesiumNothing.uasset │ │ ├── ML_CesiumRVTBaseColorOverlay.uasset │ │ ├── ML_CesiumRasterOverlay.uasset │ │ ├── ML_CesiumSimpleWater.uasset │ │ ├── ML_CesiumWaterMask.uasset │ │ └── ML_DitherFade.uasset │ ├── M_CesiumBaseMaterial.uasset │ ├── M_CesiumDefaultMasked.uasset │ ├── M_CesiumOverlay.uasset │ ├── M_CesiumOverlayComplexWater.uasset │ ├── M_CesiumOverlayWater.uasset │ └── MaterialFunctions │ │ ├── CesiumGetFeatureIdsFromAttribute.uasset │ │ ├── CesiumGetFeatureIdsFromInstance.uasset │ │ ├── CesiumGetFeatureIdsFromTexture.uasset │ │ ├── CesiumGlTFFunction.uasset │ │ ├── CesiumGltfWithOverlays.uasset │ │ ├── CesiumOverlayWater.uasset │ │ ├── CesiumPointInBox.uasset │ │ ├── CesiumRasterOverlay.uasset │ │ ├── CesiumSelectTexCoords.uasset │ │ ├── MF_CesiumSampleRasterOverlay.uasset │ │ └── MF_CesiumTransformTextureCoordinates.uasset ├── MobileSkySphere.uasset ├── ScreenCredits.uasset ├── Tests │ ├── Maps │ │ ├── ConeAndCylinder.umap │ │ └── SingleCube.umap │ └── Tilesets │ │ └── BigCube │ │ ├── BigCube.glb │ │ └── tileset.json ├── Textures │ ├── NoColorTexture.uasset │ ├── NoMetallicRoughnessTexture.uasset │ ├── NoNormalTexture.uasset │ ├── RVT_CesiumDefault.uasset │ ├── T_Water_TilingNormal_With_Height_02_Softened.uasset │ └── transparent1x1.uasset ├── WBP_Profiling.uasset ├── WBP_TimeOfDay.uasset └── WGS84.uasset ├── Documentation ├── Assets │ ├── mermaid.min.js │ ├── mingcute.json.js │ └── panzoom.js ├── Diagrams │ ├── classes-for-3d-tiles.mmd │ └── texture-resource-classes.mmd ├── Doxyfile ├── Images │ ├── activeCulledError.png │ ├── activeUrl.png │ ├── advancedDisplay.png │ ├── autoFill.jpeg │ ├── autogeneratedMessage.jpeg │ ├── breakHitResult.jpeg │ ├── cesiumFeaturesMetadataComponent.jpeg │ ├── developmentEditorTarget.png │ ├── ellipsoidCategory.png │ ├── encodingDetailsExample.jpeg │ ├── featureIdDescriptionExample.jpeg │ ├── featuresMetadataMaterialLayer.jpeg │ ├── functionalTesting.png │ ├── generateMaterial.jpeg │ ├── getAsFeatureIdFunctions.jpeg │ ├── getFeatureIdForVertex.jpeg │ ├── getFeatureIdFromFace.jpeg │ ├── getFeatureIdSets.jpeg │ ├── getFeatureIdStatusFunctions.jpeg │ ├── getMetadataValuesForFace.jpeg │ ├── getMetadataValuesForFaceAsStrings.jpeg │ ├── getPropertyTableStatusFunctions.jpeg │ ├── getPropertyTableValuesFromHit.png │ ├── getValue.jpeg │ ├── inactiveCulledError.png │ ├── inactiveUrl.png │ ├── matchUnrealNaming.png │ ├── materialAllPossibleNodes.jpeg │ ├── materialApplyValueTransforms.jpeg │ ├── materialDefaultValue.jpeg │ ├── materialGetFeatureIdsFromAttribute.jpeg │ ├── materialGetFeatureIdsFromImplicit.jpeg │ ├── materialGetFeatureIdsFromTexture.jpeg │ ├── materialGetPropertyValues.jpeg │ ├── materialNoData.jpeg │ ├── materialNoDataAndDefault.jpeg │ ├── materialNullFeatureID.jpeg │ ├── metadataValueType.jpeg │ ├── profilingAutomationTestWindow.jpg │ ├── profilingBreakpoints.jpg │ ├── profilingDisableCpuProfiling.png │ ├── profilingFunctions.png │ ├── profilingInterpretReport.png │ ├── profilingOpenDetails.png │ ├── profilingOpenTrace.png │ ├── profilingRecordCpuProfile.png │ ├── profilingStartAtTimeline.png │ ├── profilingStbirHorizontalDownsample.png │ ├── profilingUnrealFragmentedUse.png │ ├── profilingUnrealInsightsSessionBrowser.png │ ├── profilingUnrealInterpretReport.png │ ├── profilingUnrealLowUse.png │ ├── profilingUnrealMark.png │ ├── profilingUnrealTimers.png │ ├── profilingUnrealTracks.png │ ├── propertyDetailsExample.jpeg │ ├── propertyTableDescriptionExample.jpeg │ ├── propertyTablePropertyDescriptionExample.jpeg │ └── startupMap.png ├── Pages │ ├── api-design-guide.md │ ├── contributor-guide.md │ ├── performance-profiling.md │ ├── style-guide.md │ ├── unreal-engine-3d-tiles.md │ ├── upgrade-to-2.0-guide.md │ ├── user-guide.md │ └── using-prerelease-packages.md ├── Source │ ├── README.md │ ├── dev.Target.cs │ ├── dev │ │ ├── dev.Build.cs │ │ └── dev.cpp │ └── devEditor.Target.cs ├── cesium-native.tag ├── developer-setup-linux.md ├── developer-setup-osx.md ├── developer-setup-windows.md ├── developer-setup.md ├── footer.html ├── performance-profiling-setup-test.md ├── performance-profiling-with-cpu-usage.md ├── performance-profiling-with-unreal-insights.md └── release-process.md ├── LICENSE ├── README.md ├── Resources └── Icon128.png ├── Shaders └── Private │ └── CesiumPointAttenuationVertexFactory.ush ├── Source ├── CesiumEditor │ ├── CesiumEditor.Build.cs │ └── Private │ │ ├── Cesium3DTilesetCustomization.cpp │ │ ├── Cesium3DTilesetCustomization.h │ │ ├── CesiumCommands.cpp │ │ ├── CesiumCommands.h │ │ ├── CesiumCustomization.cpp │ │ ├── CesiumCustomization.h │ │ ├── CesiumDegreesMinutesSecondsEditor.cpp │ │ ├── CesiumDegreesMinutesSecondsEditor.h │ │ ├── CesiumEditor.cpp │ │ ├── CesiumEditor.h │ │ ├── CesiumEditorReparentHandler.cpp │ │ ├── CesiumEditorReparentHandler.h │ │ ├── CesiumEditorSettings.cpp │ │ ├── CesiumEditorSettings.h │ │ ├── CesiumEditorSubLevelMutex.cpp │ │ ├── CesiumEditorSubLevelMutex.h │ │ ├── CesiumGeoreferenceCustomization.cpp │ │ ├── CesiumGeoreferenceCustomization.h │ │ ├── CesiumGlobeAnchorCustomization.cpp │ │ ├── CesiumGlobeAnchorCustomization.h │ │ ├── CesiumIonPanel.cpp │ │ ├── CesiumIonPanel.h │ │ ├── CesiumIonServerDisplay.cpp │ │ ├── CesiumIonServerDisplay.h │ │ ├── CesiumIonServerManager.cpp │ │ ├── CesiumIonServerManager.h │ │ ├── CesiumIonServerSelector.cpp │ │ ├── CesiumIonServerSelector.h │ │ ├── CesiumIonSession.cpp │ │ ├── CesiumIonSession.h │ │ ├── CesiumIonTokenTroubleshooting.cpp │ │ ├── CesiumIonTokenTroubleshooting.h │ │ ├── CesiumPanel.cpp │ │ ├── CesiumPanel.h │ │ ├── CesiumSourceControl.cpp │ │ ├── CesiumSourceControl.h │ │ ├── IonLoginPanel.cpp │ │ ├── IonLoginPanel.h │ │ ├── IonQuickAddPanel.cpp │ │ ├── IonQuickAddPanel.h │ │ ├── SelectCesiumIonToken.cpp │ │ └── SelectCesiumIonToken.h └── CesiumRuntime │ ├── CesiumRuntime.Build.cs │ ├── Private │ ├── CalcBounds.cpp │ ├── CalcBounds.h │ ├── Cesium3DTileset.cpp │ ├── Cesium3DTilesetRoot.cpp │ ├── Cesium3DTilesetRoot.h │ ├── CesiumActors.cpp │ ├── CesiumActors.h │ ├── CesiumBingMapsRasterOverlay.cpp │ ├── CesiumBoundingVolumeComponent.cpp │ ├── CesiumBoundingVolumeComponent.h │ ├── CesiumCamera.cpp │ ├── CesiumCameraManager.cpp │ ├── CesiumCartographicPolygon.cpp │ ├── CesiumCreditSystem.cpp │ ├── CesiumCreditSystemBPLoader.cpp │ ├── CesiumCreditSystemBPLoader.h │ ├── CesiumCustomVersion.cpp │ ├── CesiumDebugColorizeTilesRasterOverlay.cpp │ ├── CesiumEllipsoid.cpp │ ├── CesiumEllipsoidFunctions.cpp │ ├── CesiumEllipsoidFunctions.h │ ├── CesiumEncodedMetadataUtility.cpp │ ├── CesiumEncodedMetadataUtility.h │ ├── CesiumFeatureIdAttribute.cpp │ ├── CesiumFeatureIdSet.cpp │ ├── CesiumFeatureIdTexture.cpp │ ├── CesiumFeaturesMetadataComponent.cpp │ ├── CesiumFlyToComponent.cpp │ ├── CesiumGeocoderServiceBlueprintLibrary.cpp │ ├── CesiumGeoreference.cpp │ ├── CesiumGlobeAnchorComponent.cpp │ ├── CesiumGlobeAnchoredActorComponent.cpp │ ├── CesiumGltfComponent.cpp │ ├── CesiumGltfComponent.h │ ├── CesiumGltfPointsComponent.cpp │ ├── CesiumGltfPointsComponent.h │ ├── CesiumGltfPointsSceneProxy.cpp │ ├── CesiumGltfPointsSceneProxy.h │ ├── CesiumGltfPointsSceneProxyUpdater.h │ ├── CesiumGltfPrimitiveComponent.cpp │ ├── CesiumGltfPrimitiveComponent.h │ ├── CesiumGltfTextures.cpp │ ├── CesiumGltfTextures.h │ ├── CesiumIonRasterOverlay.cpp │ ├── CesiumIonServer.cpp │ ├── CesiumLifetime.cpp │ ├── CesiumLifetime.h │ ├── CesiumMaterialUserData.cpp │ ├── CesiumMaterialUserData.h │ ├── CesiumMetadataEnum.cpp │ ├── CesiumMetadataPickingBlueprintLibrary.cpp │ ├── CesiumMetadataPrimitive.cpp │ ├── CesiumMetadataUtilityBlueprintLibrary.cpp │ ├── CesiumMetadataValue.cpp │ ├── CesiumModelMetadata.cpp │ ├── CesiumOriginShiftComponent.cpp │ ├── CesiumPointAttenuationVertexFactory.cpp │ ├── CesiumPointAttenuationVertexFactory.h │ ├── CesiumPolygonRasterOverlay.cpp │ ├── CesiumPrimitive.cpp │ ├── CesiumPrimitive.h │ ├── CesiumPrimitiveFeatures.cpp │ ├── CesiumPrimitiveMetadata.cpp │ ├── CesiumPropertyArray.cpp │ ├── CesiumPropertyArrayBlueprintLibrary.cpp │ ├── CesiumPropertyTable.cpp │ ├── CesiumPropertyTableProperty.cpp │ ├── CesiumPropertyTexture.cpp │ ├── CesiumPropertyTextureProperty.cpp │ ├── CesiumRasterOverlay.cpp │ ├── CesiumRasterOverlays.h │ ├── CesiumRuntime.cpp │ ├── CesiumRuntimeSettings.cpp │ ├── CesiumSampleHeightMostDetailedAsyncAction.cpp │ ├── CesiumSubLevelComponent.cpp │ ├── CesiumSubLevelSwitcherComponent.cpp │ ├── CesiumSunSky.cpp │ ├── CesiumTextureResource.cpp │ ├── CesiumTextureResource.h │ ├── CesiumTextureUtility.cpp │ ├── CesiumTextureUtility.h │ ├── CesiumTile.cpp │ ├── CesiumTileExcluder.cpp │ ├── CesiumTileExcluderAdapter.cpp │ ├── CesiumTileExcluderAdapter.h │ ├── CesiumTileMapServiceRasterOverlay.cpp │ ├── CesiumTransforms.cpp │ ├── CesiumTransforms.h │ ├── CesiumUrlTemplateRasterOverlay.cpp │ ├── CesiumViewExtension.cpp │ ├── CesiumViewExtension.h │ ├── CesiumWebMapServiceRasterOverlay.cpp │ ├── CesiumWebMapTileServiceRasterOverlay.cpp │ ├── CesiumWgs84Ellipsoid.cpp │ ├── CreateGltfOptions.h │ ├── EncodedFeaturesMetadata.cpp │ ├── EncodedFeaturesMetadata.h │ ├── EncodedMetadataConversions.cpp │ ├── EncodedMetadataConversions.h │ ├── ExtensionImageAssetUnreal.cpp │ ├── ExtensionImageAssetUnreal.h │ ├── GenerateMaterialUtility.cpp │ ├── GenerateMaterialUtility.h │ ├── GeoTransforms.cpp │ ├── GlmLogging.cpp │ ├── GlmLogging.h │ ├── GlobeAwareDefaultPawn.cpp │ ├── LoadGltfResult.h │ ├── ScreenCreditsWidget.cpp │ ├── ScreenCreditsWidget.h │ ├── SpdlogUnrealLoggerSink.cpp │ ├── SpdlogUnrealLoggerSink.h │ ├── Tests │ │ ├── Cesium3DTileset.spec.cpp │ │ ├── CesiumCameraManager.spec.cpp │ │ ├── CesiumFeatureIdAttribute.spec.cpp │ │ ├── CesiumFeatureIdSet.spec.cpp │ │ ├── CesiumFeatureIdTexture.spec.cpp │ │ ├── CesiumGeoreference.spec.cpp │ │ ├── CesiumGlobeAnchor.spec.cpp │ │ ├── CesiumGltfSpecUtility.cpp │ │ ├── CesiumGltfSpecUtility.h │ │ ├── CesiumLoadTestCore.cpp │ │ ├── CesiumLoadTestCore.h │ │ ├── CesiumMetadataPickingBlueprintLibrary.spec.cpp │ │ ├── CesiumMetadataValue.spec.cpp │ │ ├── CesiumOriginShiftComponent.spec.cpp │ │ ├── CesiumPrimitiveFeatures.spec.cpp │ │ ├── CesiumPropertyArray.spec.cpp │ │ ├── CesiumPropertyTable.spec.cpp │ │ ├── CesiumPropertyTableProperty.spec.cpp │ │ ├── CesiumPropertyTexture.spec.cpp │ │ ├── CesiumPropertyTextureProperty.spec.cpp │ │ ├── CesiumSceneGeneration.cpp │ │ ├── CesiumSceneGeneration.h │ │ ├── CesiumTestHelpers.cpp │ │ ├── CesiumTestHelpers.h │ │ ├── CesiumTestPass.h │ │ ├── CesiumTextureUtility.spec.cpp │ │ ├── GeoTransforms.spec.cpp │ │ ├── GlobeAwareDefaultPawn.spec.cpp │ │ ├── GooglePhotorealistic3dTilesLoad.perf.cpp │ │ ├── GoogleTilesTestSetup.cpp │ │ ├── GoogleTilesTestSetup.h │ │ ├── SampleHeightCallbackReceiver.h │ │ ├── SampleHeightMostDetailed.perf.cpp │ │ ├── SampleHeightMostDetailed.spec.cpp │ │ ├── SampleTilesetsLoad.perf.cpp │ │ ├── SubLevels.spec.cpp │ │ ├── TestRegionPolygons.cpp │ │ ├── TestRegionPolygons.h │ │ ├── TileLoadingSoakTest.cpp │ │ ├── UnrealAssetAccessor.spec.cpp │ │ ├── UnrealMetadataConversions.spec.cpp │ │ └── VecMath.spec.cpp │ ├── UnrealAssetAccessor.cpp │ ├── UnrealMetadataConversions.cpp │ ├── UnrealPrepareRendererResources.cpp │ ├── UnrealPrepareRendererResources.h │ ├── UnrealTaskProcessor.cpp │ ├── VecMath.cpp │ └── VecMath.h │ └── Public │ ├── Cesium3DTileset.h │ ├── Cesium3DTilesetLoadFailureDetails.h │ ├── CesiumBingMapsRasterOverlay.h │ ├── CesiumCamera.h │ ├── CesiumCameraManager.h │ ├── CesiumCartographicPolygon.h │ ├── CesiumCommon.h │ ├── CesiumCreditSystem.h │ ├── CesiumCustomVersion.h │ ├── CesiumDebugColorizeTilesRasterOverlay.h │ ├── CesiumEllipsoid.h │ ├── CesiumEncodedMetadataComponent.h │ ├── CesiumFeatureIdAttribute.h │ ├── CesiumFeatureIdSet.h │ ├── CesiumFeatureIdTexture.h │ ├── CesiumFeaturesMetadataComponent.h │ ├── CesiumFeaturesMetadataDescription.h │ ├── CesiumFlyToComponent.h │ ├── CesiumGeocoderServiceBlueprintLibrary.h │ ├── CesiumGeoreference.h │ ├── CesiumGlobeAnchorComponent.h │ ├── CesiumGlobeAnchoredActorComponent.h │ ├── CesiumIonRasterOverlay.h │ ├── CesiumIonServer.h │ ├── CesiumMetadataEncodingDetails.h │ ├── CesiumMetadataEnum.h │ ├── CesiumMetadataPickingBlueprintLibrary.h │ ├── CesiumMetadataPrimitive.h │ ├── CesiumMetadataPropertyDetails.h │ ├── CesiumMetadataUtilityBlueprintLibrary.h │ ├── CesiumMetadataValue.h │ ├── CesiumMetadataValueType.h │ ├── CesiumModelMetadata.h │ ├── CesiumOriginShiftComponent.h │ ├── CesiumPointCloudShading.h │ ├── CesiumPolygonRasterOverlay.h │ ├── CesiumPrimitiveFeatures.h │ ├── CesiumPrimitiveMetadata.h │ ├── CesiumPropertyArray.h │ ├── CesiumPropertyArrayBlueprintLibrary.h │ ├── CesiumPropertyTable.h │ ├── CesiumPropertyTableProperty.h │ ├── CesiumPropertyTexture.h │ ├── CesiumPropertyTextureProperty.h │ ├── CesiumRasterOverlay.h │ ├── CesiumRasterOverlayLoadFailureDetails.h │ ├── CesiumRuntime.h │ ├── CesiumRuntimeSettings.h │ ├── CesiumSampleHeightMostDetailedAsyncAction.h │ ├── CesiumSampleHeightResult.h │ ├── CesiumSubLevel.h │ ├── CesiumSubLevelComponent.h │ ├── CesiumSubLevelSwitcherComponent.h │ ├── CesiumSunSky.h │ ├── CesiumTile.h │ ├── CesiumTileExcluder.h │ ├── CesiumTileMapServiceRasterOverlay.h │ ├── CesiumUrlTemplateRasterOverlay.h │ ├── CesiumWebMapServiceRasterOverlay.h │ ├── CesiumWebMapTileServiceRasterOverlay.h │ ├── CesiumWgs84Ellipsoid.h │ ├── CustomDepthParameters.h │ ├── GeoTransforms.h │ ├── GlobeAwareDefaultPawn.h │ ├── OriginPlacement.h │ ├── UnrealAssetAccessor.h │ ├── UnrealMetadataConversions.h │ └── UnrealTaskProcessor.h ├── TestsProject ├── Config │ ├── DefaultEditor.ini │ ├── DefaultEngine.ini │ ├── DefaultGame.ini │ └── HoloLens │ │ └── HoloLensEngine.ini ├── Content │ └── NewMap.umap └── TestsProject.uproject ├── ThirdParty.json ├── extern ├── .gitignore ├── .vscode │ └── settings.json ├── CMakeLists.txt ├── CMakeSettings.json ├── build-helper.sh ├── include │ └── CesiumUtility │ │ └── Tracing.h ├── unreal-android-toolchain.cmake ├── unreal-ios-toolchain.cmake ├── unreal-linux-from-windows-toolchain.cmake ├── unreal-linux-toolchain.cmake ├── unreal-mac-toolchain.cmake └── vcpkg-overlays │ ├── abseil │ ├── portfile.cmake │ └── vcpkg.json │ ├── ada-url │ ├── no-cpm.patch │ ├── portfile.cmake │ └── vcpkg.json │ ├── ktx │ ├── 0001-Use-vcpkg-zstd.patch │ ├── 0002-Fix-versioning.patch │ ├── 0003-mkversion.patch │ ├── 0004-quirks.patch │ ├── 0005-no-vendored-libs.patch │ ├── 0006-fix-ios-install.patch │ ├── CESIUM-0001-do-not-define-_DEBUG.patch │ ├── portfile.cmake │ └── vcpkg.json │ ├── openssl │ ├── libcrypto.pc.in │ ├── libssl.pc.in │ ├── openssl.pc.in │ ├── portfile.cmake │ └── vcpkg.json │ ├── sqlite3 │ ├── CMakeLists.txt │ ├── add-config-include.patch │ ├── fix-arm-uwp.patch │ ├── portfile.cmake │ ├── sqlite3-config.in.cmake │ ├── sqlite3-vcpkg-config.h.in │ ├── sqlite3.pc.in │ ├── usage │ └── vcpkg.json │ ├── stb │ ├── FindStb.cmake │ ├── portfile.cmake │ ├── usage │ ├── vcpkg-cmake-wrapper.cmake │ └── vcpkg.json │ └── triplets │ ├── arm64-android-unreal.cmake │ ├── arm64-ios-unreal.cmake │ ├── arm64-osx-unreal.cmake │ ├── shared │ ├── common.cmake │ └── osx-common.cmake │ ├── x64-linux-unreal.cmake │ ├── x64-osx-unreal.cmake │ └── x64-windows-unreal.cmake ├── package-lock.json ├── package.json └── travis ├── travis-get-android-ndk.sh ├── travis-get-ue-427.sh ├── travis-get-ue-500p2.sh └── travis-get-ue-linux-crosscompile-toolchain-427.sh /.clang-format: -------------------------------------------------------------------------------- 1 | BasedOnStyle: LLVM 2 | AlignAfterOpenBracket: AlwaysBreak 3 | BinPackArguments: false 4 | BinPackParameters: false 5 | PointerAlignment: Left 6 | ConstructorInitializerAllOnOneLineOrOnePerLine: true 7 | AllowAllParametersOfDeclarationOnNextLine: false 8 | AllowAllArgumentsOnNextLine: false 9 | # Rules for Unreal Engine Pregenerated Headers 10 | IncludeCategories: 11 | - Regex: '.*\.generated\.h' 12 | Priority: 100 13 | - Regex: '.*(PCH).*' 14 | Priority: -1 15 | # Don't break string literals - Unreal isn't good at handling them 16 | BreakStringLiterals: false 17 | -------------------------------------------------------------------------------- /.concierge/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "contributorsFromGitHub": "true", 3 | "maxDaysSinceUpdate": 30 4 | } 5 | -------------------------------------------------------------------------------- /.concierge/templates/pullRequestOpened.hbs: -------------------------------------------------------------------------------- 1 | {{#if askAboutContributors}} 2 | Thank you so much for the pull request @{{ userName }}! I noticed this is your first pull request and I wanted to say welcome to the Cesium community! 3 | 4 | The [Pull Request Guidelines](https://github.com/CesiumGS/cesium/blob/main/CONTRIBUTING.md#pull-request-guidelines) is a handy reference for making sure your PR gets accepted quickly, so make sure to skim that. 5 | {{else}} 6 | Thanks for the pull request @{{ userName }}! 7 | {{/if}} 8 | 9 | {{#if claEnabled}} 10 | {{#if errorCla}} 11 | * :grey_exclamation: There was an error checking the CLA! If this is your first contribution, please send in a [Contributor License Agreement](https://github.com/CesiumGS/cesium/blob/master/CONTRIBUTING.md#contributor-license-agreement-cla). 12 | * Maintainers, this was the error I ran into while attempting to process the CLA check. Please resolve it to continue CLA checking. 13 | * You'll need to [manually check for a submitted CLA](https://github.com/CesiumGS/cesium/blob/master/Documentation/Contributors/CLAs/README.md) 14 | ``` 15 | {{ errorCla }} 16 | ``` 17 | {{else}} 18 | {{#if askForCla}} 19 | * :x: Missing CLA. 20 | * Please send in a [Contributor License Agreement](https://github.com/CesiumGS/cesium/blob/master/CONTRIBUTING.md#contributor-license-agreement-cla) (CLA) and comment back here to let us know to check this! 21 | * Maintainers, [here's how to check](https://github.com/CesiumGS/cesium/blob/master/Documentation/Contributors/CLAs/README.md) for a submitted CLA. 22 | {{else}} 23 | * :heavy_check_mark: Signed CLA found. 24 | {{/if}} 25 | {{/if}} 26 | {{/if}} 27 | {{#if askAboutChanges}} 28 | * :grey_question: [CHANGES.md]({{ repository_url }}/blob/{{ headBranch }}/CHANGES.md) was not updated. 29 | * If this change updates the public API in any way, please add a bullet point to `CHANGES.md`. 30 | {{/if}} 31 | 32 | Reviewers, don't forget to make sure that: 33 | 34 | - [ ] [Cesium for Unreal Samples](https://github.com/CesiumGS/cesium-unreal-samples) works. 35 | -------------------------------------------------------------------------------- /.concierge/templates/signature.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | ident_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto-detect text files and store them with LF (not CRLF) in the repo. 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Ask a question 4 | url: https://community.cesium.com/c/cesium-for-unreal/10 5 | about: Please use the community forum for general questions. The Cesium team and community actively monitor it and love to see what people are working on! We reserve GitHub for confirmed bug reports and feature requests. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yaml: -------------------------------------------------------------------------------- 1 | name: Request a feature 2 | description: New ideas & improvements to Cesium for Unreal are always welcome. 3 | labels: ["needs triage", "enhancement"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | Thanks for helping us improve Cesium for Unreal! 9 | 10 | When suggesting an idea, give examples of the intended use case. Features that benefit the wider community are more likely to be prioritized. 11 | - type: textarea 12 | id: new-feature 13 | attributes: 14 | label: Feature 15 | validations: 16 | required: true 17 | - type: markdown 18 | attributes: 19 | value: | 20 | The best way to get your ideas into Cesium for Unreal is to help us! We love contributions and are always happy to be provide feedback and advice. Check out the contributor guide to get started: [CONTRIBUTING.md](https://github.com/CesiumGS/cesium-unreal/tree/main/CONTRIBUTING.md) -------------------------------------------------------------------------------- /.github/actions/install-unreal-linux/action.yml: -------------------------------------------------------------------------------- 1 | name: Install Unreal Engine 2 | inputs: 3 | unreal-engine-zip: 4 | required: true 5 | type: string 6 | unreal-program-name: 7 | required: true 8 | type: string 9 | aws-access-key-id: 10 | required: true 11 | type: string 12 | aws-secret-access-key: 13 | required: true 14 | type: string 15 | runs: 16 | using: composite 17 | steps: 18 | - name: Download Unreal Engine 19 | env: 20 | AWS_REGION: us-east-1 21 | AWS_ACCESS_KEY_ID: ${{ inputs.aws-access-key-id }} 22 | AWS_SECRET_ACCESS_KEY: ${{ inputs.aws-secret-access-key }} 23 | shell: bash 24 | run: | 25 | aws s3 cp ${{ inputs.unreal-engine-zip }} ./ue.zip --no-progress 26 | - name: Unzip Unreal Engine 27 | shell: bash 28 | run: | 29 | mkdir -p /mnt/work/${{ inputs.unreal-program-name }} 30 | # Selectively extract files in order to save disk space 31 | unzip -q ./ue.zip "Engine/*" -d /mnt/work/${{ inputs.unreal-program-name }} -x "Engine/Binaries/Android/*" "Engine/Binaries/LinuxArm64/*" "Engine/Intermediate/Build/Android/*" "Engine/Intermediate/Build/LinuxArm64/*" 32 | rm ./ue.zip 33 | -------------------------------------------------------------------------------- /.github/actions/install-unreal-macos/action.yml: -------------------------------------------------------------------------------- 1 | name: Install Unreal Engine 2 | inputs: 3 | unreal-engine-zip: 4 | required: true 5 | type: string 6 | aws-access-key-id: 7 | required: true 8 | type: string 9 | aws-secret-access-key: 10 | required: true 11 | type: string 12 | unreal-program-name: 13 | required: true 14 | type: string 15 | runs: 16 | using: composite 17 | steps: 18 | - name: Download Unreal Engine 19 | env: 20 | AWS_REGION: us-east-1 21 | AWS_ACCESS_KEY_ID: ${{ inputs.aws-access-key-id }} 22 | AWS_SECRET_ACCESS_KEY: ${{ inputs.aws-secret-access-key }} 23 | shell: bash 24 | run: | 25 | df -h 26 | aws s3 cp ${{ inputs.unreal-engine-zip }} ./ue.zip --no-progress 27 | - name: Unzip Unreal Engine 28 | shell: bash 29 | run: | 30 | df -h 31 | unzip -q ue.zip "${{ inputs.unreal-program-name }}/Engine/*" -d $HOME -x $(cat "$GITHUB_WORKSPACE/.github/actions/install-unreal-macos/exclude-from-unzip.lst") 32 | df -h 33 | rm ue.zip 34 | df -h 35 | -------------------------------------------------------------------------------- /.github/actions/install-unreal-macos/exclude-from-unzip.lst: -------------------------------------------------------------------------------- 1 | UE_5.3/Engine/Binaries/Mac/LiveLinkHub-Mac-Shipping.app/* 2 | UE_5.3/Engine/Binaries/Mac/UnrealGame-Mac-DebugGame.app/* 3 | UE_5.3/Engine/Binaries/Mac/UnrealGame.app/* 4 | UE_5.3/Engine/Binaries/Mac/UnrealGame-Mac-Shipping.app/* 5 | UE_5.3/Engine/Binaries/Mac/Android/* 6 | UE_5.3/Engine/Binaries/Mac/UnrealGame-Mac-DebugGame 7 | UE_5.3/Engine/Binaries/Mac/UnrealGame 8 | UE_5.3/Engine/Binaries/Mac/UnrealGame-Mac-Shipping 9 | UE_5.3/Engine/Binaries/Mac/*.dSYM 10 | UE_5.3/Engine/Plugins/Experimental/NNERuntimeIREE/* 11 | UE_5.3/Engine/Plugins/Experimental/Avalanche/* 12 | UE_5.4/Engine/Binaries/Mac/LiveLinkHub-Mac-Shipping.app/* 13 | UE_5.4/Engine/Binaries/Mac/UnrealGame-Mac-DebugGame.app/* 14 | UE_5.4/Engine/Binaries/Mac/UnrealGame.app/* 15 | UE_5.4/Engine/Binaries/Mac/UnrealGame-Mac-Shipping.app/* 16 | UE_5.4/Engine/Binaries/Mac/Android/* 17 | UE_5.4/Engine/Binaries/Mac/ZenDashboard.app/* 18 | UE_5.4/Engine/Binaries/Mac/UnrealEditorServices.app/* 19 | UE_5.4/Engine/Binaries/Mac/UnrealEditor-Mac-DebugGame.app/* 20 | UE_5.4/Engine/Binaries/Mac/UnrealGame-Mac-DebugGame 21 | UE_5.4/Engine/Binaries/Mac/UnrealGame 22 | UE_5.4/Engine/Binaries/Mac/UnrealGame-Mac-Shipping 23 | UE_5.4/Engine/Binaries/ThirdParty/DotNet/6.0.302/mac-x64/* 24 | UE_5.4/Engine/Binaries/ThirdParty/CEF3/* 25 | UE_5.4/Engine/Binaries/DotNET/AutomationTool/AutomationScripts/Platforms/Windows/* 26 | UE_5.4/Engine/Intermediate/ScriptModules/Win.Automation.json 27 | UE_5.4/Engine/Binaries/DotNET/AutomationTool/AutomationScripts/Platforms/Android/* 28 | UE_5.4/Engine/Intermediate/ScriptModules/Android.Automation.json 29 | UE_5.4/Engine/Binaries/DotNET/AutomationTool/AutomationScripts/Platforms/Linux/* 30 | UE_5.4/Engine/Intermediate/ScriptModules/Linux.Automation.json 31 | UE_5.4/Engine/Binaries/DotNET/AutomationTool/AutomationScripts/Platforms/TVOS/* 32 | UE_5.4/Engine/Intermediate/ScriptModules/TVOS.Automation.json 33 | UE_5.4/Engine/Binaries/DotNET/AutomationTool/AutomationScripts/Platforms/SteamDeck/* 34 | UE_5.4/Engine/Intermediate/ScriptModules/SteamDeck.Automation.json 35 | UE_5.4/Engine/Binaries/DotNET/Android/* 36 | *.dSYM 37 | -------------------------------------------------------------------------------- /.github/actions/install-unreal-windows/action.yml: -------------------------------------------------------------------------------- 1 | name: Install Unreal Engine 2 | inputs: 3 | unreal-engine-zip: 4 | required: true 5 | type: string 6 | unreal-program-name: 7 | required: true 8 | type: string 9 | aws-access-key-id: 10 | required: true 11 | type: string 12 | aws-secret-access-key: 13 | required: true 14 | type: string 15 | runs: 16 | using: composite 17 | steps: 18 | - name: Download Unreal Engine 19 | env: 20 | AWS_REGION: us-east-1 21 | AWS_ACCESS_KEY_ID: ${{ inputs.aws-access-key-id }} 22 | AWS_SECRET_ACCESS_KEY: ${{ inputs.aws-secret-access-key }} 23 | shell: pwsh 24 | run: | 25 | mkdir -p "D:/Program Files/Epic Games" 26 | aws s3 cp "${{ inputs.unreal-engine-zip }}" "D:/Program Files/Epic Games/UE.zip" --no-progress 27 | - name: Unzip Unreal Engine 28 | shell: pwsh 29 | run: | 30 | 7z x -mmt=8 "D:/Program Files/Epic Games/UE.zip" "-oD:/Program Files/Epic Games/" 31 | del "D:/Program Files/Epic Games/UE.zip" 32 | - name: Install Unreal Engine 33 | shell: pwsh 34 | run: | 35 | Start-Process "D:/Program Files/Epic Games/${{ inputs.unreal-program-name }}/Engine/Extras/Redist/en-us/UEPrereqSetup_x64.exe" -Args "-q" -Wait 36 | -------------------------------------------------------------------------------- /.github/actions/vcpkg-cache/action.yml: -------------------------------------------------------------------------------- 1 | name: Configure vcpkg caching 2 | inputs: 3 | id: 4 | required: true 5 | type: string 6 | runs: 7 | using: composite 8 | steps: 9 | - name: Cache vcpkg artifacts 10 | uses: actions/cache@v4 11 | with: 12 | path: ${{ runner.os == 'Windows' && '/.ezvcpkg' || '~/.ezvcpkg' }} 13 | key: vcpkg-${{ inputs.id }}-${{ hashFiles('extern/vcpkg-overlays/**/vcpkg.json', 'extern/vcpkg-overlays/triplets/**/*', 'extern/*toolchain.cmake') }}-${{ hashFiles('extern/cesium-native/CMakeLists.txt', 'extern/CMakeLists.txt') }} 14 | restore-keys: | 15 | vcpkg-${{ inputs.id }}-${{ hashFiles('extern/vcpkg-overlays/**/vcpkg.json', 'extern/vcpkg-overlays/triplets/**/*', 'extern/*toolchain.cmake') }}- 16 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 9 | 10 | ## Description 11 | 12 | 15 | 16 | 17 | 18 | ## Issue number or link 19 | 20 | 21 | 22 | 23 | 24 | ## Author checklist 25 | 26 | - [ ] I have submitted a [Contributor License Agreement](https://github.com/CesiumGS/community/tree/main/CLAs) (only needed once). 27 | - [ ] I have done a full self-review of my code. 28 | - [ ] I have updated `CHANGES.md` with a short summary of my change (for user-facing changes). 29 | - [ ] I have added or updated unit tests to ensure consistent code coverage as necessary. 30 | - [ ] I have updated the documentation as necessary. 31 | 32 | ## Remaining Tasks 33 | 34 | 35 | 36 | 37 | 38 | ## Testing plan 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /.github/workflows/prod.yml: -------------------------------------------------------------------------------- 1 | name: prod 2 | on: 3 | push: 4 | branches: 5 | - 'cesium.com' 6 | - 'cesium.com-staging' 7 | jobs: 8 | deploy-docs: 9 | runs-on: ubuntu-22.04 10 | env: 11 | AWS_ACCESS_KEY_ID: ${{ secrets.NATIVE_ACCESS_KEY }} 12 | AWS_SECRET_ACCESS_KEY: ${{ secrets.NATIVE_SECRET_KEY }} 13 | AWS_REGION: us-east-1 14 | steps: 15 | - name: Install Doxygen 16 | run: | 17 | cd ~ 18 | wget https://github.com/doxygen/doxygen/releases/download/Release_1_13_2/doxygen-1.13.2.linux.bin.tar.gz 19 | tar xzf doxygen-1.13.2.linux.bin.tar.gz 20 | export PATH=$PWD/doxygen-1.13.2/bin:$PATH 21 | echo "PATH=$PATH" >> "$GITHUB_ENV" 22 | doxygen --version 23 | - name: Check out repository code 24 | uses: actions/checkout@v4 25 | with: 26 | submodules: recursive 27 | - name: Mark documentation official 28 | if: ${{ github.ref_name == 'cesium.com' }} 29 | run: | 30 | sed -i 's/PRE-RELEASE/ /g' Documentation/Doxyfile 31 | - name: Generate Documentation 32 | run: | 33 | npm install 34 | npm run doxygen 35 | - name: Deploy to cesium.com 36 | if: ${{ github.ref_name == 'cesium.com' }} 37 | run: | 38 | aws s3 sync Documentation/Reference/html/ s3://cesium-website/cesium-unreal/ref-doc/ --cache-control "public, max-age=1800" --delete 39 | - name: Deploy to cesium.com staging 40 | if: ${{ github.ref_name == 'cesium.com-staging' }} 41 | run: | 42 | aws s3 sync Documentation/Reference/html/ s3://cesium-website/cesium-unreal/ref-doc-staging/ --cache-control "public, max-age=1800" --delete 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Binaries 3 | Saved 4 | .vs 5 | cesiumunreal.sln 6 | packages 7 | Intermediate 8 | ThirdParty/build 9 | Source/ThirdParty 10 | node_modules 11 | extern/build-helper.sh 12 | Documentation/Reference 13 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "extern/cesium-native"] 2 | path = extern/cesium-native 3 | url = ../cesium-native.git 4 | [submodule "extern/MikkTSpace"] 5 | path = extern/MikkTSpace 6 | url = https://github.com/mmikk/MikkTSpace.git 7 | [submodule "extern/tidy-html5"] 8 | path = extern/tidy-html5 9 | url = https://github.com/htacg/tidy-html5 10 | [submodule "extern/swl-variant"] 11 | path = extern/swl-variant 12 | url = https://github.com/kring/swl-variant.git 13 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct {#code-of-conduct} 2 | 3 | One of Cesium's strengths is our community. Our contributors and users are pushing the 3D geospatial field to amazing new levels. We rely on an open, friendly, inclusive environment to facilitate this. As such, we follow the [Contributor Covenant](https://www.contributor-covenant.org/)'s [Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/) to ensure a harassment-free experience in the Cesium community. Any unacceptable behavior can be confidentially sent to the core team at hello@cesium.com. 4 | 5 | This applies to the main Cesium repo, forum, twitter, and all channels, including all repos in the [CesiumGS](https://github.com/CesiumGS) GitHub organization. -------------------------------------------------------------------------------- /CesiumForUnreal.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 76, 4 | "VersionName": "2.16.1", 5 | "FriendlyName": "Cesium for Unreal", 6 | "Description": "Unlock the 3D geospatial ecosystem in Unreal Engine with real-world 3D content and a high accuracy full-scale WGS84 globe.", 7 | "Category": "Geospatial", 8 | "CreatedBy": "Cesium GS, Inc.", 9 | "CreatedByURL": "https://cesium.com", 10 | "DocsURL": "https://cesium.com/learn/unreal/", 11 | "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/87b0d05800a545d49bf858ef3458c4f7", 12 | "SupportURL": "https://community.cesium.com", 13 | "EngineVersion": "5.3.0", 14 | "CanContainContent": true, 15 | "IsBetaVersion": false, 16 | "IsExperimentalVersion": false, 17 | "Installed": false, 18 | "SupportedTargetPlatforms": [ "Win64", "Mac", "Linux", "Android", "IOS" ], 19 | "Modules": [ 20 | { 21 | "Name": "CesiumRuntime", 22 | "Type": "Runtime", 23 | "LoadingPhase": "PostConfigInit", 24 | "WhitelistPlatforms": [ "Win64", "Mac", "Linux", "Android", "IOS" ] 25 | }, 26 | { 27 | "Name": "CesiumEditor", 28 | "Type": "Editor", 29 | "LoadingPhase": "PostEngineInit", 30 | "WhitelistPlatforms": [ "Win64", "Mac", "Linux", "Android", "IOS" ] 31 | } 32 | ], 33 | "Plugins": [ 34 | { 35 | "Name": "SunPosition", 36 | "Enabled": true 37 | }, 38 | { 39 | "Name": "Water", 40 | "Enabled": true 41 | } 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /Config/Editor.ini: -------------------------------------------------------------------------------- 1 | # UE 5.3+ defaults this to 11, which is not really high enough. 2 | # 100 is probably high enough for reasonable values of Cesium3DTileset's 'MaximumSimultaneousTileLoads property, 3 | # but if you get log messages like "Warning: Reached threaded request limit", and you're sure you want to use 4 | # such a high value, you may need to increase this. 5 | [HTTP.HttpThread] 6 | RunningThreadedRequestLimitEditor=100 7 | -------------------------------------------------------------------------------- /Config/FilterPlugin.ini: -------------------------------------------------------------------------------- 1 | [FilterPlugin] 2 | /Config/FilterPlugin.ini 3 | /Config/Engine.ini 4 | /Config/Editor.ini 5 | /LICENSE 6 | /README.md 7 | /ThirdParty.json 8 | /CHANGES.md 9 | /Shaders/* 10 | -------------------------------------------------------------------------------- /Content/Cesium-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium-128x128.png -------------------------------------------------------------------------------- /Content/Cesium-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium-64x64.png -------------------------------------------------------------------------------- /Content/Cesium-for-Unreal-Logo-BlackH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium-for-Unreal-Logo-BlackH.png -------------------------------------------------------------------------------- /Content/Cesium-for-Unreal-Logo-Micro-BlackV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium-for-Unreal-Logo-Micro-BlackV.png -------------------------------------------------------------------------------- /Content/Cesium-for-Unreal-Logo-WhiteBGH.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium-for-Unreal-Logo-WhiteBGH.jpg -------------------------------------------------------------------------------- /Content/Cesium-for-Unreal-Logo-WhiteH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium-for-Unreal-Logo-WhiteH.png -------------------------------------------------------------------------------- /Content/Cesium-icon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium-icon-16x16.png -------------------------------------------------------------------------------- /Content/CesiumButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/CesiumButton.png -------------------------------------------------------------------------------- /Content/CesiumCreditSystemBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/CesiumCreditSystemBP.uasset -------------------------------------------------------------------------------- /Content/Cesium_for_Unreal_light_color_vertical-height150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium_for_Unreal_light_color_vertical-height150.png -------------------------------------------------------------------------------- /Content/Cesium_for_Unreal_light_color_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Cesium_for_Unreal_light_color_vertical.png -------------------------------------------------------------------------------- /Content/Curve_AltitudeProfile_Float.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Curve_AltitudeProfile_Float.uasset -------------------------------------------------------------------------------- /Content/Curve_MaxAltitude_Float.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Curve_MaxAltitude_Float.uasset -------------------------------------------------------------------------------- /Content/Curve_PawnMovementSpeed_Float.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Curve_PawnMovementSpeed_Float.uasset -------------------------------------------------------------------------------- /Content/Curve_Progress_Float.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Curve_Progress_Float.uasset -------------------------------------------------------------------------------- /Content/Curves/FlyTo/Curve_CesiumFlyToDefaultHeightPercentage_Float.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Curves/FlyTo/Curve_CesiumFlyToDefaultHeightPercentage_Float.uasset -------------------------------------------------------------------------------- /Content/Curves/FlyTo/Curve_CesiumFlyToDefaultMaximumHeightByDistance_Float.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Curves/FlyTo/Curve_CesiumFlyToDefaultMaximumHeightByDistance_Float.uasset -------------------------------------------------------------------------------- /Content/Curves/FlyTo/Curve_CesiumFlyToDefaultProgress_Float.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Curves/FlyTo/Curve_CesiumFlyToDefaultProgress_Float.uasset -------------------------------------------------------------------------------- /Content/DynamicPawn.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/DynamicPawn.uasset -------------------------------------------------------------------------------- /Content/FloatingGameMode.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FloatingGameMode.uasset -------------------------------------------------------------------------------- /Content/FontAwesome/attribution.txt: -------------------------------------------------------------------------------- 1 | The SVG icons in this directory are from the "Font Awesome" project. 2 | They are published under the CC BY 4.0 License. See 3 | https://fontawesome.com/license/free for further information. 4 | 5 | The SVG files have been edited to change the fill color from 6 | the "currentColor" to "#cccccc". 7 | For "sync-alt-solid.svg", it was set to #ffffff, to be used 8 | on a Cesium-styled button. 9 | For "times-solid.svg" and "check-solid.svg" it was set to #ff0000 and #00ff00 respectively. 10 | -------------------------------------------------------------------------------- /Content/FontAwesome/book-reader-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/book-reader-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/book-reader-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Content/FontAwesome/check-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/check-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/check-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Content/FontAwesome/cloud-upload-alt-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/cloud-upload-alt-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/cloud-upload-alt-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Content/FontAwesome/hands-helping-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/hands-helping-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/hands-helping-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Content/FontAwesome/key-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/key-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/key-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Content/FontAwesome/plus-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/plus-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/plus-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Content/FontAwesome/sign-out-alt-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/sign-out-alt-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/sign-out-alt-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Content/FontAwesome/sync-alt-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/sync-alt-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/sync-alt-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Content/FontAwesome/times-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/FontAwesome/times-solid.png -------------------------------------------------------------------------------- /Content/FontAwesome/times-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Content/Materials/Blends/MLB_AngleMask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Blends/MLB_AngleMask.uasset -------------------------------------------------------------------------------- /Content/Materials/Blends/MLB_CesiumAlphaBlendBaseColor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Blends/MLB_CesiumAlphaBlendBaseColor.uasset -------------------------------------------------------------------------------- /Content/Materials/Blends/MLB_CesiumClipping.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Blends/MLB_CesiumClipping.uasset -------------------------------------------------------------------------------- /Content/Materials/Blends/MLB_CesiumSimpleWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Blends/MLB_CesiumSimpleWater.uasset -------------------------------------------------------------------------------- /Content/Materials/Blends/MLB_DitherFade.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Blends/MLB_DitherFade.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/CesiumSimpleWaterSurface.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/CesiumSimpleWaterSurface.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/CesiumWaterTextureWaves.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/CesiumWaterTextureWaves.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterAbsorption.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterAbsorption.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterAttributes.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterAttributes.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterColorScale.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterColorScale.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterMaskSample.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterMaskSample.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterScattering.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterScattering.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterWaves.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/MF_CesiumWaterWaves.uasset -------------------------------------------------------------------------------- /Content/Materials/CesiumWaterMaterialFunctions/ML_CesiumLandWaterBlend.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/CesiumWaterMaterialFunctions/ML_CesiumLandWaterBlend.uasset -------------------------------------------------------------------------------- /Content/Materials/Deprecated/M_DEPRECATED_CesiumDefaultMasked.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Deprecated/M_DEPRECATED_CesiumDefaultMasked.uasset -------------------------------------------------------------------------------- /Content/Materials/Deprecated/M_DEPRECATED_CesiumOverlay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Deprecated/M_DEPRECATED_CesiumOverlay.uasset -------------------------------------------------------------------------------- /Content/Materials/Deprecated/M_DEPRECATED_CesiumOverlayComplexWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Deprecated/M_DEPRECATED_CesiumOverlayComplexWater.uasset -------------------------------------------------------------------------------- /Content/Materials/Deprecated/M_DEPRECATED_CesiumOverlayWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Deprecated/M_DEPRECATED_CesiumOverlayWater.uasset -------------------------------------------------------------------------------- /Content/Materials/Instances/MI_CesiumThreeOverlaysAndClipping.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Instances/MI_CesiumThreeOverlaysAndClipping.uasset -------------------------------------------------------------------------------- /Content/Materials/Instances/MI_CesiumThreeOverlaysAndClippingAndWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Instances/MI_CesiumThreeOverlaysAndClippingAndWater.uasset -------------------------------------------------------------------------------- /Content/Materials/Instances/MI_CesiumThreeOverlaysAndClippingTranslucent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Instances/MI_CesiumThreeOverlaysAndClippingTranslucent.uasset -------------------------------------------------------------------------------- /Content/Materials/Layers/ML_CesiumGltf.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Layers/ML_CesiumGltf.uasset -------------------------------------------------------------------------------- /Content/Materials/Layers/ML_CesiumNothing.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Layers/ML_CesiumNothing.uasset -------------------------------------------------------------------------------- /Content/Materials/Layers/ML_CesiumRVTBaseColorOverlay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Layers/ML_CesiumRVTBaseColorOverlay.uasset -------------------------------------------------------------------------------- /Content/Materials/Layers/ML_CesiumRasterOverlay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Layers/ML_CesiumRasterOverlay.uasset -------------------------------------------------------------------------------- /Content/Materials/Layers/ML_CesiumSimpleWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Layers/ML_CesiumSimpleWater.uasset -------------------------------------------------------------------------------- /Content/Materials/Layers/ML_CesiumWaterMask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Layers/ML_CesiumWaterMask.uasset -------------------------------------------------------------------------------- /Content/Materials/Layers/ML_DitherFade.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/Layers/ML_DitherFade.uasset -------------------------------------------------------------------------------- /Content/Materials/M_CesiumBaseMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/M_CesiumBaseMaterial.uasset -------------------------------------------------------------------------------- /Content/Materials/M_CesiumDefaultMasked.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/M_CesiumDefaultMasked.uasset -------------------------------------------------------------------------------- /Content/Materials/M_CesiumOverlay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/M_CesiumOverlay.uasset -------------------------------------------------------------------------------- /Content/Materials/M_CesiumOverlayComplexWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/M_CesiumOverlayComplexWater.uasset -------------------------------------------------------------------------------- /Content/Materials/M_CesiumOverlayWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/M_CesiumOverlayWater.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumGetFeatureIdsFromAttribute.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumGetFeatureIdsFromAttribute.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumGetFeatureIdsFromInstance.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumGetFeatureIdsFromInstance.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumGetFeatureIdsFromTexture.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumGetFeatureIdsFromTexture.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumGlTFFunction.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumGlTFFunction.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumGltfWithOverlays.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumGltfWithOverlays.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumOverlayWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumOverlayWater.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumPointInBox.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumPointInBox.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumRasterOverlay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumRasterOverlay.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/CesiumSelectTexCoords.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/CesiumSelectTexCoords.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/MF_CesiumSampleRasterOverlay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/MF_CesiumSampleRasterOverlay.uasset -------------------------------------------------------------------------------- /Content/Materials/MaterialFunctions/MF_CesiumTransformTextureCoordinates.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Materials/MaterialFunctions/MF_CesiumTransformTextureCoordinates.uasset -------------------------------------------------------------------------------- /Content/MobileSkySphere.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/MobileSkySphere.uasset -------------------------------------------------------------------------------- /Content/ScreenCredits.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/ScreenCredits.uasset -------------------------------------------------------------------------------- /Content/Tests/Maps/ConeAndCylinder.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Tests/Maps/ConeAndCylinder.umap -------------------------------------------------------------------------------- /Content/Tests/Maps/SingleCube.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Tests/Maps/SingleCube.umap -------------------------------------------------------------------------------- /Content/Tests/Tilesets/BigCube/BigCube.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Tests/Tilesets/BigCube/BigCube.glb -------------------------------------------------------------------------------- /Content/Tests/Tilesets/BigCube/tileset.json: -------------------------------------------------------------------------------- 1 | { 2 | "asset": { "version": "1.0" }, 3 | "root": { 4 | "boundingVolume": { 5 | "sphere": [ 6 | 0,0,0,200000 7 | ] 8 | }, 9 | "children": [], 10 | "content": { "uri": "BigCube.glb" }, 11 | "geometricError": 0.0, 12 | "refine": "REPLACE" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Content/Textures/NoColorTexture.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Textures/NoColorTexture.uasset -------------------------------------------------------------------------------- /Content/Textures/NoMetallicRoughnessTexture.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Textures/NoMetallicRoughnessTexture.uasset -------------------------------------------------------------------------------- /Content/Textures/NoNormalTexture.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Textures/NoNormalTexture.uasset -------------------------------------------------------------------------------- /Content/Textures/RVT_CesiumDefault.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Textures/RVT_CesiumDefault.uasset -------------------------------------------------------------------------------- /Content/Textures/T_Water_TilingNormal_With_Height_02_Softened.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Textures/T_Water_TilingNormal_With_Height_02_Softened.uasset -------------------------------------------------------------------------------- /Content/Textures/transparent1x1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/Textures/transparent1x1.uasset -------------------------------------------------------------------------------- /Content/WBP_Profiling.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/WBP_Profiling.uasset -------------------------------------------------------------------------------- /Content/WBP_TimeOfDay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/WBP_TimeOfDay.uasset -------------------------------------------------------------------------------- /Content/WGS84.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Content/WGS84.uasset -------------------------------------------------------------------------------- /Documentation/Diagrams/classes-for-3d-tiles.mmd: -------------------------------------------------------------------------------- 1 | --- 2 | config: 3 | class: 4 | hideEmptyMembersBox: true 5 | --- 6 | classDiagram 7 | direction TB 8 | AActor <|-- ACesium3DTileset 9 | USceneComponent <|-- UCesiumGltfComponent 10 | USceneComponent <|-- UStaticMeshComponent 11 | USceneComponent <|-- UInstancedStaticMeshComponent 12 | ICesiumPrimitive <|-- UCesiumGltfInstancedComponent 13 | UStaticMeshComponent <|-- UCesiumGltfPrimitiveComponent 14 | ICesiumPrimitive <|-- UCesiumGltfPrimitiveComponent 15 | UCesiumGltfPrimitiveComponent <|-- UCesiumGltfPointsComponent 16 | UInstancedStaticMeshComponent <|-- UCesiumGltfInstancedComponent 17 | class AActor:::unreal 18 | class USceneComponent:::unreal 19 | class UStaticMeshComponent:::unreal 20 | class UInstancedStaticMeshComponent:::unreal 21 | classDef unreal fill:#FFE9CE, color:#543410 22 | -------------------------------------------------------------------------------- /Documentation/Diagrams/texture-resource-classes.mmd: -------------------------------------------------------------------------------- 1 | --- 2 | config: 3 | class: 4 | hideEmptyMembersBox: true 5 | --- 6 | classDiagram 7 | direction TB 8 | class FCesiumCreateNewTextureResource { 9 | +Pixel Data 10 | +Mip Positions 11 | } 12 | class FCesiumPreCreatedRHITextureResource { 13 | +RHI Texture 14 | } 15 | class FCesiumUseExistingTextureResource { 16 | +Previous FTextureResource to Wrap 17 | } 18 | FTextureResource <|-- FCesiumTextureResource 19 | FCesiumTextureResource <|-- FCesiumCreateNewTextureResource 20 | FCesiumTextureResource <|-- FCesiumPreCreatedRHITextureResource 21 | FCesiumTextureResource <|-- FCesiumUseExistingTextureResource 22 | class FTextureResource:::unreal 23 | classDef unreal fill:#FFE9CE, color:#543410 24 | -------------------------------------------------------------------------------- /Documentation/Images/activeCulledError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/activeCulledError.png -------------------------------------------------------------------------------- /Documentation/Images/activeUrl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/activeUrl.png -------------------------------------------------------------------------------- /Documentation/Images/advancedDisplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/advancedDisplay.png -------------------------------------------------------------------------------- /Documentation/Images/autoFill.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/autoFill.jpeg -------------------------------------------------------------------------------- /Documentation/Images/autogeneratedMessage.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/autogeneratedMessage.jpeg -------------------------------------------------------------------------------- /Documentation/Images/breakHitResult.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/breakHitResult.jpeg -------------------------------------------------------------------------------- /Documentation/Images/cesiumFeaturesMetadataComponent.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/cesiumFeaturesMetadataComponent.jpeg -------------------------------------------------------------------------------- /Documentation/Images/developmentEditorTarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/developmentEditorTarget.png -------------------------------------------------------------------------------- /Documentation/Images/ellipsoidCategory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/ellipsoidCategory.png -------------------------------------------------------------------------------- /Documentation/Images/encodingDetailsExample.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/encodingDetailsExample.jpeg -------------------------------------------------------------------------------- /Documentation/Images/featureIdDescriptionExample.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/featureIdDescriptionExample.jpeg -------------------------------------------------------------------------------- /Documentation/Images/featuresMetadataMaterialLayer.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/featuresMetadataMaterialLayer.jpeg -------------------------------------------------------------------------------- /Documentation/Images/functionalTesting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/functionalTesting.png -------------------------------------------------------------------------------- /Documentation/Images/generateMaterial.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/generateMaterial.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getAsFeatureIdFunctions.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getAsFeatureIdFunctions.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getFeatureIdForVertex.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getFeatureIdForVertex.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getFeatureIdFromFace.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getFeatureIdFromFace.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getFeatureIdSets.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getFeatureIdSets.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getFeatureIdStatusFunctions.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getFeatureIdStatusFunctions.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getMetadataValuesForFace.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getMetadataValuesForFace.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getMetadataValuesForFaceAsStrings.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getMetadataValuesForFaceAsStrings.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getPropertyTableStatusFunctions.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getPropertyTableStatusFunctions.jpeg -------------------------------------------------------------------------------- /Documentation/Images/getPropertyTableValuesFromHit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getPropertyTableValuesFromHit.png -------------------------------------------------------------------------------- /Documentation/Images/getValue.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/getValue.jpeg -------------------------------------------------------------------------------- /Documentation/Images/inactiveCulledError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/inactiveCulledError.png -------------------------------------------------------------------------------- /Documentation/Images/inactiveUrl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/inactiveUrl.png -------------------------------------------------------------------------------- /Documentation/Images/matchUnrealNaming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/matchUnrealNaming.png -------------------------------------------------------------------------------- /Documentation/Images/materialAllPossibleNodes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialAllPossibleNodes.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialApplyValueTransforms.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialApplyValueTransforms.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialDefaultValue.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialDefaultValue.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialGetFeatureIdsFromAttribute.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialGetFeatureIdsFromAttribute.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialGetFeatureIdsFromImplicit.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialGetFeatureIdsFromImplicit.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialGetFeatureIdsFromTexture.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialGetFeatureIdsFromTexture.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialGetPropertyValues.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialGetPropertyValues.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialNoData.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialNoData.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialNoDataAndDefault.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialNoDataAndDefault.jpeg -------------------------------------------------------------------------------- /Documentation/Images/materialNullFeatureID.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/materialNullFeatureID.jpeg -------------------------------------------------------------------------------- /Documentation/Images/metadataValueType.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/metadataValueType.jpeg -------------------------------------------------------------------------------- /Documentation/Images/profilingAutomationTestWindow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingAutomationTestWindow.jpg -------------------------------------------------------------------------------- /Documentation/Images/profilingBreakpoints.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingBreakpoints.jpg -------------------------------------------------------------------------------- /Documentation/Images/profilingDisableCpuProfiling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingDisableCpuProfiling.png -------------------------------------------------------------------------------- /Documentation/Images/profilingFunctions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingFunctions.png -------------------------------------------------------------------------------- /Documentation/Images/profilingInterpretReport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingInterpretReport.png -------------------------------------------------------------------------------- /Documentation/Images/profilingOpenDetails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingOpenDetails.png -------------------------------------------------------------------------------- /Documentation/Images/profilingOpenTrace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingOpenTrace.png -------------------------------------------------------------------------------- /Documentation/Images/profilingRecordCpuProfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingRecordCpuProfile.png -------------------------------------------------------------------------------- /Documentation/Images/profilingStartAtTimeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingStartAtTimeline.png -------------------------------------------------------------------------------- /Documentation/Images/profilingStbirHorizontalDownsample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingStbirHorizontalDownsample.png -------------------------------------------------------------------------------- /Documentation/Images/profilingUnrealFragmentedUse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingUnrealFragmentedUse.png -------------------------------------------------------------------------------- /Documentation/Images/profilingUnrealInsightsSessionBrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingUnrealInsightsSessionBrowser.png -------------------------------------------------------------------------------- /Documentation/Images/profilingUnrealInterpretReport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingUnrealInterpretReport.png -------------------------------------------------------------------------------- /Documentation/Images/profilingUnrealLowUse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingUnrealLowUse.png -------------------------------------------------------------------------------- /Documentation/Images/profilingUnrealMark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingUnrealMark.png -------------------------------------------------------------------------------- /Documentation/Images/profilingUnrealTimers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingUnrealTimers.png -------------------------------------------------------------------------------- /Documentation/Images/profilingUnrealTracks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/profilingUnrealTracks.png -------------------------------------------------------------------------------- /Documentation/Images/propertyDetailsExample.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/propertyDetailsExample.jpeg -------------------------------------------------------------------------------- /Documentation/Images/propertyTableDescriptionExample.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/propertyTableDescriptionExample.jpeg -------------------------------------------------------------------------------- /Documentation/Images/propertyTablePropertyDescriptionExample.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/propertyTablePropertyDescriptionExample.jpeg -------------------------------------------------------------------------------- /Documentation/Images/startupMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Documentation/Images/startupMap.png -------------------------------------------------------------------------------- /Documentation/Pages/contributor-guide.md: -------------------------------------------------------------------------------- 1 | # Contributor Guide {#contributor-guide} 2 | 3 | This section contains topics that are useful to anyone building Cesium for Unreal themselves, modifying it, or contributing to it. For information about using the plugin, see the [User Guide](#user-guide). 4 | 5 | - \subpage contributing-unreal 6 | - \subpage developer-setup-unreal 7 | - \subpage style-guide 8 | - \subpage api-design 9 | - \subpage performance-profiling 10 | - \subpage release-process 11 | - \subpage three-d-tiles-in-unreal 12 | -------------------------------------------------------------------------------- /Documentation/Pages/performance-profiling.md: -------------------------------------------------------------------------------- 1 | # Performance Profiling {#performance-profiling} 2 | 3 | - \subpage performance-profiling-setup-test 4 | - \subpage performance-profiling-cpu-usage 5 | - \subpage performance-profiling-unreal-insights 6 | -------------------------------------------------------------------------------- /Documentation/Pages/user-guide.md: -------------------------------------------------------------------------------- 1 | # User Guide {#user-guide} 2 | 3 | This section contains topics that are useful to anyone using Cesium for Unreal. See the [Contributor Guide](#contributor-guide) for information about building, modifying, and contributing to the plugin itself. 4 | 5 | > [!note] 6 | > In addition to the topics below, please see the [tutorials](https://cesium.com/learn/unreal/) on the Cesium web site. 7 | 8 | - \subpage using-prerelease 9 | - \subpage v2-upgrade-guide 10 | -------------------------------------------------------------------------------- /Documentation/Source/README.md: -------------------------------------------------------------------------------- 1 | 2 | Template source files for creating a Visual Studio project for Cesium for Unreal. 3 | 4 | See the [Windows Developer Setup](../../Documentation/developer-setup-windows.md) for details. 5 | -------------------------------------------------------------------------------- /Documentation/Source/dev.Target.cs: -------------------------------------------------------------------------------- 1 | using UnrealBuildTool; 2 | using System.Collections.Generic; 3 | 4 | public class devTarget : TargetRules 5 | { 6 | public devTarget( TargetInfo Target) : base(Target) 7 | { 8 | Type = TargetType.Game; 9 | #if UE_5_4_OR_LATER 10 | DefaultBuildSettings = BuildSettingsVersion.V4; 11 | #else 12 | DefaultBuildSettings = BuildSettingsVersion.V2; 13 | #endif 14 | ExtraModuleNames.AddRange( new string[] { "dev" } ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Documentation/Source/dev/dev.Build.cs: -------------------------------------------------------------------------------- 1 | using UnrealBuildTool; 2 | 3 | public class dev : ModuleRules 4 | { 5 | public dev(ReadOnlyTargetRules Target) : base(Target) 6 | { 7 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 8 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 9 | } 10 | } -------------------------------------------------------------------------------- /Documentation/Source/dev/dev.cpp: -------------------------------------------------------------------------------- 1 | #include "Modules/ModuleManager.h" 2 | 3 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, dev, "dev" ); -------------------------------------------------------------------------------- /Documentation/Source/devEditor.Target.cs: -------------------------------------------------------------------------------- 1 | using UnrealBuildTool; 2 | using System.Collections.Generic; 3 | 4 | public class devEditorTarget : TargetRules 5 | { 6 | public devEditorTarget( TargetInfo Target) : base(Target) 7 | { 8 | Type = TargetType.Editor; 9 | #if UE_5_4_OR_LATER 10 | DefaultBuildSettings = BuildSettingsVersion.V4; 11 | #else 12 | DefaultBuildSettings = BuildSettingsVersion.V2; 13 | #endif 14 | ExtraModuleNames.AddRange( new string[] { "dev" } ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Documentation/performance-profiling-setup-test.md: -------------------------------------------------------------------------------- 1 | # Set up a repeatable test {#performance-profiling-setup-test} 2 | 3 | We need an area of code to execute repeatedly, with as many variables locked down as possible. 4 | 5 | ### Set up Unreal 6 | 7 | 1. Open Unreal Editor (UnrealEditor.exe) 8 | 2. Create a blank map (project doesn't matter. Choose an existing one or create a new one) 9 | 3. Go to Edit->Plugins 10 | 4. Search for "Functional Testing plugin". Check it to enable it 11 | ![smaller](Images/functionalTesting.png) 12 | 5. Save all 13 | 6. Set this map as the 'Editor Startup Map' so it loads when starting from Visual Studio 14 | ![smaller 2](Images/startupMap.png) 15 | 16 | ### Build Release Code 17 | 18 | We need to make sure all our C++ code is building in release mode, preferably with debug symbols. 19 | 20 | > This assumes that you have already built your code successfully and are familiar with the concepts from our [developer setup guide](https://github.com/CesiumGS/cesium-unreal/blob/ue5-main/Documentation/developer-setup-windows.md). Although you could profile a debug build, it is typically more useful to build in release, since this is how a game is usually packaged. 21 | 22 | 1. If building the cesium-native library, make sure you are using a release configuration derived from "RelWithDebInfo" 23 | 2. Open your Unreal project's Visual Studio solution (.sln). This example uses the solution generated from [cesium-unreal-samples](https://github.com/CesiumGS/cesium-unreal-samples) 24 | 3. Choose "Development Editor" 25 | 26 | ![](Images/developmentEditorTarget.png) 27 | 28 | 4. From the menu, choose Build -> Build Solution 29 | -------------------------------------------------------------------------------- /Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/Resources/Icon128.png -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/Cesium3DTilesetCustomization.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 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 | FName FCesium3DTilesetCustomization::RegisteredLayoutName; 10 | 11 | void FCesium3DTilesetCustomization::Register( 12 | FPropertyEditorModule& PropertyEditorModule) { 13 | 14 | RegisteredLayoutName = ACesium3DTileset::StaticClass()->GetFName(); 15 | 16 | PropertyEditorModule.RegisterCustomClassLayout( 17 | RegisteredLayoutName, 18 | FOnGetDetailCustomizationInstance::CreateStatic( 19 | &FCesium3DTilesetCustomization::MakeInstance)); 20 | } 21 | 22 | void FCesium3DTilesetCustomization::Unregister( 23 | FPropertyEditorModule& PropertyEditorModule) { 24 | PropertyEditorModule.UnregisterCustomClassLayout(RegisteredLayoutName); 25 | } 26 | 27 | TSharedRef FCesium3DTilesetCustomization::MakeInstance() { 28 | return MakeShareable(new FCesium3DTilesetCustomization); 29 | } 30 | 31 | void FCesium3DTilesetCustomization::CustomizeDetails( 32 | IDetailLayoutBuilder& DetailBuilder) { 33 | DetailBuilder.SortCategories(&SortCustomDetailsCategories); 34 | } 35 | 36 | void FCesium3DTilesetCustomization::SortCustomDetailsCategories( 37 | const TMap& AllCategoryMap) { 38 | (*AllCategoryMap.Find(FName("TransformCommon")))->SetSortOrder(0); 39 | (*AllCategoryMap.Find(FName("Cesium")))->SetSortOrder(1); 40 | (*AllCategoryMap.Find(FName("Rendering")))->SetSortOrder(2); 41 | } 42 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/Cesium3DTilesetCustomization.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "IDetailCustomization.h" 6 | #include "PropertyEditorModule.h" 7 | 8 | class IDetailCategoryBuilder; 9 | 10 | /** 11 | * An implementation of the IDetailCustomization interface that customizes 12 | * the Details View of a Cesium3DTileset. It is registered in 13 | * FCesiumEditorModule::StartupModule. 14 | */ 15 | class FCesium3DTilesetCustomization : public IDetailCustomization { 16 | public: 17 | virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; 18 | 19 | static void Register(FPropertyEditorModule& PropertyEditorModule); 20 | static void Unregister(FPropertyEditorModule& PropertyEditorModule); 21 | 22 | static TSharedRef MakeInstance(); 23 | 24 | static void SortCustomDetailsCategories( 25 | const TMap& AllCategoryMap); 26 | 27 | static FName RegisteredLayoutName; 28 | }; 29 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumCommands.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumCommands.h" 4 | #include "CesiumEditor.h" 5 | 6 | #define LOCTEXT_NAMESPACE "CesiumCommands" 7 | 8 | FCesiumCommands::FCesiumCommands() 9 | : TCommands( 10 | "Cesium.Common", 11 | LOCTEXT("Common", "Common"), 12 | NAME_None, 13 | FCesiumEditorModule::GetStyleSetName()) {} 14 | 15 | void FCesiumCommands::RegisterCommands() { 16 | UI_COMMAND( 17 | AddFromIon, 18 | "Add", 19 | "Add a tileset from Cesium ion to this level", 20 | EUserInterfaceActionType::Button, 21 | FInputChord()); 22 | UI_COMMAND( 23 | UploadToIon, 24 | "Upload", 25 | "Upload a tileset to Cesium ion to process it for efficient streaming to Cesium for Unreal", 26 | EUserInterfaceActionType::Button, 27 | FInputChord()); 28 | UI_COMMAND( 29 | SignOut, 30 | "Sign Out", 31 | "Sign out of Cesium ion", 32 | EUserInterfaceActionType::Button, 33 | FInputChord()); 34 | UI_COMMAND( 35 | OpenDocumentation, 36 | "Learn", 37 | "Open Cesium for Unreal tutorials and learning resources", 38 | EUserInterfaceActionType::Button, 39 | FInputChord()); 40 | UI_COMMAND( 41 | OpenSupport, 42 | "Help", 43 | "Search for existing questions or ask a new question on the Cesium Community Forum", 44 | EUserInterfaceActionType::Button, 45 | FInputChord()); 46 | UI_COMMAND( 47 | OpenTokenSelector, 48 | "Token", 49 | "Select or create a token to use to access Cesium ion assets. " 50 | "Not used for ion servers that don't need token authentication.", 51 | EUserInterfaceActionType::Button, 52 | FInputChord()); 53 | 54 | UI_COMMAND( 55 | OpenCesiumPanel, 56 | "Cesium", 57 | "Open the Cesium panel", 58 | EUserInterfaceActionType::Button, 59 | FInputChord()); 60 | } 61 | 62 | #undef LOCTEXT_NAMESPACE 63 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumCommands.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Framework/Commands/Commands.h" 7 | 8 | class FCesiumCommands : public TCommands { 9 | public: 10 | FCesiumCommands(); 11 | 12 | TSharedPtr AddFromIon; 13 | TSharedPtr UploadToIon; 14 | TSharedPtr SignOut; 15 | TSharedPtr OpenDocumentation; 16 | TSharedPtr OpenSupport; 17 | TSharedPtr OpenTokenSelector; 18 | 19 | TSharedPtr OpenCesiumPanel; 20 | 21 | virtual void RegisterCommands() override; 22 | }; 23 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumEditorReparentHandler.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumEditorReparentHandler.h" 4 | #include "Cesium3DTileset.h" 5 | #include "CesiumGlobeAnchorComponent.h" 6 | #include "CesiumSubLevelComponent.h" 7 | #include "Engine/Engine.h" 8 | 9 | CesiumEditorReparentHandler::CesiumEditorReparentHandler() { 10 | if (GEngine) { 11 | this->_subscription = GEngine->OnLevelActorAttached().AddRaw( 12 | this, 13 | &CesiumEditorReparentHandler::OnLevelActorAttached); 14 | } 15 | } 16 | 17 | CesiumEditorReparentHandler::~CesiumEditorReparentHandler() { 18 | if (GEngine) { 19 | GEngine->OnLevelActorAttached().Remove(this->_subscription); 20 | this->_subscription.Reset(); 21 | } 22 | } 23 | 24 | void CesiumEditorReparentHandler::OnLevelActorAttached( 25 | AActor* Actor, 26 | const AActor* Parent) { 27 | ACesium3DTileset* Tileset = Cast(Actor); 28 | if (IsValid(Tileset)) { 29 | Tileset->InvalidateResolvedGeoreference(); 30 | } 31 | 32 | UCesiumGlobeAnchorComponent* GlobeAnchor = 33 | Actor->FindComponentByClass(); 34 | if (IsValid(GlobeAnchor)) { 35 | GlobeAnchor->ResolveGeoreference(true); 36 | } 37 | 38 | UCesiumSubLevelComponent* SubLevel = 39 | Actor->FindComponentByClass(); 40 | if (IsValid(SubLevel)) { 41 | SubLevel->ResolveGeoreference(true); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumEditorReparentHandler.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Delegates/IDelegateInstance.h" 6 | 7 | class AActor; 8 | 9 | /** 10 | * Detects when Actors are reparented in the Editor by subscribing to 11 | * GEngine::OnLevelActorAttached and handling it appropriately. For example, 12 | * when a Cesium3DTileset's parent changes, we need to re-resolve its 13 | * CesiumGeoreference. 14 | */ 15 | class CesiumEditorReparentHandler { 16 | public: 17 | CesiumEditorReparentHandler(); 18 | ~CesiumEditorReparentHandler(); 19 | 20 | private: 21 | void OnLevelActorAttached(AActor* Actor, const AActor* Parent); 22 | 23 | FDelegateHandle _subscription; 24 | }; 25 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumEditorSettings.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumEditorSettings.h" 4 | #include "CesiumSourceControl.h" 5 | 6 | UCesiumEditorSettings::UCesiumEditorSettings( 7 | const FObjectInitializer& ObjectInitializer) 8 | : Super(ObjectInitializer) {} 9 | 10 | void UCesiumEditorSettings::Save() { 11 | CesiumSourceControl::PromptToCheckoutConfigFile( 12 | this->GetClass()->GetConfigName()); 13 | this->Modify(); 14 | this->SaveConfig(); 15 | } 16 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumEditorSettings.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumIonServer.h" 6 | #include "CoreMinimal.h" 7 | #include "Engine/DeveloperSettings.h" 8 | #include "CesiumEditorSettings.generated.h" 9 | 10 | /** 11 | * Stores Editor settings for the Cesium plugin. 12 | */ 13 | UCLASS(Config = EditorPerProjectUserSettings, meta = (DisplayName = "Cesium")) 14 | class UCesiumEditorSettings : public UDeveloperSettings { 15 | GENERATED_UCLASS_BODY() 16 | 17 | public: 18 | UPROPERTY( 19 | Config, 20 | meta = 21 | (DeprecatedProperty, 22 | DeprecationMessage = "Set UserAccessTokenMap instead.")) 23 | FString UserAccessToken_DEPRECATED; 24 | 25 | /** 26 | * The Cesium ion server that is currently selected in the user interface. 27 | */ 28 | UPROPERTY( 29 | Config, 30 | EditAnywhere, 31 | Category = "Cesium ion", 32 | meta = (DisplayName = "Current Cesium ion Server")) 33 | TSoftObjectPtr CurrentCesiumIonServer; 34 | 35 | UPROPERTY( 36 | Config, 37 | EditAnywhere, 38 | Category = "Cesium ion", 39 | meta = (DisplayName = "Token Map")) 40 | TMap, FString> UserAccessTokenMap; 41 | 42 | void Save(); 43 | }; 44 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumEditorSubLevelMutex.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Delegates/IDelegateInstance.h" 6 | 7 | class UActorComponent; 8 | 9 | /** 10 | * Ensures that only a single ALevelInstance with a UCesiumSubLevelComponent is 11 | * visible in the Editor at any given time. It works by subscribing to the 12 | * static MarkRenderStateDirtyEvent on UActorComponent, which is raised when the 13 | * user toggles the visibility of an Actor in the Editor. 14 | */ 15 | class CesiumEditorSubLevelMutex { 16 | public: 17 | CesiumEditorSubLevelMutex(); 18 | ~CesiumEditorSubLevelMutex(); 19 | 20 | private: 21 | void OnMarkRenderStateDirty(UActorComponent& component); 22 | 23 | FDelegateHandle _subscription; 24 | }; 25 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumGeoreferenceCustomization.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumDegreesMinutesSecondsEditor.h" 6 | #include "IDetailCustomization.h" 7 | 8 | /** 9 | * An implementation of the IDetailCustomization interface that customizes 10 | * the Details View of a CesiumGeoreference. It is registered in 11 | * FCesiumEditorModule::StartupModule. 12 | */ 13 | class FCesiumGeoreferenceCustomization : public IDetailCustomization { 14 | public: 15 | virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; 16 | 17 | static void Register(FPropertyEditorModule& PropertyEditorModule); 18 | static void Unregister(FPropertyEditorModule& PropertyEditorModule); 19 | 20 | static TSharedRef MakeInstance(); 21 | 22 | private: 23 | TSharedPtr LongitudeEditor; 24 | TSharedPtr LatitudeEditor; 25 | 26 | static FName RegisteredLayoutName; 27 | }; 28 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumIonServerDisplay.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumIonServerDisplay.h" 4 | #include "CesiumEditor.h" 5 | #include "CesiumIonServer.h" 6 | #include "Editor.h" 7 | #include "PropertyCustomizationHelpers.h" 8 | #include "Widgets/Input/SEditableTextBox.h" 9 | #include "Widgets/Text/STextBlock.h" 10 | 11 | void CesiumIonServerDisplay::Construct(const FArguments& InArgs) { 12 | UCesiumIonServer* pServer = InArgs._Server; 13 | 14 | ChildSlot 15 | [SNew(SHorizontalBox) + 16 | SHorizontalBox::Slot() 17 | .AutoWidth() 18 | .VAlign(EVerticalAlignment::VAlign_Center) 19 | .Padding(5.0f)[SNew(STextBlock) 20 | .Text(FText::FromString("Cesium ion Server:"))] + 21 | SHorizontalBox::Slot() 22 | .AutoWidth() 23 | .VAlign(EVerticalAlignment::VAlign_Center) 24 | .Padding(5.0f)[SNew(SEditableTextBox) 25 | .IsEnabled(false) 26 | .Padding(5.0f) 27 | .Text(FText::FromString(pServer->DisplayName))] + 28 | SHorizontalBox::Slot() 29 | .AutoWidth() 30 | .VAlign(EVerticalAlignment::VAlign_Center) 31 | .Padding(5.0f)[PropertyCustomizationHelpers::MakeBrowseButton( 32 | FSimpleDelegate:: 33 | CreateSP(this, &CesiumIonServerDisplay::OnBrowseForServer), 34 | FText::FromString( 35 | "Show this Cesium ion Server in the Content Browser."), 36 | true, 37 | false)]]; 38 | } 39 | 40 | void CesiumIonServerDisplay::OnBrowseForServer() { 41 | TArray Objects; 42 | Objects.Add(FCesiumEditorModule::serverManager().GetCurrentServer()); 43 | GEditor->SyncBrowserToObjects(Objects); 44 | } 45 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumIonServerDisplay.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Widgets/SCompoundWidget.h" 6 | 7 | class FArguments; 8 | class UCesiumIonServer; 9 | 10 | class CesiumIonServerDisplay : public SCompoundWidget { 11 | SLATE_BEGIN_ARGS(CesiumIonServerDisplay) {} 12 | SLATE_ARGUMENT(UCesiumIonServer*, Server) 13 | SLATE_END_ARGS() 14 | 15 | void Construct(const FArguments& InArgs); 16 | 17 | private: 18 | void OnBrowseForServer(); 19 | }; 20 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumIonServerManager.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "UObject/WeakObjectPtrTemplates.h" 6 | #include 7 | 8 | class UCesiumIonServer; 9 | class CesiumIonSession; 10 | 11 | DECLARE_MULTICAST_DELEGATE(FCesiumIonServerChanged); 12 | 13 | class CESIUMEDITOR_API CesiumIonServerManager { 14 | public: 15 | CesiumIonServerManager() noexcept; 16 | ~CesiumIonServerManager() noexcept; 17 | 18 | void Initialize(); 19 | void ResumeAll(); 20 | 21 | std::shared_ptr GetSession(UCesiumIonServer* Server); 22 | std::shared_ptr GetCurrentSession(); 23 | 24 | const TArray>& GetServerList(); 25 | void RefreshServerList(); 26 | 27 | UCesiumIonServer* GetCurrentServer(); 28 | void SetCurrentServer(UCesiumIonServer* pServer); 29 | 30 | FCesiumIonServerChanged ServerListChanged; 31 | FCesiumIonServerChanged CurrentServerChanged; 32 | 33 | private: 34 | void OnAssetAdded(const FAssetData& asset); 35 | void OnAssetRemoved(const FAssetData& asset); 36 | void OnAssetUpdated(const FAssetData& asset); 37 | 38 | struct ServerSession { 39 | TWeakObjectPtr Server; 40 | std::shared_ptr Session; 41 | }; 42 | 43 | TArray _sessions; 44 | TArray> _servers; 45 | }; 46 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumIonServerSelector.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Widgets/Input/SComboBox.h" 6 | #include "Widgets/SCompoundWidget.h" 7 | 8 | class FArguments; 9 | class UCesiumIonServer; 10 | 11 | class CesiumIonServerSelector : public SCompoundWidget { 12 | SLATE_BEGIN_ARGS(CesiumIonServerSelector) {} 13 | SLATE_END_ARGS() 14 | 15 | CesiumIonServerSelector(); 16 | virtual ~CesiumIonServerSelector(); 17 | 18 | void Construct(const FArguments& InArgs); 19 | 20 | private: 21 | TSharedRef 22 | OnGenerateServerEntry(TWeakObjectPtr pServerAsset); 23 | 24 | FText GetServerValueAsText() const; 25 | 26 | void OnServerSelectionChanged( 27 | TWeakObjectPtr InItem, 28 | ESelectInfo::Type InSeletionInfo); 29 | void OnBrowseForServer(); 30 | void OnCurrentServerChanged(); 31 | 32 | TSharedPtr>> _pCombo; 33 | }; 34 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumPanel.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Widgets/SCompoundWidget.h" 6 | 7 | class FArguments; 8 | class UCesiumIonServer; 9 | class IonQuickAddPanel; 10 | 11 | class CesiumPanel : public SCompoundWidget { 12 | SLATE_BEGIN_ARGS(CesiumPanel) {} 13 | SLATE_END_ARGS() 14 | 15 | CesiumPanel(); 16 | virtual ~CesiumPanel(); 17 | void Construct(const FArguments& InArgs); 18 | 19 | virtual void Tick( 20 | const FGeometry& AllottedGeometry, 21 | const double InCurrentTime, 22 | const float InDeltaTime) override; 23 | 24 | void Refresh(); 25 | 26 | void Subscribe(UCesiumIonServer* pNewServer); 27 | void OnServerChanged(); 28 | 29 | private: 30 | TSharedRef Toolbar(); 31 | TSharedRef LoginPanel(); 32 | TSharedRef MainIonQuickAddPanel(); 33 | TSharedRef BasicQuickAddPanel(); 34 | TSharedRef Version(); 35 | 36 | void OnConnectionUpdated(); 37 | void OnDefaultsUpdated(); 38 | 39 | void addFromIon(); 40 | void uploadToIon(); 41 | void visitIon(); 42 | void signOut(); 43 | void openDocumentation(); 44 | void openSupport(); 45 | void openTokenSelector(); 46 | 47 | TSharedPtr _pQuickAddPanel; 48 | TObjectPtr _pLastServer; 49 | FDelegateHandle _serverChangedDelegateHandle; 50 | }; 51 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/CesiumSourceControl.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Containers/UnrealString.h" 6 | 7 | class CesiumSourceControl { 8 | public: 9 | static void PromptToCheckoutConfigFile(const FString& RelativeConfigFilePath); 10 | }; 11 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/IonLoginPanel.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Widgets/SCompoundWidget.h" 6 | 7 | class FArguments; 8 | 9 | class IonLoginPanel : public SCompoundWidget { 10 | SLATE_BEGIN_ARGS(IonLoginPanel) {} 11 | SLATE_END_ARGS() 12 | 13 | void Construct(const FArguments& InArgs); 14 | 15 | private: 16 | void LaunchBrowserAgain(); 17 | 18 | FReply SignIn(); 19 | FReply CancelSignIn(); 20 | FReply CopyAuthorizeUrlToClipboard(); 21 | }; 22 | -------------------------------------------------------------------------------- /Source/CesiumEditor/Private/IonQuickAddPanel.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Widgets/SCompoundWidget.h" 6 | #include "Widgets/Views/STableRow.h" 7 | #include 8 | #include 9 | 10 | class FArguments; 11 | 12 | enum class QuickAddItemType { 13 | TILESET, 14 | SUNSKY, 15 | DYNAMIC_PAWN, 16 | CARTOGRAPHIC_POLYGON 17 | }; 18 | 19 | struct QuickAddItem { 20 | QuickAddItemType type; 21 | std::string name{}; 22 | std::string description; 23 | std::string tilesetName{}; 24 | int64_t tilesetID = -1; 25 | std::string overlayName{}; 26 | int64_t overlayID = -1; 27 | }; 28 | 29 | class IonQuickAddPanel : public SCompoundWidget { 30 | SLATE_BEGIN_ARGS(IonQuickAddPanel) {} 31 | /** 32 | * The tile shown over the elements of the list 33 | */ 34 | SLATE_ARGUMENT(FText, Title) 35 | SLATE_END_ARGS() 36 | 37 | void Construct(const FArguments& InArgs); 38 | 39 | void AddItem(const QuickAddItem& item); 40 | void ClearItems(); 41 | void Refresh(); 42 | 43 | const FText& GetMessage() const; 44 | void SetMessage(const FText& message); 45 | 46 | private: 47 | TSharedRef QuickAddList(); 48 | TSharedRef CreateQuickAddItemRow( 49 | TSharedRef item, 50 | const TSharedRef& list); 51 | 52 | void AddItemToLevel(TSharedRef item); 53 | void AddIonTilesetToLevel(TSharedRef item); 54 | void AddCesiumSunSkyToLevel(); 55 | void AddDynamicPawnToLevel(); 56 | 57 | TArray> _quickAddItems; 58 | std::unordered_set _itemsBeingAdded; 59 | TSharedPtr>> _pQuickAddList; 60 | FText _message; 61 | }; 62 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CalcBounds.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Math/BoxSphereBounds.h" 6 | #include "Math/TransformNonVectorized.h" 7 | #include 8 | #include 9 | #include 10 | 11 | struct CalcBoundsOperation { 12 | const FTransform& localToWorld; 13 | const glm::dmat4& highPrecisionTransform; 14 | 15 | // Bounding volumes are expressed in tileset coordinates, which is usually 16 | // ECEF. 17 | // 18 | // - `localToWorld` goes from model coordinates to Unreal world 19 | // coordinates, where model coordinates include the tile's transform as 20 | // well as any glTF node transforms. 21 | // - `highPrecisionTransform` transforms from model coordinates to tileset 22 | // coordinates. 23 | // 24 | // So to transform a bounding volume, we need to first transform by the 25 | // inverse of `highPrecisionTransform` in order bring the bounding volume 26 | // into model coordinates, and then transform by `localToWorld` to bring the 27 | // bounding volume into Unreal world coordinates. 28 | 29 | glm::dmat4 getModelToUnrealWorldMatrix() const; 30 | 31 | glm::dmat4 getTilesetToUnrealWorldMatrix() const; 32 | 33 | FBoxSphereBounds 34 | operator()(const CesiumGeometry::BoundingSphere& sphere) const; 35 | 36 | FBoxSphereBounds 37 | operator()(const CesiumGeometry::OrientedBoundingBox& box) const; 38 | 39 | FBoxSphereBounds 40 | operator()(const CesiumGeospatial::BoundingRegion& region) const; 41 | 42 | FBoxSphereBounds operator()( 43 | const CesiumGeospatial::BoundingRegionWithLooseFittingHeights& region) 44 | const; 45 | 46 | FBoxSphereBounds 47 | operator()(const CesiumGeospatial::S2CellBoundingVolume& s2) const; 48 | 49 | FBoxSphereBounds 50 | operator()(const CesiumGeometry::BoundingCylinderRegion& cylinder) const; 51 | }; 52 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Cesium3DTilesetRoot.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Components/SceneComponent.h" 6 | #include 7 | #include 8 | #include "Cesium3DTilesetRoot.generated.h" 9 | 10 | UCLASS() 11 | class UCesium3DTilesetRoot : public USceneComponent { 12 | GENERATED_BODY() 13 | 14 | public: 15 | UCesium3DTilesetRoot(); 16 | 17 | /** 18 | * @brief Gets the transform from the "Cesium Tileset" reference frame to the 19 | * "Unreal Relative World" reference frame. 20 | * 21 | * Gets a matrix that transforms coordinates from the "Cesium Tileset" 22 | * reference frame (which is _usually_ Earth-centered, Earth-fixed) to Unreal 23 | * Engine's relative world coordinates (i.e. relative to the world 24 | * OriginLocation). 25 | * 26 | * See {@link reference-frames.md}. 27 | * 28 | * This transformation is a function of : 29 | * * The location of the Tileset in "Unreal Absolute World" coordinates. 30 | * * The rotation and scale of the tileset relative to the Unreal World. 31 | * * `UWorld::OriginLocation` 32 | * * The transformation from ellipsoid-centered to georeferenced 33 | * coordinates, as provided by `CesiumGeoreference`. 34 | */ 35 | const glm::dmat4& GetCesiumTilesetToUnrealRelativeWorldTransform() const; 36 | 37 | UFUNCTION() 38 | void HandleGeoreferenceUpdated(); 39 | 40 | protected: 41 | virtual void BeginPlay() override; 42 | virtual bool MoveComponentImpl( 43 | const FVector& Delta, 44 | const FQuat& NewRotation, 45 | bool bSweep, 46 | FHitResult* OutHit = NULL, 47 | EMoveComponentFlags MoveFlags = MOVECOMP_NoFlags, 48 | ETeleportType Teleport = ETeleportType::None) override; 49 | 50 | private: 51 | void _updateAbsoluteLocation(); 52 | void _updateTilesetToUnrealRelativeWorldTransform(); 53 | 54 | glm::dvec3 _absoluteLocation; 55 | glm::dmat4 _tilesetToUnrealRelativeWorld; 56 | }; 57 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumActors.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "GameFramework/Actor.h" 6 | #include 7 | 8 | #define CESIUM_POST_EDIT_CHANGE(changedPropertyName, ClassName, PropertyName) \ 9 | if (changedPropertyName == \ 10 | GET_MEMBER_NAME_CHECKED(ClassName, PropertyName)) { \ 11 | this->Set##PropertyName(this->PropertyName); \ 12 | return; \ 13 | } 14 | 15 | /** 16 | * @brief Utility functions related to Unreal actors 17 | */ 18 | class CesiumActors { 19 | public: 20 | /** 21 | * @brief Returns the origin location of the world that the given 22 | * actor is contained in. 23 | * 24 | * If the given actor is not valid or not contained in a world, 25 | * then a warning is printed and (0,0,0,0) is returned. 26 | * 27 | * @param actor The actor 28 | * @return The world origin 29 | */ 30 | static glm::dvec4 getWorldOrigin4D(const AActor* actor); 31 | 32 | static bool shouldValidateFlags(UObject* object); 33 | static void validateActorFlags(AActor* actor); 34 | static void validateActorComponentFlags(UActorComponent* component); 35 | 36 | private: 37 | static void validatePublicFlag(UObject* object, const FString& label); 38 | }; 39 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumBingMapsRasterOverlay.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumBingMapsRasterOverlay.h" 4 | #include "Cesium3DTilesSelection/Tileset.h" 5 | #include "CesiumRasterOverlays/BingMapsRasterOverlay.h" 6 | 7 | std::unique_ptr 8 | UCesiumBingMapsRasterOverlay::CreateOverlay( 9 | const CesiumRasterOverlays::RasterOverlayOptions& options) { 10 | std::string mapStyle; 11 | 12 | switch (this->MapStyle) { 13 | case EBingMapsStyle::Aerial: 14 | mapStyle = CesiumRasterOverlays::BingMapsStyle::AERIAL; 15 | break; 16 | case EBingMapsStyle::AerialWithLabelsOnDemand: 17 | mapStyle = 18 | CesiumRasterOverlays::BingMapsStyle::AERIAL_WITH_LABELS_ON_DEMAND; 19 | break; 20 | case EBingMapsStyle::RoadOnDemand: 21 | mapStyle = CesiumRasterOverlays::BingMapsStyle::ROAD_ON_DEMAND; 22 | break; 23 | case EBingMapsStyle::CanvasDark: 24 | mapStyle = CesiumRasterOverlays::BingMapsStyle::CANVAS_DARK; 25 | break; 26 | case EBingMapsStyle::CanvasLight: 27 | mapStyle = CesiumRasterOverlays::BingMapsStyle::CANVAS_LIGHT; 28 | break; 29 | case EBingMapsStyle::CanvasGray: 30 | mapStyle = CesiumRasterOverlays::BingMapsStyle::CANVAS_GRAY; 31 | break; 32 | case EBingMapsStyle::OrdnanceSurvey: 33 | mapStyle = CesiumRasterOverlays::BingMapsStyle::ORDNANCE_SURVEY; 34 | break; 35 | case EBingMapsStyle::CollinsBart: 36 | mapStyle = CesiumRasterOverlays::BingMapsStyle::COLLINS_BART; 37 | break; 38 | } 39 | 40 | return std::make_unique( 41 | TCHAR_TO_UTF8(*this->MaterialLayerKey), 42 | "https://dev.virtualearth.net", 43 | TCHAR_TO_UTF8(*this->BingMapsKey), 44 | mapStyle, 45 | "", 46 | options); 47 | } 48 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumCamera.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumCamera.h" 4 | #include "CesiumRuntime.h" 5 | #include "Math/UnrealMathUtility.h" 6 | 7 | FCesiumCamera::FCesiumCamera() 8 | : ViewportSize(1.0, 1.0), 9 | Location(0.0, 0.0, 0.0), 10 | Rotation(0.0, 0.0, 0.0), 11 | FieldOfViewDegrees(0.0), 12 | OverrideAspectRatio(0.0) {} 13 | 14 | FCesiumCamera::FCesiumCamera( 15 | const FVector2D& ViewportSize_, 16 | const FVector& Location_, 17 | const FRotator& Rotation_, 18 | double FieldOfViewDegrees_) 19 | : ViewportSize(ViewportSize_), 20 | Location(Location_), 21 | Rotation(Rotation_), 22 | FieldOfViewDegrees(FieldOfViewDegrees_), 23 | OverrideAspectRatio(0.0) {} 24 | 25 | FCesiumCamera::FCesiumCamera( 26 | const FVector2D& ViewportSize_, 27 | const FVector& Location_, 28 | const FRotator& Rotation_, 29 | double FieldOfViewDegrees_, 30 | double OverrideAspectRatio_) 31 | : ViewportSize(ViewportSize_), 32 | Location(Location_), 33 | Rotation(Rotation_), 34 | FieldOfViewDegrees(FieldOfViewDegrees_), 35 | OverrideAspectRatio(OverrideAspectRatio_) {} 36 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumCreditSystemBPLoader.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumCreditSystemBPLoader.h" 4 | #include "UObject/ConstructorHelpers.h" 5 | 6 | UCesiumCreditSystemBPLoader::UCesiumCreditSystemBPLoader() {} 7 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumCreditSystemBPLoader.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include 6 | 7 | #include "CesiumCreditSystemBPLoader.generated.h" 8 | 9 | UCLASS() 10 | class UCesiumCreditSystemBPLoader : public UEngineSubsystem { 11 | GENERATED_BODY() 12 | 13 | public: 14 | UCesiumCreditSystemBPLoader(); 15 | 16 | UPROPERTY() 17 | TSoftObjectPtr CesiumCreditSystemBP = TSoftObjectPtr< 18 | UObject>(FSoftObjectPath(TEXT( 19 | "Class'/CesiumForUnreal/CesiumCreditSystemBP.CesiumCreditSystemBP_C'"))); 20 | }; 21 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumCustomVersion.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumCustomVersion.h" 4 | #include "Serialization/CustomVersion.h" 5 | 6 | const FGuid 7 | FCesiumCustomVersion::GUID(0xA5DCCA38, 0xDDA34991, 0x98E7B2F2, 0x15E17470); 8 | 9 | // Register the custom version with core 10 | FCustomVersionRegistration GRegisterCesiumCustomVersion( 11 | FCesiumCustomVersion::GUID, 12 | FCesiumCustomVersion::LatestVersion, 13 | TEXT("CesiumVer")); 14 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumDebugColorizeTilesRasterOverlay.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumDebugColorizeTilesRasterOverlay.h" 4 | #include "Cesium3DTilesSelection/Tileset.h" 5 | #include "CesiumRasterOverlays/DebugColorizeTilesRasterOverlay.h" 6 | 7 | std::unique_ptr 8 | UCesiumDebugColorizeTilesRasterOverlay::CreateOverlay( 9 | const CesiumRasterOverlays::RasterOverlayOptions& options) { 10 | return std::make_unique< 11 | CesiumRasterOverlays::DebugColorizeTilesRasterOverlay>( 12 | TCHAR_TO_UTF8(*this->MaterialLayerKey), 13 | options); 14 | } 15 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumGlobeAnchoredActorComponent.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumGlobeAnchoredActorComponent.h" 4 | #include "CesiumGlobeAnchorComponent.h" 5 | #include "GameFramework/Actor.h" 6 | 7 | #if WITH_EDITOR 8 | #include "Editor.h" 9 | #endif 10 | 11 | UCesiumGlobeAnchorComponent* 12 | UCesiumGlobeAnchoredActorComponent::GetGlobeAnchor() { 13 | return this->GlobeAnchor; 14 | } 15 | 16 | void UCesiumGlobeAnchoredActorComponent::OnRegister() { 17 | Super::OnRegister(); 18 | this->ResolveGlobeAnchor(); 19 | } 20 | 21 | void UCesiumGlobeAnchoredActorComponent::BeginPlay() { 22 | Super::BeginPlay(); 23 | this->ResolveGlobeAnchor(); 24 | } 25 | 26 | void UCesiumGlobeAnchoredActorComponent::ResolveGlobeAnchor() { 27 | this->GlobeAnchor = nullptr; 28 | 29 | AActor* Owner = this->GetOwner(); 30 | if (!IsValid(Owner)) 31 | return; 32 | 33 | this->GlobeAnchor = 34 | Owner->FindComponentByClass(); 35 | if (!IsValid(this->GlobeAnchor)) { 36 | // A globe anchor is missing and required, so add one. 37 | this->GlobeAnchor = 38 | Cast(Owner->AddComponentByClass( 39 | UCesiumGlobeAnchorComponent::StaticClass(), 40 | false, 41 | FTransform::Identity, 42 | false)); 43 | Owner->AddInstanceComponent(this->GlobeAnchor); 44 | 45 | // Force the Editor to refresh to show the newly-added component 46 | #if WITH_EDITOR 47 | Owner->Modify(); 48 | if (Owner->IsSelectedInEditor()) { 49 | GEditor->SelectActor(Owner, true, true, true, true); 50 | } 51 | #endif 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumGltfPointsComponent.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumGltfPointsComponent.h" 4 | #include "CesiumGltfPointsSceneProxy.h" 5 | #include "SceneInterface.h" 6 | 7 | // Sets default values for this component's properties 8 | UCesiumGltfPointsComponent::UCesiumGltfPointsComponent() 9 | : UsesAdditiveRefinement(false), 10 | GeometricError(0), 11 | Dimensions(glm::vec3(0)) {} 12 | 13 | UCesiumGltfPointsComponent::~UCesiumGltfPointsComponent() {} 14 | 15 | FPrimitiveSceneProxy* UCesiumGltfPointsComponent::CreateSceneProxy() { 16 | if (!IsValid(this)) { 17 | return nullptr; 18 | } 19 | 20 | FCesiumGltfPointsSceneProxy* Proxy = 21 | new FCesiumGltfPointsSceneProxy(this, GetScene()->GetFeatureLevel()); 22 | 23 | FCesiumGltfPointsSceneProxyTilesetData TilesetData; 24 | TilesetData.UpdateFromComponent(this); 25 | Proxy->UpdateTilesetData(TilesetData); 26 | 27 | return Proxy; 28 | } 29 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumGltfPointsComponent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumGltfPrimitiveComponent.h" 6 | #include "CesiumGltfPointsComponent.generated.h" 7 | 8 | /** 9 | * A component that represents and renders a glTF points primitive. 10 | */ 11 | UCLASS() 12 | class UCesiumGltfPointsComponent : public UCesiumGltfPrimitiveComponent { 13 | GENERATED_BODY() 14 | 15 | public: 16 | // Sets default values for this component's properties 17 | UCesiumGltfPointsComponent(); 18 | virtual ~UCesiumGltfPointsComponent(); 19 | 20 | // Whether the tile that contains this point component uses additive 21 | // refinement. 22 | bool UsesAdditiveRefinement; 23 | 24 | // The geometric error of the tile containing this point component. 25 | float GeometricError; 26 | 27 | // The dimensions of the point component. Used to estimate the geometric 28 | // error. 29 | glm::vec3 Dimensions; 30 | 31 | // Override UPrimitiveComponent interface. 32 | virtual FPrimitiveSceneProxy* CreateSceneProxy() override; 33 | }; 34 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumGltfPointsSceneProxyUpdater.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Cesium3DTileset.h" 6 | #include "CesiumGltfPointsComponent.h" 7 | #include "CesiumGltfPointsSceneProxy.h" 8 | 9 | /** 10 | * This is used by Cesium3DTilesets to propagate their settings to any glTF 11 | * points components it parents. 12 | */ 13 | class FCesiumGltfPointsSceneProxyUpdater { 14 | public: 15 | /** Updates proxies with new tileset settings. Must be called from a game 16 | * thread. */ 17 | static void UpdateSettingsInProxies(ACesium3DTileset* Tileset) { 18 | if (!IsValid(Tileset) || !IsInGameThread()) { 19 | return; 20 | } 21 | 22 | TInlineComponentArray ComponentArray; 23 | Tileset->GetComponents(ComponentArray); 24 | 25 | // Used to pass tileset data updates to render thread 26 | TArray SceneProxies; 27 | TArray ProxyTilesetData; 28 | 29 | for (UCesiumGltfPointsComponent* PointsComponent : ComponentArray) { 30 | FCesiumGltfPointsSceneProxy* PointsProxy = 31 | static_cast( 32 | PointsComponent->SceneProxy); 33 | if (PointsProxy) { 34 | SceneProxies.Add(PointsProxy); 35 | } 36 | 37 | FCesiumGltfPointsSceneProxyTilesetData TilesetData; 38 | TilesetData.UpdateFromComponent(PointsComponent); 39 | ProxyTilesetData.Add(TilesetData); 40 | } 41 | 42 | // Update tileset data 43 | ENQUEUE_RENDER_COMMAND(TransferCesium3DTilesetSettingsToPointsProxies) 44 | ([SceneProxies, 45 | ProxyTilesetData](FRHICommandListImmediate& RHICmdList) mutable { 46 | // Iterate over proxies and update their data 47 | for (int32 i = 0; i < SceneProxies.Num(); i++) { 48 | SceneProxies[i]->UpdateTilesetData(ProxyTilesetData[i]); 49 | } 50 | }); 51 | } 52 | }; 53 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumGltfTextures.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include 6 | 7 | namespace CesiumAsync { 8 | class AsyncSystem; 9 | } 10 | 11 | namespace CesiumGltf { 12 | struct Model; 13 | } 14 | 15 | class CesiumGltfTextures { 16 | public: 17 | /** 18 | * Creates all of the texture resources that are required by the given glTF, 19 | * and adds `ExtensionImageCesiumUnreal` to each. This is intended to be 20 | * called from a worker thread. 21 | */ 22 | static CesiumAsync::Future createInWorkerThread( 23 | const CesiumAsync::AsyncSystem& asyncSystem, 24 | CesiumGltf::Model& model); 25 | }; 26 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumLifetime.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | #include "Components/SceneComponent.h" 5 | #include "Containers/Array.h" 6 | #include "Tickable.h" 7 | #include "UObject/WeakObjectPtrTemplates.h" 8 | 9 | class UObject; 10 | class UTexture; 11 | 12 | class AmortizedDestructor : FTickableGameObject { 13 | public: 14 | void Tick(float DeltaTime) override; 15 | ETickableTickType GetTickableTickType() const override; 16 | bool IsTickableWhenPaused() const override; 17 | bool IsTickableInEditor() const override; 18 | TStatId GetStatId() const; 19 | void destroy(UObject* pObject); 20 | 21 | private: 22 | bool runDestruction(UObject* pObject) const; 23 | void addToPending(UObject* pObject); 24 | void processPending(); 25 | void finalizeDestroy(UObject* pObject) const; 26 | 27 | TArray> _pending; 28 | TArray> _nextPending; 29 | }; 30 | 31 | class CesiumLifetime { 32 | public: 33 | static void destroy(UObject* pObject); 34 | static void destroyComponentRecursively(USceneComponent* pComponent); 35 | 36 | private: 37 | static AmortizedDestructor amortizedDestructor; 38 | }; 39 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumMaterialUserData.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumMaterialUserData.h" 4 | #include "Materials/MaterialInstance.h" 5 | #include "Runtime/Launch/Resources/Version.h" 6 | 7 | void UCesiumMaterialUserData::PostEditChangeOwner() { 8 | Super::PostEditChangeOwner(); 9 | 10 | #if WITH_EDITORONLY_DATA 11 | this->LayerNames.Empty(); 12 | 13 | UMaterialInstance* pMaterial = Cast(this->GetOuter()); 14 | if (pMaterial) { 15 | const FStaticParameterSet& parameters = pMaterial->GetStaticParameters(); 16 | 17 | const TArray& layerNames = 18 | parameters.EditorOnly.MaterialLayers.LayerNames; 19 | 20 | this->LayerNames.Reserve(layerNames.Num()); 21 | 22 | for (int32 i = 0; i < layerNames.Num(); ++i) { 23 | this->LayerNames.Add(layerNames[i].ToString()); 24 | } 25 | } 26 | #endif 27 | } 28 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumMaterialUserData.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Engine/AssetUserData.h" 6 | #include "CesiumMaterialUserData.generated.h" 7 | 8 | /** 9 | * Instances of this user data class are automatically attached to all materials 10 | * that are used by Cesium for Unreal and that have a Layer Stack named 11 | * "Cesium". It provides a way for Cesium for Unreal to access the names of the 12 | * individual layers in the stack at runtime (i.e. outside the Editor) so that 13 | * they can be mapped to raster overlays. 14 | * 15 | * It works by responding, in the Editor, to changes in the Material to which 16 | * it's attached via the `PostEditChangeOwner` and updating its internal mirror 17 | * of the layer names. At runtime, these layer names that were configured in the 18 | * Editor can't be further changed, so the the mirrored list is still valid. 19 | */ 20 | UCLASS() 21 | class UCesiumMaterialUserData : public UAssetUserData { 22 | GENERATED_BODY() 23 | 24 | public: 25 | virtual void PostEditChangeOwner() override; 26 | 27 | UPROPERTY() 28 | TArray LayerNames; 29 | }; 30 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumPrimitive.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumPrimitive.h" 4 | 5 | void CesiumPrimitiveData::destroy() { 6 | this->Features = FCesiumPrimitiveFeatures(); 7 | this->Metadata = FCesiumPrimitiveMetadata(); 8 | this->EncodedFeatures = EncodedFeaturesMetadata::EncodedPrimitiveFeatures(); 9 | this->EncodedMetadata = EncodedFeaturesMetadata::EncodedPrimitiveMetadata(); 10 | 11 | PRAGMA_DISABLE_DEPRECATION_WARNINGS 12 | this->Metadata_DEPRECATED = FCesiumMetadataPrimitive(); 13 | this->EncodedMetadata_DEPRECATED.reset(); 14 | PRAGMA_ENABLE_DEPRECATION_WARNINGS 15 | 16 | this->pTilesetActor = nullptr; 17 | this->pModel = nullptr; 18 | this->pMeshPrimitive = nullptr; 19 | 20 | std::unordered_map emptyTexCoordMap; 21 | this->GltfToUnrealTexCoordMap.swap(emptyTexCoordMap); 22 | 23 | std::unordered_map 24 | emptyAccessorMap; 25 | this->TexCoordAccessorMap.swap(emptyAccessorMap); 26 | } 27 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumPrimitiveMetadata.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumPrimitiveMetadata.h" 4 | #include "CesiumGltf/AccessorView.h" 5 | #include "CesiumGltf/ExtensionMeshPrimitiveExtStructuralMetadata.h" 6 | #include "CesiumGltf/Model.h" 7 | #include "CesiumGltfPrimitiveComponent.h" 8 | 9 | static FCesiumPrimitiveMetadata EmptyPrimitiveMetadata; 10 | 11 | FCesiumPrimitiveMetadata::FCesiumPrimitiveMetadata( 12 | const CesiumGltf::MeshPrimitive& Primitive, 13 | const CesiumGltf::ExtensionMeshPrimitiveExtStructuralMetadata& Metadata) 14 | : _propertyTextureIndices(), _propertyAttributeIndices() { 15 | this->_propertyTextureIndices.Reserve(Metadata.propertyTextures.size()); 16 | for (const int64 propertyTextureIndex : Metadata.propertyTextures) { 17 | this->_propertyTextureIndices.Emplace(propertyTextureIndex); 18 | } 19 | 20 | this->_propertyAttributeIndices.Reserve(Metadata.propertyAttributes.size()); 21 | for (const int64 propertyAttributeIndex : Metadata.propertyAttributes) { 22 | this->_propertyAttributeIndices.Emplace(propertyAttributeIndex); 23 | } 24 | } 25 | 26 | const FCesiumPrimitiveMetadata& 27 | UCesiumPrimitiveMetadataBlueprintLibrary::GetPrimitiveMetadata( 28 | const UPrimitiveComponent* component) { 29 | const UCesiumGltfPrimitiveComponent* pGltfComponent = 30 | Cast(component); 31 | if (!IsValid(pGltfComponent)) { 32 | return EmptyPrimitiveMetadata; 33 | } 34 | 35 | return pGltfComponent->getPrimitiveData().Metadata; 36 | } 37 | 38 | const TArray& 39 | UCesiumPrimitiveMetadataBlueprintLibrary::GetPropertyTextureIndices( 40 | UPARAM(ref) const FCesiumPrimitiveMetadata& PrimitiveMetadata) { 41 | return PrimitiveMetadata._propertyTextureIndices; 42 | } 43 | 44 | const TArray& 45 | UCesiumPrimitiveMetadataBlueprintLibrary::GetPropertyAttributeIndices( 46 | UPARAM(ref) const FCesiumPrimitiveMetadata& PrimitiveMetadata) { 47 | return PrimitiveMetadata._propertyAttributeIndices; 48 | } 49 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumPropertyArray.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumPropertyArray.h" 4 | #include 5 | 6 | FCesiumPropertyArray::FCesiumPropertyArray(FCesiumPropertyArray&& rhs) = 7 | default; 8 | 9 | FCesiumPropertyArray& 10 | FCesiumPropertyArray::operator=(FCesiumPropertyArray&& rhs) = default; 11 | 12 | FCesiumPropertyArray::FCesiumPropertyArray(const FCesiumPropertyArray& rhs) 13 | : _value(), _elementType(rhs._elementType), _storage(rhs._storage) { 14 | swl::visit( 15 | [this](const auto& value) { 16 | if constexpr (CesiumGltf::IsMetadataArray::value) { 17 | if (!this->_storage.empty()) { 18 | this->_value = decltype(value)(this->_storage); 19 | } else { 20 | this->_value = value; 21 | } 22 | } else { 23 | this->_value = value; 24 | } 25 | }, 26 | rhs._value); 27 | } 28 | 29 | FCesiumPropertyArray& 30 | FCesiumPropertyArray::operator=(const FCesiumPropertyArray& rhs) { 31 | *this = FCesiumPropertyArray(rhs); 32 | return *this; 33 | } 34 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumRasterOverlays.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | constexpr size_t maximumOverlayTextureCoordinateIDs = 2; 6 | 7 | /** 8 | * @brief Maps an overlay texture coordinate ID to the index of the 9 | * corresponding texture coordinates in the static mesh's UVs array. 10 | */ 11 | using OverlayTextureCoordinateIDMap = 12 | std::array; 13 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumRuntimeSettings.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumRuntimeSettings.h" 4 | 5 | UCesiumRuntimeSettings::UCesiumRuntimeSettings( 6 | const FObjectInitializer& ObjectInitializer) 7 | : Super(ObjectInitializer) { 8 | CategoryName = FName(TEXT("Plugins")); 9 | } 10 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumSampleHeightMostDetailedAsyncAction.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | #include "CesiumSampleHeightMostDetailedAsyncAction.h" 3 | #include "Cesium3DTileset.h" 4 | #include "CesiumRuntime.h" 5 | 6 | /*static*/ UCesiumSampleHeightMostDetailedAsyncAction* 7 | UCesiumSampleHeightMostDetailedAsyncAction::SampleHeightMostDetailed( 8 | ACesium3DTileset* Tileset, 9 | const TArray& LongitudeLatitudeHeightArray) { 10 | UCesiumSampleHeightMostDetailedAsyncAction* pAsyncAction = 11 | NewObject(); 12 | pAsyncAction->_pTileset = Tileset; 13 | pAsyncAction->_longitudeLatitudeHeightArray = LongitudeLatitudeHeightArray; 14 | 15 | return pAsyncAction; 16 | } 17 | 18 | void UCesiumSampleHeightMostDetailedAsyncAction::Activate() { 19 | if (!IsValid(this->_pTileset)) { 20 | TArray Warnings; 21 | Warnings.Push(TEXT( 22 | "Invalid Tileset parameter passed to UCesiumSampleHeightMostDetailedAsyncAction, returning no results")); 23 | 24 | this->RaiseOnHeightsSampled( 25 | this->_pTileset, 26 | TArray(), 27 | Warnings); 28 | } else { 29 | this->RegisterWithGameInstance(this->_pTileset); 30 | 31 | this->_pTileset->SampleHeightMostDetailed( 32 | this->_longitudeLatitudeHeightArray, 33 | FCesiumSampleHeightMostDetailedCallback::CreateUObject( 34 | this, 35 | &UCesiumSampleHeightMostDetailedAsyncAction:: 36 | RaiseOnHeightsSampled)); 37 | } 38 | } 39 | 40 | void UCesiumSampleHeightMostDetailedAsyncAction::RaiseOnHeightsSampled( 41 | ACesium3DTileset* Tileset, 42 | const TArray& Result, 43 | const TArray& Warnings) { 44 | this->OnHeightsSampled.Broadcast(Result, Warnings); 45 | this->SetReadyToDestroy(); 46 | } 47 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumTile.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumTile.h" 4 | #include "CalcBounds.h" 5 | #include "CesiumTransforms.h" 6 | #include "VecMath.h" 7 | 8 | bool UCesiumTile::TileBoundsOverlapsPrimitive( 9 | const UPrimitiveComponent* Other) const { 10 | if (IsValid(Other)) { 11 | return Bounds.GetBox().Intersect(Other->Bounds.GetBox()) && 12 | Bounds.GetSphere().Intersects(Other->Bounds.GetSphere()); 13 | } else { 14 | return false; 15 | } 16 | } 17 | 18 | bool UCesiumTile::PrimitiveBoxFullyContainsTileBounds( 19 | const UPrimitiveComponent* Other) const { 20 | if (IsValid(Other)) { 21 | return Bounds.GetBox().Intersect(Other->Bounds.GetBox()) || 22 | Bounds.GetSphere().Intersects(Other->Bounds.GetSphere()); 23 | } else { 24 | return false; 25 | } 26 | } 27 | 28 | FBoxSphereBounds UCesiumTile::CalcBounds(const FTransform& LocalToWorld) const { 29 | FBoxSphereBounds bounds = std::visit( 30 | CalcBoundsOperation{LocalToWorld, this->_tileTransform}, 31 | _tileBounds); 32 | return bounds; 33 | } 34 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumTileExcluderAdapter.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumTileExcluderAdapter.h" 4 | #include "Cesium3DTilesSelection/Tile.h" 5 | #include "CesiumGeoreference.h" 6 | #include "VecMath.h" 7 | 8 | bool CesiumTileExcluderAdapter::shouldExclude( 9 | const Cesium3DTilesSelection::Tile& tile) const noexcept { 10 | if (!this->IsExcluderValid) { 11 | return false; 12 | } 13 | Tile->_tileBounds = tile.getBoundingVolume(); 14 | Tile->UpdateBounds(); 15 | return Excluder->ShouldExclude(Tile); 16 | } 17 | 18 | void CesiumTileExcluderAdapter::startNewFrame() noexcept { 19 | if (!Excluder.IsValid() || !IsValid(Tile) || !IsValid(Georeference)) { 20 | IsExcluderValid = false; 21 | return; 22 | } 23 | 24 | IsExcluderValid = true; 25 | Tile->_tileTransform = VecMath::createMatrix4D( 26 | Georeference->ComputeUnrealToEarthCenteredEarthFixedTransformation()); 27 | } 28 | 29 | CesiumTileExcluderAdapter::CesiumTileExcluderAdapter( 30 | TWeakObjectPtr pExcluder, 31 | ACesiumGeoreference* pGeoreference, 32 | UCesiumTile* pTile) 33 | : Excluder(pExcluder), 34 | Tile(pTile), 35 | Georeference(pGeoreference), 36 | IsExcluderValid(true){}; 37 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumTileExcluderAdapter.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | #include "CesiumTile.h" 5 | #include "CesiumTileExcluder.h" 6 | #include 7 | 8 | class ACesiumGeoreference; 9 | 10 | namespace Cesium3DTilesSelection { 11 | class Tile; 12 | } 13 | 14 | class CesiumTileExcluderAdapter : public Cesium3DTilesSelection::ITileExcluder { 15 | virtual bool shouldExclude( 16 | const Cesium3DTilesSelection::Tile& tile) const noexcept override; 17 | virtual void startNewFrame() noexcept override; 18 | 19 | private: 20 | TWeakObjectPtr Excluder; 21 | UCesiumTile* Tile; 22 | ACesiumGeoreference* Georeference; 23 | bool IsExcluderValid; 24 | 25 | public: 26 | CesiumTileExcluderAdapter( 27 | TWeakObjectPtr pExcluder, 28 | ACesiumGeoreference* pGeoreference, 29 | UCesiumTile* pTile); 30 | }; 31 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumTileMapServiceRasterOverlay.h" 4 | #include "CesiumRasterOverlays/TileMapServiceRasterOverlay.h" 5 | #include "CesiumRuntime.h" 6 | 7 | std::unique_ptr 8 | UCesiumTileMapServiceRasterOverlay::CreateOverlay( 9 | const CesiumRasterOverlays::RasterOverlayOptions& options) { 10 | if (this->Url.IsEmpty()) { 11 | // Don't create an overlay with an empty URL. 12 | return nullptr; 13 | } 14 | 15 | CesiumRasterOverlays::TileMapServiceRasterOverlayOptions tmsOptions; 16 | if (MaximumLevel > MinimumLevel && bSpecifyZoomLevels) { 17 | tmsOptions.minimumLevel = MinimumLevel; 18 | tmsOptions.maximumLevel = MaximumLevel; 19 | } 20 | 21 | std::vector headers; 22 | 23 | for (const auto& [Key, Value] : this->RequestHeaders) { 24 | headers.push_back(CesiumAsync::IAssetAccessor::THeader{ 25 | TCHAR_TO_UTF8(*Key), 26 | TCHAR_TO_UTF8(*Value)}); 27 | } 28 | 29 | return std::make_unique( 30 | TCHAR_TO_UTF8(*this->MaterialLayerKey), 31 | TCHAR_TO_UTF8(*this->Url), 32 | headers, 33 | tmsOptions, 34 | options); 35 | } 36 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumTransforms.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumTransforms.h" 4 | 5 | const double CesiumTransforms::metersToCentimeters = 100.0; 6 | const double CesiumTransforms::centimetersToMeters = 0.01; 7 | 8 | // Scale Cesium's meters up to Unreal's centimeters. 9 | const glm::dmat4x4 CesiumTransforms::scaleToUnrealWorld = 10 | glm::dmat4x4(glm::dmat3x3(metersToCentimeters)); 11 | 12 | // Scale down Unreal's centimeters into Cesium's meters. 13 | const glm::dmat4x4 CesiumTransforms::scaleToCesium = 14 | glm::dmat4x4(glm::dmat3x3(centimetersToMeters)); 15 | 16 | // We're initializing with a static function instead of inline to avoid an 17 | // internal compiler error in MSVC v14.27.29110. 18 | static glm::dmat4 createUnrealToOrFromCesium() { 19 | return glm::dmat4x4( 20 | glm::dvec4(1.0, 0.0, 0.0, 0.0), 21 | glm::dvec4(0.0, -1.0, 0.0, 0.0), 22 | glm::dvec4(0.0, 0.0, 1.0, 0.0), 23 | glm::dvec4(0.0, 0.0, 0.0, 1.0)); 24 | } 25 | 26 | // Transform Cesium's right-handed, Z-up coordinate system to Unreal's 27 | // left-handed, Z-up coordinate system by inverting the Y coordinate. This same 28 | // transformation can also go the other way. 29 | const glm::dmat4x4 CesiumTransforms::unrealToOrFromCesium = 30 | createUnrealToOrFromCesium(); -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumTransforms.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include 6 | 7 | /** 8 | * Constants useful for transformation between Cesium and Unreal Engine 9 | * coordinate systems. 10 | */ 11 | class CesiumTransforms { 12 | public: 13 | /** 14 | * The constant to multiply to transform meters to centimeters (100.0). 15 | */ 16 | static const double metersToCentimeters; 17 | 18 | /** 19 | * The constant to multiply to transform centimeters to meters (0.01). 20 | */ 21 | static const double centimetersToMeters; 22 | 23 | /** 24 | * A matrix to scale Cesium's meters up to Unreal's centimeters. 25 | */ 26 | static const glm::dmat4x4 scaleToUnrealWorld; 27 | 28 | /** 29 | * A matrix to scale down Unreal's centimeters into Cesium's meters. 30 | */ 31 | static const glm::dmat4x4 scaleToCesium; 32 | 33 | /** 34 | * A matrix to transform Cesium's right-handed, Z-up coordinate system to 35 | * Unreal's left-handed, Z-up coordinate system by inverting the Y coordinate. 36 | * This same transformation can also go the other way. 37 | */ 38 | static const glm::dmat4x4 unrealToOrFromCesium; 39 | }; 40 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "CesiumWebMapServiceRasterOverlay.h" 4 | #include "Algo/Transform.h" 5 | #include "CesiumRasterOverlays/WebMapServiceRasterOverlay.h" 6 | #include "CesiumRuntime.h" 7 | 8 | std::unique_ptr 9 | UCesiumWebMapServiceRasterOverlay::CreateOverlay( 10 | const CesiumRasterOverlays::RasterOverlayOptions& options) { 11 | if (this->BaseUrl.IsEmpty()) { 12 | // Don't create an overlay with an empty base URL. 13 | return nullptr; 14 | } 15 | 16 | CesiumRasterOverlays::WebMapServiceRasterOverlayOptions wmsOptions; 17 | if (MaximumLevel > MinimumLevel) { 18 | wmsOptions.minimumLevel = MinimumLevel; 19 | wmsOptions.maximumLevel = MaximumLevel; 20 | } 21 | wmsOptions.layers = TCHAR_TO_UTF8(*Layers); 22 | wmsOptions.tileWidth = TileWidth; 23 | wmsOptions.tileHeight = TileHeight; 24 | 25 | std::vector headers; 26 | 27 | for (const auto& [Key, Value] : this->RequestHeaders) { 28 | headers.push_back(CesiumAsync::IAssetAccessor::THeader{ 29 | TCHAR_TO_UTF8(*Key), 30 | TCHAR_TO_UTF8(*Value)}); 31 | } 32 | 33 | return std::make_unique( 34 | TCHAR_TO_UTF8(*this->MaterialLayerKey), 35 | TCHAR_TO_UTF8(*this->BaseUrl), 36 | headers, 37 | wmsOptions, 38 | options); 39 | } 40 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/GlmLogging.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "GlmLogging.h" 4 | #include "CesiumRuntime.h" 5 | 6 | #include 7 | #include 8 | 9 | void GlmLogging::logVector(const std::string& name, const glm::dvec3& vector) { 10 | UE_LOG( 11 | LogCesium, 12 | Verbose, 13 | TEXT("%s: %16.6f %16.6f %16.6f"), 14 | *FString(name.c_str()), 15 | vector.x, 16 | vector.y, 17 | vector.z); 18 | } 19 | 20 | void GlmLogging::logMatrix(const std::string& name, const glm::dmat4& matrix) { 21 | UE_LOG(LogCesium, Verbose, TEXT("%s:"), *FString(name.c_str())); 22 | UE_LOG( 23 | LogCesium, 24 | Verbose, 25 | TEXT(" %16.6f %16.6f %16.6f %16.6f"), 26 | matrix[0][0], 27 | matrix[1][0], 28 | matrix[2][0], 29 | matrix[3][0]); 30 | UE_LOG( 31 | LogCesium, 32 | Verbose, 33 | TEXT(" %16.6f %16.6f %16.6f %16.6f"), 34 | matrix[0][1], 35 | matrix[1][1], 36 | matrix[2][1], 37 | matrix[3][1]); 38 | UE_LOG( 39 | LogCesium, 40 | Verbose, 41 | TEXT(" %16.6f %16.6f %16.6f %16.6f"), 42 | matrix[0][2], 43 | matrix[1][2], 44 | matrix[2][2], 45 | matrix[3][2]); 46 | UE_LOG( 47 | LogCesium, 48 | Verbose, 49 | TEXT(" %16.6f %16.6f %16.6f %16.6f"), 50 | matrix[0][3], 51 | matrix[1][3], 52 | matrix[2][3], 53 | matrix[3][3]); 54 | } 55 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/GlmLogging.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include 6 | #include 7 | 8 | /** 9 | * @brief Utility functions for logging GLM data in Unreal 10 | */ 11 | class GlmLogging { 12 | public: 13 | /** 14 | * Print the given vector as a verbose `LogCesium` 15 | * message, with unspecified formatting. 16 | * 17 | * @param name The name that will be part of the message 18 | * @param vector The vector 19 | */ 20 | static void logVector(const std::string& name, const glm::dvec3& vector); 21 | 22 | /** 23 | * Print the given matrix as a verbose `LogCesium` 24 | * message, with unspecified formatting. 25 | * 26 | * @param name The name that will be part of the message 27 | * @param matrix The matrix 28 | */ 29 | static void logMatrix(const std::string& name, const glm::dmat4& matrix); 30 | }; 31 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/SpdlogUnrealLoggerSink.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "SpdlogUnrealLoggerSink.h" 4 | #include "CesiumRuntime.h" 5 | #include "CoreMinimal.h" 6 | 7 | void SpdlogUnrealLoggerSink::sink_it_(const spdlog::details::log_msg& msg) { 8 | switch (msg.level) { 9 | case SPDLOG_LEVEL_TRACE: 10 | UE_LOG(LogCesium, VeryVerbose, TEXT("%s"), *this->formatMessage(msg)); 11 | break; 12 | case SPDLOG_LEVEL_DEBUG: 13 | UE_LOG(LogCesium, Verbose, TEXT("%s"), *this->formatMessage(msg)); 14 | break; 15 | case SPDLOG_LEVEL_INFO: 16 | UE_LOG(LogCesium, Display, TEXT("%s"), *this->formatMessage(msg)); 17 | break; 18 | case SPDLOG_LEVEL_WARN: 19 | UE_LOG(LogCesium, Warning, TEXT("%s"), *this->formatMessage(msg)); 20 | break; 21 | case SPDLOG_LEVEL_ERROR: 22 | UE_LOG(LogCesium, Error, TEXT("%s"), *this->formatMessage(msg)); 23 | break; 24 | case SPDLOG_LEVEL_CRITICAL: 25 | UE_LOG(LogCesium, Fatal, TEXT("%s"), *this->formatMessage(msg)); 26 | break; 27 | } 28 | } 29 | 30 | void SpdlogUnrealLoggerSink::flush_() { 31 | // Nothing to do here 32 | } 33 | 34 | FString SpdlogUnrealLoggerSink::formatMessage( 35 | const spdlog::details::log_msg& msg) const { 36 | // Frustratingly, spdlog::formatter isn't thread safe. So even though our sink 37 | // itself doesn't need to be protected by a mutex, the formatter does. 38 | // See https://github.com/gabime/spdlog/issues/897 39 | std::scoped_lock lock(this->_formatMutex); 40 | 41 | spdlog::memory_buf_t formatted; 42 | this->formatter_->format(msg, formatted); 43 | return UTF8_TO_TCHAR(fmt::to_string(formatted).c_str()); 44 | } 45 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/SpdlogUnrealLoggerSink.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | /** 12 | * @brief Internal implementation of a spdlog sink that forwards the messages 13 | * to Unreal log macros. 14 | */ 15 | class SpdlogUnrealLoggerSink 16 | : public spdlog::sinks::base_sink { 17 | protected: 18 | virtual void sink_it_(const spdlog::details::log_msg& msg) override; 19 | virtual void flush_() override; 20 | 21 | private: 22 | FString formatMessage(const spdlog::details::log_msg& msg) const; 23 | 24 | mutable std::mutex _formatMutex; 25 | }; 26 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Tests/CesiumLoadTestCore.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #if WITH_EDITOR 6 | 7 | #include 8 | #include 9 | 10 | #include "CesiumSceneGeneration.h" 11 | #include "CesiumTestPass.h" 12 | #include "Tests/AutomationCommon.h" 13 | 14 | namespace Cesium { 15 | typedef std::function&)> ReportCallback; 16 | 17 | struct LoadTestContext { 18 | FString testName; 19 | std::vector testPasses; 20 | 21 | SceneGenerationContext creationContext; 22 | SceneGenerationContext playContext; 23 | 24 | float cameraFieldOfView = 90.0f; 25 | 26 | ReportCallback reportStep; 27 | 28 | void reset(); 29 | }; 30 | 31 | bool RunLoadTest( 32 | const FString& testName, 33 | std::function locationSetup, 34 | const std::vector& testPasses, 35 | int viewportWidth, 36 | int viewportHeight, 37 | ReportCallback optionalReportStep = nullptr); 38 | 39 | DEFINE_LATENT_AUTOMATION_COMMAND_FOUR_PARAMETER( 40 | TimeLoadingCommand, 41 | FString, 42 | loggingName, 43 | SceneGenerationContext&, 44 | creationContext, 45 | SceneGenerationContext&, 46 | playContext, 47 | TestPass&, 48 | pass); 49 | 50 | DEFINE_LATENT_AUTOMATION_COMMAND_ONE_PARAMETER( 51 | LoadTestScreenshotCommand, 52 | FString, 53 | screenshotName); 54 | 55 | DEFINE_LATENT_AUTOMATION_COMMAND_ONE_PARAMETER( 56 | TestCleanupCommand, 57 | LoadTestContext&, 58 | context); 59 | 60 | DEFINE_LATENT_AUTOMATION_COMMAND_TWO_PARAMETER( 61 | InitForPlayWhenReady, 62 | SceneGenerationContext&, 63 | creationContext, 64 | SceneGenerationContext&, 65 | playContext); 66 | 67 | DEFINE_LATENT_AUTOMATION_COMMAND_FOUR_PARAMETER( 68 | SetPlayerViewportSize, 69 | SceneGenerationContext&, 70 | creationContext, 71 | SceneGenerationContext&, 72 | playContext, 73 | int, 74 | viewportWidth, 75 | int, 76 | viewportHeight); 77 | 78 | }; // namespace Cesium 79 | 80 | #endif 81 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Tests/CesiumSceneGeneration.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #if WITH_EDITOR 6 | 7 | #include 8 | 9 | class UWorld; 10 | class ACesiumSunSky; 11 | class ACesiumGeoreference; 12 | class AGlobeAwareDefaultPawn; 13 | class ACesium3DTileset; 14 | class ACesiumCameraManager; 15 | 16 | namespace Cesium { 17 | 18 | struct SceneGenerationContext { 19 | UWorld* world; 20 | ACesiumSunSky* sunSky; 21 | ACesiumGeoreference* georeference; 22 | AGlobeAwareDefaultPawn* pawn; 23 | std::vector tilesets; 24 | 25 | FVector startPosition; 26 | FRotator startRotation; 27 | float startFieldOfView; 28 | 29 | void setCommonProperties( 30 | const FVector& origin, 31 | const FVector& position, 32 | const FRotator& rotation, 33 | float fieldOfView); 34 | 35 | void refreshTilesets(); 36 | void setSuspendUpdate(bool suspend); 37 | void setMaximumSimultaneousTileLoads(int32 value); 38 | bool areTilesetsDoneLoading(); 39 | 40 | void trackForPlay(); 41 | void initForPlay(SceneGenerationContext& creationContext); 42 | void syncWorldCamera(); 43 | 44 | static FString testIonToken; 45 | }; 46 | 47 | void createCommonWorldObjects(SceneGenerationContext& context); 48 | 49 | }; // namespace Cesium 50 | 51 | #endif // #if WITH_EDITOR 52 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Tests/CesiumTestPass.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if WITH_EDITOR 4 | 5 | #include 6 | #include 7 | 8 | #include "CesiumSceneGeneration.h" 9 | #include "Tests/AutomationCommon.h" 10 | 11 | namespace Cesium { 12 | 13 | struct TestPass { 14 | typedef std::variant TestingParameter; 15 | typedef std::function 16 | SetupPassCallback; 17 | typedef std::function< 18 | bool(SceneGenerationContext&, SceneGenerationContext&, TestingParameter)> 19 | VerifyPassCallback; 20 | 21 | FString name; 22 | SetupPassCallback setupStep; 23 | VerifyPassCallback verifyStep; 24 | TestingParameter optionalParameter; 25 | 26 | bool testInProgress = false; 27 | double startMark = 0; 28 | double endMark = 0; 29 | double elapsedTime = 0; 30 | 31 | bool isFastest = false; 32 | }; 33 | 34 | } // namespace Cesium 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Tests/GeoTransforms.spec.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "GeoTransforms.h" 4 | #include "CesiumGeospatial/Ellipsoid.h" 5 | #include "CesiumUtility/Math.h" 6 | #include "Misc/AutomationTest.h" 7 | 8 | using namespace CesiumGeospatial; 9 | using namespace CesiumUtility; 10 | 11 | BEGIN_DEFINE_SPEC( 12 | FGeoTransformsSpec, 13 | "Cesium.Unit.GeoTransforms", 14 | EAutomationTestFlags::EditorContext | EAutomationTestFlags::ClientContext | 15 | EAutomationTestFlags::ServerContext | 16 | EAutomationTestFlags::CommandletContext | 17 | EAutomationTestFlags::ProductFilter) 18 | END_DEFINE_SPEC(FGeoTransformsSpec) 19 | 20 | void FGeoTransformsSpec::Define() { 21 | Describe("TransformLongitudeLatitudeHeightToUnreal", [this]() { 22 | It("returns the origin when given the origin LLH", [this]() { 23 | GeoTransforms geotransforms{}; 24 | glm::dvec3 center = geotransforms.TransformLongitudeLatitudeHeightToEcef( 25 | glm::dvec3(12.0, 23.0, 1000.0)); 26 | geotransforms.setCenter(center); 27 | glm::dvec3 ue = geotransforms.TransformLongitudeLatitudeHeightToUnreal( 28 | glm::dvec3(0.0), 29 | glm::dvec3(12.0, 23.0, 1000.0)); 30 | TestEqual("is at the origin", ue, glm::dvec3(0.0)); 31 | }); 32 | }); 33 | } 34 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Tests/GoogleTilesTestSetup.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if WITH_EDITOR 4 | 5 | #include "CesiumSceneGeneration.h" 6 | #include "CesiumTestPass.h" 7 | 8 | namespace Cesium { 9 | 10 | struct GoogleTilesTestSetup { 11 | static void setupRefreshTilesets( 12 | SceneGenerationContext& context, 13 | TestPass::TestingParameter parameter); 14 | 15 | static void setupClearCache( 16 | SceneGenerationContext& creationContext, 17 | TestPass::TestingParameter parameter); 18 | 19 | static void setupForLocation( 20 | SceneGenerationContext& context, 21 | const FVector& location, 22 | const FRotator& rotation, 23 | const FString& name); 24 | 25 | static void setupForPompidou(SceneGenerationContext& context); 26 | static void setupForChrysler(SceneGenerationContext& context); 27 | static void setupForGuggenheim(SceneGenerationContext& context); 28 | static void setupForDeathValley(SceneGenerationContext& context); 29 | static void setupForTokyo(SceneGenerationContext& context); 30 | static void setupForGoogleplex(SceneGenerationContext& context); 31 | }; 32 | 33 | } // namespace Cesium 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Tests/SampleHeightCallbackReceiver.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumSampleHeightMostDetailedAsyncAction.h" 6 | #include "UObject/Object.h" 7 | #include "UObject/ObjectMacros.h" 8 | #include 9 | #include "SampleHeightCallbackReceiver.generated.h" 10 | 11 | UCLASS() 12 | class USampleHeightCallbackReceiver : public UObject { 13 | GENERATED_BODY() 14 | 15 | public: 16 | using TFunction = std::function< 17 | void(const TArray&, const TArray&)>; 18 | 19 | static void 20 | Bind(FCesiumSampleHeightMostDetailedComplete& delegate, TFunction callback) { 21 | USampleHeightCallbackReceiver* p = 22 | NewObject(); 23 | p->_callback = callback; 24 | p->AddToRoot(); 25 | 26 | delegate.AddUniqueDynamic(p, &USampleHeightCallbackReceiver::Receiver); 27 | } 28 | 29 | private: 30 | UFUNCTION() 31 | void Receiver( 32 | const TArray& Result, 33 | const TArray& Warnings) { 34 | this->_callback(Result, Warnings); 35 | this->RemoveFromRoot(); 36 | } 37 | 38 | TFunction _callback; 39 | }; 40 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/Tests/TestRegionPolygons.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if WITH_EDITOR 4 | 5 | #include "VectorTypes.h" 6 | #include 7 | #include 8 | 9 | namespace Cesium { 10 | struct TestPolygon { 11 | TestPolygon(std::initializer_list points) : points(points) {} 12 | 13 | /** 14 | * Returns a random point within this polygon to test with. 15 | */ 16 | FVector GetRandomPoint() const; 17 | 18 | private: 19 | std::vector points; 20 | }; 21 | 22 | // An array of test polygons delineating populated, high-interest areas to test 23 | // with. 24 | constexpr static int TEST_REGION_POLYGONS_COUNT = 32; 25 | 26 | class TestRegionPolygons { 27 | public: 28 | static const TestPolygon* polygons; 29 | }; 30 | 31 | } // namespace Cesium 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Private/UnrealTaskProcessor.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #include "UnrealTaskProcessor.h" 4 | #include "Async/Async.h" 5 | #include "Misc/QueuedThreadPool.h" 6 | 7 | void UnrealTaskProcessor::startTask(std::function f) { 8 | AsyncTask(ENamedThreads::Type::AnyBackgroundThreadNormalTask, [f]() { 9 | TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::AsyncTask) 10 | f(); 11 | }); 12 | } 13 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/Cesium3DTilesetLoadFailureDetails.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Cesium3DTilesetLoadFailureDetails.generated.h" 7 | 8 | class ACesium3DTileset; 9 | 10 | UENUM(BlueprintType) 11 | enum class ECesium3DTilesetLoadType : uint8 { 12 | /** 13 | * An unknown load error. 14 | */ 15 | Unknown, 16 | 17 | /** 18 | * A Cesium ion asset endpoint. 19 | */ 20 | CesiumIon, 21 | 22 | /** 23 | * A tileset.json. 24 | */ 25 | TilesetJson 26 | }; 27 | 28 | USTRUCT(BlueprintType) 29 | struct CESIUMRUNTIME_API FCesium3DTilesetLoadFailureDetails { 30 | GENERATED_BODY() 31 | 32 | /** 33 | * The tileset that encountered the load failure. 34 | */ 35 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 36 | TWeakObjectPtr Tileset = nullptr; 37 | 38 | /** 39 | * The type of request that failed to load. 40 | */ 41 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 42 | ECesium3DTilesetLoadType Type = ECesium3DTilesetLoadType::Unknown; 43 | 44 | /** 45 | * The HTTP status code of the response that led to the failure. 46 | * 47 | * If there was no response or the failure did not follow from a request, then 48 | * the value of this property will be 0. 49 | */ 50 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 51 | int32 HttpStatusCode = 0; 52 | 53 | /** 54 | * A human-readable explanation of what failed. 55 | */ 56 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 57 | FString Message; 58 | }; 59 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumBingMapsRasterOverlay.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumRasterOverlay.h" 6 | #include "CoreMinimal.h" 7 | #include "CesiumBingMapsRasterOverlay.generated.h" 8 | 9 | UENUM(BlueprintType) 10 | enum class EBingMapsStyle : uint8 { 11 | Aerial UMETA(DisplayName = "Aerial"), 12 | AerialWithLabelsOnDemand UMETA(DisplayName = "Aerial with Labels"), 13 | RoadOnDemand UMETA(DisplayName = "Road"), 14 | CanvasDark UMETA(DisplayName = "Canvas Dark"), 15 | CanvasLight UMETA(DisplayName = "Canvas Light"), 16 | CanvasGray UMETA(DisplayName = "Canvas Gray"), 17 | OrdnanceSurvey UMETA(DisplayName = "Ordnance Survey"), 18 | CollinsBart UMETA(DisplayName = "Collins Bart") 19 | }; 20 | 21 | /** 22 | * A raster overlay that directly accesses Bing Maps. If you're using Bing Maps 23 | * via Cesium ion, use the "Cesium ion Raster Overlay" component instead. 24 | */ 25 | UCLASS(ClassGroup = Cesium, meta = (BlueprintSpawnableComponent)) 26 | class CESIUMRUNTIME_API UCesiumBingMapsRasterOverlay 27 | : public UCesiumRasterOverlay { 28 | GENERATED_BODY() 29 | 30 | public: 31 | /** 32 | * The Bing Maps API key to use. 33 | */ 34 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium") 35 | FString BingMapsKey; 36 | 37 | /** 38 | * The map style to use. 39 | */ 40 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium") 41 | EBingMapsStyle MapStyle = EBingMapsStyle::Aerial; 42 | 43 | protected: 44 | virtual std::unique_ptr CreateOverlay( 45 | const CesiumRasterOverlays::RasterOverlayOptions& options = {}) override; 46 | }; 47 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumCartographicPolygon.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumGeoreference.h" 6 | #include "CesiumGeospatial/CartographicPolygon.h" 7 | #include "CesiumGeospatial/GlobeRectangle.h" 8 | #include "CesiumGlobeAnchorComponent.h" 9 | #include "Components/SplineComponent.h" 10 | #include "CoreMinimal.h" 11 | #include "Engine/StaticMesh.h" 12 | #include "GameFramework/Actor.h" 13 | #include 14 | 15 | #include "CesiumCartographicPolygon.generated.h" 16 | 17 | /** 18 | * A spline-based polygon actor used to rasterize 2D polygons on top of 19 | * Cesium 3D Tileset actors. 20 | */ 21 | UCLASS(ClassGroup = Cesium, meta = (BlueprintSpawnableComponent)) 22 | class CESIUMRUNTIME_API ACesiumCartographicPolygon : public AActor { 23 | 24 | GENERATED_BODY() 25 | 26 | public: 27 | ACesiumCartographicPolygon(); 28 | 29 | /** 30 | * The polygon. 31 | */ 32 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 33 | USplineComponent* Polygon; 34 | 35 | /** 36 | * The Globe Anchor Component that precisely ties this Polygon to the Globe. 37 | */ 38 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 39 | UCesiumGlobeAnchorComponent* GlobeAnchor; 40 | 41 | virtual void OnConstruction(const FTransform& Transform) override; 42 | 43 | /** 44 | * Creates and returns a CartographicPolygon object 45 | * created from the current spline selection. 46 | * 47 | * @param worldToTileset The transformation from Unreal world coordinates to 48 | * the coordinates of the Cesium3DTileset Actor for which the cartographic 49 | * polygon is being created. 50 | */ 51 | CesiumGeospatial::CartographicPolygon 52 | CreateCartographicPolygon(const FTransform& worldToTileset) const; 53 | 54 | // AActor overrides 55 | virtual void PostLoad() override; 56 | 57 | protected: 58 | virtual void BeginPlay() override; 59 | 60 | private: 61 | void MakeLinear(); 62 | }; 63 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumCommon.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Runtime/Launch/Resources/Version.h" 6 | 7 | #define ENGINE_VERSION_5_5_OR_HIGHER \ 8 | (ENGINE_MAJOR_VERSION > 5 || ENGINE_MINOR_VERSION >= 5) 9 | #define ENGINE_VERSION_5_4_OR_HIGHER \ 10 | (ENGINE_MAJOR_VERSION > 5 || ENGINE_MINOR_VERSION >= 4) 11 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumCustomVersion.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | #pragma once 3 | 4 | #include "CoreMinimal.h" 5 | #include "Misc/Guid.h" 6 | 7 | struct CESIUMRUNTIME_API FCesiumCustomVersion { 8 | enum Versions { 9 | // The version before any custom version was added to Cesium for Unreal 10 | BeforeCustomVersionWasAdded = 0, 11 | 12 | // Cesium3DTileset gained the TilesetSource property. In previous versions, 13 | // the tileset source was assumed to be the URL if one was supplied, and 14 | // Cesium ion otherwise. 15 | TilesetExplicitSource = 1, 16 | 17 | // The Georeferencing system was refactored. 18 | GeoreferenceRefactoring = 2, 19 | 20 | // The explicit Mobility property on Cesium3DTileset was removed, in favor 21 | // of the normal Mobility property on the RootComponent. 22 | TilesetMobilityRemoved = 3, 23 | 24 | // The UCesiumGlobeAnchorComponent's globe transformation changed from being 25 | // an array of doubles to being an FMatrix. 26 | GlobeAnchorTransformationAsFMatrix = 4, 27 | 28 | // The origin shifting behavior became an independent component rather than 29 | // built into the CesiumGeoreference. 30 | OriginShiftComponent = 5, 31 | 32 | // Fly-to behavior became an independent component rather than built into 33 | // the GlobeAwareDefaultPawn. 34 | FlyToComponent = 6, 35 | 36 | // Added the CesiumIonServer property to Cesium3DTileset and 37 | // CesiumIonRasterOverlay. 38 | CesiumIonServer = 7, 39 | 40 | // Replaced the UseWebMercatorProjection property in 41 | // CesiumWebMapTileServiceOverlay with the enum Projection property. 42 | WebMapTileServiceProjectionAsEnum = 8, 43 | 44 | VersionPlusOne, 45 | LatestVersion = VersionPlusOne - 1 46 | }; 47 | 48 | // The GUID for the Cesium for Unreal plugin's custom version 49 | static const FGuid GUID; 50 | }; 51 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumDebugColorizeTilesRasterOverlay.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumRasterOverlay.h" 6 | #include "CoreMinimal.h" 7 | #include "CesiumDebugColorizeTilesRasterOverlay.generated.h" 8 | 9 | /** 10 | * A raster overlay that can be used to debug tilesets by shading each tile with 11 | * a random color. 12 | */ 13 | UCLASS( 14 | DisplayName = "Cesium Debug Colorize Tiles Raster Overlay", 15 | ClassGroup = (Cesium), 16 | meta = (BlueprintSpawnableComponent)) 17 | class CESIUMRUNTIME_API UCesiumDebugColorizeTilesRasterOverlay 18 | : public UCesiumRasterOverlay { 19 | GENERATED_BODY() 20 | 21 | public: 22 | protected: 23 | virtual std::unique_ptr CreateOverlay( 24 | const CesiumRasterOverlays::RasterOverlayOptions& options = {}) override; 25 | }; 26 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumGlobeAnchoredActorComponent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Components/ActorComponent.h" 6 | #include "CesiumGlobeAnchoredActorComponent.generated.h" 7 | 8 | class UCesiumGlobeAnchorComponent; 9 | 10 | UCLASS(ClassGroup = "Cesium", Abstract) 11 | class CESIUMRUNTIME_API UCesiumGlobeAnchoredActorComponent 12 | : public UActorComponent { 13 | GENERATED_BODY() 14 | 15 | public: 16 | UFUNCTION(BlueprintGetter) 17 | UCesiumGlobeAnchorComponent* GetGlobeAnchor(); 18 | 19 | protected: 20 | virtual void OnRegister() override; 21 | virtual void BeginPlay() override; 22 | 23 | private: 24 | void ResolveGlobeAnchor(); 25 | 26 | // The globe anchor attached to the same Actor as this component. Don't 27 | // save/load or copy this. It is set in BeginPlay and OnRegister. 28 | UPROPERTY( 29 | Category = "Cesium", 30 | BlueprintReadOnly, 31 | BlueprintGetter = GetGlobeAnchor, 32 | Transient, 33 | DuplicateTransient, 34 | TextExportTransient, 35 | Meta = (AllowPrivateAccess)) 36 | UCesiumGlobeAnchorComponent* GlobeAnchor; 37 | }; 38 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumRasterOverlayLoadFailureDetails.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "CesiumRasterOverlayLoadFailureDetails.generated.h" 7 | 8 | class UCesiumRasterOverlay; 9 | 10 | UENUM(BlueprintType) 11 | enum class ECesiumRasterOverlayLoadType : uint8 { 12 | /** 13 | * An unknown load error. 14 | */ 15 | Unknown, 16 | 17 | /** 18 | * A Cesium ion asset endpoint. 19 | */ 20 | CesiumIon, 21 | 22 | /** 23 | * @brief An initial load needed to create the overlay's tile provider. 24 | */ 25 | TileProvider 26 | }; 27 | 28 | USTRUCT(BlueprintType) 29 | struct CESIUMRUNTIME_API FCesiumRasterOverlayLoadFailureDetails { 30 | GENERATED_BODY() 31 | 32 | /** 33 | * The overlay that encountered the load failure. 34 | */ 35 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 36 | TWeakObjectPtr Overlay = nullptr; 37 | 38 | /** 39 | * The type of request that failed to load. 40 | */ 41 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 42 | ECesiumRasterOverlayLoadType Type = ECesiumRasterOverlayLoadType::Unknown; 43 | 44 | /** 45 | * The HTTP status code of the response that led to the failure. 46 | * 47 | * If there was no response or the failure did not follow from a request, then 48 | * the value of this property will be 0. 49 | */ 50 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 51 | int32 HttpStatusCode = 0; 52 | 53 | /** 54 | * A human-readable explanation of what failed. 55 | */ 56 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Cesium") 57 | FString Message; 58 | }; 59 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumRuntime.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Modules/ModuleManager.h" 7 | #include 8 | 9 | class ACesium3DTileset; 10 | class UCesiumRasterOverlay; 11 | 12 | namespace CesiumAsync { 13 | class AsyncSystem; 14 | class IAssetAccessor; 15 | class ICacheDatabase; 16 | } // namespace CesiumAsync 17 | 18 | DECLARE_LOG_CATEGORY_EXTERN(LogCesium, Log, All); 19 | 20 | class FCesiumRuntimeModule : public IModuleInterface { 21 | public: 22 | /** IModuleInterface implementation */ 23 | virtual void StartupModule() override; 24 | virtual void ShutdownModule() override; 25 | }; 26 | 27 | /** 28 | * The delegate for the OnCesium3DTilesetIonTroubleshooting, which is triggered 29 | * when the tileset encounters a load error. 30 | */ 31 | DECLARE_MULTICAST_DELEGATE_OneParam( 32 | FCesium3DTilesetIonTroubleshooting, 33 | ACesium3DTileset*); 34 | 35 | CESIUMRUNTIME_API extern FCesium3DTilesetIonTroubleshooting 36 | OnCesium3DTilesetIonTroubleshooting; 37 | 38 | /** 39 | * The delegate for the OnCesiumRasterOverlayIonTroubleshooting, which is 40 | * triggered when the tileset encounters a load error. 41 | */ 42 | DECLARE_MULTICAST_DELEGATE_OneParam( 43 | FCesiumRasterOverlayIonTroubleshooting, 44 | UCesiumRasterOverlay*); 45 | 46 | CESIUMRUNTIME_API extern FCesiumRasterOverlayIonTroubleshooting 47 | OnCesiumRasterOverlayIonTroubleshooting; 48 | 49 | CESIUMRUNTIME_API CesiumAsync::AsyncSystem& getAsyncSystem() noexcept; 50 | CESIUMRUNTIME_API const std::shared_ptr& 51 | getAssetAccessor(); 52 | 53 | CESIUMRUNTIME_API std::shared_ptr& 54 | getCacheDatabase(); 55 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumSampleHeightResult.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumSampleHeightResult.generated.h" 6 | 7 | /** 8 | * The result of sampling the height on a tileset at the given cartographic 9 | * position. 10 | */ 11 | USTRUCT(BlueprintType) 12 | struct CESIUMRUNTIME_API FCesiumSampleHeightResult { 13 | GENERATED_BODY() 14 | 15 | /** 16 | * The Longitude (X) and Latitude (Y) are the same values provided on input. 17 | * The Height (Z) is the height sampled from the tileset if the SampleSuccess 18 | * property is true, or the original height provided on input if SampleSuccess 19 | * is false. 20 | */ 21 | UPROPERTY(BlueprintReadWrite, Category = "Cesium") 22 | FVector LongitudeLatitudeHeight = {0.0, 0.0, 0.0}; 23 | 24 | /** 25 | * True if the height as sampled from the tileset successfully. False if the 26 | * tileset doesn't have any height at that position, or if something went 27 | * wrong. If something went wrong, the Warnings pin of the sampling function 28 | * will have more information about the problem. 29 | */ 30 | UPROPERTY(BlueprintReadWrite, Category = "Cesium") 31 | bool SampleSuccess = false; 32 | }; 33 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CesiumTile.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "Components/PrimitiveComponent.h" 6 | #include "CoreMinimal.h" 7 | #include 8 | #include "CesiumTile.generated.h" 9 | 10 | /** 11 | * A UObject representation of a Cesium Tile. 12 | * This class provides an interface for accessing properties of a Cesium Tile 13 | * from within Unreal Engine. It exposes the Bounds property, which can be 14 | * accessed from Blueprints, and provides a helper function for testing 15 | * intersection with a primitive component. 16 | */ 17 | UCLASS() 18 | class CESIUMRUNTIME_API UCesiumTile : public UPrimitiveComponent { 19 | GENERATED_BODY() 20 | 21 | glm::dmat4 _tileTransform; 22 | 23 | Cesium3DTilesSelection::BoundingVolume _tileBounds = 24 | CesiumGeometry::OrientedBoundingBox(glm::dvec3(0.0), glm::dmat3(1.0)); 25 | 26 | public: 27 | /** 28 | * Tests whether a primitive component overlaps with this tile using a sphere 29 | * and box comparison. This function provides a convenient way to test for 30 | * intersection between a primitive component and this tile. 31 | */ 32 | UFUNCTION(BlueprintCallable, Category = "Cesium") 33 | bool TileBoundsOverlapsPrimitive(const UPrimitiveComponent* Other) const; 34 | 35 | /** 36 | * Checks if this tile is fully inside the given primitive component using a 37 | * sphere and box comparison. It uses the FBox::IsInside function to compare 38 | * the FBox of the component and the tile's bounds. 39 | */ 40 | UFUNCTION(BlueprintCallable, Category = "Cesium") 41 | bool 42 | PrimitiveBoxFullyContainsTileBounds(const UPrimitiveComponent* Other) const; 43 | 44 | virtual FBoxSphereBounds 45 | CalcBounds(const FTransform& LocalToWorld) const override; 46 | 47 | friend class CesiumTileExcluderAdapter; 48 | }; 49 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/CustomDepthParameters.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include 6 | #include 7 | 8 | #include "CustomDepthParameters.generated.h" 9 | 10 | USTRUCT(BlueprintType) 11 | struct CESIUMRUNTIME_API FCustomDepthParameters { 12 | GENERATED_USTRUCT_BODY() 13 | 14 | public: 15 | /** If true, this component will be rendered in the CustomDepth pass (usually 16 | * used for outlines) */ 17 | UPROPERTY( 18 | EditAnywhere, 19 | AdvancedDisplay, 20 | BlueprintReadOnly, 21 | Category = Rendering, 22 | meta = (DisplayName = "Render CustomDepth Pass")) 23 | bool RenderCustomDepth = false; 24 | 25 | /** Mask used for stencil buffer writes. */ 26 | UPROPERTY( 27 | EditAnywhere, 28 | AdvancedDisplay, 29 | BlueprintReadOnly, 30 | Category = "Rendering", 31 | meta = (EditCondition = "RenderCustomDepth")) 32 | ERendererStencilMask CustomDepthStencilWriteMask = 33 | ERendererStencilMask::ERSM_Default; 34 | 35 | /** Optionally write this 0-255 value to the stencil buffer in CustomDepth 36 | * pass (Requires project setting or r.CustomDepth == 3) */ 37 | UPROPERTY( 38 | EditAnywhere, 39 | AdvancedDisplay, 40 | BlueprintReadOnly, 41 | Category = Rendering, 42 | meta = (UIMin = "0", UIMax = "255", EditCondition = "RenderCustomDepth")) 43 | int32 CustomDepthStencilValue = 0; 44 | 45 | bool operator==(const FCustomDepthParameters& other) const { 46 | return RenderCustomDepth == other.RenderCustomDepth && 47 | CustomDepthStencilWriteMask == other.CustomDepthStencilWriteMask && 48 | CustomDepthStencilValue == other.CustomDepthStencilValue; 49 | } 50 | 51 | bool operator!=(const FCustomDepthParameters& other) const { 52 | return !(*this == other); 53 | } 54 | }; 55 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/OriginPlacement.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "OriginPlacement.generated.h" 8 | 9 | /** 10 | * An enumeration of the possible strategies for placing the origin of 11 | * a Georeference. 12 | */ 13 | UENUM(BlueprintType) 14 | enum class EOriginPlacement : uint8 { 15 | /** 16 | * Use the tileset's true origin as the Actor's origin. For georeferenced 17 | * tilesets, this usually means the Actor's origin will be at the center 18 | * of the Earth, which is not recommended. For a non-georeferenced tileset, 19 | * however, such as a detailed building with a local origin, putting the 20 | * Actor's origin at the same location as the tileset's origin can be useful. 21 | */ 22 | TrueOrigin UMETA(DisplayName = "True origin"), 23 | 24 | /** 25 | * Use a custom position within the tileset as the Actor's origin. The 26 | * position is expressed as a longitude, latitude, and height, and that 27 | * position within the tileset will be at coordinate (0,0,0) in the Actor's 28 | * coordinate system. 29 | */ 30 | CartographicOrigin UMETA(DisplayName = "Longitude / latitude / height") 31 | }; 32 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/UnrealAssetAccessor.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumAsync/AsyncSystem.h" 6 | #include "CesiumAsync/IAssetAccessor.h" 7 | #include "Containers/Map.h" 8 | #include "Containers/UnrealString.h" 9 | #include "HAL/Platform.h" 10 | #include 11 | 12 | class CESIUMRUNTIME_API UnrealAssetAccessor 13 | : public CesiumAsync::IAssetAccessor { 14 | public: 15 | UnrealAssetAccessor(); 16 | 17 | virtual CesiumAsync::Future> 18 | get(const CesiumAsync::AsyncSystem& asyncSystem, 19 | const std::string& url, 20 | const std::vector& headers) 21 | override; 22 | 23 | virtual CesiumAsync::Future> 24 | request( 25 | const CesiumAsync::AsyncSystem& asyncSystem, 26 | const std::string& verb, 27 | const std::string& url, 28 | const std::vector& headers, 29 | const std::span& contentPayload) override; 30 | 31 | virtual void tick() noexcept override; 32 | 33 | private: 34 | CesiumAsync::Future> getFromFile( 35 | const CesiumAsync::AsyncSystem& asyncSystem, 36 | const std::string& url, 37 | const std::vector& headers); 38 | 39 | FString _userAgent; 40 | TMap _cesiumRequestHeaders; 41 | }; 42 | -------------------------------------------------------------------------------- /Source/CesiumRuntime/Public/UnrealTaskProcessor.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors 2 | 3 | #pragma once 4 | 5 | #include "CesiumAsync/ITaskProcessor.h" 6 | #include "HAL/Platform.h" 7 | 8 | class CESIUMRUNTIME_API UnrealTaskProcessor 9 | : public CesiumAsync::ITaskProcessor { 10 | public: 11 | virtual void startTask(std::function f) override; 12 | }; 13 | -------------------------------------------------------------------------------- /TestsProject/Config/DefaultEditor.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/TestsProject/Config/DefaultEditor.ini -------------------------------------------------------------------------------- /TestsProject/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GeneralProjectSettings] 4 | ProjectID=A458F9D9477159375E50488BA1C94220 5 | 6 | [/Script/UnrealEd.ProjectPackagingSettings] 7 | Build=IfProjectHasCode 8 | BuildConfiguration=PPBC_Development 9 | BuildTarget= 10 | LaunchOnTarget= 11 | StagingDirectory=(Path="") 12 | FullRebuild=False 13 | ForDistribution=False 14 | IncludeDebugFiles=False 15 | BlueprintNativizationMethod=Disabled 16 | bIncludeNativizedAssetsInProjectGeneration=False 17 | bExcludeMonolithicEngineHeadersInNativizedCode=False 18 | UsePakFile=True 19 | bUseIoStore=True 20 | bUseZenStore=False 21 | bMakeBinaryConfig=False 22 | bGenerateChunks=False 23 | bGenerateNoChunks=False 24 | bChunkHardReferencesOnly=False 25 | bForceOneChunkPerFile=False 26 | MaxChunkSize=0 27 | bBuildHttpChunkInstallData=False 28 | HttpChunkInstallDataDirectory=(Path="") 29 | bCompressed=True 30 | PackageCompressionFormat=Oodle 31 | bForceUseProjectCompressionFormatIgnoreHardwareOverride=False 32 | PackageAdditionalCompressionOptions= 33 | PackageCompressionMethod=Kraken 34 | PackageCompressionLevel_DebugDevelopment=4 35 | PackageCompressionLevel_TestShipping=5 36 | PackageCompressionLevel_Distribution=7 37 | PackageCompressionMinBytesSaved=1024 38 | PackageCompressionMinPercentSaved=5 39 | bPackageCompressionEnableDDC=False 40 | PackageCompressionMinSizeToConsiderDDC=0 41 | HttpChunkInstallDataVersion= 42 | IncludePrerequisites=True 43 | IncludeAppLocalPrerequisites=False 44 | bShareMaterialShaderCode=True 45 | bDeterministicShaderCodeOrder=False 46 | bSharedMaterialNativeLibraries=True 47 | ApplocalPrerequisitesDirectory=(Path="") 48 | IncludeCrashReporter=False 49 | InternationalizationPreset=English 50 | -CulturesToStage=en 51 | +CulturesToStage=en 52 | LocalizationTargetCatchAllChunkId=0 53 | bCookAll=False 54 | bCookMapsOnly=False 55 | bSkipEditorContent=False 56 | bSkipMovies=False 57 | +MapsToCook=(FilePath="NewMap") 58 | PerPlatformBuildConfig=() 59 | PerPlatformTargetFlavorName=() 60 | PerPlatformBuildTarget=() 61 | 62 | -------------------------------------------------------------------------------- /TestsProject/Config/HoloLens/HoloLensEngine.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/HoloLensPlatformEditor.HoloLensTargetSettings] 4 | bBuildForEmulation=False 5 | bBuildForDevice=True 6 | bUseNameForLogo=True 7 | bBuildForRetailWindowsStore=False 8 | bAutoIncrementVersion=False 9 | bShouldCreateAppInstaller=False 10 | AppInstallerInstallationURL= 11 | HoursBetweenUpdateChecks=0 12 | bEnablePIXProfiling=False 13 | TileBackgroundColor=(B=64,G=0,R=0,A=255) 14 | SplashScreenBackgroundColor=(B=64,G=0,R=0,A=255) 15 | +PerCultureResources=(CultureId="",Strings=(PackageDisplayName="",PublisherDisplayName="",PackageDescription="",ApplicationDisplayName="",ApplicationDescription=""),Images=()) 16 | TargetDeviceFamily=Windows.Holographic 17 | MinimumPlatformVersion= 18 | MaximumPlatformVersionTested=10.0.18362.0 19 | MaxTrianglesPerCubicMeter=500.000000 20 | SpatialMeshingVolumeSize=20.000000 21 | CompilerVersion=Default 22 | Windows10SDKVersion=10.0.18362.0 23 | +CapabilityList=internetClientServer 24 | +CapabilityList=privateNetworkClientServer 25 | +Uap2CapabilityList=spatialPerception 26 | bSetDefaultCapabilities=False 27 | SpatializationPlugin= 28 | ReverbPlugin= 29 | OcclusionPlugin= 30 | SoundCueCookQualityIndex=-1 31 | 32 | -------------------------------------------------------------------------------- /TestsProject/Content/NewMap.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal/c673662b92896976610e1d5b649d6b857f2b6e4c/TestsProject/Content/NewMap.umap -------------------------------------------------------------------------------- /TestsProject/TestsProject.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "5.3", 4 | "Category": "", 5 | "Description": "", 6 | "Plugins": [ 7 | { 8 | "Name": "ModelingToolsEditorMode", 9 | "Enabled": true, 10 | "TargetAllowList": [ 11 | "Editor" 12 | ] 13 | }, 14 | { 15 | "Name": "FunctionalTestingEditor", 16 | "Enabled": true 17 | }, 18 | { 19 | "Name": "CesiumForUnreal", 20 | "Enabled": true, 21 | "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/87b0d05800a545d49bf858ef3458c4f7", 22 | "SupportedTargetPlatforms": [ 23 | "Win64", 24 | "Mac", 25 | "Linux", 26 | "Android", 27 | "IOS" 28 | ] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /ThirdParty.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "cesium-native", 4 | "url": "https://github.com/CesiumGS/cesium-native", 5 | "version": "Latest", 6 | "license": ["Apache 2.0"] 7 | }, 8 | { 9 | "name": "Font Awesome Icons", 10 | "url": "https://fontawesome.com/", 11 | "version": "N/A", 12 | "license": ["CC BY 4.0 License"], 13 | "notes": "See Content/FontAwesome/attribution.txt" 14 | }, 15 | { 16 | "name": "MikkTSpace", 17 | "url": "https://github.com/mmikk/MikkTSpace", 18 | "license": ["Zlib"] 19 | }, 20 | { 21 | "name": "HTML Tidy", 22 | "url": "https://github.com/htacg/tidy-html5", 23 | "license": ["HTML Tidy License"] 24 | } 25 | ] 26 | -------------------------------------------------------------------------------- /extern/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | build-android 3 | build-trace 4 | -------------------------------------------------------------------------------- /extern/CMakeSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "x64-Debug", 5 | "generator": "Ninja", 6 | "configurationType": "Debug", 7 | "inheritEnvironments": [ "msvc_x64_x64" ], 8 | "buildRoot": "${projectDir}\\out\\build\\${name}", 9 | "installRoot": "${projectDir}\\out\\install\\${name}", 10 | "cmakeCommandArgs": "", 11 | "buildCommandArgs": "", 12 | "ctestCommandArgs": "" 13 | }, 14 | { 15 | "name": "x64-Release", 16 | "generator": "Ninja", 17 | "configurationType": "RelWithDebInfo", 18 | "buildRoot": "${projectDir}\\out\\build\\${name}", 19 | "installRoot": "${projectDir}\\out\\install\\${name}", 20 | "cmakeCommandArgs": "", 21 | "buildCommandArgs": "", 22 | "ctestCommandArgs": "", 23 | "inheritEnvironments": [ "msvc_x64_x64" ], 24 | "variables": [] 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /extern/build-helper.sh: -------------------------------------------------------------------------------- 1 | cmake -B build -S . -G "Visual Studio 16 2019" && cmake --build build --config Debug --target install && cmake --build build --config Release --target install -------------------------------------------------------------------------------- /extern/include/CesiumUtility/Tracing.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifdef CESIUM_OVERRIDE_TRACING 4 | 5 | // If the build system doesn't enable the tracing support 6 | // consider it disabled by default. 7 | #ifndef CESIUM_TRACING_ENABLED 8 | #define CESIUM_TRACING_ENABLED 0 9 | #endif 10 | 11 | #if !CESIUM_TRACING_ENABLED 12 | 13 | #define CESIUM_TRACE_INIT(filename) 14 | #define CESIUM_TRACE_SHUTDOWN() 15 | #define CESIUM_TRACE(name) 16 | #define CESIUM_TRACE_BEGIN(name) 17 | #define CESIUM_TRACE_END(name) 18 | #define CESIUM_TRACE_BEGIN_IN_TRACK(name) 19 | #define CESIUM_TRACE_END_IN_TRACK(name) 20 | #define CESIUM_TRACE_DECLARE_TRACK_SET(id, name) 21 | #define CESIUM_TRACE_USE_TRACK_SET(id) 22 | #define CESIUM_TRACE_LAMBDA_CAPTURE_TRACK() tracingTrack = false 23 | #define CESIUM_TRACE_USE_CAPTURED_TRACK() 24 | 25 | #else 26 | 27 | #include "PCH.CesiumRuntime.h" 28 | #include "ProfilingDebugging/CpuProfilerTrace.h" 29 | 30 | #ifdef TEXT 31 | #undef TEXT 32 | #endif 33 | 34 | #define CESIUM_TRACE_INIT(filename) 35 | #define CESIUM_TRACE_SHUTDOWN() 36 | #define CESIUM_TRACE(name) TRACE_CPUPROFILER_EVENT_SCOPE(name) 37 | #define CESIUM_TRACE_BEGIN(name) 38 | #define CESIUM_TRACE_END(name) 39 | #define CESIUM_TRACE_BEGIN_IN_TRACK(name) 40 | #define CESIUM_TRACE_END_IN_TRACK(name) 41 | #define CESIUM_TRACE_DECLARE_TRACK_SET(id, name) 42 | #define CESIUM_TRACE_USE_TRACK_SET(id) 43 | #define CESIUM_TRACE_LAMBDA_CAPTURE_TRACK() tracingTrack = false 44 | #define CESIUM_TRACE_USE_CAPTURED_TRACK() 45 | 46 | #endif // CESIUM_TRACING_ENABLED 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /extern/unreal-android-toolchain.cmake: -------------------------------------------------------------------------------- 1 | SET(CMAKE_SYSTEM_NAME Android) 2 | SET(CMAKE_SYSTEM_VERSION 21) 3 | 4 | SET(CMAKE_ANDROID_ARCH_ABI arm64-v8a) 5 | SET(CMAKE_ANDROID_NDK "$ENV{ANDROID_NDK_ROOT}") 6 | SET(CMAKE_ANDROID_STL_TYPE c++_shared) 7 | 8 | # search for programs in the build host directories 9 | SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | # for libraries and headers in the target directories 11 | SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) 12 | SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) 13 | SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) 14 | 15 | SET(HTTPLIB_USE_OPENSSL_IF_AVAILABLE OFF) 16 | 17 | add_definitions(-DANDROID) 18 | -------------------------------------------------------------------------------- /extern/unreal-ios-toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(GENERATOR Xcode) 2 | set(CMAKE_SYSTEM_NAME iOS) 3 | set(CMAKE_OSX_ARCHITECTURES arm64) 4 | set(CMAKE_SYSTEM_PROCESSOR arm64) 5 | set(CMAKE_OSX_DEPLOYMENT_TARGET 15) 6 | set(CMAKE_POSITION_INDEPENDENT_CODE ON) 7 | SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) 8 | SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) 9 | SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) 10 | -------------------------------------------------------------------------------- /extern/unreal-linux-from-windows-toolchain.cmake: -------------------------------------------------------------------------------- 1 | SET(CMAKE_SYSTEM_NAME Linux) 2 | SET(CMAKE_SYSTEM_PROCESSOR x86_64) 3 | 4 | SET(CMAKE_SYSROOT $ENV{UNREAL_ENGINE_COMPILER_DIR}) 5 | 6 | SET(CMAKE_C_COMPILER "$ENV{UNREAL_ENGINE_COMPILER_DIR}/bin/clang.exe") 7 | SET(CMAKE_CXX_COMPILER "$ENV{UNREAL_ENGINE_COMPILER_DIR}/bin/clang++.exe") 8 | SET(CMAKE_BUILD_WITH_INSTALL_RPATH on) 9 | SET(CMAKE_POSITION_INDEPENDENT_CODE on) 10 | 11 | set(CMAKE_C_COMPILER_TARGET x86_64-unknown-linux-gnu) 12 | set(CMAKE_CXX_COMPILER_TARGET x86_64-unknown-linux-gnu) 13 | SET(CMAKE_CXX_FLAGS "-nostdinc++ \"-I$ENV{UNREAL_ENGINE_LIBCXX_DIR}/include\" \"-I$ENV{UNREAL_ENGINE_LIBCXX_DIR}/include/c++/v1\" -target x86_64-unknown-linux-gnu") 14 | SET(CMAKE_C_FLAGS "-target x86_64-unknown-linux-gnu") 15 | 16 | # search for programs in the build host directories 17 | SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 18 | # for libraries and headers in the target directories 19 | SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 20 | SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 21 | SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) 22 | 23 | -------------------------------------------------------------------------------- /extern/unreal-linux-toolchain.cmake: -------------------------------------------------------------------------------- 1 | SET(CMAKE_SYSTEM_NAME Linux) 2 | SET(CMAKE_SYSTEM_PROCESSOR x86_64) 3 | 4 | SET(CMAKE_SYSROOT "$ENV{UNREAL_ENGINE_COMPILER_DIR}") 5 | 6 | SET(CMAKE_C_COMPILER $ENV{UNREAL_ENGINE_COMPILER_DIR}/bin/clang) 7 | SET(CMAKE_CXX_COMPILER $ENV{UNREAL_ENGINE_COMPILER_DIR}/bin/clang++) 8 | SET(CMAKE_AR $ENV{UNREAL_ENGINE_COMPILER_DIR}/bin/llvm-ar) 9 | SET(CMAKE_BUILD_WITH_INSTALL_RPATH on) 10 | SET(CMAKE_POSITION_INDEPENDENT_CODE on) 11 | 12 | # These were deduced by scouring Unreal's LinuxToolChain.cs. 13 | SET(CMAKE_C_FLAGS "-fvisibility-ms-compat -fvisibility-inlines-hidden") 14 | SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -nostdinc++ -I$ENV{UNREAL_ENGINE_LIBCXX_DIR}/include -I$ENV{UNREAL_ENGINE_LIBCXX_DIR}/include/c++/v1 -target x86_64-unknown-linux-gnu") 15 | SET(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=lld -target x86_64-unknown-linux-gnu --sysroot=$ENV{UNREAL_ENGINE_COMPILER_DIR} -B$ENV{UNREAL_ENGINE_COMPILER_DIR}/usr/lib -B$ENV{UNREAL_ENGINE_COMPILER_DIR}/usr/lib64 -L$ENV{UNREAL_ENGINE_COMPILER_DIR}/usr/lib -L$ENV{UNREAL_ENGINE_COMPILER_DIR}/usr/lib64 -nodefaultlibs -L$ENV{UNREAL_ENGINE_LIBCXX_DIR}/lib/Unix/x86_64-unknown-linux-gnu/ $ENV{UNREAL_ENGINE_LIBCXX_DIR}/lib/Unix/x86_64-unknown-linux-gnu/libc++.a $ENV{UNREAL_ENGINE_LIBCXX_DIR}/lib/Unix/x86_64-unknown-linux-gnu/libc++abi.a -lm -lc -lpthread -lgcc_s -lgcc") 16 | 17 | # search for programs in the build host directories 18 | SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 19 | # for libraries and headers in the target directories 20 | SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) 21 | SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) 22 | SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) 23 | -------------------------------------------------------------------------------- /extern/unreal-mac-toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(GENERATOR Xcode) 2 | set(CMAKE_SYSTEM_NAME Darwin) 3 | set(CMAKE_OSX_ARCHITECTURES x86_64) -------------------------------------------------------------------------------- /extern/vcpkg-overlays/abseil/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abseil", 3 | "version": "20240722.0-cesium-for-unreal", 4 | "description": [ 5 | "Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google's own C++ code base, has been extensively tested and used in production, and is the same code we depend on in our daily coding lives.", 6 | "In some cases, Abseil provides pieces missing from the C++ standard; in others, Abseil provides alternatives to the standard for special needs we've found through usage in the Google code base. We denote those cases clearly within the library code we provide you.", 7 | "Abseil is not meant to be a competitor to the standard library; we've just found that many of these utilities serve a purpose within our code base, and we now want to provide those resources to the C++ community as a whole." 8 | ], 9 | "homepage": "https://github.com/abseil/abseil-cpp", 10 | "license": "Apache-2.0", 11 | "dependencies": [ 12 | { 13 | "name": "vcpkg-cmake", 14 | "host": true 15 | }, 16 | { 17 | "name": "vcpkg-cmake-config", 18 | "host": true 19 | } 20 | ], 21 | "features": { 22 | "cxx17": { 23 | "description": "Enable compiler C++17." 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ada-url/no-cpm.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index b206edb6..1db4099d 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -30,7 +30,6 @@ option(ADA_TESTING "Build tests" ${BUILD_TESTING}) 6 | # errors due to CPM, so this is here to support disabling all the testing 7 | # and tooling for ada if one only wishes to use the ada library. 8 | if(ADA_TESTING OR ADA_BENCHMARKS OR ADA_TOOLS) 9 | - include(cmake/CPM.cmake) 10 | # CPM requires git as an implicit dependency 11 | find_package(Git QUIET) 12 | # We use googletest in the tests 13 | diff --git a/tools/cli/CMakeLists.txt b/tools/cli/CMakeLists.txt 14 | index ff57220b..a6d90f29 100644 15 | --- a/tools/cli/CMakeLists.txt 16 | +++ b/tools/cli/CMakeLists.txt 17 | @@ -8,12 +8,8 @@ if(MSVC AND BUILD_SHARED_LIBS) 18 | "$" # <--this is in-file 19 | "$") # <--this is out-file path 20 | endif() 21 | -CPMAddPackage("gh:fmtlib/fmt#10.2.1") 22 | -CPMAddPackage( 23 | - GITHUB_REPOSITORY jarro2783/cxxopts 24 | - VERSION 3.2.0 25 | - OPTIONS "CXXOPTS_BUILD_EXAMPLES NO" "CXXOPTS_BUILD_TESTS NO" "CXXOPTS_ENABLE_INSTALL YES" 26 | -) 27 | +find_package(fmt CONFIG REQUIRED) 28 | +find_package(cxxopts CONFIG REQUIRED) 29 | target_link_libraries(adaparse PRIVATE cxxopts::cxxopts fmt::fmt) 30 | 31 | if(MSVC OR MINGW) 32 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ada-url/portfile.cmake: -------------------------------------------------------------------------------- 1 | vcpkg_from_github( 2 | OUT_SOURCE_PATH SOURCE_PATH 3 | REPO ada-url/ada 4 | REF "v${VERSION}" 5 | SHA512 bc876db537153d6b0599215ca8be8261bceca6d213fcc63af5fda13c1b32876496cb8d4e98c787f17317cf8ffd1940431551513807f1a18f9ce993fad35f5ec6 6 | HEAD_REF main 7 | PATCHES 8 | no-cpm.patch 9 | ) 10 | 11 | vcpkg_check_features( 12 | OUT_FEATURE_OPTIONS FEATURE_OPTIONS 13 | FEATURES 14 | tools ADA_TOOLS 15 | ) 16 | 17 | vcpkg_cmake_configure( 18 | SOURCE_PATH "${SOURCE_PATH}" 19 | OPTIONS 20 | -DADA_BENCHMARKS=OFF 21 | -DBUILD_TESTING=OFF 22 | -DCMAKE_DISABLE_FIND_PACKAGE_Python3=ON 23 | ${FEATURE_OPTIONS} 24 | OPTIONS_DEBUG 25 | -DADA_TOOLS=OFF 26 | ) 27 | 28 | vcpkg_cmake_install() 29 | 30 | vcpkg_copy_pdbs() 31 | 32 | vcpkg_cmake_config_fixup(PACKAGE_NAME ada CONFIG_PATH "lib/cmake/ada") 33 | 34 | if("tools" IN_LIST FEATURES) 35 | vcpkg_copy_tools(TOOL_NAMES adaparse AUTO_CLEAN) 36 | endif() 37 | 38 | file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") 39 | 40 | vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE-APACHE" "${SOURCE_PATH}/LICENSE-MIT") 41 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ada-url/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ada-url", 3 | "version": "2.9.2", 4 | "description": "WHATWG-compliant and fast URL parser written in modern C++", 5 | "homepage": "https://ada-url.com/", 6 | "license": "MIT", 7 | "dependencies": [ 8 | { 9 | "name": "vcpkg-cmake", 10 | "host": true 11 | }, 12 | { 13 | "name": "vcpkg-cmake-config", 14 | "host": true 15 | } 16 | ], 17 | "features": { 18 | "tools": { 19 | "description": "Build CLI tools (adaparse)", 20 | "supports": "!uwp", 21 | "dependencies": [ 22 | "cxxopts", 23 | "fmt" 24 | ] 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ktx/0002-Fix-versioning.patch: -------------------------------------------------------------------------------- 1 | diff --git a/cmake/version.cmake b/cmake/version.cmake 2 | index 4094df1a..3b2af3bb 100644 3 | --- a/cmake/version.cmake 4 | +++ b/cmake/version.cmake 5 | @@ -108,8 +108,10 @@ function(generate_version _var ) 6 | set(${_var} "${KTX_VERSION}" PARENT_SCOPE) 7 | endfunction() 8 | 9 | -# Get latest tag 10 | -git_describe_raw(KTX_VERSION_FULL --abbrev=0 --match v[0-9]*) 11 | +if (!KTX_VERSION_FULL) 12 | + # Get latest tag 13 | + git_describe_raw(KTX_VERSION_FULL --abbrev=0 --match v[0-9]*) 14 | +endif() 15 | #message("KTX full version: ${KTX_VERSION_FULL}") 16 | 17 | # generate_version(TOKTX_VERSION tools/toktx) 18 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ktx/0003-mkversion.patch: -------------------------------------------------------------------------------- 1 | diff --git a/cmake/version.cmake b/cmake/version.cmake 2 | index 9a90622..0fc3521 100644 3 | --- a/cmake/version.cmake 4 | +++ b/cmake/version.cmake 5 | @@ -176,7 +176,7 @@ function( create_version_header dest_path target ) 6 | add_custom_command( 7 | OUTPUT ${version_h_output} 8 | # On Windows this command has to be invoked by a shell in order to work 9 | - COMMAND ${BASH_EXECUTABLE} -c "\"./mkversion\" \"-o\" \"version.h\" \"${dest_path}\"" 10 | + COMMAND "${BASH_EXECUTABLE}" -- ./mkversion -o version.h "${dest_path}" 11 | WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} 12 | COMMENT "Generate ${version_h_output}" 13 | VERBATIM 14 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ktx/0004-quirks.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index 1500844..810914e 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -263,7 +263,7 @@ if(MSVC) 6 | # ";" argument separator is problematic. Can't use a GenEx `$:/WX> ) 9 | - add_compile_options( $,/Gz,/O2> ) 10 | + add_compile_options( $,,/O2> ) 11 | # Enable UTF-8 support 12 | add_compile_options( $<$:/utf-8> ) 13 | add_compile_options( $<$:/utf-8> ) 14 | @@ -946,6 +946,7 @@ if(EMSCRIPTEN) 15 | endif() 16 | 17 | add_library( objUtil STATIC 18 | + EXCLUDE_FROM_ALL 19 | utils/argparser.cpp 20 | utils/argparser.h 21 | utils/ktxapp.h 22 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ktx/0005-no-vendored-libs.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index e99fb143..0f69adf7 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -1071,10 +1071,10 @@ endif() 6 | if((KTX_FEATURE_TOOLS OR KTX_FEATURE_TESTS) AND NOT TARGET fmt::fmt) 7 | set(FMT_INSTALL OFF) 8 | set(FMT_SYSTEM_HEADERS ON) 9 | - add_subdirectory(other_projects/fmt) 10 | + find_package(fmt CONFIG REQUIRED) 11 | endif() 12 | if(KTX_FEATURE_TOOLS AND NOT TARGET cxxopts::cxxopts) 13 | - add_subdirectory(other_projects/cxxopts) 14 | + find_package(cxxopts CONFIG REQUIRED) 15 | endif() 16 | 17 | # Tools 18 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ktx/0006-fix-ios-install.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index e99fb143..072ea889 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -489,7 +489,7 @@ macro(common_libktx_settings target enable_write library_type) 6 | CXX_STANDARD_REQUIRED YES 7 | 8 | ) 9 | - if(IOS) 10 | + if(0) 11 | set_target_properties(${target} PROPERTIES 12 | FRAMEWORK TRUE 13 | ) 14 | @@ -1145,7 +1145,7 @@ endif() 15 | # Use of this to install KHR/khr_df.h is due to CMake's failure to 16 | # preserve the include source folder hierarchy. 17 | # See https://gitlab.kitware.com/cmake/cmake/-/issues/16739. 18 | -if (IOS) 19 | +if (0) 20 | set_source_files_properties( 21 | include/KHR/khr_df.h 22 | PROPERTIES MACOSX_PACKAGE_LOCATION Headers/KHR 23 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ktx/CESIUM-0001-do-not-define-_DEBUG.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index 8f0fff3..9875e97 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -505,7 +505,7 @@ macro(common_libktx_settings target enable_write library_type) 6 | target_compile_definitions( 7 | ${target} 8 | PUBLIC 9 | - "$<$:_DEBUG;DEBUG>" 10 | + #"$<$:_DEBUG;DEBUG>" 11 | PRIVATE 12 | LIBKTX 13 | ) 14 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/ktx/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ktx", 3 | "version-semver": "4.3.2", 4 | "port-version": 2, 5 | "description": [ 6 | "The Khronos KTX library and tools.", 7 | "Functions for writing and reading KTX files, and instantiating OpenGL®, OpenGL ES™️ and Vulkan® textures from them." 8 | ], 9 | "homepage": "https://github.com/KhronosGroup/KTX-Software", 10 | "license": null, 11 | "supports": "arm64 | x64 | !windows", 12 | "dependencies": [ 13 | { 14 | "name": "vcpkg-cmake", 15 | "host": true 16 | }, 17 | { 18 | "name": "vcpkg-cmake-config", 19 | "host": true 20 | }, 21 | "zstd" 22 | ], 23 | "features": { 24 | "tools": { 25 | "description": "Build tools", 26 | "supports": "!android & !uwp", 27 | "dependencies": [ 28 | "cxxopts", 29 | "fmt" 30 | ] 31 | }, 32 | "vulkan": { 33 | "description": "Build Vulkan support", 34 | "supports": "!emscripten" 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/openssl/libcrypto.pc.in: -------------------------------------------------------------------------------- 1 | prefix=${pcfiledir}/../.. 2 | exec_prefix=${prefix} 3 | libdir=${exec_prefix}/lib 4 | includedir=${prefix}/include 5 | Version: 3.2.1 6 | Name: OpenSSL-libcrypto 7 | Description: OpenSSL cryptography library 8 | 9 | 10 | Libs: "-L${libdir}" -llibcrypto 11 | Cflags: -I"${includedir}" 12 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/openssl/libssl.pc.in: -------------------------------------------------------------------------------- 1 | prefix=${pcfiledir}/../.. 2 | exec_prefix=${prefix} 3 | libdir=${exec_prefix}/lib 4 | includedir=${prefix}/include 5 | Version: 3.2.1 6 | Name: OpenSSL-libssl 7 | Description: Secure Sockets Layer and cryptography libraries 8 | 9 | 10 | Libs: "-L${libdir}" -llibssl 11 | Requires: libcrypto 12 | Cflags: -I"${includedir}" 13 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/openssl/openssl.pc.in: -------------------------------------------------------------------------------- 1 | prefix=${pcfiledir}/../.. 2 | exec_prefix=${prefix} 3 | libdir=${exec_prefix}/lib 4 | includedir=${prefix}/include 5 | Version: 3.2.1 6 | Name: OpenSSL 7 | Description: Secure Sockets Layer and cryptography libraries and tools 8 | 9 | 10 | Requires: libssl libcrypto 11 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/openssl/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "openssl", 3 | "version": "0.0.0", 4 | "port-version": 0 5 | } 6 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/sqlite3/add-config-include.patch: -------------------------------------------------------------------------------- 1 | diff --git a/sqlite3.c b/sqlite3.c 2 | index a1fbd60..68a4e21 100644 3 | --- a/sqlite3.c 4 | +++ b/sqlite3.c 5 | @@ -22,6 +22,7 @@ 6 | */ 7 | #define SQLITE_CORE 1 8 | #define SQLITE_AMALGAMATION 1 9 | +#include "sqlite3-vcpkg-config.h" 10 | #ifndef SQLITE_PRIVATE 11 | # define SQLITE_PRIVATE static 12 | #endif 13 | diff --git a/sqlite3.h b/sqlite3.h 14 | index 0376113..271cf53 100644 15 | --- a/sqlite3.h 16 | +++ b/sqlite3.h 17 | @@ -32,6 +32,7 @@ 18 | */ 19 | #ifndef SQLITE3_H 20 | #define SQLITE3_H 21 | +#include "sqlite3-vcpkg-config.h" 22 | #include /* Needed for the definition of va_list */ 23 | 24 | /* 25 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/sqlite3/fix-arm-uwp.patch: -------------------------------------------------------------------------------- 1 | diff --git a/shell.c b/shell.c 2 | index 10d8cc1..99f37a5 100644 3 | --- a/shell.c 4 | +++ b/shell.c 5 | @@ -316,7 +316,11 @@ static int hasTimer(void){ 6 | */ 7 | hProcess = GetCurrentProcess(); 8 | if( hProcess ){ 9 | +#if !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) 10 | HINSTANCE hinstLib = LoadLibrary(TEXT("Kernel32.dll")); 11 | +#else 12 | + HINSTANCE hinstLib = LoadPackagedLibrary(TEXT("Kernel32.dll"), 0); 13 | +#endif 14 | if( NULL != hinstLib ){ 15 | getProcessTimesAddr = 16 | (GETPROCTIMES) GetProcAddress(hinstLib, "GetProcessTimes"); 17 | @@ -2437,10 +2441,16 @@ static int writeFile( 18 | if( zUnicodeName==0 ){ 19 | return 1; 20 | } 21 | +#if !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) 22 | hFile = CreateFileW( 23 | zUnicodeName, FILE_WRITE_ATTRIBUTES, 0, NULL, OPEN_EXISTING, 24 | FILE_FLAG_BACKUP_SEMANTICS, NULL 25 | ); 26 | +#else 27 | + hFile = CreateFile2( 28 | + zUnicodeName, FILE_WRITE_ATTRIBUTES, 0, OPEN_EXISTING, NULL 29 | + ); 30 | +#endif 31 | sqlite3_free(zUnicodeName); 32 | if( hFile!=INVALID_HANDLE_VALUE ){ 33 | BOOL bResult = SetFileTime(hFile, NULL, &lastAccess, &lastWrite); 34 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/sqlite3/sqlite3-config.in.cmake: -------------------------------------------------------------------------------- 1 | 2 | if(NOT WIN32) 3 | include(CMakeFindDependencyMacro) 4 | find_dependency(Threads) 5 | endif() 6 | 7 | include(${CMAKE_CURRENT_LIST_DIR}/unofficial-sqlite3-targets.cmake) 8 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/sqlite3/sqlite3-vcpkg-config.h.in: -------------------------------------------------------------------------------- 1 | /* 2 | * This file was generated to inject vcpkg feature selections into the installed copy of 3 | * sqlite so that consumers need not get the values from pkgconfig or CMake configs. 4 | * 5 | * No include guard: intentionally reuses the include guard from sqlite3.h. 6 | */ 7 | 8 | #ifndef SQLITE_API 9 | #cmakedefine SQLITE_API @SQLITE_API@ 10 | #endif 11 | 12 | #define SQLITE_ENABLE_UNLOCK_NOTIFY 1 13 | #cmakedefine SQLITE_ENABLE_FTS3 14 | #cmakedefine SQLITE_ENABLE_FTS4 15 | #cmakedefine SQLITE_ENABLE_FTS5 16 | #cmakedefine SQLITE_ENABLE_MEMSYS3 17 | #cmakedefine SQLITE_ENABLE_MEMSYS5 18 | #cmakedefine SQLITE_ENABLE_MATH_FUNCTIONS 19 | #cmakedefine SQLITE_ENABLE_UPDATE_DELETE_LIMIT 20 | #cmakedefine SQLITE_ENABLE_RTREE 21 | #cmakedefine SQLITE_ENABLE_SESSION 22 | #cmakedefine SQLITE_ENABLE_PREUPDATE_HOOK 23 | #cmakedefine SQLITE_OMIT_LOAD_EXTENSION 24 | #cmakedefine SQLITE_ENABLE_GEOPOLY 25 | #cmakedefine SQLITE_OMIT_JSON 26 | #cmakedefine SQLITE_OS_WIN @SQLITE_OS_WIN@ 27 | #cmakedefine SQLITE_OS_WINRT @SQLITE_OS_WINRT@ 28 | #define SQLITE_ENABLE_COLUMN_METADATA 1 29 | #cmakedefine SQLITE_OS_UNIX @SQLITE_OS_UNIX@ 30 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/sqlite3/sqlite3.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | libdir=${prefix}/lib 4 | includedir=${prefix}/include 5 | 6 | Name: SQLite 7 | Description: SQL database engine 8 | Version: @PKGCONFIG_VERSION@ 9 | Libs: -L${libdir} -lsqlite3 10 | Libs.private: @PKGCONFIG_LIBS_PRIVATE@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/sqlite3/usage: -------------------------------------------------------------------------------- 1 | sqlite3 provides pkgconfig bindings. 2 | sqlite3 provides CMake targets: 3 | 4 | find_package(unofficial-sqlite3 CONFIG REQUIRED) 5 | target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3) 6 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/stb/FindStb.cmake: -------------------------------------------------------------------------------- 1 | # Distributed under the OSI-approved BSD 3-Clause License. 2 | 3 | #.rst: 4 | # FindStb 5 | # ------------ 6 | # 7 | # Find the Stb include headers. 8 | # 9 | # Result Variables 10 | # ^^^^^^^^^^^^^^^^ 11 | # 12 | # This module defines the following variables: 13 | # 14 | # ``Stb_FOUND`` 15 | # True if Stb library found 16 | # 17 | # ``Stb_INCLUDE_DIR`` 18 | # Location of Stb headers 19 | # 20 | 21 | include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) 22 | include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake) 23 | 24 | if(NOT Stb_INCLUDE_DIR) 25 | find_path(Stb_INCLUDE_DIR NAMES stb_image.h PATHS ${Stb_DIR} PATH_SUFFIXES include) 26 | endif() 27 | 28 | find_package_handle_standard_args(Stb DEFAULT_MSG Stb_INCLUDE_DIR) 29 | mark_as_advanced(Stb_INCLUDE_DIR) 30 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/stb/portfile.cmake: -------------------------------------------------------------------------------- 1 | vcpkg_from_github( 2 | OUT_SOURCE_PATH SOURCE_PATH 3 | REPO nothings/stb 4 | REF f75e8d1cad7d90d72ef7a4661f1b994ef78b4e31 # committed on 2024-07-29 5 | SHA512 4a733aefb816a366c999663e3d482144616721b26c321ee5dd0dce611a34050b6aef97d46bd2c4f8a9631d83b097491a7ce88607fd9493d880aaa94567a68cce 6 | HEAD_REF master 7 | ) 8 | 9 | file(GLOB HEADER_FILES "${SOURCE_PATH}/*.h" "${SOURCE_PATH}/stb_vorbis.c") 10 | file(COPY ${HEADER_FILES} DESTINATION "${CURRENT_PACKAGES_DIR}/include") 11 | 12 | file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/FindStb.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") 13 | file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") 14 | file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") 15 | 16 | vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") 17 | 18 | # Even when told to create static symbols, STB creates two symbols globally, which breaks packaging in UE 5.4. Fix that. 19 | vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/stb_image_resize2.h" "STBIR__SIMDI_CONST(stbir__s" "STBIRDEF STBIR__SIMDI_CONST(stbir__s") 20 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/stb/usage: -------------------------------------------------------------------------------- 1 | The package stb provides CMake targets: 2 | 3 | find_package(Stb REQUIRED) 4 | target_include_directories(main PRIVATE ${Stb_INCLUDE_DIR}) -------------------------------------------------------------------------------- /extern/vcpkg-overlays/stb/vcpkg-cmake-wrapper.cmake: -------------------------------------------------------------------------------- 1 | set(STB_PREV_MODULE_PATH ${CMAKE_MODULE_PATH}) 2 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) 3 | 4 | _find_package(${ARGS}) 5 | 6 | set(CMAKE_MODULE_PATH ${STB_PREV_MODULE_PATH}) 7 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/stb/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "stb", 3 | "version-date": "2024-07-29", 4 | "port-version": 1, 5 | "description": "public domain header-only libraries", 6 | "homepage": "https://github.com/nothings/stb", 7 | "license": "MIT OR CC-PDDC" 8 | } 9 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/triplets/arm64-android-unreal.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/shared/common.cmake") 2 | 3 | set(VCPKG_TARGET_ARCHITECTURE arm64) 4 | set(VCPKG_CRT_LINKAGE dynamic) 5 | set(VCPKG_LIBRARY_LINKAGE static) 6 | set(VCPKG_CMAKE_SYSTEM_NAME Android) 7 | set(VCPKG_MAKE_BUILD_TRIPLET "--host=aarch64-linux-android") 8 | set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=arm64-v8a) 9 | set(VCPKG_CMAKE_SYSTEM_VERSION 21) 10 | 11 | # From Unreal Build Tool: 12 | # https://github.com/EpicGames/UnrealEngine/blob/5.3.2-release/Engine/Source/Programs/UnrealBuildTool/Platform/Android/AndroidToolChain.cs 13 | set(VCPKG_CXX_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden") 14 | set(VCPKG_C_FLAGS "${VCPKG_CXX_FLAGS}") 15 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/triplets/arm64-ios-unreal.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/shared/common.cmake") 2 | 3 | set(VCPKG_TARGET_ARCHITECTURE arm64) 4 | set(VCPKG_CRT_LINKAGE dynamic) 5 | set(VCPKG_LIBRARY_LINKAGE static) 6 | set(VCPKG_CMAKE_SYSTEM_NAME iOS) 7 | set(VCPKG_OSX_DEPLOYMENT_TARGET 15) 8 | 9 | # From Unreal Build Tool: 10 | # https://github.com/EpicGames/UnrealEngine/blob/5.3.2-release/Engine/Source/Programs/UnrealBuildTool/Platform/IOS/IOSToolChain.cs 11 | set(VCPKG_CXX_FLAGS "-fvisibility=hidden") 12 | set(VCPKG_C_FLAGS "${VCPKG_CXX_FLAGS}") 13 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/triplets/arm64-osx-unreal.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/shared/osx-common.cmake") 2 | set(VCPKG_TARGET_ARCHITECTURE arm64) 3 | set(VCPKG_OSX_ARCHITECTURES arm64) 4 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/triplets/shared/common.cmake: -------------------------------------------------------------------------------- 1 | set(VCPKG_ENV_PASSTHROUGH "UNREAL_ENGINE_ROOT") 2 | 3 | if(DEFINED ENV{CESIUM_VCPKG_RELEASE_ONLY} AND "$ENV{CESIUM_VCPKG_RELEASE_ONLY}") 4 | set(VCPKG_BUILD_TYPE "release") 5 | endif() 6 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/triplets/shared/osx-common.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/common.cmake") 2 | 3 | set(VCPKG_CMAKE_SYSTEM_NAME Darwin) 4 | set(VCPKG_CRT_LINKAGE dynamic) 5 | set(VCPKG_LIBRARY_LINKAGE static) 6 | set(VCPKG_OSX_DEPLOYMENT_TARGET 10.15) 7 | 8 | # From Unreal Build Tool: 9 | # https://github.com/EpicGames/UnrealEngine/blob/5.3.2-release/Engine/Source/Programs/UnrealBuildTool/Platform/Mac/MacToolChain.cs 10 | set(VCPKG_CXX_FLAGS "-fvisibility-ms-compat -fvisibility-inlines-hidden") 11 | set(VCPKG_C_FLAGS "${VCPKG_CXX_FLAGS}") 12 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/triplets/x64-linux-unreal.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/shared/common.cmake") 2 | 3 | set(VCPKG_TARGET_ARCHITECTURE x64) 4 | set(VCPKG_CRT_LINKAGE dynamic) 5 | set(VCPKG_LIBRARY_LINKAGE static) 6 | 7 | set(VCPKG_CMAKE_SYSTEM_NAME Linux) 8 | set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE ${CMAKE_CURRENT_LIST_DIR}/../../unreal-linux-toolchain.cmake) 9 | -------------------------------------------------------------------------------- /extern/vcpkg-overlays/triplets/x64-osx-unreal.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/shared/osx-common.cmake") 2 | set(VCPKG_TARGET_ARCHITECTURE x64) 3 | set(VCPKG_OSX_ARCHITECTURES x86_64) 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cesium-unreal", 3 | "version": "2.16.1", 4 | "description": "Cesium for Unreal", 5 | "main": "index.js", 6 | "directories": { 7 | "doc": "Documentation" 8 | }, 9 | "scripts": { 10 | "format": "clang-format -i \"--glob=Source/@(Cesium*)/**/*.@(cpp|h|hpp)\"", 11 | "doxygen": "doxygen ./Documentation/Doxyfile" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/CesiumGS/cesium-unreal.git" 16 | }, 17 | "keywords": [ 18 | "3D", 19 | "geospatial", 20 | "C++" 21 | ], 22 | "author": "CesiumGS, Inc. and Contributors", 23 | "license": "Apache-2.0", 24 | "bugs": { 25 | "url": "https://github.com/CesiumGS/cesium-unreal/issues" 26 | }, 27 | "homepage": "https://github.com/CesiumGS/cesium-unreal#readme", 28 | "devDependencies": { 29 | "clang-format": "^1.5.0", 30 | "doxygen-awesome-css": "https://github.com/jothepro/doxygen-awesome-css#v2.3.4" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /travis/travis-get-android-ndk.sh: -------------------------------------------------------------------------------- 1 | if [[ $TRAVIS_OS_NAME == "windows" ]] 2 | then 3 | echo "Setting up Android NDK" 4 | if [[ ! -d "$HOME/android-ndk-r21e/platforms" ]] 5 | then 6 | echo "Downloading Android NDK" 7 | wget -q https://dl.google.com/android/repository/android-ndk-r21e-windows-x86_64.zip 8 | 7z x android-ndk-r21e-windows-x86_64.zip "-o$HOME/" 9 | rm android-ndk-r21e-windows-x86_64.zip 10 | else 11 | echo "Using Android NDK from Travis Cache" 12 | fi 13 | fi 14 | -------------------------------------------------------------------------------- /travis/travis-get-ue-427.sh: -------------------------------------------------------------------------------- 1 | if [[ $TRAVIS_OS_NAME == "windows" ]] 2 | then 3 | # Enable compression because disk space is limited on Travis. 4 | mkdir "C:\Epic" 5 | mkdir "C:\Epic\UE_4.27" 6 | compact //c "//s:C:\Epic\UE_4.27" 7 | AWS_ACCESS_KEY_ID=${GOOGLE_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${GOOGLE_SECRET_ACCESS_KEY} aws s3 --endpoint-url https://storage.googleapis.com cp s3://cesium-unreal-engine/4.27.0/Windows/UE_4.27-minimal.zip . 8 | 7z x UE_4.27-minimal.zip "-oC:\Epic" 9 | rm UE_4.27-minimal.zip 10 | elif [[ $TRAVIS_OS_NAME == "osx" ]] 11 | then 12 | aws s3 cp s3://cesium-unreal-engine/macos-2022-01-27/UE_4272_macOS.zip . 13 | 14 | unzip -q UE_4272_macOS.zip -d $HOME 15 | rm UE_4272_macOS.zip 16 | # elif [[ $TRAVIS_OS_NAME == "linux" ]] 17 | # then 18 | # AWS_ACCESS_KEY_ID=${GOOGLE_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${GOOGLE_SECRET_ACCESS_KEY} aws s3 --endpoint-url https://storage.googleapis.com cp s3://cesium-unreal-engine/linux-2021-04-23/UnrealEngine-4.26.2.tar.gz . 19 | # mkdir $HOME/UE_4.26 20 | # tar --checkpoint=100000 -xzf UnrealEngine-4.26.2.tar.gz -C $HOME/UE_4.26 21 | # rm UnrealEngine-4.26.2.tar.gz 22 | fi 23 | -------------------------------------------------------------------------------- /travis/travis-get-ue-500p2.sh: -------------------------------------------------------------------------------- 1 | if [[ $TRAVIS_OS_NAME == "windows" ]] 2 | then 3 | # Enable compression because disk space is limited on Travis. 4 | mkdir "C:\Epic" 5 | mkdir "C:\Epic\UE_5.0" 6 | compact //c "//s:C:\Epic\UE_5.0" 7 | AWS_ACCESS_KEY_ID=${GOOGLE_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${GOOGLE_SECRET_ACCESS_KEY} aws s3 --endpoint-url https://storage.googleapis.com cp s3://cesium-unreal-engine/5.0.0-preview2/UE_5.0p2.zip . 8 | 7z x UE_5.0p2.zip "-oC:\Epic" 9 | rm UE_5.0p2.zip 10 | # elif [[ $TRAVIS_OS_NAME == "osx" ]] 11 | # then 12 | # aws s3 cp s3://cesium-unreal-engine/macos-2022-01-27/UE_4272_macOS.zip . 13 | 14 | # unzip -q UE_4272_macOS.zip -d $HOME 15 | # rm UE_4272_macOS.zip 16 | # elif [[ $TRAVIS_OS_NAME == "linux" ]] 17 | # then 18 | # AWS_ACCESS_KEY_ID=${GOOGLE_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${GOOGLE_SECRET_ACCESS_KEY} aws s3 --endpoint-url https://storage.googleapis.com cp s3://cesium-unreal-engine/linux-2021-04-23/UnrealEngine-4.26.2.tar.gz . 19 | # mkdir $HOME/UE_4.26 20 | # tar --checkpoint=100000 -xzf UnrealEngine-4.26.2.tar.gz -C $HOME/UE_4.26 21 | # rm UnrealEngine-4.26.2.tar.gz 22 | fi 23 | -------------------------------------------------------------------------------- /travis/travis-get-ue-linux-crosscompile-toolchain-427.sh: -------------------------------------------------------------------------------- 1 | echo "Downloading Linux toolchain" 2 | AWS_ACCESS_KEY_ID=${GOOGLE_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${GOOGLE_SECRET_ACCESS_KEY} aws s3 --endpoint-url https://storage.googleapis.com cp s3://cesium-unreal-engine/4.27.0/Windows/v19_clang-11.0.1-centos7.exe . 3 | echo "Finished download" 4 | chmod a+x v19_clang-11.0.1-centos7.exe 5 | ./v19_clang-11.0.1-centos7.exe "//S" 6 | --------------------------------------------------------------------------------