diff --git a/addons/panku_console/modules/engine_tools/env.gd b/addons/panku_console/modules/engine_tools/env.gd index 35b12a0..33bfdd8 100644 --- a/addons/panku_console/modules/engine_tools/env.gd +++ b/addons/panku_console/modules/engine_tools/env.gd @@ -9,8 +9,8 @@ func set_time_scale(val:float) -> void: _module.set_time_scale(val) const _HELP_get_performance_info = "Show performance info" -func get_performance_info() -> String: - return _module.get_performance_info() +func get_performance_info(count_nodes := false) -> String: + return _module.get_performance_info(count_nodes) const _HELP_take_screenshot = "Take a screenshot of current window" func take_screenshot() -> void: diff --git a/addons/panku_console/modules/engine_tools/module.gd b/addons/panku_console/modules/engine_tools/module.gd index 5897bd7..a7b196e 100644 --- a/addons/panku_console/modules/engine_tools/module.gd +++ b/addons/panku_console/modules/engine_tools/module.gd @@ -10,8 +10,28 @@ func toggle_fullscreen() -> void: func set_time_scale(val:float) -> void: Engine.time_scale = val -func get_performance_info() -> String: - return "FPS: %d | Mem: %.2fMB | Objs: %d" % [Engine.get_frames_per_second(), OS.get_static_memory_usage()/1048576.0, Performance.get_monitor(Performance.OBJECT_COUNT)] +class ClsCountNodesInTree: + func calc_children_count(core: PankuConsole, node_path: String) -> int: + var nd: Node = core.get_tree().current_scene.get_node(node_path) + return count_all_children(nd) + func count_all_children(nd: Node) -> int: + var count: int = nd.get_children().size() + for child: Node in nd.get_children(): + count += count_all_children(child) + return count + +func get_performance_info(count_nodes:bool) -> String: + var result = "FPS: %d | Mem: %.2fMB | Objs: %d" % [ + Engine.get_frames_per_second(), + OS.get_static_memory_usage()/1048576.0, + Performance.get_monitor(Performance.OBJECT_COUNT) + ] + if count_nodes: + var cls_count: ClsCountNodesInTree = ClsCountNodesInTree.new() + var root_count: int = cls_count.calc_children_count(core, "/root") + var panku_count: int = cls_count.calc_children_count(core, "/root/Panku") + result += " | Nodes: %d" % [root_count - panku_count] + return result func take_screenshot() -> void: var image = core.get_viewport().get_texture().get_image()