Merge pull request #4854 from Razzlegames/screenToLocal
Conversion function for screen coords to local Canvas coords
This commit is contained in:
commit
b41be2d1a9
@ -7339,6 +7339,22 @@
|
||||
</description>
|
||||
</method>
|
||||
<method name="update">
|
||||
<method name="make_screen_coord_local" qualifiers="const">
|
||||
<return type="Vector2">
|
||||
</return>
|
||||
<argument index="0" name="screen_point" type="Vector2">
|
||||
</argument>
|
||||
<description>
|
||||
Take a 2d screen point and convert to 2D local coords relative to this Canvas
|
||||
item. If this CanvasItem is the root of a Scene, its essentially the
|
||||
world coords for that scene.
|
||||
</description>
|
||||
</method>
|
||||
<method name="make_input_local" qualifiers="const">
|
||||
<return type="InputEvent">
|
||||
</return>
|
||||
<argument index="0" name="event" type="InputEvent">
|
||||
</argument>
|
||||
<description>
|
||||
Queue the CanvasItem for update. [code]NOTIFICATION_DRAW[/code] will be called on idle time to request redraw.
|
||||
</description>
|
||||
|
@ -948,6 +948,15 @@ Ref<CanvasItemMaterial> CanvasItem::get_material() const{
|
||||
return material;
|
||||
}
|
||||
|
||||
Vector2 CanvasItem::make_canvas_pos_local(const Vector2& screen_point) const {
|
||||
|
||||
ERR_FAIL_COND_V(!is_inside_tree(),screen_point);
|
||||
|
||||
Matrix32 local_matrix = (get_canvas_transform() *
|
||||
get_global_transform()).affine_inverse();
|
||||
|
||||
return local_matrix.xform(screen_point);
|
||||
}
|
||||
|
||||
InputEvent CanvasItem::make_input_local(const InputEvent& p_event) const {
|
||||
|
||||
@ -1052,6 +1061,8 @@ void CanvasItem::_bind_methods() {
|
||||
ObjectTypeDB::bind_method(_MD("set_use_parent_material","enable"),&CanvasItem::set_use_parent_material);
|
||||
ObjectTypeDB::bind_method(_MD("get_use_parent_material"),&CanvasItem::get_use_parent_material);
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("make_canvas_pos_local","screen_point"),
|
||||
&CanvasItem::make_canvas_pos_local);
|
||||
ObjectTypeDB::bind_method(_MD("make_input_local","event"),&CanvasItem::make_input_local);
|
||||
|
||||
BIND_VMETHOD(MethodInfo("_draw"));
|
||||
|
@ -263,6 +263,7 @@ public:
|
||||
bool get_use_parent_material() const;
|
||||
|
||||
InputEvent make_input_local(const InputEvent& pevent) const;
|
||||
Vector2 make_canvas_pos_local(const Vector2& screen_point) const;
|
||||
|
||||
Vector2 get_global_mouse_pos() const;
|
||||
Vector2 get_local_mouse_pos() const;
|
||||
|
Loading…
Reference in New Issue
Block a user