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.
- package/README.md +100 -27
- package/android/CMakeLists.txt +1 -2
- package/android/src/main/cpp/CesiumBridgeAndroid.cpp +264 -130
- package/android/src/main/cpp/CesiumBridgeAndroid.h +70 -27
- package/android/src/main/java/com/margelo/nitro/reactnativecesium/CesiumBridgeJNI.kt +68 -44
- package/android/src/main/java/com/margelo/nitro/reactnativecesium/HybridCesiumView.kt +199 -187
- package/cpp/engine/CameraIntegrator.cpp +374 -0
- package/cpp/engine/CameraIntegrator.hpp +146 -0
- package/cpp/engine/EngineTunables.hpp +90 -31
- package/cpp/engine/GlobeCamera.cpp +17 -6
- package/cpp/engine/GlobeCamera.hpp +11 -8
- package/cpp/engine/test/CameraIntegratorTest.cpp +205 -0
- package/cpp/engine/test/build_and_run.sh +27 -0
- package/example/README.md +1 -1
- package/ios/CesiumBridge.h +53 -28
- package/ios/CesiumBridge.mm +172 -86
- package/ios/HybridCesiumView.swift +256 -145
- package/lib/typescript/src/specs/cesium-view.nitro.d.ts +85 -13
- package/lib/typescript/src/specs/cesium-view.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/ReactNativeCesiumOnLoad.cpp +2 -0
- package/nitrogen/generated/android/c++/JFunc_void_CameraState.hpp +77 -0
- package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.cpp +108 -9
- package/nitrogen/generated/android/c++/JHybridCesiumViewSpec.hpp +21 -3
- package/nitrogen/generated/android/c++/views/JHybridCesiumViewStateUpdater.cpp +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/Func_void_CameraState.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativecesium/HybridCesiumViewSpec.kt +71 -3
- package/nitrogen/generated/ios/ReactNativeCesium-Swift-Cxx-Bridge.cpp +3 -3
- package/nitrogen/generated/ios/ReactNativeCesium-Swift-Cxx-Bridge.hpp +43 -28
- package/nitrogen/generated/ios/c++/HybridCesiumViewSpecSwift.hpp +89 -9
- package/nitrogen/generated/ios/c++/views/HybridCesiumViewComponent.mm +30 -0
- package/nitrogen/generated/ios/swift/Func_void_CameraState.swift +5 -5
- package/nitrogen/generated/ios/swift/HybridCesiumViewSpec.swift +15 -3
- package/nitrogen/generated/ios/swift/HybridCesiumViewSpec_cxx.swift +242 -16
- package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.cpp +21 -3
- package/nitrogen/generated/shared/c++/HybridCesiumViewSpec.hpp +22 -4
- package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.cpp +66 -0
- package/nitrogen/generated/shared/c++/views/HybridCesiumViewComponent.hpp +6 -0
- package/nitrogen/generated/shared/json/CesiumViewConfig.json +6 -0
- package/package.json +1 -1
- package/src/specs/cesium-view.nitro.ts +102 -14
- package/cpp/engine/CameraSmoother.cpp +0 -68
- package/cpp/engine/CameraSmoother.hpp +0 -28
- package/cpp/engine/CameraTargetState.cpp +0 -205
- package/cpp/engine/CameraTargetState.hpp +0 -126
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { HybridView, HybridViewProps, HybridViewMethods } from 'react-native-nitro-modules';
|
|
2
|
-
/**
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
*
|
|
84
|
-
*
|
|
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
|
-
|
|
157
|
+
getActualCamera(): Promise<CameraState>;
|
|
87
158
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
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
|
-
|
|
92
|
-
/** Current view-correction quaternion (
|
|
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
|
|
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
|
-
|
|
279
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
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
|
-
|
|
295
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
296
|
-
method(_javaPart
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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
|
-
|
|
103
|
-
void
|
|
104
|
-
void
|
|
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
|
|
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
|
|
251
|
+
abstract fun getActualCamera(): Promise<CameraState>
|
|
184
252
|
|
|
185
253
|
@DoNotStrip
|
|
186
254
|
@Keep
|
|
187
|
-
abstract fun
|
|
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& /*
|
|
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&
|
|
29
|
-
swiftClosure.call(
|
|
28
|
+
return [swiftClosure = std::move(swiftClosure)](const CameraState& camera) mutable -> void {
|
|
29
|
+
swiftClosure.call(camera);
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
|