react-native-cesium 1.0.5 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -11
- package/ReactNativeCesium.podspec +1 -1
- package/android/CMakeLists.txt +5 -3
- package/android/src/main/cpp/CesiumBridgeAndroid.cpp +196 -227
- package/android/src/main/cpp/CesiumBridgeAndroid.h +48 -49
- package/android/src/main/cpp/cpp-adapter.cpp +2 -2
- package/android/src/main/cpp/vulkan/VulkanBackend.cpp +1010 -569
- package/android/src/main/cpp/vulkan/VulkanBackend.h +121 -12
- package/android/src/main/cpp/vulkan/shaders/sky.frag +20 -10
- package/android/src/main/java/com/margelo/nitro/reactnativecesium/CesiumBridgeJNI.kt +28 -0
- package/android/src/main/java/com/margelo/nitro/reactnativecesium/HybridCesiumView.kt +295 -58
- package/cpp/engine/CameraSmoother.cpp +68 -0
- package/cpp/engine/CameraSmoother.hpp +24 -0
- package/cpp/engine/CameraTargetState.cpp +28 -0
- package/cpp/engine/CameraTargetState.hpp +97 -0
- package/cpp/engine/CesiumEngine.cpp +206 -60
- package/cpp/engine/CesiumEngine.hpp +77 -10
- package/cpp/engine/EngineTunables.hpp +64 -0
- package/cpp/engine/GeoidConverter.cpp +36 -0
- package/cpp/engine/GeoidConverter.hpp +10 -0
- package/cpp/engine/GlobeCamera.cpp +7 -2
- package/cpp/engine/MetricsAggregator.cpp +71 -0
- package/cpp/engine/MetricsAggregator.hpp +54 -0
- package/cpp/engine/TileLifecycleManager.cpp +0 -12
- package/cpp/engine/TileLifecycleManager.hpp +0 -3
- package/cpp/third_party/egm96/EGM96.c +289 -0
- package/cpp/third_party/egm96/EGM96.h +45 -0
- package/cpp/third_party/egm96/EGM96_data.h +65372 -0
- package/ios/CesiumBridge.h +24 -5
- package/ios/CesiumBridge.mm +148 -271
- package/ios/HybridCesiumView.swift +197 -40
- package/ios/metal/MetalBackend.mm +72 -23
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/cesium-view.nitro.d.ts +26 -0
- package/lib/typescript/src/specs/cesium-view.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JCesiumMetrics.hpp +5 -1
- package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.cpp +109 -1
- package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.hpp +24 -0
- package/nitrogen/generated/android/c++/views/JHybridCesiumViewStateUpdater.cpp +48 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/CameraState.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/CesiumMetrics.kt +32 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/HybridCesiumViewSpec.kt +72 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/Quaternion.kt +19 -0
- package/nitrogen/generated/ios/ReactNativeCesium-Swift-Cxx-Bridge.hpp +30 -0
- package/nitrogen/generated/ios/c++/HybridCesiumViewSpecSwift.hpp +85 -1
- package/nitrogen/generated/ios/c++/views/HybridCesiumViewComponent.mm +60 -0
- package/nitrogen/generated/ios/swift/CesiumMetrics.swift +7 -2
- package/nitrogen/generated/ios/swift/HybridCesiumViewSpec.swift +12 -0
- package/nitrogen/generated/ios/swift/HybridCesiumViewSpec_cxx.swift +288 -0
- package/nitrogen/generated/shared/c++/CesiumMetrics.hpp +5 -1
- package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.hpp +25 -1
- package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.cpp +132 -0
- package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.hpp +13 -1
- package/nitrogen/generated/shared/json/CesiumViewConfig.json +12 -0
- package/package.json +4 -5
- package/scripts/cesium/clone.mjs +1 -1
- package/src/index.ts +1 -0
- package/src/specs/cesium-view.nitro.ts +29 -0
- package/cpp/engine/DeletionQueue.cpp +0 -28
- package/cpp/engine/DeletionQueue.hpp +0 -28
|
@@ -4,13 +4,21 @@
|
|
|
4
4
|
#include <memory>
|
|
5
5
|
#include <string>
|
|
6
6
|
|
|
7
|
+
#include "engine/CameraTargetState.hpp"
|
|
8
|
+
#include "engine/CesiumEngine.hpp"
|
|
9
|
+
#include "engine/MetricsAggregator.hpp"
|
|
10
|
+
|
|
7
11
|
namespace reactnativecesium {
|
|
8
12
|
class VulkanBackend;
|
|
9
|
-
class CesiumEngine;
|
|
10
13
|
struct FrameResult;
|
|
11
|
-
|
|
12
|
-
}
|
|
14
|
+
} // namespace reactnativecesium
|
|
13
15
|
|
|
16
|
+
// Thin Android shell. All cross-platform logic (camera demand state +
|
|
17
|
+
// smoothing, FPS / metrics aggregation, credit HTML stripping) lives in
|
|
18
|
+
// shared C++ next to CesiumEngine. This class only owns:
|
|
19
|
+
// - the JNI/window surface,
|
|
20
|
+
// - the Vulkan backend instance, and
|
|
21
|
+
// - the EngineConfig snapshot mirrored from JS props.
|
|
14
22
|
struct CesiumBridgeAndroid {
|
|
15
23
|
void init(JNIEnv* env, jobject surface, int width, int height,
|
|
16
24
|
const std::string& cacheDir, const std::string& cacertPath);
|
|
@@ -27,10 +35,24 @@ struct CesiumBridgeAndroid {
|
|
|
27
35
|
double qw, double qx, double qy, double qz);
|
|
28
36
|
void setVerticalFovDeg(double degrees);
|
|
29
37
|
void setMaximumScreenSpaceError(double v);
|
|
30
|
-
void setMaximumSimultaneousTileLoads(
|
|
31
|
-
void setLoadingDescendantLimit(
|
|
38
|
+
void setMaximumSimultaneousTileLoads(int32_t v);
|
|
39
|
+
void setLoadingDescendantLimit(int32_t v);
|
|
32
40
|
void setMsaaSampleCount(int samples);
|
|
33
41
|
|
|
42
|
+
// Optional knobs (default values mirror EngineConfig defaults).
|
|
43
|
+
void setMaximumCachedMiB(int32_t v);
|
|
44
|
+
void setPreloadAncestors(bool v);
|
|
45
|
+
void setPreloadSiblings(bool v);
|
|
46
|
+
void setForbidHoles(bool v);
|
|
47
|
+
void setEnableWaterMask(bool v);
|
|
48
|
+
void setEnableFogCulling(bool v);
|
|
49
|
+
void setEnforceCulledScreenSpaceError(bool v);
|
|
50
|
+
void setCulledScreenSpaceError(double v);
|
|
51
|
+
void setEnableLodTransitionPeriod(bool v);
|
|
52
|
+
void setLodTransitionLength(double v);
|
|
53
|
+
void setSqliteCacheMaxRows(int32_t v);
|
|
54
|
+
void setTaskProcessorThreads(int32_t v);
|
|
55
|
+
|
|
34
56
|
void markNeedsRender();
|
|
35
57
|
bool shouldRenderNextFrame();
|
|
36
58
|
void renderFrame(double dt);
|
|
@@ -48,57 +70,34 @@ struct CesiumBridgeAndroid {
|
|
|
48
70
|
double readViewCorrectionY();
|
|
49
71
|
double readViewCorrectionZ();
|
|
50
72
|
|
|
51
|
-
// Metrics
|
|
52
|
-
double metricsFps()
|
|
53
|
-
int metricsTilesRendered()
|
|
54
|
-
int metricsTilesLoading()
|
|
55
|
-
int metricsTilesVisited()
|
|
56
|
-
bool metricsIonTokenConfigured() const { return
|
|
57
|
-
bool metricsTilesetReady()
|
|
58
|
-
|
|
73
|
+
// Metrics readback (delegated to MetricsAggregator)
|
|
74
|
+
double metricsFps() const { return metrics_.latest().fps; }
|
|
75
|
+
int metricsTilesRendered() const { return metrics_.latest().tilesRendered; }
|
|
76
|
+
int metricsTilesLoading() const { return metrics_.latest().tilesLoading; }
|
|
77
|
+
int metricsTilesVisited() const { return metrics_.latest().tilesVisited; }
|
|
78
|
+
bool metricsIonTokenConfigured() const { return metrics_.latest().ionTokenConfigured; }
|
|
79
|
+
bool metricsTilesetReady() const { return metrics_.latest().tilesetReady; }
|
|
80
|
+
bool metricsTlsConfigured() const { return metrics_.latest().tlsConfigured; }
|
|
81
|
+
const std::string& metricsCreditsPlainText() const {
|
|
82
|
+
return metrics_.latest().creditsPlainText;
|
|
83
|
+
}
|
|
59
84
|
|
|
60
85
|
private:
|
|
61
86
|
void buildEngine();
|
|
87
|
+
// Push the current `config_` state to the live engine (runtime-mutable
|
|
88
|
+
// fields go through tileset_->getOptions(); token/asset id changes force
|
|
89
|
+
// a tileset rebuild).
|
|
90
|
+
void applyEngineConfig();
|
|
62
91
|
|
|
63
92
|
std::unique_ptr<reactnativecesium::VulkanBackend> vulkanBackend_;
|
|
64
93
|
std::unique_ptr<reactnativecesium::CesiumEngine> engine_;
|
|
65
94
|
std::unique_ptr<reactnativecesium::FrameResult> frameResult_;
|
|
66
95
|
|
|
67
|
-
int
|
|
68
|
-
int
|
|
69
|
-
bool initialized_
|
|
70
|
-
|
|
71
|
-
std::string cacheDir_;
|
|
72
|
-
std::string cacertPath_;
|
|
73
|
-
std::string ionAccessToken_;
|
|
74
|
-
int64_t ionTilesetAssetId_ = 1;
|
|
75
|
-
|
|
76
|
-
double maxSSE_ = 32.0;
|
|
77
|
-
double maxSimLoads_ = 12.0;
|
|
78
|
-
double loadDescLim_ = 20.0;
|
|
79
|
-
|
|
80
|
-
// Camera demand target
|
|
81
|
-
double camTargetLat_ = 46.15;
|
|
82
|
-
double camTargetLon_ = 7.35;
|
|
83
|
-
double camTargetAlt_ = 12000.0;
|
|
84
|
-
double camTargetHeading_ = 129.0;
|
|
85
|
-
double camTargetPitch_ = -45.0;
|
|
86
|
-
double camTargetRoll_ = 0.0;
|
|
87
|
-
double camTargetViewQw_ = 1.0;
|
|
88
|
-
double camTargetViewQx_ = 0.0;
|
|
89
|
-
double camTargetViewQy_ = 0.0;
|
|
90
|
-
double camTargetViewQz_ = 0.0;
|
|
91
|
-
bool forceRenderNextFrame_ = true;
|
|
96
|
+
int viewportWidth_ = 0;
|
|
97
|
+
int viewportHeight_ = 0;
|
|
98
|
+
bool initialized_ = false;
|
|
92
99
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
double metricsFps_ = 0.0;
|
|
97
|
-
int metricsTilesRendered_ = 0;
|
|
98
|
-
int metricsTilesLoading_ = 0;
|
|
99
|
-
int metricsTilesVisited_ = 0;
|
|
100
|
-
bool metricsIonTokenConfigured_ = false;
|
|
101
|
-
bool metricsTilesetReady_ = false;
|
|
102
|
-
std::string metricsCreditsPlainText_;
|
|
103
|
-
std::string lastCreditHtmlJoined_;
|
|
100
|
+
reactnativecesium::EngineConfig config_;
|
|
101
|
+
reactnativecesium::CameraTargetState target_;
|
|
102
|
+
reactnativecesium::MetricsAggregator metrics_;
|
|
104
103
|
};
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
#include "ReactNativeCesiumOnLoad.hpp"
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// Cesium tile content types are registered exactly once in CesiumEngine's
|
|
8
|
+
// constructor; do not duplicate that registration here.
|
|
8
9
|
|
|
9
10
|
static const uint32_t kCesiumVulkanApiVersion = VK_MAKE_VERSION(1, 1, 0);
|
|
10
11
|
|
|
11
12
|
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
|
|
12
13
|
(void)kCesiumVulkanApiVersion;
|
|
13
|
-
Cesium3DTilesContent::registerAllTileContentTypes();
|
|
14
14
|
return facebook::jni::initialize(vm, []() {
|
|
15
15
|
margelo::nitro::reactnativecesium::registerAllNatives();
|
|
16
16
|
});
|