Add transactional RV decor synchronization
This commit is contained in:
parent
ee992d9f0c
commit
6578d3e870
7 changed files with 663 additions and 48 deletions
31
main/main.gd
31
main/main.gd
|
|
@ -1731,12 +1731,14 @@ func _process(delta: float) -> void:
|
|||
func _apply_runtime_settings(settings: PlayerSettingsType) -> void:
|
||||
if settings == null:
|
||||
return
|
||||
var requested_window_mode: DisplayServer.WindowMode = (
|
||||
DisplayServer.WINDOW_MODE_FULLSCREEN
|
||||
if settings.fullscreen_enabled
|
||||
else DisplayServer.WINDOW_MODE_WINDOWED
|
||||
var current_window_mode: DisplayServer.WindowMode = (
|
||||
DisplayServer.window_get_mode()
|
||||
)
|
||||
if DisplayServer.window_get_mode() != requested_window_mode:
|
||||
var requested_window_mode: DisplayServer.WindowMode = resolve_window_mode(
|
||||
settings.fullscreen_enabled,
|
||||
current_window_mode,
|
||||
)
|
||||
if current_window_mode != requested_window_mode:
|
||||
DisplayServer.window_set_mode(requested_window_mode)
|
||||
_apply_world_pixelation(settings.world_pixel_size)
|
||||
_ui_pixelation.set_pixel_size(settings.ui_pixel_size)
|
||||
|
|
@ -1763,6 +1765,25 @@ func _apply_runtime_settings(settings: PlayerSettingsType) -> void:
|
|||
)
|
||||
|
||||
|
||||
static func resolve_window_mode(
|
||||
fullscreen_enabled: bool,
|
||||
current_mode: DisplayServer.WindowMode,
|
||||
) -> DisplayServer.WindowMode:
|
||||
var is_fullscreen: bool = current_mode in [
|
||||
DisplayServer.WINDOW_MODE_FULLSCREEN,
|
||||
DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN,
|
||||
]
|
||||
if fullscreen_enabled:
|
||||
return (
|
||||
current_mode
|
||||
if is_fullscreen
|
||||
else DisplayServer.WINDOW_MODE_FULLSCREEN
|
||||
)
|
||||
if is_fullscreen:
|
||||
return DisplayServer.WINDOW_MODE_WINDOWED
|
||||
return current_mode
|
||||
|
||||
|
||||
func _apply_world_pixelation(pixel_size: int) -> void:
|
||||
var root_viewport: Viewport = get_viewport()
|
||||
root_viewport.scaling_3d_mode = Viewport.SCALING_3D_MODE_NEAREST
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue