So literally right after posting this a finally found something that helped me figure something out. Ended up using some code to manually adjust the viewport on startup. Since I know the width is the dimension that is what i want to change what I did was get the screens aspect ratio and resolution and apply some adjustments to it, to scale it to the right resolution and then expand/shrink the width to fit. Heres the code:
onready var viewport = get_viewport()
var minimum_size = Vector2(1920, 1080)
func _ready():
viewport.connect("size_changed", self, "window_resize")
window_resize()
func window_resize():
print("Size Changed")
var current_size = OS.get_window_size()
var scale = 1080/current_size.y
var new_size = current_size*scale
var current_ar = current_size.x/current_size.y
var default_ar = 16.0/9.0
if current_ar > default_ar:
new_size = Vector2(current_size.y*current_ar*scale, current_size.y*scale)
viewport.set_size_override(true, new_size)
There might be a better way, but this gets the effect I want. As far as my scenes go i had to put the nodes under a control node that is sized 0,0 and anchored to the center, so everything stays put in the center of the screen.