2626}
2727
2828
29+ # Subset of tlasses to use when generating the project for test&debug purpose,
30+ # this makes compilation much faster !
31+ GODOT_CLASSES_SAMPLE = {
32+ "ArrayMesh" ,
33+ "CallbackTweener" ,
34+ "Camera2D" ,
35+ "Camera3D" ,
36+ "CameraAttributes" ,
37+ "CanvasItem" ,
38+ "ClassDB" ,
39+ "ConcavePolygonShape3D" ,
40+ "Control" ,
41+ "ConvexPolygonShape3D" ,
42+ "Engine" ,
43+ "Environment" ,
44+ "Font" ,
45+ "Image" ,
46+ "InputEvent" ,
47+ "IntervalTweener" ,
48+ "MainLoop" ,
49+ "Material" ,
50+ "Mesh" ,
51+ "MethodTweener" ,
52+ "MultiMesh" ,
53+ "MultiplayerAPI" ,
54+ "MultiplayerPeer" ,
55+ "Node" ,
56+ "Node2D" ,
57+ "Node3D" ,
58+ "Node3DGizmo" ,
59+ "OS" ,
60+ "Object" ,
61+ "PackedScene" ,
62+ "PacketPeer" ,
63+ "PhysicsDirectSpaceState2D" ,
64+ "PhysicsDirectSpaceState3D" ,
65+ "PhysicsPointQueryParameters2D" ,
66+ "PhysicsPointQueryParameters3D" ,
67+ "PhysicsRayQueryParameters2D" ,
68+ "PhysicsRayQueryParameters3D" ,
69+ "PhysicsShapeQueryParameters2D" ,
70+ "PhysicsShapeQueryParameters3D" ,
71+ "ProjectSettings" ,
72+ "PropertyTweener" ,
73+ "RefCounted" ,
74+ "Resource" ,
75+ "ResourceFormatLoader" ,
76+ "ResourceFormatSaver" ,
77+ "ResourceImporter" ,
78+ "SceneState" ,
79+ "SceneTree" ,
80+ "SceneTreeTimer" ,
81+ "Script" ,
82+ "ScriptExtension" ,
83+ "ScriptLanguage" ,
84+ "Shape2D" ,
85+ "Shape3D" ,
86+ "Sky" ,
87+ "StyleBox" ,
88+ "TextServer" ,
89+ "Texture" ,
90+ "Texture2D" ,
91+ "Theme" ,
92+ "TriangleMesh" ,
93+ "Tween" ,
94+ "Tweener" ,
95+ "Viewport" ,
96+ "ViewportTexture" ,
97+ "Window" ,
98+ "World2D" ,
99+ "World3D" ,
100+ }
101+
102+
29103def make_jinja_env (import_dir : Path ) -> Environment :
30104 env = Environment (
31105 loader = FileSystemLoader (import_dir ),
@@ -48,6 +122,10 @@ def make_jinja_env(import_dir: Path) -> Environment:
48122 type = Path ,
49123 help = "Path to Godot extension_api.json file" ,
50124 )
125+ parser .add_argument (
126+ "--classes-sample" ,
127+ action = "store_true" ,
128+ )
51129 parser .add_argument (
52130 "--build-config" ,
53131 required = True ,
@@ -78,8 +156,16 @@ def make_jinja_env(import_dir: Path) -> Environment:
78156 template_name = f"{ name } .j2"
79157 todo .append ((output , template_name , template_home ))
80158
159+ if need_classes :
160+ if args .classes_sample :
161+ filter_classes = GODOT_CLASSES_SAMPLE
162+ else :
163+ filter_classes = False # keep all classes
164+ else :
165+ filter_classes = True
166+
81167 api = parse_extension_api_json (
82- path = args .input , build_config = BuildConfig (args .build_config ), skip_classes = not need_classes
168+ path = args .input , build_config = BuildConfig (args .build_config ), filter_classes = filter_classes
83169 )
84170
85171 for todo_output , todo_template_name , todo_template_home in todo :
0 commit comments