Skip to content

Commit 499fc4b

Browse files
committed
please
1 parent 2f464bb commit 499fc4b

File tree

1 file changed

+52
-62
lines changed

1 file changed

+52
-62
lines changed

stores/hybrid_viewer.js

Lines changed: 52 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,36 @@ export const useHybridViewerStore = defineStore("hybridViewer", () => {
9999
})
100100
}
101101

102+
function syncRemoteCamera() {
103+
console.log("syncRemoteCamera")
104+
const renderer = genericRenderWindow.value.getRenderer()
105+
const camera = renderer.getActiveCamera()
106+
const params = {
107+
camera_options: {
108+
focal_point: camera.getFocalPoint(),
109+
view_up: camera.getViewUp(),
110+
position: camera.getPosition(),
111+
view_angle: camera.getViewAngle(),
112+
clipping_range: camera.getClippingRange(),
113+
distance: camera.getDistance(),
114+
},
115+
}
116+
viewer_call(
117+
{
118+
schema: viewer_schemas.opengeodeweb_viewer.viewer.update_camera,
119+
params,
120+
},
121+
{
122+
response_function: () => {
123+
remoteRender()
124+
for (const key in params.camera_options) {
125+
camera_options[key] = params.camera_options[key]
126+
}
127+
},
128+
},
129+
)
130+
}
131+
102132
function remoteRender() {
103133
viewer_call({
104134
schema: viewer_schemas.opengeodeweb_viewer.viewer.render,
@@ -201,74 +231,34 @@ export const useHybridViewerStore = defineStore("hybridViewer", () => {
201231
}
202232

203233
const cam = snapshot?.camera_options
204-
if (cam) {
205-
console.log("[hybrid_viewer] importStores snapshot camera", cam)
206-
const renderer = genericRenderWindow.value.getRenderer()
207-
const camera = renderer.getActiveCamera()
208-
209-
const fp = toNumArray(cam.focal_point, 3)
210-
const vu = toNumArray(cam.view_up, 3)
211-
const pos = toNumArray(cam.position, 3)
212-
const cr = toNumArray(cam.clipping_range, 2)
213-
const va = Number(cam.view_angle)
234+
if (!cam) return
214235

215-
const valid = fp && vu && pos && cr && Number.isFinite(va)
216-
217-
console.log("[hybrid_viewer] importStores normalized camera", {
218-
focal_point: fp,
219-
view_up: vu,
220-
position: pos,
221-
view_angle: va,
222-
clipping_range: cr,
223-
valid,
224-
})
225-
226-
if (!valid) {
227-
console.warn(
228-
"[hybrid_viewer] importStores camera skipped: invalid snapshot camera",
229-
cam,
230-
)
231-
return
232-
}
236+
const renderer = genericRenderWindow.value.getRenderer()
237+
const camera = renderer.getActiveCamera()
233238

234-
camera.setFocalPoint(fp)
235-
camera.setViewUp(vu)
236-
camera.setPosition(pos)
237-
camera.setViewAngle(va)
238-
camera.setClippingRange(cr)
239+
// Applique directement les valeurs du snapshot (elles sont déjà numériques)
240+
camera.setFocalPoint(cam.focal_point)
241+
camera.setViewUp(cam.view_up)
242+
camera.setPosition(cam.position)
243+
camera.setViewAngle(cam.view_angle)
244+
camera.setClippingRange(cam.clipping_range)
239245

240-
genericRenderWindow.value.getRenderWindow().render()
246+
genericRenderWindow.value.getRenderWindow().render()
241247

242-
console.log("[hybrid_viewer] importStores -> viewer.update_camera", {
243-
camera_options: {
244-
focal_point: fp,
245-
view_up: vu,
246-
position: pos,
247-
view_angle: va,
248-
clipping_range: cr,
249-
},
250-
})
251-
await viewer_call({
248+
// Envoie tel quel au viewer distant (inclut distance si présente)
249+
const payload = { camera_options: cam }
250+
viewer_call(
251+
{
252252
schema: viewer_schemas.opengeodeweb_viewer.viewer.update_camera,
253-
params: {
254-
camera_options: {
255-
focal_point: fp,
256-
view_up: vu,
257-
position: pos,
258-
view_angle: va,
259-
clipping_range: cr,
260-
},
253+
params: payload,
254+
},
255+
{
256+
response_function: () => {
257+
remoteRender()
258+
Object.assign(camera_options, payload.camera_options)
261259
},
262-
})
263-
264-
Object.assign(camera_options, {
265-
focal_point: fp,
266-
view_up: vu,
267-
position: pos,
268-
view_angle: va,
269-
clipping_range: cr,
270-
})
271-
}
260+
},
261+
)
272262
}
273263

274264
return {

0 commit comments

Comments
 (0)