|
@@ -83,6 +83,18 @@ Transform2D CanvasLayer::get_transform() const {
|
|
|
return transform;
|
|
|
}
|
|
|
|
|
|
+Transform2D CanvasLayer::get_final_transform() const {
|
|
|
+ if (is_following_viewport()) {
|
|
|
+ Transform2D follow;
|
|
|
+ follow.scale(Vector2(get_follow_viewport_scale(), get_follow_viewport_scale()));
|
|
|
+ if (vp) {
|
|
|
+ follow = vp->get_canvas_transform() * follow;
|
|
|
+ }
|
|
|
+ return follow * transform;
|
|
|
+ }
|
|
|
+ return transform;
|
|
|
+}
|
|
|
+
|
|
|
void CanvasLayer::_update_xform() {
|
|
|
transform.set_rotation_and_scale(rot, scale);
|
|
|
transform.set_origin(ofs);
|
|
@@ -301,6 +313,7 @@ void CanvasLayer::_bind_methods() {
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("set_transform", "transform"), &CanvasLayer::set_transform);
|
|
|
ClassDB::bind_method(D_METHOD("get_transform"), &CanvasLayer::get_transform);
|
|
|
+ ClassDB::bind_method(D_METHOD("get_final_transform"), &CanvasLayer::get_final_transform);
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("set_offset", "offset"), &CanvasLayer::set_offset);
|
|
|
ClassDB::bind_method(D_METHOD("get_offset"), &CanvasLayer::get_offset);
|