mirror of
https://github.com/godotengine/godot.git
synced 2026-01-06 10:11:57 +03:00
Improve 2d snapping
Partially revert change allowing sprite get_rect snapping to be controlled by `pixel_snap` again rather than `transform_snap` (to prevent breaking compatibility). Adds a final `use_camera_snap` project setting to allow snapping viewports as in reduz original PR.
This commit is contained in:
@@ -40,12 +40,24 @@ static Transform2D _canvas_get_transform(VisualServerViewport::Viewport *p_viewp
|
||||
Transform2D xf = p_viewport->global_transform;
|
||||
|
||||
float scale = 1.0;
|
||||
|
||||
bool snap = Engine::get_singleton()->get_snap_2d_viewports();
|
||||
|
||||
if (p_viewport->canvas_map.has(p_canvas->parent)) {
|
||||
xf = xf * p_viewport->canvas_map[p_canvas->parent].transform;
|
||||
|
||||
Transform2D c_xform = p_viewport->canvas_map[p_canvas->parent].transform;
|
||||
if (snap) {
|
||||
c_xform.elements[2] = c_xform.elements[2].floor();
|
||||
}
|
||||
xf = xf * c_xform;
|
||||
scale = p_canvas->parent_scale;
|
||||
}
|
||||
|
||||
xf = xf * p_canvas_data->transform;
|
||||
Transform2D c_xform = p_canvas_data->transform;
|
||||
if (snap) {
|
||||
c_xform.elements[2] = c_xform.elements[2].floor();
|
||||
}
|
||||
xf = xf * c_xform;
|
||||
|
||||
if (scale != 1.0 && !VSG::canvas->disable_scale) {
|
||||
Vector2 pivot = p_vp_size * 0.5;
|
||||
|
||||
Reference in New Issue
Block a user