@@ -44,10 +44,6 @@ func _adjust_ui() -> void:
4444 rotation_container .pivot_offset = rotation_container .size / 2
4545 rotation_container .rotation = saved_rotation
4646
47- if camera_display .resized .is_connected (_adjust_ui ):
48- camera_display .resized .disconnect (_adjust_ui )
49- camera_display .resized .connect (_adjust_ui , ConnectFlags .CONNECT_ONE_SHOT )
50-
5147
5248func _reload_camera_list () -> void :
5349 camera_list .clear ()
@@ -180,6 +176,10 @@ func _start_camera_feed() -> void:
180176 camera_feed .feed_is_active = true
181177
182178
179+ func _is_mobile_web () -> bool :
180+ return OS .get_name () == "Web" and DisplayServer .is_touchscreen_available ()
181+
182+
183183func _update_scene_transform () -> void :
184184 if not camera_feed or not camera_feed .feed_is_active :
185185 return
@@ -197,13 +197,21 @@ func _update_scene_transform() -> void:
197197 var is_front_camera := camera_feed .get_position () == CameraFeed .FeedPosition .FEED_FRONT
198198 mirror_container .scale = Vector2 (- 1.0 if is_front_camera else 1.0 , 1.0 )
199199
200- rotation_container .rotation = camera_feed .feed_transform .get_rotation ()
201-
202- var display_size := DisplayServer .window_get_size ()
203- if display_size .x > display_size .y :
204- aspect_container .ratio = preview_size .x / preview_size .y
200+ if OS .get_name () == "Web" :
201+ rotation_container .rotation = 0
202+ if _is_mobile_web ():
203+ var display_size := DisplayServer .window_get_size ()
204+ var device_is_portrait := display_size .x < display_size .y
205+ var preview_is_portrait := preview_size .x < preview_size .y
206+ if device_is_portrait == preview_is_portrait :
207+ aspect_container .ratio = preview_size .x / preview_size .y
208+ else :
209+ aspect_container .ratio = preview_size .y / preview_size .x
210+ else :
211+ aspect_container .ratio = preview_size .x / preview_size .y
205212 else :
206- aspect_container .ratio = preview_size .y / preview_size .x
213+ rotation_container .rotation = camera_feed .feed_transform .get_rotation ()
214+ aspect_container .ratio = preview_size .x / preview_size .y
207215
208216
209217func _get_preview_size (mat : ShaderMaterial ) -> Vector2 :
@@ -313,6 +321,7 @@ func _notification(what: int) -> void:
313321 match what :
314322 NOTIFICATION_RESIZED , NOTIFICATION_WM_SIZE_CHANGED :
315323 _adjust_ui ()
324+ _update_scene_transform ()
316325
317326
318327func _exit_tree () -> void :
0 commit comments