react-native-cesium 1.2.3 → 1.2.5

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 (44) hide show
  1. package/README.md +100 -27
  2. package/android/CMakeLists.txt +1 -2
  3. package/android/src/main/cpp/CesiumBridgeAndroid.cpp +264 -130
  4. package/android/src/main/cpp/CesiumBridgeAndroid.h +70 -27
  5. package/android/src/main/java/com/margelo/nitro/reactnativecesium/CesiumBridgeJNI.kt +68 -44
  6. package/android/src/main/java/com/margelo/nitro/reactnativecesium/HybridCesiumView.kt +199 -187
  7. package/cpp/engine/CameraIntegrator.cpp +374 -0
  8. package/cpp/engine/CameraIntegrator.hpp +146 -0
  9. package/cpp/engine/EngineTunables.hpp +90 -31
  10. package/cpp/engine/GlobeCamera.cpp +17 -6
  11. package/cpp/engine/GlobeCamera.hpp +11 -8
  12. package/cpp/engine/test/CameraIntegratorTest.cpp +205 -0
  13. package/cpp/engine/test/build_and_run.sh +27 -0
  14. package/example/README.md +1 -1
  15. package/ios/CesiumBridge.h +53 -28
  16. package/ios/CesiumBridge.mm +172 -86
  17. package/ios/HybridCesiumView.swift +256 -145
  18. package/lib/typescript/src/specs/cesium-view.nitro.d.ts +85 -13
  19. package/lib/typescript/src/specs/cesium-view.nitro.d.ts.map +1 -1
  20. package/nitrogen/generated/android/ReactNativeCesiumOnLoad.cpp +2 -0
  21. package/nitrogen/generated/android/c++/JFunc_void_CameraState.hpp +77 -0
  22. package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.cpp +108 -9
  23. package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.hpp +21 -3
  24. package/nitrogen/generated/android/c++/views/JHybridCesiumViewStateUpdater.cpp +24 -0
  25. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/Func_void_CameraState.kt +80 -0
  26. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/HybridCesiumViewSpec.kt +71 -3
  27. package/nitrogen/generated/ios/ReactNativeCesium-Swift-Cxx-Bridge.cpp +3 -3
  28. package/nitrogen/generated/ios/ReactNativeCesium-Swift-Cxx-Bridge.hpp +43 -28
  29. package/nitrogen/generated/ios/c++/HybridCesiumViewSpecSwift.hpp +89 -9
  30. package/nitrogen/generated/ios/c++/views/HybridCesiumViewComponent.mm +30 -0
  31. package/nitrogen/generated/ios/swift/Func_void_CameraState.swift +5 -5
  32. package/nitrogen/generated/ios/swift/HybridCesiumViewSpec.swift +15 -3
  33. package/nitrogen/generated/ios/swift/HybridCesiumViewSpec_cxx.swift +242 -16
  34. package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.cpp +21 -3
  35. package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.hpp +22 -4
  36. package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.cpp +66 -0
  37. package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.hpp +6 -0
  38. package/nitrogen/generated/shared/json/CesiumViewConfig.json +6 -0
  39. package/package.json +1 -1
  40. package/src/specs/cesium-view.nitro.ts +102 -14
  41. package/cpp/engine/CameraSmoother.cpp +0 -68
  42. package/cpp/engine/CameraSmoother.hpp +0 -28
  43. package/cpp/engine/CameraTargetState.cpp +0 -205
  44. package/cpp/engine/CameraTargetState.hpp +0 -126
@@ -1,5 +1,8 @@
1
1
  import type { HybridView, HybridViewProps, HybridViewMethods } from 'react-native-nitro-modules';
2
- /** Snapshot of the native camera for persistence / sync with React state. */
2
+ /**
3
+ * Snapshot of the native camera for persistence / sync with React state.
4
+ * Returned by `getActualCamera()` and `getDemandCamera()`.
5
+ */
3
6
  export interface CameraState {
4
7
  latitude: number;
5
8
  longitude: number;
@@ -10,8 +13,9 @@ export interface CameraState {
10
13
  verticalFovDeg: number;
11
14
  }
12
15
  /**
13
- * Unit quaternion (w + xi + yj + zk). Used for camera-space view correction.
14
- * Non-unit values are normalized on the native side.
16
+ * Unit quaternion (w + xi + yj + zk). Used for camera-space view correction
17
+ * applied after HPR (boresight / HUD alignment). Non-unit values are
18
+ * normalised on the native side.
15
19
  */
16
20
  export interface Quaternion {
17
21
  w: number;
@@ -34,7 +38,11 @@ export interface CesiumMetrics {
34
38
  export interface CesiumViewProps extends HybridViewProps {
35
39
  ionAccessToken: string;
36
40
  ionAssetId: number;
37
- /** Construction-time seed camera. Use `setCamera()` for runtime updates. */
41
+ /**
42
+ * Initial camera applied via `teleport(...)` once when the native bridge is
43
+ * created. Subsequent prop writes are ignored — use the per-DoF setters or
44
+ * `teleport(...)` for runtime updates.
45
+ */
38
46
  initialCamera: CameraState;
39
47
  pauseRendering: boolean;
40
48
  maximumScreenSpaceError: number;
@@ -74,22 +82,86 @@ export interface CesiumViewProps extends HybridViewProps {
74
82
  * terrain mesh vertex to the camera nadir.
75
83
  */
76
84
  minAltitudeAboveTerrain?: number;
85
+ /** Maximum yaw rate (degrees per second). 0 = uncapped. */
86
+ maxYawRateDegSec?: number;
87
+ /** Maximum pitch rate (degrees per second). 0 = uncapped. */
88
+ maxPitchRateDegSec?: number;
89
+ /** Maximum roll rate (degrees per second). 0 = uncapped. */
90
+ maxRollRateDegSec?: number;
91
+ /** Maximum climb / descent rate (metres per second). 0 = uncapped. */
92
+ maxClimbRateMps?: number;
93
+ /** Maximum horizontal ground speed (metres per second). 0 = uncapped. */
94
+ maxGroundSpeedMps?: number;
77
95
  onMetrics?: (metrics: CesiumMetrics) => void;
96
+ /**
97
+ * Called at ~5 Hz with the post-integration actual camera — the same state
98
+ * returned by `getActualCamera()`. Only fires when at least one field has
99
+ * changed beyond its epsilon threshold since the last emission, so a
100
+ * stationary camera produces no bridge traffic. Use this to keep HUD overlay
101
+ * symbology aligned with the rendered view without polling from JS.
102
+ */
103
+ onActualCamera?: (camera: CameraState) => void;
78
104
  }
105
+ /**
106
+ * Per-DoF camera control. Every setter records the measurement with the
107
+ * native steady_clock time of arrival and feeds it into an α-β tracker
108
+ * (constant-velocity predictor) that owns both demand and actual state.
109
+ *
110
+ * All setters are synchronous and thread-safe. Calling them from a
111
+ * Reanimated worklet via a Nitro `hybridRef` is the supported path for
112
+ * high-frequency updates; the worklet thread takes the integrator's mutex
113
+ * briefly and returns immediately.
114
+ *
115
+ * Getters return Promises and should be called from the JS thread (e.g. a
116
+ * `useEffect` or a throttled HUD update), not from a worklet.
117
+ */
79
118
  export interface CesiumViewMethods extends HybridViewMethods {
80
- /** Returns the current native camera state. */
81
- getCameraState(): Promise<CameraState>;
82
119
  /**
83
- * Runtime camera control (heading/pitch/roll + position + VFOV).
84
- * Does not change the view-correction quaternion; use `setCameraQuaternion` to set that.
120
+ * New geographic position demand (latitude / longitude in degrees). Use
121
+ * for GPS or scripted position updates. Latitude is clamped to ±90 by the
122
+ * integrator; longitude is continuous (no wrap normalisation) so the
123
+ * shortest-arc residual maths stays correct across the antimeridian.
124
+ */
125
+ setPosition(latitude: number, longitude: number): void;
126
+ /** New altitude demand (metres above mean sea level). */
127
+ setAltitude(altitudeMeters: number): void;
128
+ /** New heading demand (degrees, 0 = north, increasing clockwise). */
129
+ setHeading(headingDeg: number): void;
130
+ /**
131
+ * New attitude demand (pitch and roll in degrees). Bundled because almost
132
+ * every IMU emits them together — but you can pass the previous value for
133
+ * either axis if you only have one of them.
134
+ */
135
+ setAttitude(pitchDeg: number, rollDeg: number): void;
136
+ /**
137
+ * New camera-space rotation applied after HPR (unit quaternion). Use for
138
+ * boresight calibration or screen-fixed HUD alignment. SLERPed toward the
139
+ * latest demand each frame.
140
+ */
141
+ setViewCorrection(q: Quaternion): void;
142
+ /** New vertical field-of-view demand (degrees). Clamped to 20..100. */
143
+ setVerticalFov(deg: number): void;
144
+ /**
145
+ * Atomically reset every DoF to the given camera state (value, velocity
146
+ * and demand all snap to the target). Bypasses the integrator entirely;
147
+ * use for `Fly to coordinate` actions or initial seeding from saved
148
+ * state.
149
+ */
150
+ teleport(camera: CameraState): void;
151
+ /**
152
+ * Most recent camera that was rendered (post-integration). This is what
153
+ * the user is currently looking at and is what a HUD overlay should
154
+ * mirror. Differs from `getDemandCamera()` while a glide is in progress
155
+ * or when the terrain-floor clamp has raised the altitude.
85
156
  */
86
- setCamera(camera: CameraState): void;
157
+ getActualCamera(): Promise<CameraState>;
87
158
  /**
88
- * Same fields as `setCamera`, plus a camera-space rotation applied after HPR
89
- * (e.g. boresight / HUD alignment). See README.
159
+ * What the consumer last asked for (per-DoF demand). Useful for
160
+ * diagnostics or for showing the requested camera alongside the rendered
161
+ * one.
90
162
  */
91
- setCameraQuaternion(camera: CameraState, viewCorrection: Quaternion): void;
92
- /** Current view-correction quaternion (identity if never set via `setCameraQuaternion`). */
163
+ getDemandCamera(): Promise<CameraState>;
164
+ /** Current view-correction quaternion (smoothed toward the latest demand). */
93
165
  getViewCorrection(): Promise<Quaternion>;
94
166
  }
95
167
  export type CesiumView = HybridView<CesiumViewProps, CesiumViewMethods>;
@@ -1 +1 @@
1
- {"version":3,"file":"cesium-view.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/cesium-view.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,4BAA4B,CAAA;AAEnC,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,+DAA+D;IAC/D,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,aAAa,EAAE,WAAW,CAAA;IAC1B,cAAc,EAAE,OAAO,CAAA;IACvB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,4BAA4B,EAAE,MAAM,CAAA;IACpC,sBAAsB,EAAE,MAAM,CAAA;IAC9B,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IAGzB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,2EAA2E;IAC3E,6BAA6B,CAAC,EAAE,OAAO,CAAA;IACvC,4FAA4F;IAC5F,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,8EAA8E;IAC9E,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEhC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;CAC7C;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,+CAA+C;IAC/C,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IACtC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IACpC;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,GAAG,IAAI,CAAA;IAC1E,4FAA4F;IAC5F,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;CACzC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"cesium-view.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/cesium-view.nitro.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@
17
17
 
18
18
  #include "JHybridCesiumViewSpec.hpp"
19
19
  #include "JFunc_void_CesiumMetrics.hpp"
20
+ #include "JFunc_void_CameraState.hpp"
20
21
  #include "views/JHybridCesiumViewStateUpdater.hpp"
21
22
  #include <NitroModules/DefaultConstructableObject.hpp>
22
23
 
@@ -44,6 +45,7 @@ void registerAllNatives() {
44
45
  // Register native JNI methods
45
46
  margelo::nitro::reactnativecesium::JHybridCesiumViewSpec::CxxPart::registerNatives();
46
47
  margelo::nitro::reactnativecesium::JFunc_void_CesiumMetrics_cxx::registerNatives();
48
+ margelo::nitro::reactnativecesium::JFunc_void_CameraState_cxx::registerNatives();
47
49
  margelo::nitro::reactnativecesium::views::JHybridCesiumViewStateUpdater::registerNatives();
48
50
 
49
51
  // Register Nitro Hybrid Objects
@@ -0,0 +1,77 @@
1
+ ///
2
+ /// JFunc_void_CameraState.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include <functional>
12
+
13
+ #include "CameraState.hpp"
14
+ #include <functional>
15
+ #include <NitroModules/JNICallable.hpp>
16
+ #include "JCameraState.hpp"
17
+
18
+ namespace margelo::nitro::reactnativecesium {
19
+
20
+ using namespace facebook;
21
+
22
+ /**
23
+ * Represents the Java/Kotlin callback `(camera: CameraState) -> Unit`.
24
+ * This can be passed around between C++ and Java/Kotlin.
25
+ */
26
+ struct JFunc_void_CameraState: public jni::JavaClass<JFunc_void_CameraState> {
27
+ public:
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/reactnativecesium/Func_void_CameraState;";
29
+
30
+ public:
31
+ /**
32
+ * Invokes the function this `JFunc_void_CameraState` instance holds through JNI.
33
+ */
34
+ void invoke(const CameraState& camera) const {
35
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JCameraState> /* camera */)>("invoke");
36
+ method(self(), JCameraState::fromCpp(camera));
37
+ }
38
+ };
39
+
40
+ /**
41
+ * An implementation of Func_void_CameraState that is backed by a C++ implementation (using `std::function<...>`)
42
+ */
43
+ class JFunc_void_CameraState_cxx final: public jni::HybridClass<JFunc_void_CameraState_cxx, JFunc_void_CameraState> {
44
+ public:
45
+ static jni::local_ref<JFunc_void_CameraState::javaobject> fromCpp(const std::function<void(const CameraState& /* camera */)>& func) {
46
+ return JFunc_void_CameraState_cxx::newObjectCxxArgs(func);
47
+ }
48
+
49
+ public:
50
+ /**
51
+ * Invokes the C++ `std::function<...>` this `JFunc_void_CameraState_cxx` instance holds.
52
+ */
53
+ void invoke_cxx(jni::alias_ref<JCameraState> camera) {
54
+ _func(camera->toCpp());
55
+ }
56
+
57
+ public:
58
+ [[nodiscard]]
59
+ inline const std::function<void(const CameraState& /* camera */)>& getFunction() const {
60
+ return _func;
61
+ }
62
+
63
+ public:
64
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/reactnativecesium/Func_void_CameraState_cxx;";
65
+ static void registerNatives() {
66
+ registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_CameraState_cxx::invoke_cxx)});
67
+ }
68
+
69
+ private:
70
+ explicit JFunc_void_CameraState_cxx(const std::function<void(const CameraState& /* camera */)>& func): _func(func) { }
71
+
72
+ private:
73
+ friend HybridBase;
74
+ std::function<void(const CameraState& /* camera */)> _func;
75
+ };
76
+
77
+ } // namespace margelo::nitro::reactnativecesium
@@ -23,6 +23,7 @@ namespace margelo::nitro::reactnativecesium { struct Quaternion; }
23
23
  #include "JFunc_void_CesiumMetrics.hpp"
24
24
  #include <NitroModules/JNICallable.hpp>
25
25
  #include "JCesiumMetrics.hpp"
26
+ #include "JFunc_void_CameraState.hpp"
26
27
  #include <NitroModules/Promise.hpp>
27
28
  #include <NitroModules/JPromise.hpp>
28
29
  #include "Quaternion.hpp"
@@ -256,6 +257,51 @@ namespace margelo::nitro::reactnativecesium {
256
257
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* minAltitudeAboveTerrain */)>("setMinAltitudeAboveTerrain");
257
258
  method(_javaPart, minAltitudeAboveTerrain.has_value() ? jni::JDouble::valueOf(minAltitudeAboveTerrain.value()) : nullptr);
258
259
  }
260
+ std::optional<double> JHybridCesiumViewSpec::getMaxYawRateDegSec() {
261
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getMaxYawRateDegSec");
262
+ auto __result = method(_javaPart);
263
+ return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
264
+ }
265
+ void JHybridCesiumViewSpec::setMaxYawRateDegSec(std::optional<double> maxYawRateDegSec) {
266
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* maxYawRateDegSec */)>("setMaxYawRateDegSec");
267
+ method(_javaPart, maxYawRateDegSec.has_value() ? jni::JDouble::valueOf(maxYawRateDegSec.value()) : nullptr);
268
+ }
269
+ std::optional<double> JHybridCesiumViewSpec::getMaxPitchRateDegSec() {
270
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getMaxPitchRateDegSec");
271
+ auto __result = method(_javaPart);
272
+ return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
273
+ }
274
+ void JHybridCesiumViewSpec::setMaxPitchRateDegSec(std::optional<double> maxPitchRateDegSec) {
275
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* maxPitchRateDegSec */)>("setMaxPitchRateDegSec");
276
+ method(_javaPart, maxPitchRateDegSec.has_value() ? jni::JDouble::valueOf(maxPitchRateDegSec.value()) : nullptr);
277
+ }
278
+ std::optional<double> JHybridCesiumViewSpec::getMaxRollRateDegSec() {
279
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getMaxRollRateDegSec");
280
+ auto __result = method(_javaPart);
281
+ return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
282
+ }
283
+ void JHybridCesiumViewSpec::setMaxRollRateDegSec(std::optional<double> maxRollRateDegSec) {
284
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* maxRollRateDegSec */)>("setMaxRollRateDegSec");
285
+ method(_javaPart, maxRollRateDegSec.has_value() ? jni::JDouble::valueOf(maxRollRateDegSec.value()) : nullptr);
286
+ }
287
+ std::optional<double> JHybridCesiumViewSpec::getMaxClimbRateMps() {
288
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getMaxClimbRateMps");
289
+ auto __result = method(_javaPart);
290
+ return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
291
+ }
292
+ void JHybridCesiumViewSpec::setMaxClimbRateMps(std::optional<double> maxClimbRateMps) {
293
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* maxClimbRateMps */)>("setMaxClimbRateMps");
294
+ method(_javaPart, maxClimbRateMps.has_value() ? jni::JDouble::valueOf(maxClimbRateMps.value()) : nullptr);
295
+ }
296
+ std::optional<double> JHybridCesiumViewSpec::getMaxGroundSpeedMps() {
297
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getMaxGroundSpeedMps");
298
+ auto __result = method(_javaPart);
299
+ return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
300
+ }
301
+ void JHybridCesiumViewSpec::setMaxGroundSpeedMps(std::optional<double> maxGroundSpeedMps) {
302
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* maxGroundSpeedMps */)>("setMaxGroundSpeedMps");
303
+ method(_javaPart, maxGroundSpeedMps.has_value() ? jni::JDouble::valueOf(maxGroundSpeedMps.value()) : nullptr);
304
+ }
259
305
  std::optional<std::function<void(const CesiumMetrics& /* metrics */)>> JHybridCesiumViewSpec::getOnMetrics() {
260
306
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_CesiumMetrics::javaobject>()>("getOnMetrics_cxx");
261
307
  auto __result = method(_javaPart);
@@ -273,10 +319,55 @@ namespace margelo::nitro::reactnativecesium {
273
319
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_CesiumMetrics::javaobject> /* onMetrics */)>("setOnMetrics_cxx");
274
320
  method(_javaPart, onMetrics.has_value() ? JFunc_void_CesiumMetrics_cxx::fromCpp(onMetrics.value()) : nullptr);
275
321
  }
322
+ std::optional<std::function<void(const CameraState& /* camera */)>> JHybridCesiumViewSpec::getOnActualCamera() {
323
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_CameraState::javaobject>()>("getOnActualCamera_cxx");
324
+ auto __result = method(_javaPart);
325
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(const CameraState& /* camera */)> {
326
+ if (__result->isInstanceOf(JFunc_void_CameraState_cxx::javaClassStatic())) [[likely]] {
327
+ auto downcast = jni::static_ref_cast<JFunc_void_CameraState_cxx::javaobject>(__result);
328
+ return downcast->cthis()->getFunction();
329
+ } else {
330
+ auto __resultRef = jni::make_global(__result);
331
+ return JNICallable<JFunc_void_CameraState, void(CameraState)>(std::move(__resultRef));
332
+ }
333
+ }()) : std::nullopt;
334
+ }
335
+ void JHybridCesiumViewSpec::setOnActualCamera(const std::optional<std::function<void(const CameraState& /* camera */)>>& onActualCamera) {
336
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_CameraState::javaobject> /* onActualCamera */)>("setOnActualCamera_cxx");
337
+ method(_javaPart, onActualCamera.has_value() ? JFunc_void_CameraState_cxx::fromCpp(onActualCamera.value()) : nullptr);
338
+ }
276
339
 
277
340
  // Methods
278
- std::shared_ptr<Promise<CameraState>> JHybridCesiumViewSpec::getCameraState() {
279
- static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getCameraState");
341
+ void JHybridCesiumViewSpec::setPosition(double latitude, double longitude) {
342
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* latitude */, double /* longitude */)>("setPosition");
343
+ method(_javaPart, latitude, longitude);
344
+ }
345
+ void JHybridCesiumViewSpec::setAltitude(double altitudeMeters) {
346
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* altitudeMeters */)>("setAltitude");
347
+ method(_javaPart, altitudeMeters);
348
+ }
349
+ void JHybridCesiumViewSpec::setHeading(double headingDeg) {
350
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* headingDeg */)>("setHeading");
351
+ method(_javaPart, headingDeg);
352
+ }
353
+ void JHybridCesiumViewSpec::setAttitude(double pitchDeg, double rollDeg) {
354
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* pitchDeg */, double /* rollDeg */)>("setAttitude");
355
+ method(_javaPart, pitchDeg, rollDeg);
356
+ }
357
+ void JHybridCesiumViewSpec::setViewCorrection(const Quaternion& q) {
358
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JQuaternion> /* q */)>("setViewCorrection");
359
+ method(_javaPart, JQuaternion::fromCpp(q));
360
+ }
361
+ void JHybridCesiumViewSpec::setVerticalFov(double deg) {
362
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* deg */)>("setVerticalFov");
363
+ method(_javaPart, deg);
364
+ }
365
+ void JHybridCesiumViewSpec::teleport(const CameraState& camera) {
366
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JCameraState> /* camera */)>("teleport");
367
+ method(_javaPart, JCameraState::fromCpp(camera));
368
+ }
369
+ std::shared_ptr<Promise<CameraState>> JHybridCesiumViewSpec::getActualCamera() {
370
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getActualCamera");
280
371
  auto __result = method(_javaPart);
281
372
  return [&]() {
282
373
  auto __promise = Promise<CameraState>::create();
@@ -291,13 +382,21 @@ namespace margelo::nitro::reactnativecesium {
291
382
  return __promise;
292
383
  }();
293
384
  }
294
- void JHybridCesiumViewSpec::setCamera(const CameraState& camera) {
295
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JCameraState> /* camera */)>("setCamera");
296
- method(_javaPart, JCameraState::fromCpp(camera));
297
- }
298
- void JHybridCesiumViewSpec::setCameraQuaternion(const CameraState& camera, const Quaternion& viewCorrection) {
299
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JCameraState> /* camera */, jni::alias_ref<JQuaternion> /* viewCorrection */)>("setCameraQuaternion");
300
- method(_javaPart, JCameraState::fromCpp(camera), JQuaternion::fromCpp(viewCorrection));
385
+ std::shared_ptr<Promise<CameraState>> JHybridCesiumViewSpec::getDemandCamera() {
386
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getDemandCamera");
387
+ auto __result = method(_javaPart);
388
+ return [&]() {
389
+ auto __promise = Promise<CameraState>::create();
390
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
391
+ auto __result = jni::static_ref_cast<JCameraState>(__boxedResult);
392
+ __promise->resolve(__result->toCpp());
393
+ });
394
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
395
+ jni::JniException __jniError(__throwable);
396
+ __promise->reject(std::make_exception_ptr(__jniError));
397
+ });
398
+ return __promise;
399
+ }();
301
400
  }
302
401
  std::shared_ptr<Promise<Quaternion>> JHybridCesiumViewSpec::getViewCorrection() {
303
402
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getViewCorrection");
@@ -94,14 +94,32 @@ namespace margelo::nitro::reactnativecesium {
94
94
  void setTaskProcessorThreads(std::optional<double> taskProcessorThreads) override;
95
95
  std::optional<double> getMinAltitudeAboveTerrain() override;
96
96
  void setMinAltitudeAboveTerrain(std::optional<double> minAltitudeAboveTerrain) override;
97
+ std::optional<double> getMaxYawRateDegSec() override;
98
+ void setMaxYawRateDegSec(std::optional<double> maxYawRateDegSec) override;
99
+ std::optional<double> getMaxPitchRateDegSec() override;
100
+ void setMaxPitchRateDegSec(std::optional<double> maxPitchRateDegSec) override;
101
+ std::optional<double> getMaxRollRateDegSec() override;
102
+ void setMaxRollRateDegSec(std::optional<double> maxRollRateDegSec) override;
103
+ std::optional<double> getMaxClimbRateMps() override;
104
+ void setMaxClimbRateMps(std::optional<double> maxClimbRateMps) override;
105
+ std::optional<double> getMaxGroundSpeedMps() override;
106
+ void setMaxGroundSpeedMps(std::optional<double> maxGroundSpeedMps) override;
97
107
  std::optional<std::function<void(const CesiumMetrics& /* metrics */)>> getOnMetrics() override;
98
108
  void setOnMetrics(const std::optional<std::function<void(const CesiumMetrics& /* metrics */)>>& onMetrics) override;
109
+ std::optional<std::function<void(const CameraState& /* camera */)>> getOnActualCamera() override;
110
+ void setOnActualCamera(const std::optional<std::function<void(const CameraState& /* camera */)>>& onActualCamera) override;
99
111
 
100
112
  public:
101
113
  // Methods
102
- std::shared_ptr<Promise<CameraState>> getCameraState() override;
103
- void setCamera(const CameraState& camera) override;
104
- void setCameraQuaternion(const CameraState& camera, const Quaternion& viewCorrection) override;
114
+ void setPosition(double latitude, double longitude) override;
115
+ void setAltitude(double altitudeMeters) override;
116
+ void setHeading(double headingDeg) override;
117
+ void setAttitude(double pitchDeg, double rollDeg) override;
118
+ void setViewCorrection(const Quaternion& q) override;
119
+ void setVerticalFov(double deg) override;
120
+ void teleport(const CameraState& camera) override;
121
+ std::shared_ptr<Promise<CameraState>> getActualCamera() override;
122
+ std::shared_ptr<Promise<CameraState>> getDemandCamera() override;
105
123
  std::shared_ptr<Promise<Quaternion>> getViewCorrection() override;
106
124
 
107
125
  private:
@@ -125,10 +125,34 @@ void JHybridCesiumViewStateUpdater::updateViewProps(jni::alias_ref<jni::JClass>
125
125
  hybridView->setMinAltitudeAboveTerrain(props->minAltitudeAboveTerrain.value);
126
126
  props->minAltitudeAboveTerrain.isDirty = false;
127
127
  }
128
+ if (props->maxYawRateDegSec.isDirty) {
129
+ hybridView->setMaxYawRateDegSec(props->maxYawRateDegSec.value);
130
+ props->maxYawRateDegSec.isDirty = false;
131
+ }
132
+ if (props->maxPitchRateDegSec.isDirty) {
133
+ hybridView->setMaxPitchRateDegSec(props->maxPitchRateDegSec.value);
134
+ props->maxPitchRateDegSec.isDirty = false;
135
+ }
136
+ if (props->maxRollRateDegSec.isDirty) {
137
+ hybridView->setMaxRollRateDegSec(props->maxRollRateDegSec.value);
138
+ props->maxRollRateDegSec.isDirty = false;
139
+ }
140
+ if (props->maxClimbRateMps.isDirty) {
141
+ hybridView->setMaxClimbRateMps(props->maxClimbRateMps.value);
142
+ props->maxClimbRateMps.isDirty = false;
143
+ }
144
+ if (props->maxGroundSpeedMps.isDirty) {
145
+ hybridView->setMaxGroundSpeedMps(props->maxGroundSpeedMps.value);
146
+ props->maxGroundSpeedMps.isDirty = false;
147
+ }
128
148
  if (props->onMetrics.isDirty) {
129
149
  hybridView->setOnMetrics(props->onMetrics.value);
130
150
  props->onMetrics.isDirty = false;
131
151
  }
152
+ if (props->onActualCamera.isDirty) {
153
+ hybridView->setOnActualCamera(props->onActualCamera.value);
154
+ props->onActualCamera.isDirty = false;
155
+ }
132
156
 
133
157
  // Update hybridRef if it changed
134
158
  if (props->hybridRef.isDirty) {
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// Func_void_CameraState.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.reactnativecesium
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
14
+
15
+
16
+ /**
17
+ * Represents the JavaScript callback `(camera: struct) => void`.
18
+ * This can be either implemented in C++ (in which case it might be a callback coming from JS),
19
+ * or in Kotlin/Java (in which case it is a native callback).
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress("ClassName", "RedundantUnitReturnType")
24
+ fun interface Func_void_CameraState: (CameraState) -> Unit {
25
+ /**
26
+ * Call the given JS callback.
27
+ * @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
28
+ */
29
+ @DoNotStrip
30
+ @Keep
31
+ override fun invoke(camera: CameraState): Unit
32
+ }
33
+
34
+ /**
35
+ * Represents the JavaScript callback `(camera: struct) => void`.
36
+ * This is implemented in C++, via a `std::function<...>`.
37
+ * The callback might be coming from JS.
38
+ */
39
+ @DoNotStrip
40
+ @Keep
41
+ @Suppress(
42
+ "KotlinJniMissingFunction", "unused",
43
+ "RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
44
+ "ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
45
+ )
46
+ class Func_void_CameraState_cxx: Func_void_CameraState {
47
+ @DoNotStrip
48
+ @Keep
49
+ private val mHybridData: HybridData
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ private constructor(hybridData: HybridData) {
54
+ mHybridData = hybridData
55
+ }
56
+
57
+ @DoNotStrip
58
+ @Keep
59
+ override fun invoke(camera: CameraState): Unit
60
+ = invoke_cxx(camera)
61
+
62
+ @FastNative
63
+ private external fun invoke_cxx(camera: CameraState): Unit
64
+ }
65
+
66
+ /**
67
+ * Represents the JavaScript callback `(camera: struct) => void`.
68
+ * This is implemented in Java/Kotlin, via a `(CameraState) -> Unit`.
69
+ * The callback is always coming from native.
70
+ */
71
+ @DoNotStrip
72
+ @Keep
73
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
74
+ class Func_void_CameraState_java(private val function: (CameraState) -> Unit): Func_void_CameraState {
75
+ @DoNotStrip
76
+ @Keep
77
+ override fun invoke(camera: CameraState): Unit {
78
+ return this.function(camera)
79
+ }
80
+ }
@@ -159,6 +159,36 @@ abstract class HybridCesiumViewSpec: HybridView() {
159
159
  @set:Keep
160
160
  abstract var minAltitudeAboveTerrain: Double?
161
161
 
162
+ @get:DoNotStrip
163
+ @get:Keep
164
+ @set:DoNotStrip
165
+ @set:Keep
166
+ abstract var maxYawRateDegSec: Double?
167
+
168
+ @get:DoNotStrip
169
+ @get:Keep
170
+ @set:DoNotStrip
171
+ @set:Keep
172
+ abstract var maxPitchRateDegSec: Double?
173
+
174
+ @get:DoNotStrip
175
+ @get:Keep
176
+ @set:DoNotStrip
177
+ @set:Keep
178
+ abstract var maxRollRateDegSec: Double?
179
+
180
+ @get:DoNotStrip
181
+ @get:Keep
182
+ @set:DoNotStrip
183
+ @set:Keep
184
+ abstract var maxClimbRateMps: Double?
185
+
186
+ @get:DoNotStrip
187
+ @get:Keep
188
+ @set:DoNotStrip
189
+ @set:Keep
190
+ abstract var maxGroundSpeedMps: Double?
191
+
162
192
  abstract var onMetrics: ((metrics: CesiumMetrics) -> Unit)?
163
193
 
164
194
  private var onMetrics_cxx: Func_void_CesiumMetrics?
@@ -172,19 +202,57 @@ abstract class HybridCesiumViewSpec: HybridView() {
172
202
  set(value) {
173
203
  onMetrics = value?.let { it }
174
204
  }
205
+
206
+ abstract var onActualCamera: ((camera: CameraState) -> Unit)?
207
+
208
+ private var onActualCamera_cxx: Func_void_CameraState?
209
+ @Keep
210
+ @DoNotStrip
211
+ get() {
212
+ return onActualCamera?.let { Func_void_CameraState_java(it) }
213
+ }
214
+ @Keep
215
+ @DoNotStrip
216
+ set(value) {
217
+ onActualCamera = value?.let { it }
218
+ }
175
219
 
176
220
  // Methods
177
221
  @DoNotStrip
178
222
  @Keep
179
- abstract fun getCameraState(): Promise<CameraState>
223
+ abstract fun setPosition(latitude: Double, longitude: Double): Unit
224
+
225
+ @DoNotStrip
226
+ @Keep
227
+ abstract fun setAltitude(altitudeMeters: Double): Unit
228
+
229
+ @DoNotStrip
230
+ @Keep
231
+ abstract fun setHeading(headingDeg: Double): Unit
232
+
233
+ @DoNotStrip
234
+ @Keep
235
+ abstract fun setAttitude(pitchDeg: Double, rollDeg: Double): Unit
236
+
237
+ @DoNotStrip
238
+ @Keep
239
+ abstract fun setViewCorrection(q: Quaternion): Unit
240
+
241
+ @DoNotStrip
242
+ @Keep
243
+ abstract fun setVerticalFov(deg: Double): Unit
244
+
245
+ @DoNotStrip
246
+ @Keep
247
+ abstract fun teleport(camera: CameraState): Unit
180
248
 
181
249
  @DoNotStrip
182
250
  @Keep
183
- abstract fun setCamera(camera: CameraState): Unit
251
+ abstract fun getActualCamera(): Promise<CameraState>
184
252
 
185
253
  @DoNotStrip
186
254
  @Keep
187
- abstract fun setCameraQuaternion(camera: CameraState, viewCorrection: Quaternion): Unit
255
+ abstract fun getDemandCamera(): Promise<CameraState>
188
256
 
189
257
  @DoNotStrip
190
258
  @Keep
@@ -22,11 +22,11 @@ namespace margelo::nitro::reactnativecesium::bridge::swift {
22
22
  };
23
23
  }
24
24
 
25
- // pragma MARK: std::function<void(const CameraState& /* result */)>
25
+ // pragma MARK: std::function<void(const CameraState& /* camera */)>
26
26
  Func_void_CameraState create_Func_void_CameraState(void* NON_NULL swiftClosureWrapper) noexcept {
27
27
  auto swiftClosure = ReactNativeCesium::Func_void_CameraState::fromUnsafe(swiftClosureWrapper);
28
- return [swiftClosure = std::move(swiftClosure)](const CameraState& result) mutable -> void {
29
- swiftClosure.call(result);
28
+ return [swiftClosure = std::move(swiftClosure)](const CameraState& camera) mutable -> void {
29
+ swiftClosure.call(camera);
30
30
  };
31
31
  }
32
32