@@ -199,14 +199,49 @@ export const useHybridViewerStore = defineStore("hybridViewer", () => {
199199 }
200200
201201 function exportStores ( ) {
202- return { zScale : zScale . value }
202+ const renderer = genericRenderWindow . value ?. getRenderer ?. ( )
203+ const camera = renderer ?. getActiveCamera ?. ( )
204+ const cameraSnapshot = camera
205+ ? {
206+ focal_point : Array . from ( camera . getFocalPoint ( ) ) ,
207+ view_up : Array . from ( camera . getViewUp ( ) ) ,
208+ position : Array . from ( camera . getPosition ( ) ) ,
209+ view_angle : camera . getViewAngle ( ) ,
210+ clipping_range : Array . from ( camera . getClippingRange ( ) ) ,
211+ distance : camera . getDistance ( ) ,
212+ }
213+ : camera_options
214+ return { zScale : zScale . value , camera_options : cameraSnapshot }
203215 }
204216
205217 async function importStores ( snapshot ) {
206218 const z_scale = snapshot ?. zScale
207219 if ( z_scale != null ) {
208220 await setZScaling ( z_scale )
209221 }
222+
223+ const cam = snapshot ?. camera_options
224+ if ( cam ) {
225+ const renderer = genericRenderWindow . value . getRenderer ( )
226+ const camera = renderer . getActiveCamera ( )
227+
228+ if ( cam . focal_point ) camera . setFocalPoint ( cam . focal_point )
229+ if ( cam . view_up ) camera . setViewUp ( cam . view_up )
230+ if ( cam . position ) camera . setPosition ( cam . position )
231+ if ( cam . view_angle != null ) camera . setViewAngle ( cam . view_angle )
232+ if ( cam . clipping_range ) camera . setClippingRange ( cam . clipping_range )
233+
234+ genericRenderWindow . value . getRenderWindow ( ) . render ( )
235+
236+ await viewer_call ( {
237+ schema : viewer_schemas . opengeodeweb_viewer . viewer . update_camera ,
238+ params : { camera_options : cam } ,
239+ } )
240+
241+ for ( const key in cam ) {
242+ camera_options [ key ] = cam [ key ]
243+ }
244+ }
210245 }
211246
212247 return {
0 commit comments