gd: added input addon
This commit is contained in:
35
addons/guide/modifiers/guide_modifier_canvas_coordinates.gd
Normal file
35
addons/guide/modifiers/guide_modifier_canvas_coordinates.gd
Normal file
@ -0,0 +1,35 @@
|
||||
## Converts a position input in viewport coordinates (e.g. from the mouse position input)
|
||||
## into canvas coordinates (e.g. 2D world coordinates). Useful to get a 2D 'world' position.
|
||||
@tool
|
||||
class_name GUIDEModifierCanvasCoordinates
|
||||
extends GUIDEModifier
|
||||
|
||||
## If checked, the input will be treated as relative input (position change)
|
||||
## rather than absolute input (position).
|
||||
@export var relative_input:bool:
|
||||
set(value):
|
||||
relative_input = value
|
||||
emit_changed()
|
||||
|
||||
func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3:
|
||||
if not input.is_finite():
|
||||
return Vector3.INF
|
||||
|
||||
var viewport = Engine.get_main_loop().root
|
||||
var transform = viewport.canvas_transform.affine_inverse()
|
||||
var coordinates = transform * Vector2(input.x, input.y)
|
||||
|
||||
if relative_input:
|
||||
var origin = transform * Vector2.ZERO
|
||||
coordinates -= origin
|
||||
|
||||
return Vector3(coordinates.x, coordinates.y, input.z)
|
||||
|
||||
|
||||
func _editor_name() -> String:
|
||||
return "Canvas coordinates"
|
||||
|
||||
|
||||
func _editor_description() -> String:
|
||||
return "Converts a position input in viewport coordinates (e.g. from the mouse position input)\n" + \
|
||||
"into canvas coordinates (e.g. 2D world coordinates). Useful to get a 2D 'world' position."
|
Reference in New Issue
Block a user