|
@@ -1106,11 +1106,11 @@ int SceneTree::get_node_count() const {
|
|
|
|
|
|
void SceneTree::_update_root_rect() {
|
|
void SceneTree::_update_root_rect() {
|
|
if (stretch_mode == STRETCH_MODE_DISABLED) {
|
|
if (stretch_mode == STRETCH_MODE_DISABLED) {
|
|
- _update_font_oversampling(1.0);
|
|
|
|
- root->set_size((last_screen_size / stretch_shrink).floor());
|
|
|
|
|
|
+ _update_font_oversampling(stretch_scale);
|
|
|
|
+ root->set_size(last_screen_size.floor());
|
|
root->set_attach_to_screen_rect(Rect2(Point2(), last_screen_size));
|
|
root->set_attach_to_screen_rect(Rect2(Point2(), last_screen_size));
|
|
- root->set_size_override_stretch(false);
|
|
|
|
- root->set_size_override(false, Size2());
|
|
|
|
|
|
+ root->set_size_override_stretch(true);
|
|
|
|
+ root->set_size_override(true, (last_screen_size / stretch_scale).floor());
|
|
root->update_canvas_items();
|
|
root->update_canvas_items();
|
|
return; //user will take care
|
|
return; //user will take care
|
|
}
|
|
}
|
|
@@ -1185,20 +1185,19 @@ void SceneTree::_update_root_rect() {
|
|
switch (stretch_mode) {
|
|
switch (stretch_mode) {
|
|
case STRETCH_MODE_DISABLED: {
|
|
case STRETCH_MODE_DISABLED: {
|
|
// Already handled above
|
|
// Already handled above
|
|
- _update_font_oversampling(1.0);
|
|
|
|
} break;
|
|
} break;
|
|
case STRETCH_MODE_2D: {
|
|
case STRETCH_MODE_2D: {
|
|
- _update_font_oversampling(screen_size.x / viewport_size.x); //screen / viewport radio drives oversampling
|
|
|
|
- root->set_size((screen_size / stretch_shrink).floor());
|
|
|
|
|
|
+ _update_font_oversampling((screen_size.x / viewport_size.x) * stretch_scale); //screen / viewport ratio drives oversampling
|
|
|
|
+ root->set_size(screen_size.floor());
|
|
root->set_attach_to_screen_rect(Rect2(margin, screen_size));
|
|
root->set_attach_to_screen_rect(Rect2(margin, screen_size));
|
|
root->set_size_override_stretch(true);
|
|
root->set_size_override_stretch(true);
|
|
- root->set_size_override(true, (viewport_size / stretch_shrink).floor());
|
|
|
|
|
|
+ root->set_size_override(true, (viewport_size / stretch_scale).floor());
|
|
root->update_canvas_items(); //force them to update just in case
|
|
root->update_canvas_items(); //force them to update just in case
|
|
|
|
|
|
} break;
|
|
} break;
|
|
case STRETCH_MODE_VIEWPORT: {
|
|
case STRETCH_MODE_VIEWPORT: {
|
|
_update_font_oversampling(1.0);
|
|
_update_font_oversampling(1.0);
|
|
- root->set_size((viewport_size / stretch_shrink).floor());
|
|
|
|
|
|
+ root->set_size((viewport_size / stretch_scale).floor());
|
|
root->set_attach_to_screen_rect(Rect2(margin, screen_size));
|
|
root->set_attach_to_screen_rect(Rect2(margin, screen_size));
|
|
root->set_size_override_stretch(false);
|
|
root->set_size_override_stretch(false);
|
|
root->set_size_override(false, Size2());
|
|
root->set_size_override(false, Size2());
|
|
@@ -1212,11 +1211,11 @@ void SceneTree::_update_root_rect() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-void SceneTree::set_screen_stretch(StretchMode p_mode, StretchAspect p_aspect, const Size2 &p_minsize, real_t p_shrink) {
|
|
|
|
|
|
+void SceneTree::set_screen_stretch(StretchMode p_mode, StretchAspect p_aspect, const Size2 &p_minsize, real_t p_scale) {
|
|
stretch_mode = p_mode;
|
|
stretch_mode = p_mode;
|
|
stretch_aspect = p_aspect;
|
|
stretch_aspect = p_aspect;
|
|
stretch_min = p_minsize;
|
|
stretch_min = p_minsize;
|
|
- stretch_shrink = p_shrink;
|
|
|
|
|
|
+ stretch_scale = p_scale;
|
|
_update_root_rect();
|
|
_update_root_rect();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1826,7 +1825,7 @@ void SceneTree::_bind_methods() {
|
|
ClassDB::bind_method(D_METHOD("get_frame"), &SceneTree::get_frame);
|
|
ClassDB::bind_method(D_METHOD("get_frame"), &SceneTree::get_frame);
|
|
ClassDB::bind_method(D_METHOD("quit", "exit_code"), &SceneTree::quit, DEFVAL(-1));
|
|
ClassDB::bind_method(D_METHOD("quit", "exit_code"), &SceneTree::quit, DEFVAL(-1));
|
|
|
|
|
|
- ClassDB::bind_method(D_METHOD("set_screen_stretch", "mode", "aspect", "minsize", "shrink"), &SceneTree::set_screen_stretch, DEFVAL(1));
|
|
|
|
|
|
+ ClassDB::bind_method(D_METHOD("set_screen_stretch", "mode", "aspect", "minsize", "scale"), &SceneTree::set_screen_stretch, DEFVAL(1));
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("queue_delete", "obj"), &SceneTree::queue_delete);
|
|
ClassDB::bind_method(D_METHOD("queue_delete", "obj"), &SceneTree::queue_delete);
|
|
|
|
|
|
@@ -2111,7 +2110,7 @@ SceneTree::SceneTree() {
|
|
|
|
|
|
stretch_mode = STRETCH_MODE_DISABLED;
|
|
stretch_mode = STRETCH_MODE_DISABLED;
|
|
stretch_aspect = STRETCH_ASPECT_IGNORE;
|
|
stretch_aspect = STRETCH_ASPECT_IGNORE;
|
|
- stretch_shrink = 1;
|
|
|
|
|
|
+ stretch_scale = 1.0;
|
|
|
|
|
|
last_screen_size = Size2(OS::get_singleton()->get_window_size().width, OS::get_singleton()->get_window_size().height);
|
|
last_screen_size = Size2(OS::get_singleton()->get_window_size().width, OS::get_singleton()->get_window_size().height);
|
|
_update_root_rect();
|
|
_update_root_rect();
|