`SceneTree::get_singleton()` is not available
Godot version
Godot 4.3-stable
godot-cpp version
master b93d6e887e98d5f55e77883950032da9675c405d
System information
macOS 14.6.1 arm64
Issue description
SceneTree *scene_tree = SceneTree::get_singleton();
This code snippet compiles in engine code, but does not compile in godot-cpp:
error: no member named 'get_singleton' in 'godot::SceneTree'
91 | SceneTree *scene_tree = SceneTree::get_singleton();
| ~~~~~~~~~~~^
1 error generated.
My use case is that I'm trying to connect to signals on SceneTree such as physics_frame.
It seems that most other singletons have this method in godot-cpp, it's just SceneTree where it's missing:
Steps to reproduce
Add SceneTree *scene_tree = SceneTree::get_singleton(); to a GDExtension godot-cpp project and try to compile it.
Minimal reproduction project
I'm not gonna bother including a minimal reproduction project since it's one line of code.
It isn't registered as a singleton, and isn't available in scripting as such, see scene/register_scene_types.cpp
SceneTree is accessed in GDScript via Engine.get_main_loop().
Yeah, it's a workaround, but you can get the scene tree like this:
SceneTree *scene_tree = Object::cast_to<SceneTree>(Engine::get_singleton()->get_main_loop());
We should probably generate a SceneTree::get_singleton() function that does this in godot-cpp, to make code compatible with modules.