Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions scripts/ui/remap_panel.gd
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,19 @@ const REMAP_SAVE_PATH: String = "user://remap.save"

var remapping_action: String = ""
var remapping_button: Button = null
var _cached_router: Node = null


func _get_router() -> Node:
if not is_instance_valid(_cached_router):
_cached_router = get_node_or_null("/root/InputRouter")
return _cached_router
Comment thread
niyazmft marked this conversation as resolved.


func _ready() -> void:
load_bindings()
create_action_list()
var router: Node = get_node_or_null("/root/InputRouter")
var router: Node = _get_router()
Comment thread
niyazmft marked this conversation as resolved.
if router and router.has_signal("device_changed"):
router.connect("device_changed", _on_device_changed)

Expand Down Expand Up @@ -67,7 +74,7 @@ func get_action_text(action: StringName) -> String:
return "None"

var current_device: int = 0
var router: Node = get_node_or_null("/root/InputRouter")
var router: Node = _get_router()
Comment thread
niyazmft marked this conversation as resolved.
if router:
current_device = int(router.get("current_device"))

Expand All @@ -88,7 +95,7 @@ func get_action_icon(action: StringName) -> Texture2D:
return null

var current_device: int = 0
var router: Node = get_node_or_null("/root/InputRouter")
var router: Node = _get_router()
Comment thread
niyazmft marked this conversation as resolved.
if router:
current_device = int(router.get("current_device"))

Expand Down
42 changes: 42 additions & 0 deletions tests/benchmark_remap.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
extends SceneTree


func _initialize() -> void:
var script: GDScript = load("res://scripts/ui/remap_panel.gd") as GDScript
var panel: Node = script.new()

root.add_child(panel)

var panel_vbox: VBoxContainer = VBoxContainer.new()
panel_vbox.name = "VBoxContainer"
var panel_scroll: ScrollContainer = ScrollContainer.new()
panel_scroll.name = "ScrollContainer"
var action_list: VBoxContainer = VBoxContainer.new()
action_list.name = "ActionList"
panel_scroll.add_child(action_list)
panel_vbox.add_child(panel_scroll)
panel.add_child(panel_vbox)

var toast: Label = Label.new()
toast.name = "ConflictToast"
panel.add_child(toast)

# add fake actions
for i: int in range(100):
var action_name: StringName = "bench_action_" + str(i)
if not InputMap.has_action(action_name):
InputMap.add_action(action_name)
var ev: InputEventKey = InputEventKey.new()
ev.keycode = KEY_SPACE
InputMap.action_add_event(action_name, ev)

var start: int = Time.get_ticks_usec()
for i: int in range(1000):
for a: StringName in InputMap.get_actions():
panel.call("get_action_text", a)
panel.call("get_action_icon", a)

var end: int = Time.get_ticks_usec()
print("Benchmark execution time: ", end - start, " us")

quit()
21 changes: 21 additions & 0 deletions tests/test_remap_ui.gd
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,27 @@ func test_remap_logic() -> void:
key.keycode = KEY_F
InputMap.action_add_event("test_action", key)

var router: Node = Node.new()
router.name = "InputRouter"
router.set("current_device", 0)
root.add_child(router)

var panel_vbox: VBoxContainer = VBoxContainer.new()
panel_vbox.name = "VBoxContainer"
var panel_scroll: ScrollContainer = ScrollContainer.new()
panel_scroll.name = "ScrollContainer"
var action_list: VBoxContainer = VBoxContainer.new()
action_list.name = "ActionList"
panel_scroll.add_child(action_list)
panel_vbox.add_child(panel_scroll)
remap_panel.add_child(panel_vbox)

var toast: Label = Label.new()
toast.name = "ConflictToast"
remap_panel.add_child(toast)

root.add_child(remap_panel)

remap_panel.call("_ready")
print("Action list created")

Expand Down