diff --git a/.gitignore b/.gitignore
index 92b1c906..462fe6d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,3 +84,6 @@ compile_commands.json
# ccls
.ccls-cache
+
+# Generated source files
+extension/src/gen/*
diff --git a/SConstruct b/SConstruct
index bcb477a8..80b2b136 100644
--- a/SConstruct
+++ b/SConstruct
@@ -45,6 +45,10 @@ env.Append(CPPPATH=[[env.Dir(p) for p in paths]])
sources = env.GlobRecursive("*.cpp", paths)
env.extension_sources = sources
+if env["target"] in ["editor", "template_debug"]:
+ doc_data = godot_env.GodotCPPDocData("extension/src/gen/doc_data.gen.cpp", source=Glob("extension/doc_classes/*.xml"))
+ sources.append(doc_data)
+
# Remove unassociated intermediate binary files if allowed, usually the result of a renamed or deleted source file
if env["intermediate_delete"]:
from glob import glob
diff --git a/extension/doc_classes/AssetManager.xml b/extension/doc_classes/AssetManager.xml
new file mode 100644
index 00000000..3b7f9838
--- /dev/null
+++ b/extension/doc_classes/AssetManager.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/Checksum.xml b/extension/doc_classes/Checksum.xml
new file mode 100644
index 00000000..733c16ad
--- /dev/null
+++ b/extension/doc_classes/Checksum.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GFXButtonStateHavingTexture.xml b/extension/doc_classes/GFXButtonStateHavingTexture.xml
new file mode 100644
index 00000000..6bda28b8
--- /dev/null
+++ b/extension/doc_classes/GFXButtonStateHavingTexture.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GFXButtonStateTexture.xml b/extension/doc_classes/GFXButtonStateTexture.xml
new file mode 100644
index 00000000..f0af323c
--- /dev/null
+++ b/extension/doc_classes/GFXButtonStateTexture.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GFXCorneredTileSupportingTexture.xml b/extension/doc_classes/GFXCorneredTileSupportingTexture.xml
new file mode 100644
index 00000000..b345501c
--- /dev/null
+++ b/extension/doc_classes/GFXCorneredTileSupportingTexture.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GFXMaskedFlagTexture.xml b/extension/doc_classes/GFXMaskedFlagTexture.xml
new file mode 100644
index 00000000..3e12e920
--- /dev/null
+++ b/extension/doc_classes/GFXMaskedFlagTexture.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GFXPieChartTexture.xml b/extension/doc_classes/GFXPieChartTexture.xml
new file mode 100644
index 00000000..70da8867
--- /dev/null
+++ b/extension/doc_classes/GFXPieChartTexture.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GFXSpriteTexture.xml b/extension/doc_classes/GFXSpriteTexture.xml
new file mode 100644
index 00000000..4c2b8e66
--- /dev/null
+++ b/extension/doc_classes/GFXSpriteTexture.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIButton.xml b/extension/doc_classes/GUIButton.xml
new file mode 100644
index 00000000..eae99b7c
--- /dev/null
+++ b/extension/doc_classes/GUIButton.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIIcon.xml b/extension/doc_classes/GUIIcon.xml
new file mode 100644
index 00000000..2aa352d7
--- /dev/null
+++ b/extension/doc_classes/GUIIcon.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIIconButton.xml b/extension/doc_classes/GUIIconButton.xml
new file mode 100644
index 00000000..53fa2bf5
--- /dev/null
+++ b/extension/doc_classes/GUIIconButton.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUILabel.xml b/extension/doc_classes/GUILabel.xml
new file mode 100644
index 00000000..62386315
--- /dev/null
+++ b/extension/doc_classes/GUILabel.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIListBox.xml b/extension/doc_classes/GUIListBox.xml
new file mode 100644
index 00000000..608eb3f5
--- /dev/null
+++ b/extension/doc_classes/GUIListBox.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIMaskedFlag.xml b/extension/doc_classes/GUIMaskedFlag.xml
new file mode 100644
index 00000000..a2e5fa80
--- /dev/null
+++ b/extension/doc_classes/GUIMaskedFlag.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIMaskedFlagButton.xml b/extension/doc_classes/GUIMaskedFlagButton.xml
new file mode 100644
index 00000000..7d92742d
--- /dev/null
+++ b/extension/doc_classes/GUIMaskedFlagButton.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUINode.xml b/extension/doc_classes/GUINode.xml
new file mode 100644
index 00000000..5d3e0ea3
--- /dev/null
+++ b/extension/doc_classes/GUINode.xml
@@ -0,0 +1,264 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIOverlappingElementsBox.xml b/extension/doc_classes/GUIOverlappingElementsBox.xml
new file mode 100644
index 00000000..c8e05398
--- /dev/null
+++ b/extension/doc_classes/GUIOverlappingElementsBox.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIPieChart.xml b/extension/doc_classes/GUIPieChart.xml
new file mode 100644
index 00000000..74a62e4a
--- /dev/null
+++ b/extension/doc_classes/GUIPieChart.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIProgressBar.xml b/extension/doc_classes/GUIProgressBar.xml
new file mode 100644
index 00000000..2ba95e23
--- /dev/null
+++ b/extension/doc_classes/GUIProgressBar.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUIScrollbar.xml b/extension/doc_classes/GUIScrollbar.xml
new file mode 100644
index 00000000..83fdf1d4
--- /dev/null
+++ b/extension/doc_classes/GUIScrollbar.xml
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GUITextureRect.xml b/extension/doc_classes/GUITextureRect.xml
new file mode 100644
index 00000000..19db1c94
--- /dev/null
+++ b/extension/doc_classes/GUITextureRect.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/GameSingleton.xml b/extension/doc_classes/GameSingleton.xml
new file mode 100644
index 00000000..90c4cdab
--- /dev/null
+++ b/extension/doc_classes/GameSingleton.xml
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/LoadLocalisation.xml b/extension/doc_classes/LoadLocalisation.xml
new file mode 100644
index 00000000..78641181
--- /dev/null
+++ b/extension/doc_classes/LoadLocalisation.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/MapMesh.xml b/extension/doc_classes/MapMesh.xml
new file mode 100644
index 00000000..df820bb1
--- /dev/null
+++ b/extension/doc_classes/MapMesh.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/MenuSingleton.xml b/extension/doc_classes/MenuSingleton.xml
new file mode 100644
index 00000000..e5d8724f
--- /dev/null
+++ b/extension/doc_classes/MenuSingleton.xml
@@ -0,0 +1,330 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/ModelSingleton.xml b/extension/doc_classes/ModelSingleton.xml
new file mode 100644
index 00000000..74c669af
--- /dev/null
+++ b/extension/doc_classes/ModelSingleton.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extension/doc_classes/SoundSingleton.xml b/extension/doc_classes/SoundSingleton.xml
new file mode 100644
index 00000000..94d0109e
--- /dev/null
+++ b/extension/doc_classes/SoundSingleton.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+