Not sure what I'm doing wrong (again =) ), but I can't get the resized window to look exactly like the original window as specified in the proj setts, if I'm just using the anchors etc.
I did get it to work with some code (and vpc stretch set to true) :
## ---
## resize vpc on game win resize
## ! req : vpc.stretch = true (vpc resizes vp)
## ? what to do with real FS (no win bar)
## ---
extends ViewportContainer
var orig_win_size:Vector2 = Vector2.ZERO
var orig_vpc_size:Vector2 = Vector2.ZERO
var orig_vpc_pos:Vector2 = Vector2.ZERO
func _ready():
orig_win_size = get_tree().root.get_viewport().size
orig_vpc_size = rect_size
orig_vpc_pos = rect_position
get_tree().root.connect("size_changed", self, "on_win_size_changed")
func on_win_size_changed():
# ? does this also work for windowed -> fullscreen
print ("win size changed")
# v1
var new_win_size:Vector2 = get_viewport().size
# v2 : same result
# var new_win_size:Vector2 = OS.window_size
# (1024, 600) : small win (proj setts) : ok
# (1536, 801) : ??? largest win should be 1920x1080 (or a little less for top border)
# !!! fullscreen windowed takes into account 125% zoom in display settings of pc
# if zoom = 100% : (1920, 1017) <-> (1024, 600)
# change vpc size
var win_ratio:Vector2 = Vector2(orig_win_size.x/new_win_size.x, orig_win_size.y/new_win_size.y)
# (0.666667, 0.749064) : large win
# (1, 1) : orig small win
var new_vpc_size:Vector2 = Vector2(orig_vpc_size.x/win_ratio.x, orig_vpc_size.y/win_ratio.y)
print(orig_vpc_size, new_vpc_size)
# (400, 300)(600, 400.5) : large win
rect_size = new_vpc_size
# change vpc loc
var orig_top_mid:Vector2 = Vector2(orig_vpc_pos.x+orig_vpc_size.x/2, orig_vpc_pos.y)
var new_top_mid:Vector2 = Vector2(orig_top_mid.x/win_ratio.x, orig_top_mid.y/win_ratio.y)
var new_top_left:Vector2 = Vector2(new_top_mid.x-new_vpc_size.x/2, new_top_mid.y)
rect_position = new_top_left