Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | Utnapishtim |
I am building a plugin that will let me click and drag in the 2d viewport to place walls. Like the line tool in paint. In order to do this, I need to capture inputs inside the viewport in such a way that I get the world coordinates so that I know where to spawn and how to resize the wall.
But when I try to call forward_canvas_gui_input, nothing happens. What do I need to do to get get Godot to call this function, or failing that, what do I need to do to capture inputs in the editor for this tool?
I followed this tutorial and I’m at the point where I have a dock and I can call functions in _process(), _enter_tree(), and handle signals when ui elements are interacted with. Here is my script.
tool
extends EditorPlugin
var enabled: bool = false
var grid_size: int = 1
var dock
func _enter_tree():
dock = preload("res://addons/wall_draw/WallDraw.tscn").instance()
add_control_to_dock(DOCK_SLOT_RIGHT_UL, dock)
dock.get_node("Enabled").connect("toggled", self, "set_enabled")
dock.get_node("GridSize").connect("item_selected", self, "set_grid_size")
func _exit_tree():
remove_control_from_docks(dock)
dock.free()
func set_enabled(button_pressed):
if walls != null:
enabled = button_pressed
walls.enabled = enabled
func set_grid_size(index):
if walls != null:
grid_size = pow(2, index)
walls.grid_size = grid_size
func handles(object):
print(object)
return false
func forward_canvas_gui_input(event):
print(event)
return true
print(object) in handles works as expected, but print(event) in forward_canvas_gui_input is never called. From what I’ve read in the documentation, the “return true” should be consuming all of my inputs, but everything else works just fine. I’ve tried restarting Godot multiple times and deactivating/reactivating the plugin but it changed nothing.
This is the only plugin/addon I have installed in this project. I am not using anything from the asset store.