react-native-cesium 1.0.6 → 1.2.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.
Files changed (59) hide show
  1. package/README.md +64 -11
  2. package/ReactNativeCesium.podspec +1 -1
  3. package/android/CMakeLists.txt +5 -3
  4. package/android/src/main/cpp/CesiumBridgeAndroid.cpp +197 -227
  5. package/android/src/main/cpp/CesiumBridgeAndroid.h +48 -49
  6. package/android/src/main/cpp/cpp-adapter.cpp +2 -2
  7. package/android/src/main/cpp/vulkan/VulkanBackend.cpp +1010 -569
  8. package/android/src/main/cpp/vulkan/VulkanBackend.h +121 -12
  9. package/android/src/main/cpp/vulkan/shaders/sky.frag +20 -10
  10. package/android/src/main/java/com/margelo/nitro/reactnativecesium/CesiumBridgeJNI.kt +28 -0
  11. package/android/src/main/java/com/margelo/nitro/reactnativecesium/HybridCesiumView.kt +295 -58
  12. package/cpp/engine/CameraSmoother.cpp +99 -0
  13. package/cpp/engine/CameraSmoother.hpp +29 -0
  14. package/cpp/engine/CameraTargetState.cpp +49 -0
  15. package/cpp/engine/CameraTargetState.hpp +121 -0
  16. package/cpp/engine/CesiumEngine.cpp +206 -60
  17. package/cpp/engine/CesiumEngine.hpp +77 -10
  18. package/cpp/engine/EngineTunables.hpp +79 -0
  19. package/cpp/engine/GeoidConverter.cpp +36 -0
  20. package/cpp/engine/GeoidConverter.hpp +10 -0
  21. package/cpp/engine/GlobeCamera.cpp +7 -2
  22. package/cpp/engine/MetricsAggregator.cpp +71 -0
  23. package/cpp/engine/MetricsAggregator.hpp +54 -0
  24. package/cpp/engine/TileLifecycleManager.cpp +0 -12
  25. package/cpp/engine/TileLifecycleManager.hpp +0 -3
  26. package/cpp/third_party/egm96/EGM96.c +289 -0
  27. package/cpp/third_party/egm96/EGM96.h +45 -0
  28. package/cpp/third_party/egm96/EGM96_data.h +65372 -0
  29. package/ios/CesiumBridge.h +24 -5
  30. package/ios/CesiumBridge.mm +149 -271
  31. package/ios/HybridCesiumView.swift +197 -40
  32. package/ios/metal/MetalBackend.mm +72 -23
  33. package/lib/typescript/src/specs/cesium-view.nitro.d.ts +26 -0
  34. package/lib/typescript/src/specs/cesium-view.nitro.d.ts.map +1 -1
  35. package/nitrogen/generated/android/c++/JCesiumMetrics.hpp +5 -1
  36. package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.cpp +109 -1
  37. package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.hpp +24 -0
  38. package/nitrogen/generated/android/c++/views/JHybridCesiumViewStateUpdater.cpp +48 -0
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/CameraState.kt +25 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/CesiumMetrics.kt +32 -2
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/HybridCesiumViewSpec.kt +72 -0
  42. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/Quaternion.kt +19 -0
  43. package/nitrogen/generated/ios/ReactNativeCesium-Swift-Cxx-Bridge.hpp +30 -0
  44. package/nitrogen/generated/ios/c++/HybridCesiumViewSpecSwift.hpp +85 -1
  45. package/nitrogen/generated/ios/c++/views/HybridCesiumViewComponent.mm +60 -0
  46. package/nitrogen/generated/ios/swift/CesiumMetrics.swift +7 -2
  47. package/nitrogen/generated/ios/swift/HybridCesiumViewSpec.swift +12 -0
  48. package/nitrogen/generated/ios/swift/HybridCesiumViewSpec_cxx.swift +288 -0
  49. package/nitrogen/generated/shared/c++/CesiumMetrics.hpp +5 -1
  50. package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.cpp +24 -0
  51. package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.hpp +25 -1
  52. package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.cpp +132 -0
  53. package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.hpp +13 -1
  54. package/nitrogen/generated/shared/json/CesiumViewConfig.json +12 -0
  55. package/package.json +4 -4
  56. package/scripts/cesium/clone.mjs +1 -1
  57. package/src/specs/cesium-view.nitro.ts +29 -0
  58. package/cpp/engine/DeletionQueue.cpp +0 -28
  59. package/cpp/engine/DeletionQueue.hpp +0 -28
@@ -19,6 +19,18 @@ public protocol HybridCesiumViewSpec_protocol: HybridObject, HybridView {
19
19
  var loadingDescendantLimit: Double { get set }
20
20
  var msaaSampleCount: Double { get set }
21
21
  var ionImageryAssetId: Double { get set }
22
+ var maximumCachedMiB: Double? { get set }
23
+ var preloadAncestors: Bool? { get set }
24
+ var preloadSiblings: Bool? { get set }
25
+ var forbidHoles: Bool? { get set }
26
+ var enableWaterMask: Bool? { get set }
27
+ var enableFogCulling: Bool? { get set }
28
+ var enforceCulledScreenSpaceError: Bool? { get set }
29
+ var culledScreenSpaceError: Double? { get set }
30
+ var enableLodTransitionPeriod: Bool? { get set }
31
+ var lodTransitionLength: Double? { get set }
32
+ var sqliteCacheMaxRows: Double? { get set }
33
+ var taskProcessorThreads: Double? { get set }
22
34
  var onMetrics: ((_ metrics: CesiumMetrics) -> Void)? { get set }
23
35
 
24
36
  // Methods
@@ -220,6 +220,294 @@ open class HybridCesiumViewSpec_cxx {
220
220
  }
221
221
  }
222
222
 
223
+ public final var maximumCachedMiB: bridge.std__optional_double_ {
224
+ @inline(__always)
225
+ get {
226
+ return { () -> bridge.std__optional_double_ in
227
+ if let __unwrappedValue = self.__implementation.maximumCachedMiB {
228
+ return bridge.create_std__optional_double_(__unwrappedValue)
229
+ } else {
230
+ return .init()
231
+ }
232
+ }()
233
+ }
234
+ @inline(__always)
235
+ set {
236
+ self.__implementation.maximumCachedMiB = { () -> Double? in
237
+ if bridge.has_value_std__optional_double_(newValue) {
238
+ let __unwrapped = bridge.get_std__optional_double_(newValue)
239
+ return __unwrapped
240
+ } else {
241
+ return nil
242
+ }
243
+ }()
244
+ }
245
+ }
246
+
247
+ public final var preloadAncestors: bridge.std__optional_bool_ {
248
+ @inline(__always)
249
+ get {
250
+ return { () -> bridge.std__optional_bool_ in
251
+ if let __unwrappedValue = self.__implementation.preloadAncestors {
252
+ return bridge.create_std__optional_bool_(__unwrappedValue)
253
+ } else {
254
+ return .init()
255
+ }
256
+ }()
257
+ }
258
+ @inline(__always)
259
+ set {
260
+ self.__implementation.preloadAncestors = { () -> Bool? in
261
+ if bridge.has_value_std__optional_bool_(newValue) {
262
+ let __unwrapped = bridge.get_std__optional_bool_(newValue)
263
+ return __unwrapped
264
+ } else {
265
+ return nil
266
+ }
267
+ }()
268
+ }
269
+ }
270
+
271
+ public final var preloadSiblings: bridge.std__optional_bool_ {
272
+ @inline(__always)
273
+ get {
274
+ return { () -> bridge.std__optional_bool_ in
275
+ if let __unwrappedValue = self.__implementation.preloadSiblings {
276
+ return bridge.create_std__optional_bool_(__unwrappedValue)
277
+ } else {
278
+ return .init()
279
+ }
280
+ }()
281
+ }
282
+ @inline(__always)
283
+ set {
284
+ self.__implementation.preloadSiblings = { () -> Bool? in
285
+ if bridge.has_value_std__optional_bool_(newValue) {
286
+ let __unwrapped = bridge.get_std__optional_bool_(newValue)
287
+ return __unwrapped
288
+ } else {
289
+ return nil
290
+ }
291
+ }()
292
+ }
293
+ }
294
+
295
+ public final var forbidHoles: bridge.std__optional_bool_ {
296
+ @inline(__always)
297
+ get {
298
+ return { () -> bridge.std__optional_bool_ in
299
+ if let __unwrappedValue = self.__implementation.forbidHoles {
300
+ return bridge.create_std__optional_bool_(__unwrappedValue)
301
+ } else {
302
+ return .init()
303
+ }
304
+ }()
305
+ }
306
+ @inline(__always)
307
+ set {
308
+ self.__implementation.forbidHoles = { () -> Bool? in
309
+ if bridge.has_value_std__optional_bool_(newValue) {
310
+ let __unwrapped = bridge.get_std__optional_bool_(newValue)
311
+ return __unwrapped
312
+ } else {
313
+ return nil
314
+ }
315
+ }()
316
+ }
317
+ }
318
+
319
+ public final var enableWaterMask: bridge.std__optional_bool_ {
320
+ @inline(__always)
321
+ get {
322
+ return { () -> bridge.std__optional_bool_ in
323
+ if let __unwrappedValue = self.__implementation.enableWaterMask {
324
+ return bridge.create_std__optional_bool_(__unwrappedValue)
325
+ } else {
326
+ return .init()
327
+ }
328
+ }()
329
+ }
330
+ @inline(__always)
331
+ set {
332
+ self.__implementation.enableWaterMask = { () -> Bool? in
333
+ if bridge.has_value_std__optional_bool_(newValue) {
334
+ let __unwrapped = bridge.get_std__optional_bool_(newValue)
335
+ return __unwrapped
336
+ } else {
337
+ return nil
338
+ }
339
+ }()
340
+ }
341
+ }
342
+
343
+ public final var enableFogCulling: bridge.std__optional_bool_ {
344
+ @inline(__always)
345
+ get {
346
+ return { () -> bridge.std__optional_bool_ in
347
+ if let __unwrappedValue = self.__implementation.enableFogCulling {
348
+ return bridge.create_std__optional_bool_(__unwrappedValue)
349
+ } else {
350
+ return .init()
351
+ }
352
+ }()
353
+ }
354
+ @inline(__always)
355
+ set {
356
+ self.__implementation.enableFogCulling = { () -> Bool? in
357
+ if bridge.has_value_std__optional_bool_(newValue) {
358
+ let __unwrapped = bridge.get_std__optional_bool_(newValue)
359
+ return __unwrapped
360
+ } else {
361
+ return nil
362
+ }
363
+ }()
364
+ }
365
+ }
366
+
367
+ public final var enforceCulledScreenSpaceError: bridge.std__optional_bool_ {
368
+ @inline(__always)
369
+ get {
370
+ return { () -> bridge.std__optional_bool_ in
371
+ if let __unwrappedValue = self.__implementation.enforceCulledScreenSpaceError {
372
+ return bridge.create_std__optional_bool_(__unwrappedValue)
373
+ } else {
374
+ return .init()
375
+ }
376
+ }()
377
+ }
378
+ @inline(__always)
379
+ set {
380
+ self.__implementation.enforceCulledScreenSpaceError = { () -> Bool? in
381
+ if bridge.has_value_std__optional_bool_(newValue) {
382
+ let __unwrapped = bridge.get_std__optional_bool_(newValue)
383
+ return __unwrapped
384
+ } else {
385
+ return nil
386
+ }
387
+ }()
388
+ }
389
+ }
390
+
391
+ public final var culledScreenSpaceError: bridge.std__optional_double_ {
392
+ @inline(__always)
393
+ get {
394
+ return { () -> bridge.std__optional_double_ in
395
+ if let __unwrappedValue = self.__implementation.culledScreenSpaceError {
396
+ return bridge.create_std__optional_double_(__unwrappedValue)
397
+ } else {
398
+ return .init()
399
+ }
400
+ }()
401
+ }
402
+ @inline(__always)
403
+ set {
404
+ self.__implementation.culledScreenSpaceError = { () -> Double? in
405
+ if bridge.has_value_std__optional_double_(newValue) {
406
+ let __unwrapped = bridge.get_std__optional_double_(newValue)
407
+ return __unwrapped
408
+ } else {
409
+ return nil
410
+ }
411
+ }()
412
+ }
413
+ }
414
+
415
+ public final var enableLodTransitionPeriod: bridge.std__optional_bool_ {
416
+ @inline(__always)
417
+ get {
418
+ return { () -> bridge.std__optional_bool_ in
419
+ if let __unwrappedValue = self.__implementation.enableLodTransitionPeriod {
420
+ return bridge.create_std__optional_bool_(__unwrappedValue)
421
+ } else {
422
+ return .init()
423
+ }
424
+ }()
425
+ }
426
+ @inline(__always)
427
+ set {
428
+ self.__implementation.enableLodTransitionPeriod = { () -> Bool? in
429
+ if bridge.has_value_std__optional_bool_(newValue) {
430
+ let __unwrapped = bridge.get_std__optional_bool_(newValue)
431
+ return __unwrapped
432
+ } else {
433
+ return nil
434
+ }
435
+ }()
436
+ }
437
+ }
438
+
439
+ public final var lodTransitionLength: bridge.std__optional_double_ {
440
+ @inline(__always)
441
+ get {
442
+ return { () -> bridge.std__optional_double_ in
443
+ if let __unwrappedValue = self.__implementation.lodTransitionLength {
444
+ return bridge.create_std__optional_double_(__unwrappedValue)
445
+ } else {
446
+ return .init()
447
+ }
448
+ }()
449
+ }
450
+ @inline(__always)
451
+ set {
452
+ self.__implementation.lodTransitionLength = { () -> Double? in
453
+ if bridge.has_value_std__optional_double_(newValue) {
454
+ let __unwrapped = bridge.get_std__optional_double_(newValue)
455
+ return __unwrapped
456
+ } else {
457
+ return nil
458
+ }
459
+ }()
460
+ }
461
+ }
462
+
463
+ public final var sqliteCacheMaxRows: bridge.std__optional_double_ {
464
+ @inline(__always)
465
+ get {
466
+ return { () -> bridge.std__optional_double_ in
467
+ if let __unwrappedValue = self.__implementation.sqliteCacheMaxRows {
468
+ return bridge.create_std__optional_double_(__unwrappedValue)
469
+ } else {
470
+ return .init()
471
+ }
472
+ }()
473
+ }
474
+ @inline(__always)
475
+ set {
476
+ self.__implementation.sqliteCacheMaxRows = { () -> Double? in
477
+ if bridge.has_value_std__optional_double_(newValue) {
478
+ let __unwrapped = bridge.get_std__optional_double_(newValue)
479
+ return __unwrapped
480
+ } else {
481
+ return nil
482
+ }
483
+ }()
484
+ }
485
+ }
486
+
487
+ public final var taskProcessorThreads: bridge.std__optional_double_ {
488
+ @inline(__always)
489
+ get {
490
+ return { () -> bridge.std__optional_double_ in
491
+ if let __unwrappedValue = self.__implementation.taskProcessorThreads {
492
+ return bridge.create_std__optional_double_(__unwrappedValue)
493
+ } else {
494
+ return .init()
495
+ }
496
+ }()
497
+ }
498
+ @inline(__always)
499
+ set {
500
+ self.__implementation.taskProcessorThreads = { () -> Double? in
501
+ if bridge.has_value_std__optional_double_(newValue) {
502
+ let __unwrapped = bridge.get_std__optional_double_(newValue)
503
+ return __unwrapped
504
+ } else {
505
+ return nil
506
+ }
507
+ }()
508
+ }
509
+ }
510
+
223
511
  public final var onMetrics: bridge.std__optional_std__function_void_const_CesiumMetrics_____metrics______ {
224
512
  @inline(__always)
225
513
  get {
@@ -44,12 +44,13 @@ namespace margelo::nitro::reactnativecesium {
44
44
  double tilesLoading SWIFT_PRIVATE;
45
45
  double tilesVisited SWIFT_PRIVATE;
46
46
  bool ionTokenConfigured SWIFT_PRIVATE;
47
+ bool tlsConfigured SWIFT_PRIVATE;
47
48
  bool tilesetReady SWIFT_PRIVATE;
48
49
  std::string creditsPlainText SWIFT_PRIVATE;
49
50
 
50
51
  public:
51
52
  CesiumMetrics() = default;
52
- explicit CesiumMetrics(double fps, double tilesRendered, double tilesLoading, double tilesVisited, bool ionTokenConfigured, bool tilesetReady, std::string creditsPlainText): fps(fps), tilesRendered(tilesRendered), tilesLoading(tilesLoading), tilesVisited(tilesVisited), ionTokenConfigured(ionTokenConfigured), tilesetReady(tilesetReady), creditsPlainText(creditsPlainText) {}
53
+ explicit CesiumMetrics(double fps, double tilesRendered, double tilesLoading, double tilesVisited, bool ionTokenConfigured, bool tlsConfigured, bool tilesetReady, std::string creditsPlainText): fps(fps), tilesRendered(tilesRendered), tilesLoading(tilesLoading), tilesVisited(tilesVisited), ionTokenConfigured(ionTokenConfigured), tlsConfigured(tlsConfigured), tilesetReady(tilesetReady), creditsPlainText(creditsPlainText) {}
53
54
 
54
55
  public:
55
56
  friend bool operator==(const CesiumMetrics& lhs, const CesiumMetrics& rhs) = default;
@@ -70,6 +71,7 @@ namespace margelo::nitro {
70
71
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tilesLoading"))),
71
72
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tilesVisited"))),
72
73
  JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "ionTokenConfigured"))),
74
+ JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tlsConfigured"))),
73
75
  JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tilesetReady"))),
74
76
  JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "creditsPlainText")))
75
77
  );
@@ -81,6 +83,7 @@ namespace margelo::nitro {
81
83
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "tilesLoading"), JSIConverter<double>::toJSI(runtime, arg.tilesLoading));
82
84
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "tilesVisited"), JSIConverter<double>::toJSI(runtime, arg.tilesVisited));
83
85
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "ionTokenConfigured"), JSIConverter<bool>::toJSI(runtime, arg.ionTokenConfigured));
86
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "tlsConfigured"), JSIConverter<bool>::toJSI(runtime, arg.tlsConfigured));
84
87
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "tilesetReady"), JSIConverter<bool>::toJSI(runtime, arg.tilesetReady));
85
88
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "creditsPlainText"), JSIConverter<std::string>::toJSI(runtime, arg.creditsPlainText));
86
89
  return obj;
@@ -98,6 +101,7 @@ namespace margelo::nitro {
98
101
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tilesLoading")))) return false;
99
102
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tilesVisited")))) return false;
100
103
  if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "ionTokenConfigured")))) return false;
104
+ if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tlsConfigured")))) return false;
101
105
  if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tilesetReady")))) return false;
102
106
  if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "creditsPlainText")))) return false;
103
107
  return true;
@@ -32,6 +32,30 @@ namespace margelo::nitro::reactnativecesium {
32
32
  prototype.registerHybridSetter("msaaSampleCount", &HybridCesiumViewSpec::setMsaaSampleCount);
33
33
  prototype.registerHybridGetter("ionImageryAssetId", &HybridCesiumViewSpec::getIonImageryAssetId);
34
34
  prototype.registerHybridSetter("ionImageryAssetId", &HybridCesiumViewSpec::setIonImageryAssetId);
35
+ prototype.registerHybridGetter("maximumCachedMiB", &HybridCesiumViewSpec::getMaximumCachedMiB);
36
+ prototype.registerHybridSetter("maximumCachedMiB", &HybridCesiumViewSpec::setMaximumCachedMiB);
37
+ prototype.registerHybridGetter("preloadAncestors", &HybridCesiumViewSpec::getPreloadAncestors);
38
+ prototype.registerHybridSetter("preloadAncestors", &HybridCesiumViewSpec::setPreloadAncestors);
39
+ prototype.registerHybridGetter("preloadSiblings", &HybridCesiumViewSpec::getPreloadSiblings);
40
+ prototype.registerHybridSetter("preloadSiblings", &HybridCesiumViewSpec::setPreloadSiblings);
41
+ prototype.registerHybridGetter("forbidHoles", &HybridCesiumViewSpec::getForbidHoles);
42
+ prototype.registerHybridSetter("forbidHoles", &HybridCesiumViewSpec::setForbidHoles);
43
+ prototype.registerHybridGetter("enableWaterMask", &HybridCesiumViewSpec::getEnableWaterMask);
44
+ prototype.registerHybridSetter("enableWaterMask", &HybridCesiumViewSpec::setEnableWaterMask);
45
+ prototype.registerHybridGetter("enableFogCulling", &HybridCesiumViewSpec::getEnableFogCulling);
46
+ prototype.registerHybridSetter("enableFogCulling", &HybridCesiumViewSpec::setEnableFogCulling);
47
+ prototype.registerHybridGetter("enforceCulledScreenSpaceError", &HybridCesiumViewSpec::getEnforceCulledScreenSpaceError);
48
+ prototype.registerHybridSetter("enforceCulledScreenSpaceError", &HybridCesiumViewSpec::setEnforceCulledScreenSpaceError);
49
+ prototype.registerHybridGetter("culledScreenSpaceError", &HybridCesiumViewSpec::getCulledScreenSpaceError);
50
+ prototype.registerHybridSetter("culledScreenSpaceError", &HybridCesiumViewSpec::setCulledScreenSpaceError);
51
+ prototype.registerHybridGetter("enableLodTransitionPeriod", &HybridCesiumViewSpec::getEnableLodTransitionPeriod);
52
+ prototype.registerHybridSetter("enableLodTransitionPeriod", &HybridCesiumViewSpec::setEnableLodTransitionPeriod);
53
+ prototype.registerHybridGetter("lodTransitionLength", &HybridCesiumViewSpec::getLodTransitionLength);
54
+ prototype.registerHybridSetter("lodTransitionLength", &HybridCesiumViewSpec::setLodTransitionLength);
55
+ prototype.registerHybridGetter("sqliteCacheMaxRows", &HybridCesiumViewSpec::getSqliteCacheMaxRows);
56
+ prototype.registerHybridSetter("sqliteCacheMaxRows", &HybridCesiumViewSpec::setSqliteCacheMaxRows);
57
+ prototype.registerHybridGetter("taskProcessorThreads", &HybridCesiumViewSpec::getTaskProcessorThreads);
58
+ prototype.registerHybridSetter("taskProcessorThreads", &HybridCesiumViewSpec::setTaskProcessorThreads);
35
59
  prototype.registerHybridGetter("onMetrics", &HybridCesiumViewSpec::getOnMetrics);
36
60
  prototype.registerHybridSetter("onMetrics", &HybridCesiumViewSpec::setOnMetrics);
37
61
  prototype.registerHybridMethod("getCameraState", &HybridCesiumViewSpec::getCameraState);
@@ -22,9 +22,9 @@ namespace margelo::nitro::reactnativecesium { struct Quaternion; }
22
22
 
23
23
  #include <string>
24
24
  #include "CameraState.hpp"
25
+ #include <optional>
25
26
  #include "CesiumMetrics.hpp"
26
27
  #include <functional>
27
- #include <optional>
28
28
  #include <NitroModules/Promise.hpp>
29
29
  #include "Quaternion.hpp"
30
30
 
@@ -73,6 +73,30 @@ namespace margelo::nitro::reactnativecesium {
73
73
  virtual void setMsaaSampleCount(double msaaSampleCount) = 0;
74
74
  virtual double getIonImageryAssetId() = 0;
75
75
  virtual void setIonImageryAssetId(double ionImageryAssetId) = 0;
76
+ virtual std::optional<double> getMaximumCachedMiB() = 0;
77
+ virtual void setMaximumCachedMiB(std::optional<double> maximumCachedMiB) = 0;
78
+ virtual std::optional<bool> getPreloadAncestors() = 0;
79
+ virtual void setPreloadAncestors(std::optional<bool> preloadAncestors) = 0;
80
+ virtual std::optional<bool> getPreloadSiblings() = 0;
81
+ virtual void setPreloadSiblings(std::optional<bool> preloadSiblings) = 0;
82
+ virtual std::optional<bool> getForbidHoles() = 0;
83
+ virtual void setForbidHoles(std::optional<bool> forbidHoles) = 0;
84
+ virtual std::optional<bool> getEnableWaterMask() = 0;
85
+ virtual void setEnableWaterMask(std::optional<bool> enableWaterMask) = 0;
86
+ virtual std::optional<bool> getEnableFogCulling() = 0;
87
+ virtual void setEnableFogCulling(std::optional<bool> enableFogCulling) = 0;
88
+ virtual std::optional<bool> getEnforceCulledScreenSpaceError() = 0;
89
+ virtual void setEnforceCulledScreenSpaceError(std::optional<bool> enforceCulledScreenSpaceError) = 0;
90
+ virtual std::optional<double> getCulledScreenSpaceError() = 0;
91
+ virtual void setCulledScreenSpaceError(std::optional<double> culledScreenSpaceError) = 0;
92
+ virtual std::optional<bool> getEnableLodTransitionPeriod() = 0;
93
+ virtual void setEnableLodTransitionPeriod(std::optional<bool> enableLodTransitionPeriod) = 0;
94
+ virtual std::optional<double> getLodTransitionLength() = 0;
95
+ virtual void setLodTransitionLength(std::optional<double> lodTransitionLength) = 0;
96
+ virtual std::optional<double> getSqliteCacheMaxRows() = 0;
97
+ virtual void setSqliteCacheMaxRows(std::optional<double> sqliteCacheMaxRows) = 0;
98
+ virtual std::optional<double> getTaskProcessorThreads() = 0;
99
+ virtual void setTaskProcessorThreads(std::optional<double> taskProcessorThreads) = 0;
76
100
  virtual std::optional<std::function<void(const CesiumMetrics& /* metrics */)>> getOnMetrics() = 0;
77
101
  virtual void setOnMetrics(const std::optional<std::function<void(const CesiumMetrics& /* metrics */)>>& onMetrics) = 0;
78
102
 
@@ -116,6 +116,126 @@ namespace margelo::nitro::reactnativecesium::views {
116
116
  throw std::runtime_error(std::string("CesiumView.ionImageryAssetId: ") + exc.what());
117
117
  }
118
118
  }()),
119
+ maximumCachedMiB([&]() -> CachedProp<std::optional<double>> {
120
+ try {
121
+ const react::RawValue* rawValue = rawProps.at("maximumCachedMiB", nullptr, nullptr);
122
+ if (rawValue == nullptr) return sourceProps.maximumCachedMiB;
123
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
124
+ return CachedProp<std::optional<double>>::fromRawValue(*runtime, value, sourceProps.maximumCachedMiB);
125
+ } catch (const std::exception& exc) {
126
+ throw std::runtime_error(std::string("CesiumView.maximumCachedMiB: ") + exc.what());
127
+ }
128
+ }()),
129
+ preloadAncestors([&]() -> CachedProp<std::optional<bool>> {
130
+ try {
131
+ const react::RawValue* rawValue = rawProps.at("preloadAncestors", nullptr, nullptr);
132
+ if (rawValue == nullptr) return sourceProps.preloadAncestors;
133
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
134
+ return CachedProp<std::optional<bool>>::fromRawValue(*runtime, value, sourceProps.preloadAncestors);
135
+ } catch (const std::exception& exc) {
136
+ throw std::runtime_error(std::string("CesiumView.preloadAncestors: ") + exc.what());
137
+ }
138
+ }()),
139
+ preloadSiblings([&]() -> CachedProp<std::optional<bool>> {
140
+ try {
141
+ const react::RawValue* rawValue = rawProps.at("preloadSiblings", nullptr, nullptr);
142
+ if (rawValue == nullptr) return sourceProps.preloadSiblings;
143
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
144
+ return CachedProp<std::optional<bool>>::fromRawValue(*runtime, value, sourceProps.preloadSiblings);
145
+ } catch (const std::exception& exc) {
146
+ throw std::runtime_error(std::string("CesiumView.preloadSiblings: ") + exc.what());
147
+ }
148
+ }()),
149
+ forbidHoles([&]() -> CachedProp<std::optional<bool>> {
150
+ try {
151
+ const react::RawValue* rawValue = rawProps.at("forbidHoles", nullptr, nullptr);
152
+ if (rawValue == nullptr) return sourceProps.forbidHoles;
153
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
154
+ return CachedProp<std::optional<bool>>::fromRawValue(*runtime, value, sourceProps.forbidHoles);
155
+ } catch (const std::exception& exc) {
156
+ throw std::runtime_error(std::string("CesiumView.forbidHoles: ") + exc.what());
157
+ }
158
+ }()),
159
+ enableWaterMask([&]() -> CachedProp<std::optional<bool>> {
160
+ try {
161
+ const react::RawValue* rawValue = rawProps.at("enableWaterMask", nullptr, nullptr);
162
+ if (rawValue == nullptr) return sourceProps.enableWaterMask;
163
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
164
+ return CachedProp<std::optional<bool>>::fromRawValue(*runtime, value, sourceProps.enableWaterMask);
165
+ } catch (const std::exception& exc) {
166
+ throw std::runtime_error(std::string("CesiumView.enableWaterMask: ") + exc.what());
167
+ }
168
+ }()),
169
+ enableFogCulling([&]() -> CachedProp<std::optional<bool>> {
170
+ try {
171
+ const react::RawValue* rawValue = rawProps.at("enableFogCulling", nullptr, nullptr);
172
+ if (rawValue == nullptr) return sourceProps.enableFogCulling;
173
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
174
+ return CachedProp<std::optional<bool>>::fromRawValue(*runtime, value, sourceProps.enableFogCulling);
175
+ } catch (const std::exception& exc) {
176
+ throw std::runtime_error(std::string("CesiumView.enableFogCulling: ") + exc.what());
177
+ }
178
+ }()),
179
+ enforceCulledScreenSpaceError([&]() -> CachedProp<std::optional<bool>> {
180
+ try {
181
+ const react::RawValue* rawValue = rawProps.at("enforceCulledScreenSpaceError", nullptr, nullptr);
182
+ if (rawValue == nullptr) return sourceProps.enforceCulledScreenSpaceError;
183
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
184
+ return CachedProp<std::optional<bool>>::fromRawValue(*runtime, value, sourceProps.enforceCulledScreenSpaceError);
185
+ } catch (const std::exception& exc) {
186
+ throw std::runtime_error(std::string("CesiumView.enforceCulledScreenSpaceError: ") + exc.what());
187
+ }
188
+ }()),
189
+ culledScreenSpaceError([&]() -> CachedProp<std::optional<double>> {
190
+ try {
191
+ const react::RawValue* rawValue = rawProps.at("culledScreenSpaceError", nullptr, nullptr);
192
+ if (rawValue == nullptr) return sourceProps.culledScreenSpaceError;
193
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
194
+ return CachedProp<std::optional<double>>::fromRawValue(*runtime, value, sourceProps.culledScreenSpaceError);
195
+ } catch (const std::exception& exc) {
196
+ throw std::runtime_error(std::string("CesiumView.culledScreenSpaceError: ") + exc.what());
197
+ }
198
+ }()),
199
+ enableLodTransitionPeriod([&]() -> CachedProp<std::optional<bool>> {
200
+ try {
201
+ const react::RawValue* rawValue = rawProps.at("enableLodTransitionPeriod", nullptr, nullptr);
202
+ if (rawValue == nullptr) return sourceProps.enableLodTransitionPeriod;
203
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
204
+ return CachedProp<std::optional<bool>>::fromRawValue(*runtime, value, sourceProps.enableLodTransitionPeriod);
205
+ } catch (const std::exception& exc) {
206
+ throw std::runtime_error(std::string("CesiumView.enableLodTransitionPeriod: ") + exc.what());
207
+ }
208
+ }()),
209
+ lodTransitionLength([&]() -> CachedProp<std::optional<double>> {
210
+ try {
211
+ const react::RawValue* rawValue = rawProps.at("lodTransitionLength", nullptr, nullptr);
212
+ if (rawValue == nullptr) return sourceProps.lodTransitionLength;
213
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
214
+ return CachedProp<std::optional<double>>::fromRawValue(*runtime, value, sourceProps.lodTransitionLength);
215
+ } catch (const std::exception& exc) {
216
+ throw std::runtime_error(std::string("CesiumView.lodTransitionLength: ") + exc.what());
217
+ }
218
+ }()),
219
+ sqliteCacheMaxRows([&]() -> CachedProp<std::optional<double>> {
220
+ try {
221
+ const react::RawValue* rawValue = rawProps.at("sqliteCacheMaxRows", nullptr, nullptr);
222
+ if (rawValue == nullptr) return sourceProps.sqliteCacheMaxRows;
223
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
224
+ return CachedProp<std::optional<double>>::fromRawValue(*runtime, value, sourceProps.sqliteCacheMaxRows);
225
+ } catch (const std::exception& exc) {
226
+ throw std::runtime_error(std::string("CesiumView.sqliteCacheMaxRows: ") + exc.what());
227
+ }
228
+ }()),
229
+ taskProcessorThreads([&]() -> CachedProp<std::optional<double>> {
230
+ try {
231
+ const react::RawValue* rawValue = rawProps.at("taskProcessorThreads", nullptr, nullptr);
232
+ if (rawValue == nullptr) return sourceProps.taskProcessorThreads;
233
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
234
+ return CachedProp<std::optional<double>>::fromRawValue(*runtime, value, sourceProps.taskProcessorThreads);
235
+ } catch (const std::exception& exc) {
236
+ throw std::runtime_error(std::string("CesiumView.taskProcessorThreads: ") + exc.what());
237
+ }
238
+ }()),
119
239
  onMetrics([&]() -> CachedProp<std::optional<std::function<void(const CesiumMetrics& /* metrics */)>>> {
120
240
  try {
121
241
  const react::RawValue* rawValue = rawProps.at("onMetrics", nullptr, nullptr);
@@ -148,6 +268,18 @@ namespace margelo::nitro::reactnativecesium::views {
148
268
  case hashString("loadingDescendantLimit"): return true;
149
269
  case hashString("msaaSampleCount"): return true;
150
270
  case hashString("ionImageryAssetId"): return true;
271
+ case hashString("maximumCachedMiB"): return true;
272
+ case hashString("preloadAncestors"): return true;
273
+ case hashString("preloadSiblings"): return true;
274
+ case hashString("forbidHoles"): return true;
275
+ case hashString("enableWaterMask"): return true;
276
+ case hashString("enableFogCulling"): return true;
277
+ case hashString("enforceCulledScreenSpaceError"): return true;
278
+ case hashString("culledScreenSpaceError"): return true;
279
+ case hashString("enableLodTransitionPeriod"): return true;
280
+ case hashString("lodTransitionLength"): return true;
281
+ case hashString("sqliteCacheMaxRows"): return true;
282
+ case hashString("taskProcessorThreads"): return true;
151
283
  case hashString("onMetrics"): return true;
152
284
  case hashString("hybridRef"): return true;
153
285
  default: return false;
@@ -18,9 +18,9 @@
18
18
 
19
19
  #include <string>
20
20
  #include "CameraState.hpp"
21
+ #include <optional>
21
22
  #include "CesiumMetrics.hpp"
22
23
  #include <functional>
23
- #include <optional>
24
24
  #include <memory>
25
25
  #include "HybridCesiumViewSpec.hpp"
26
26
 
@@ -53,6 +53,18 @@ namespace margelo::nitro::reactnativecesium::views {
53
53
  CachedProp<double> loadingDescendantLimit;
54
54
  CachedProp<double> msaaSampleCount;
55
55
  CachedProp<double> ionImageryAssetId;
56
+ CachedProp<std::optional<double>> maximumCachedMiB;
57
+ CachedProp<std::optional<bool>> preloadAncestors;
58
+ CachedProp<std::optional<bool>> preloadSiblings;
59
+ CachedProp<std::optional<bool>> forbidHoles;
60
+ CachedProp<std::optional<bool>> enableWaterMask;
61
+ CachedProp<std::optional<bool>> enableFogCulling;
62
+ CachedProp<std::optional<bool>> enforceCulledScreenSpaceError;
63
+ CachedProp<std::optional<double>> culledScreenSpaceError;
64
+ CachedProp<std::optional<bool>> enableLodTransitionPeriod;
65
+ CachedProp<std::optional<double>> lodTransitionLength;
66
+ CachedProp<std::optional<double>> sqliteCacheMaxRows;
67
+ CachedProp<std::optional<double>> taskProcessorThreads;
56
68
  CachedProp<std::optional<std::function<void(const CesiumMetrics& /* metrics */)>>> onMetrics;
57
69
  CachedProp<std::optional<std::function<void(const std::shared_ptr<HybridCesiumViewSpec>& /* ref */)>>> hybridRef;
58
70
 
@@ -13,6 +13,18 @@
13
13
  "loadingDescendantLimit": true,
14
14
  "msaaSampleCount": true,
15
15
  "ionImageryAssetId": true,
16
+ "maximumCachedMiB": true,
17
+ "preloadAncestors": true,
18
+ "preloadSiblings": true,
19
+ "forbidHoles": true,
20
+ "enableWaterMask": true,
21
+ "enableFogCulling": true,
22
+ "enforceCulledScreenSpaceError": true,
23
+ "culledScreenSpaceError": true,
24
+ "enableLodTransitionPeriod": true,
25
+ "lodTransitionLength": true,
26
+ "sqliteCacheMaxRows": true,
27
+ "taskProcessorThreads": true,
16
28
  "onMetrics": true,
17
29
  "hybridRef": true
18
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-cesium",
3
- "version": "1.0.6",
3
+ "version": "1.2.0",
4
4
  "description": "Experimental Cesium rendering for React Native via Nitro (iOS/Metal today; Android planned)",
5
5
  "main": "./lib/commonjs/index.js",
6
6
  "module": "./lib/module/index.js",
@@ -64,7 +64,7 @@
64
64
  "node": ">=18"
65
65
  },
66
66
  "dependencies": {
67
- "react-native-nitro-modules": "^0.35.4"
67
+ "react-native-nitro-modules": "^0.35.6"
68
68
  },
69
69
  "publishConfig": {
70
70
  "access": "public",
@@ -77,9 +77,9 @@
77
77
  "@types/jest": "^29.5.14",
78
78
  "@types/react": "19.2.14",
79
79
  "conventional-changelog-conventionalcommits": "^9.3.1",
80
- "nitrogen": "0.35.4",
80
+ "nitrogen": "0.35.6",
81
81
  "react": "19.2.3",
82
- "react-native": "0.85.1",
82
+ "react-native": "0.85.2",
83
83
  "react-native-builder-bob": "^0.41.0",
84
84
  "semantic-release": "^25.0.3",
85
85
  "typescript": "^5.9.3"
@@ -12,7 +12,7 @@ const root = join(__dirname, '..', '..')
12
12
  const vendor = join(root, 'vendor')
13
13
  const dest = join(vendor, 'cesium-native')
14
14
  const repo = 'https://github.com/CesiumGS/cesium-native.git'
15
- const ref = 'v0.59.0'
15
+ const ref = 'v0.60.0'
16
16
 
17
17
  function run(cmd, args, opts = {}) {
18
18
  execFileSync(cmd, args, { stdio: 'inherit', ...opts })