Browse Source

Various QoL Improvements (#529)

* Updated Godot icons (and removed old ones)
* Improve "Debug Pinned Scene" command by making the pinned scene persist between VSCode sessions
* Fix scene file highlighting not working 
* Fix ScenePreview not working in Godot 3
* Add buttons for relevant actions to ScenePreview items
* Add internal document links for SubResource() and ExtResource() statements in scene files
* Add hover for SubResource() and ExtResource() statements in scene files
* Improve ability to right click -> open docs for methods of builtin types (doesn't always work)
* Add a file decorator to show the pinned debug file in the filesystem view/editor tabs
* Add item decorators to the Scene Preview to show Node attributes more clearly
* Updated readme
* Overhauled documentation viewer
* Added GDScript formatter
* Add (disabled) experimental providers for custom completions, semantic tokens, and tasks
* Lots of internal refactoring
Daelon Suzuka 1 year ago
parent
commit
e7e2d0439d
100 changed files with 1748 additions and 651 deletions
  1. 0 5
      .gitignore
  2. 9 0
      .vscode-test.js
  3. 3 2
      .vscode/launch.json
  4. 3 2
      .vscodeignore
  5. 39 0
      CONTRIBUTING.md
  6. 103 64
      README.md
  7. 0 24
      configurations/gdresource-configuration.json
  8. 24 0
      configurations/gdresource.language-configuration.json
  9. 0 82
      configurations/gdscript-configuration.json
  10. 40 0
      configurations/gdscript.language-configuration.json
  11. 0 25
      configurations/gdshader-configuration.json
  12. 25 0
      configurations/gdshader.language-configuration.json
  13. BIN
      img/hover-extresource.png
  14. BIN
      img/hover-subresource.png
  15. BIN
      img/scene-preview.png
  16. 24 0
      media/docs.css
  17. 349 0
      media/pagemap.js
  18. 128 0
      media/prism.css
  19. 835 77
      package-lock.json
  20. 166 74
      package.json
  21. 0 3
      resources/dark/icon_GUI_visibility_visible.svg
  22. 0 3
      resources/dark/icon_a_r_v_r_anchor.svg
  23. 0 3
      resources/dark/icon_a_r_v_r_camera.svg
  24. 0 3
      resources/dark/icon_a_r_v_r_controller.svg
  25. 0 3
      resources/dark/icon_a_r_v_r_origin.svg
  26. 0 3
      resources/dark/icon_accept_dialog.svg
  27. 0 7
      resources/dark/icon_animated_sprite.svg
  28. 0 7
      resources/dark/icon_animated_sprite_3d.svg
  29. 0 3
      resources/dark/icon_animation_player.svg
  30. 0 3
      resources/dark/icon_animation_tree.svg
  31. 0 3
      resources/dark/icon_animation_tree_player.svg
  32. 0 3
      resources/dark/icon_area.svg
  33. 0 3
      resources/dark/icon_area_2d.svg
  34. 0 11
      resources/dark/icon_audio_stream_player.svg
  35. 0 11
      resources/dark/icon_audio_stream_player_2_d.svg
  36. 0 11
      resources/dark/icon_audio_stream_player_3_d.svg
  37. 0 3
      resources/dark/icon_back_buffer_copy.svg
  38. 0 3
      resources/dark/icon_baked_lightmap.svg
  39. 0 3
      resources/dark/icon_bone_2_d.svg
  40. 0 3
      resources/dark/icon_bone_attachment.svg
  41. 0 3
      resources/dark/icon_button.svg
  42. 0 1
      resources/dark/icon_c_p_u_particles.svg
  43. 0 1
      resources/dark/icon_c_p_u_particles_2_d.svg
  44. 0 3
      resources/dark/icon_camera.svg
  45. 0 3
      resources/dark/icon_camera_2d.svg
  46. 0 3
      resources/dark/icon_canvas_layer.svg
  47. 0 10
      resources/dark/icon_canvas_modulate.svg
  48. 0 3
      resources/dark/icon_center_container.svg
  49. 0 3
      resources/dark/icon_check_box.svg
  50. 0 3
      resources/dark/icon_check_button.svg
  51. 0 3
      resources/dark/icon_clipped_camera.svg
  52. 0 3
      resources/dark/icon_collision_polygon.svg
  53. 0 3
      resources/dark/icon_collision_polygon_2d.svg
  54. 0 3
      resources/dark/icon_collision_shape.svg
  55. 0 3
      resources/dark/icon_collision_shape_2d.svg
  56. 0 3
      resources/dark/icon_color_picker.svg
  57. 0 3
      resources/dark/icon_color_picker_button.svg
  58. 0 10
      resources/dark/icon_color_rect.svg
  59. 0 1
      resources/dark/icon_cone_twist_joint.svg
  60. 0 3
      resources/dark/icon_confirmation_dialog.svg
  61. 0 3
      resources/dark/icon_container.svg
  62. 0 3
      resources/dark/icon_control.svg
  63. 0 6
      resources/dark/icon_damped_spring_joint_2d.svg
  64. 0 3
      resources/dark/icon_directional_light.svg
  65. 0 3
      resources/dark/icon_file_dialog.svg
  66. 0 3
      resources/dark/icon_g_i_probe.svg
  67. 0 3
      resources/dark/icon_generic_6_d_o_f_joint.svg
  68. 0 6
      resources/dark/icon_graph_edit.svg
  69. 0 6
      resources/dark/icon_graph_node.svg
  70. 0 3
      resources/dark/icon_grid_container.svg
  71. 0 3
      resources/dark/icon_groove_joint_2d.svg
  72. 0 3
      resources/dark/icon_h_box_container.svg
  73. 0 3
      resources/dark/icon_h_scroll_bar.svg
  74. 0 3
      resources/dark/icon_h_separator.svg
  75. 0 3
      resources/dark/icon_h_slider.svg
  76. 0 3
      resources/dark/icon_h_split_container.svg
  77. 0 3
      resources/dark/icon_h_t_t_p_request.svg
  78. 0 3
      resources/dark/icon_hinge_joint.svg
  79. 0 3
      resources/dark/icon_immediate_geometry.svg
  80. 0 3
      resources/dark/icon_interpolated_camera.svg
  81. 0 3
      resources/dark/icon_item_list.svg
  82. 0 3
      resources/dark/icon_kinematic_body.svg
  83. 0 3
      resources/dark/icon_kinematic_body_2d.svg
  84. 0 3
      resources/dark/icon_label.svg
  85. 0 3
      resources/dark/icon_light_2d.svg
  86. 0 3
      resources/dark/icon_light_occluder_2d.svg
  87. 0 3
      resources/dark/icon_line_2d.svg
  88. 0 3
      resources/dark/icon_line_edit.svg
  89. 0 3
      resources/dark/icon_link_button.svg
  90. 0 3
      resources/dark/icon_listener.svg
  91. 0 6
      resources/dark/icon_margin_container.svg
  92. 0 3
      resources/dark/icon_menu_button.svg
  93. 0 3
      resources/dark/icon_mesh_instance.svg
  94. 0 3
      resources/dark/icon_mesh_instance_2d.svg
  95. 0 3
      resources/dark/icon_multi_mesh_instance.svg
  96. 0 4
      resources/dark/icon_multi_mesh_instance_2d.svg
  97. 0 3
      resources/dark/icon_navigation.svg
  98. 0 3
      resources/dark/icon_navigation_2d.svg
  99. 0 3
      resources/dark/icon_navigation_mesh_instance.svg
  100. 0 6
      resources/dark/icon_navigation_polygon_instance.svg

+ 0 - 5
.gitignore

@@ -1,10 +1,5 @@
 out
 node_modules
-server
-publish/*.vsix
-test
 *.vsix
-configurations/tmp.txt
-configurations/test.py
 .vscode-test
 workspace.code-workspace

+ 9 - 0
.vscode-test.js

@@ -0,0 +1,9 @@
+const { defineConfig } = require('@vscode/test-cli');
+
+module.exports = defineConfig(
+	{
+		// version: '1.84.0',
+		label: 'unitTests',
+		files: 'out/**/*.test.js',
+	}
+);

+ 3 - 2
.vscode/launch.json

@@ -27,8 +27,9 @@
 			"request": "launch",
 			"runtimeExecutable": "${execPath}",
 			"args": [
-				"${workspaceFolder}/workspace.code-workspace",
-				"--extensionDevelopmentPath=${workspaceFolder}"
+				"--profile=temp",
+				"--extensionDevelopmentPath=${workspaceFolder}",
+				"${workspaceFolder}/workspace.code-workspace"
 			],
 			"outFiles": [
 				"${workspaceFolder}/out/**/*.js"

+ 3 - 2
.vscodeignore

@@ -1,10 +1,11 @@
 *
 */**
+**/*.js.map
 !out/extension.js
-!syntaxes/
+!syntaxes/*.tmLanguage.json
 !resources/
+!media/
 !configurations/
-syntaxes/examples
 !package.json
 !package.nls.json
 !README.md

+ 39 - 0
CONTRIBUTING.md

@@ -0,0 +1,39 @@
+# Contributing
+
+### Building from source
+
+#### Requirements
+
+- [npm](https://www.npmjs.com/get-npm)
+
+#### Process
+
+1. Open a command prompt/terminal and browse to the location of this repository on your local filesystem.
+2. Download dependencies by using the command `npm install`
+3. When done, package a VSIX file by using the command `npm run package`.
+4. Install it by opening Visual Studio Code, opening the Extensions tab, clicking on the More actions (**...**) button in the top right, and choose **Install from VSIX...** and find the compiled VSIX file.
+
+When developing for the extension, you can open this project in Visual Studio Code and debug the extension by using the **Run Extension** launch configuration instead of going through steps 3 and 4. It will launch a new instance of Visual Studio Code that has the extension running. You can then open a Godot project folder and debug the extension or GDScript debugger.
+
+Additionally, if you create a `workspace.code-workspace` file, you can use the **Run Extension with workspace file** launch configuration to quickly change what folder your Extension Host is running in, and quickly change the settings passed to the debug environment
+
+An example `workspace.code-workspace` file:
+```jsonc
+{
+	"folders": [
+		{
+			// "path": "."
+			"path": "P:/project1"
+			// "path": "P:/project2"
+			// "path": "P:/folder/project3"
+		}
+	],
+    "settings": {
+		"godotTools.editorPath.godot3": "godot3.dev.exe",
+		"godotTools.editorPath.godot4": "godot4.dev.exe",
+		// "godotTools.editorPath.godot4": "godot4.custom.exe"
+        // "godotTools.editorPath.godot4": "Godot_v4.1.1-stable_win64.exe",
+        "godotTools.lsp.headless": false
+	}
+}
+```

+ 103 - 64
README.md

@@ -1,34 +1,64 @@
 # Godot Tools
 
-A complete set of tools to code games with
-[Godot Engine](http://www.godotengine.org/) in Visual Studio Code.
+Game development tools for working with [Godot Engine](http://www.godotengine.org/) in Visual Studio Code.
 
 **IMPORTANT NOTE:** Versions 1.0.0 and later of this extension only support
 Godot 3.2 or later.
 
-## Features
-
-The extension comes with a wealth of features to make your Godot programming
-experience as comfortable as possible:
-
-- Syntax highlighting for the GDScript (`.gd`) language
-- Syntax highlighting for the `.tscn` and `.tres` scene formats
-- Syntax highlighting for the `.gdshader` shader format
-- Full typed GDScript support
-- Optional "Smart Mode" to improve productivity with dynamically typed scripts
-- Function definitions and documentation display on hover (see image below)
-- Rich autocompletion
-- Switch from a `.gd` file to the related `.tscn` file (default keybind is `alt+o`)
-- In-editor Scene Preview
-- Display script warnings and errors
-- Ctrl + click on a variable or method call to jump to its definition
-- Full documentation of the Godot Engine's API supported (select *Godot Tools: List native classes of Godot* in the Command Palette)
-- Run a Godot project from VS Code
-- Debug your GDScript-based Godot project from VS Code with breakpoints, step-in/out/over, variable watch, call stack, and active scene tree
-
-![Showing the documentation on hover feature](img/godot-tools.png)
-
-## Download
+- [Godot Tools](#godot-tools)
+- [Features](#features)
+- [Download](#download)
+- [Commands](#commands)
+- [Configuration](#configuration)
+		- [Godot Editor](#godot-editor)
+		- [VS Code](#vs-code)
+- [GDScript Debugger](#gdscript-debugger)
+		- [*Configurations*](#configurations)
+	- [Issues and contributions](#issues-and-contributions)
+- [Contributing](#contributing)
+	- [FAQ](#faq)
+		- [Why does it fail to connect to the language server?](#why-does-it-fail-to-connect-to-the-language-server)
+		- [Why isn't IntelliSense displaying script members?](#why-isnt-intellisense-displaying-script-members)
+
+
+# Features
+
+(**bold items** are new in Godot Tools `v2.0.0`)
+- **ALL FEATURES FULLY SUPPORT GODOT 4**
+- GDScript (`.gd`) language features:
+  - syntax highlighting
+  - `ctrl+click` on any symbol to jump to its definition or **open its documentation**
+  - `ctrl+click` on `res://resource/path` links
+  - **hover previews on `res://resource/path` links**
+  - autocompletions
+  - full typed GDScript support
+  - optional "Smart Mode" to improve productivity with dynamically typed scripts
+  - Hover previews show function/variable definitions including doc-comments
+  - **switch from a `.gd` file to the related `.tscn` file (default keybind is `alt+o`)**
+  - display script warnings and errors
+- GDScript Debugger features:
+  - **completely rewritten, greatly improved reliability**
+  - **new, simple configuration** (seriously, just hit F5!)
+  - **convenient launch targets: current project/current file/pinned file**,
+  - breakpoints
+  - exceptions
+  - step-in/out/over
+  - variable watch
+  - call stack
+  - active scene tree
+  - inspector
+- GDResource (`.tscn` and `.tres`) language features:
+  - syntax highlighting
+  - **`ctrl+click` on `res://resource/path` links**
+  - **`ctrl+click` on symbols to jump to its definition or open its documentation**
+  - **hover previews show definitions of External and Sub Resources**
+  - **hover previews on `res://resource/path` links**
+  - **inlay hints to help visualize External and Sub Resources**
+  - **in-editor Scene Preview**
+- GDShader (`.gdshader`) language features:
+  - syntax highlighting
+
+# Download
 
 - [Visual Studio Marketplace **(recommended)**](https://marketplace.visualstudio.com/items?itemName=geequlim.godot-tools)
   - Stable release, with support for automatic updates.
@@ -42,32 +72,32 @@ To install from GitHub Releases or a development build,
 see [Install from a VSIX](https://code.visualstudio.com/docs/editor/extension-marketplace#_install-from-a-vsix)
 in the Visual Studio Code documentation.
 
-## Available commands
+# Commands
 
 The extension adds a few entries to the VS Code Command Palette under "Godot Tools":
 
 - Open workspace with Godot editor
-- Run the workspace as a Godot project
-- List Godot's native classes
+- List Godot's native classes (and open thier documentation)
+- Debug the current `.tscn`/`.gd` file
+- Debug the pinned `.tscn`/`.gd` file
+- Pin/Unpin the current `.tscn`/`.gd` file for debugging
+- Open the pinned file
 
-## Configuration
+# Configuration
 
-### Godot
+### Godot Editor
 
-If you like this extension, you can set VS Code as your default script editor
-for Godot by following these steps:
+You can set VS Code as your default script editor for Godot by following these steps:
 
 1. Open the **Editor Settings**
 2. Select **Text Editor > External**
-3. Make sure the **Use External Editor** box is checked
+3. Check **Use External Editor** 
 4. Fill **Exec Path** with the path to your VS Code executable
     * On macOS, this executable is typically located at: `/Applications/Visual Studio Code.app/Contents/MacOS/Electron`
 5. Fill **Exec Flags** with `{project} --goto {file}:{line}:{col}`
 
 ### VS Code
 
-#### Settings
-
 You can use the following settings to configure Godot Tools:
 
 - `godotTools.editorPath.godot3`
@@ -79,7 +109,7 @@ The path to the Godot editor executable. _Under Mac OS, this is the executable i
   
 When using Godot >3.6 or >4.2, Headless LSP mode is available. In Headless mode, the extension will attempt to launch a windowless instance of the Godot editor to use as its Language Server.
 
-#### GDScript Debugger
+# GDScript Debugger
 
 The debugger is for GDScript projects. To debug C# projects, use [C# Tools for Godot](https://github.com/godotengine/godot-csharp-vscode).
 
@@ -97,22 +127,44 @@ To configure the GDScript debugger:
 
 ### *Configurations*
 
-_Required_
-
-None: seriously. This is valid debugging configuration:
-
+Minimal:
 ```json
-{ "name": "Launch", "type": "godot" }
+{
+	"name": "Launch",
+	"type": "godot",
+	"request": "launch"
+}
 ```
 
-_Optional_
+Everything:
+```json
+{
+	"name": "Launch",
+	"type": "godot",
+	"request": "launch",
+	"project": "${workspaceFolder}",
+	"address": "127.0.0.1",
+	"port": 6007,
+	"scene": "main|current|pinned|<path>",
+	"editor_path": "<path>",
+	// engine command line flags
+	"profiling": false,
+	"single_threaded_scene": false,
+	"debug_collisions": false,
+	"debug_paths": false,
+	"debug_navigation": false,
+	"debug_avoidance": false,
+	"debug_stringnames": false,
+	"frame_delay": 0,
+	"time_scale": 1.0,
+	"disable_vsync": false,
+	"fixed_fps": 60,
+	// anything else
+	"additional_options": ""
+}
+```
 
-`project`: Absolute path to a directory with a project.godot file. Defaults to the currently open VSCode workspace with `${workspaceFolder}`.
-`port`: The port number for the Godot remote debugger to use.
-`address`: The IP address for the Godot remote debugger to use.
-`scene_file`: Path to a scene file to run instead of the projects 'main scene'.
-`editor_path`: Absolute path to the Godot executable to be used for this debug profile.
-`additional_options`: Additional command line arguments.
+Godot's command flags are documented here: https://docs.godotengine.org/en/stable/tutorials/editor/command_line_tutorial.html
 
 *Usage*
 
@@ -132,29 +184,16 @@ and create pull requests anytime.
 See the [full changelog](https://github.com/GodotExplorer/godot-tools/blob/master/CHANGELOG.md)
 for the latest changes.
 
-### Building from source
-
-#### Requirements
-
-- [npm](https://www.npmjs.com/get-npm)
-
-#### Process
-
-1. Open a command prompt/terminal and browse to the location of this repository on your local filesystem.
-2. Download dependencies by using the command `npm install`
-3. When done, package a VSIX file by using the command `npm run package`.
-4. Install it by opening Visual Studio Code, opening the Extensions tab, clicking on the More actions (**...**) button in the top right, and choose **Install from VSIX...** and find the compiled VSIX file.
+# Contributing
 
-When developing for the extension, you can open this project in Visual Studio Code and debug the extension by using the **Run Extension** launch configuration instead of going through steps 3 and 4. It will launch a new instance of Visual Studio Code that has the extension running. You can then open a Godot project folder and debug the extension or GDScript debugger.
+see [CONTRIBUTING.md](CONTRIBUTING.md)
 
 ## FAQ
 
 ### Why does it fail to connect to the language server?
 
 - Godot 3.2 or later is required.
-- For Godot 4, the [`gdscript_lsp_server_port` setting](#gdscript_lsp_server_port)
-  must be changed to `6005` to match the Godot editor's new default
-  language server port number.
+- Make sure the Godot editor is running
 - Make sure to open the project in the Godot editor first. If you opened
   the editor after opening VS Code, you can click the **Retry** button
   in the bottom-right corner in VS Code.

+ 0 - 24
configurations/gdresource-configuration.json

@@ -1,24 +0,0 @@
-{
-    "comments": {
-        "lineComment": ";"
-    },
-    "brackets": [
-        ["(", ")"],
-        ["[", "]"],
-        ["{", "}"]
-    ],
-    "autoClosingPairs": [
-        ["'", "'"],
-        ["\"", "\""],
-        ["(", ")"],
-        ["[", "]"],
-        ["{", "}"]
-    ],
-    "surroundingPairs": [
-        ["'", "'"],
-        ["\"", "\""],
-        ["(", ")"],
-        ["[", "]"],
-        ["{", "}"]
-    ]
-}

+ 24 - 0
configurations/gdresource.language-configuration.json

@@ -0,0 +1,24 @@
+{
+	"comments": {
+		"lineComment": ";"
+	},
+	"brackets": [
+		["(", ")"],
+		["[", "]"],
+		["{", "}"]
+	],
+	"autoClosingPairs": [
+		["'", "'"],
+		["\"", "\""],
+		["(", ")"],
+		["[", "]"],
+		["{", "}"]
+	],
+	"surroundingPairs": [
+		["'", "'"],
+		["\"", "\""],
+		["(", ")"],
+		["[", "]"],
+		["{", "}"]
+	]
+}

+ 0 - 82
configurations/gdscript-configuration.json

@@ -1,82 +0,0 @@
-{
-    "comments": {
-        "lineComment": "#",
-        "blockComment": [
-            "\"\"\"",
-            "\"\"\""
-        ]
-    },
-    "brackets": [
-        [
-            "(",
-            ")"
-        ],
-        [
-            "[",
-            "]"
-        ],
-        [
-            "{",
-            "}"
-        ]
-    ],
-    "autoClosingPairs": [
-        [
-            "'",
-            "'"
-        ],
-        [
-            "\"",
-            "\""
-        ],
-        [
-            "(",
-            ")"
-        ],
-        [
-            "[",
-            "]"
-        ],
-        [
-            "{",
-            "}"
-        ]
-    ],
-    "surroundingPairs": [
-        [
-            "'",
-            "'"
-        ],
-        [
-            "\"",
-            "\""
-        ],
-        [
-            "(",
-            ")"
-        ],
-        [
-            "[",
-            "]"
-        ],
-        [
-            "{",
-            "}"
-        ]
-    ],
-    "folding": {
-        "offSide": true,
-        "markers": {
-            "start": "^\\s*#\\s*region\\b",
-            "end": "^\\s*#\\s*endregion\\b"
-        }
-    },
-    "onEnterRules": [
-        {
-            "beforeText": ":\\s*$",
-            "action": {
-                "indent": "indent"
-            }
-        }
-    ]
-}

+ 40 - 0
configurations/gdscript.language-configuration.json

@@ -0,0 +1,40 @@
+{
+	"comments": {
+		"lineComment": "#"
+	},
+	"brackets": [
+		["{", "}"],
+		["[", "]"],
+		["(", ")"]
+	],
+	"autoClosingPairs": [
+		{ "open": "{", "close": "}" },
+		{ "open": "[", "close": "]" },
+		{ "open": "(", "close": ")" },
+		{ "open": "\"", "close": "\"", "notIn": ["string", "comment"] },
+		{ "open": "'", "close": "'", "notIn": ["string", "comment"] }
+	],
+	"autoCloseBefore": ";:.,=}])>` \n\t",
+	"surroundingPairs": [
+		["{", "}"],
+		["[", "]"],
+		["(", ")"],
+		["\"", "\""],
+		["'", "'"]
+	],
+	"folding": {
+		"offSide": true,
+		"markers": {
+			"start": "^\\s*#\\s*region\\b",
+			"end": "^\\s*#\\s*endregion\\b"
+		}
+	},
+	"onEnterRules": [
+		{
+			"beforeText": ":\\s*$",
+			"action": {
+				"indent": "indent"
+			}
+		}
+	]
+}

+ 0 - 25
configurations/gdshader-configuration.json

@@ -1,25 +0,0 @@
-{
-    "comments": {
-        "lineComment": "//",
-        "blockComment": ["/*", "*/"]
-    },
-    "brackets": [
-        ["(", ")"],
-        ["[", "]"],
-        ["{", "}"]
-    ],
-    "autoClosingPairs": [
-        ["'", "'"],
-        ["\"", "\""],
-        ["(", ")"],
-        ["[", "]"],
-        ["{", "}"]
-    ],
-    "surroundingPairs": [
-        ["'", "'"],
-        ["\"", "\""],
-        ["(", ")"],
-        ["[", "]"],
-        ["{", "}"]
-    ]
-}

+ 25 - 0
configurations/gdshader.language-configuration.json

@@ -0,0 +1,25 @@
+{
+	"comments": {
+		"lineComment": "//",
+		"blockComment": ["/*", "*/"]
+	},
+	"brackets": [
+		["(", ")"],
+		["[", "]"],
+		["{", "}"]
+	],
+	"autoClosingPairs": [
+		["'", "'"],
+		["\"", "\""],
+		["(", ")"],
+		["[", "]"],
+		["{", "}"]
+	],
+	"surroundingPairs": [
+		["'", "'"],
+		["\"", "\""],
+		["(", ")"],
+		["[", "]"],
+		["{", "}"]
+	]
+}

BIN
img/hover-extresource.png


BIN
img/hover-subresource.png


BIN
img/scene-preview.png


+ 24 - 0
media/docs.css

@@ -0,0 +1,24 @@
+.codeblock {
+	padding: 0.5em;
+	margin: .5em 0;
+	overflow: auto;
+	border-radius: 0.3em;
+	!background-color: #fdf6e3;
+}
+
+body {
+	margin-right: 200px;
+}
+
+a {
+	text-decoration: none;
+}
+
+#map {
+	position: fixed;
+	top: 0;
+	right: 0;
+	width: 200px;
+	height: 100%;
+	z-index: 100;
+}

+ 349 - 0
media/pagemap.js

@@ -0,0 +1,349 @@
+/*! pagemap v1.4.0 - https://larsjung.de/pagemap/ */
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory();
+	else if(typeof define === 'function' && define.amd)
+		define("pagemap", [], factory);
+	else if(typeof exports === 'object')
+		exports["pagemap"] = factory();
+	else
+		root["pagemap"] = factory();
+})((typeof self !== 'undefined' ? self : this), function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {module.exports = function (canvas, options) {
+  var WIN = global.window;
+  var DOC = WIN.document;
+  var DOC_EL = DOC.documentElement;
+  var BODY = DOC.querySelector('body');
+  var CTX = canvas.getContext('2d');
+
+  var black = function black(pc) {
+    return "rgba(0,0,0,".concat(pc / 100, ")");
+  };
+
+  var settings = Object.assign({
+    viewport: null,
+    styles: {
+      'header,footer,section,article': black(8),
+      'h1,a': black(10),
+      'h2,h3,h4': black(8)
+    },
+    back: black(2),
+    view: black(5),
+    drag: black(10),
+    interval: null
+  }, options);
+
+  var _listener = function _listener(el, method, types, fn) {
+    return types.split(/\s+/).forEach(function (type) {
+      return el[method](type, fn);
+    });
+  };
+
+  var on = function on(el, types, fn) {
+    return _listener(el, 'addEventListener', types, fn, {passive: true});
+  };
+
+  var off = function off(el, types, fn) {
+    return _listener(el, 'removeEventListener', types, fn);
+  };
+
+  var Rect = function Rect(x, y, w, h) {
+    return {
+      x: x,
+      y: y,
+      w: w,
+      h: h
+    };
+  };
+
+  var rect_rel_to = function rect_rel_to(rect) {
+    var pos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
+      x: 0,
+      y: 0
+    };
+    return Rect(rect.x - pos.x, rect.y - pos.y, rect.w, rect.h);
+  };
+
+  var rect_of_doc = function rect_of_doc() {
+    return Rect(0, 0, DOC_EL.scrollWidth, DOC_EL.scrollHeight);
+  };
+
+  var rect_of_win = function rect_of_win() {
+    return Rect(WIN.pageXOffset, WIN.pageYOffset, DOC_EL.clientWidth, DOC_EL.clientHeight);
+  };
+
+  var el_get_offset = function el_get_offset(el) {
+    var br = el.getBoundingClientRect();
+    return {
+      x: br.left + WIN.pageXOffset,
+      y: br.top + WIN.pageYOffset
+    };
+  };
+
+  var rect_of_el = function rect_of_el(el) {
+    var _el_get_offset = el_get_offset(el),
+        x = _el_get_offset.x,
+        y = _el_get_offset.y;
+
+    return Rect(x, y, el.offsetWidth, el.offsetHeight);
+  };
+
+  var rect_of_viewport = function rect_of_viewport(el) {
+    var _el_get_offset2 = el_get_offset(el),
+        x = _el_get_offset2.x,
+        y = _el_get_offset2.y;
+
+    return Rect(x + el.clientLeft, y + el.clientTop, el.clientWidth, el.clientHeight);
+  };
+
+  var rect_of_content = function rect_of_content(el) {
+    var _el_get_offset3 = el_get_offset(el),
+        x = _el_get_offset3.x,
+        y = _el_get_offset3.y;
+
+    return Rect(x + el.clientLeft - el.scrollLeft, y + el.clientTop - el.scrollTop, el.scrollWidth, el.scrollHeight);
+  };
+
+  var calc_scale = function () {
+    var width = canvas.clientWidth;
+    var height = canvas.clientHeight;
+    return function (w, h) {
+      return Math.min(width / w, height / h);
+    };
+  }();
+
+  var resize_canvas = function resize_canvas(w, h) {
+    canvas.width = w;
+    canvas.height = h;
+    canvas.style.width = "".concat(w, "px");
+    canvas.style.height = "".concat(h, "px");
+  };
+
+  var viewport = settings.viewport;
+
+  var find = function find(sel) {
+    return Array.from((viewport || DOC).querySelectorAll(sel));
+  };
+
+  var drag = false;
+  var root_rect;
+  var view_rect;
+  var scale;
+  var drag_rx;
+  var drag_ry;
+
+  var draw_rect = function draw_rect(rect, col) {
+    if (col) {
+      CTX.beginPath();
+      CTX.rect(rect.x, rect.y, rect.w, rect.h);
+      CTX.fillStyle = col;
+      CTX.fill();
+    }
+  };
+
+  var apply_styles = function apply_styles(styles) {
+    Object.keys(styles).forEach(function (sel) {
+      var col = styles[sel];
+      find(sel).forEach(function (el) {
+        draw_rect(rect_rel_to(rect_of_el(el), root_rect), col);
+      });
+    });
+  };
+
+  var draw = function draw() {
+    root_rect = viewport ? rect_of_content(viewport) : rect_of_doc();
+    view_rect = viewport ? rect_of_viewport(viewport) : rect_of_win();
+    scale = calc_scale(root_rect.w, root_rect.h);
+    resize_canvas(root_rect.w * scale, root_rect.h * scale);
+    CTX.setTransform(1, 0, 0, 1, 0, 0);
+    CTX.clearRect(0, 0, canvas.width, canvas.height);
+    CTX.scale(scale, scale);
+    draw_rect(rect_rel_to(root_rect, root_rect), settings.back);
+    apply_styles(settings.styles);
+    draw_rect(rect_rel_to(view_rect, root_rect), drag ? settings.drag : settings.view);
+  };
+
+  var on_drag = function on_drag(ev) {
+    ev.preventDefault();
+    var cr = rect_of_viewport(canvas);
+    var x = (ev.pageX - cr.x) / scale - view_rect.w * drag_rx;
+    var y = (ev.pageY - cr.y) / scale - view_rect.h * drag_ry;
+
+    if (viewport) {
+      viewport.scrollLeft = x;
+      viewport.scrollTop = y;
+    } else {
+      WIN.scrollTo(x, y);
+    }
+
+    draw();
+  };
+
+  var on_drag_end = function on_drag_end(ev) {
+    drag = false;
+    canvas.style.cursor = 'pointer';
+    BODY.style.cursor = 'auto';
+    off(WIN, 'mousemove', on_drag);
+    off(WIN, 'mouseup', on_drag_end);
+    on_drag(ev);
+  };
+
+  var on_drag_start = function on_drag_start(ev) {
+    drag = true;
+    var cr = rect_of_viewport(canvas);
+    var vr = rect_rel_to(view_rect, root_rect);
+    drag_rx = ((ev.pageX - cr.x) / scale - vr.x) / vr.w;
+    drag_ry = ((ev.pageY - cr.y) / scale - vr.y) / vr.h;
+
+    if (drag_rx < 0 || drag_rx > 1 || drag_ry < 0 || drag_ry > 1) {
+      drag_rx = 0.5;
+      drag_ry = 0.5;
+    }
+
+    canvas.style.cursor = 'crosshair';
+    BODY.style.cursor = 'crosshair';
+    on(WIN, 'mousemove', on_drag);
+    on(WIN, 'mouseup', on_drag_end);
+    on_drag(ev);
+  };
+
+  var init = function init() {
+    canvas.style.cursor = 'pointer';
+    on(canvas, 'mousedown', on_drag_start);
+    on(viewport || WIN, 'load resize scroll', draw);
+
+    if (settings.interval > 0) {
+      setInterval(function () {
+        return draw();
+      }, settings.interval);
+    }
+
+    draw();
+  };
+
+  init();
+  return {
+    redraw: draw
+  };
+};
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1)))
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+	return this;
+})();
+
+try {
+	// This works if eval is allowed (see CSP)
+	g = g || new Function("return this")();
+} catch (e) {
+	// This works if the window reference is available
+	if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ })
+/******/ ]);
+});

+ 128 - 0
media/prism.css

@@ -0,0 +1,128 @@
+code[class*="language-"],
+pre[class*="language-"] {
+	color: #657b83;
+	/* base00 */
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	font-size: 1em;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+	background: #073642;
+	/* base02 */
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+	background: #073642;
+	/* base02 */
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+	border-radius: 0.3em;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+	background-color: #fdf6e3;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+	padding: .1em;
+	border-radius: .3em;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: #6A9955;
+}
+
+.token.punctuation {
+	color: #586e75;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+	color: #569cd6;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.url,
+.token.inserted {
+	color: #ce9178;
+}
+
+.token.entity {
+	color: #657b83;
+	background: #eee8d5;
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+	color: #859900;
+}
+
+.token.function,
+.token.class-name {
+	color: #4EC9B0;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+	color: #cb4b16;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}

File diff suppressed because it is too large
+ 835 - 77
package-lock.json


+ 166 - 74
package.json

@@ -2,7 +2,7 @@
 	"name": "godot-tools",
 	"displayName": "godot-tools",
 	"icon": "icon.png",
-	"version": "1.3.1",
+	"version": "2.0.0",
 	"description": "Tools for game development with Godot Engine and GDScript",
 	"repository": {
 		"type": "git",
@@ -22,6 +22,7 @@
 		"Linters",
 		"Snippets",
 		"Debuggers",
+		"Formatters",
 		"Other"
 	],
 	"activationEvents": [
@@ -38,9 +39,21 @@
 		"esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node",
 		"esbuild": "npm run esbuild-base -- --sourcemap",
 		"esbuild-watch": "npm run esbuild-base -- --sourcemap --watch",
-		"generate-icons": "ts-node tools/generate_icons.ts"
+		"generate-icons": "ts-node tools/generate_icons.ts",
+		"test": "vscode-test"
 	},
 	"contributes": {
+		"customEditors": [
+			{
+				"viewType": "gddoc",
+				"displayName": "Godot Documentation",
+				"selector": [
+					{
+						"filenamePattern": "*.gddoc"
+					}
+				]
+			}
+		],
 		"commands": [
 			{
 				"category": "Godot Tools",
@@ -59,21 +72,16 @@
 			},
 			{
 				"category": "Godot Tools",
-				"command": "godotTools.listNativeClasses",
-				"title": "List native classes of godot"
-			},
-			{
-				"category": "Godot Tools",
-				"command": "godotTools.openTypeDocumentation",
-				"title": "Open Type Documentation"
+				"command": "godotTools.listGodotClasses",
+				"title": "List Godot classes"
 			},
 			{
 				"category": "Godot Tools",
 				"command": "godotTools.debugger.inspectNode",
 				"title": "Inspect Remote Node",
 				"icon": {
-					"light": "resources/light/icon_GUI_visibility_visible.svg",
-					"dark": "resources/dark/icon_GUI_visibility_visible.svg"
+					"light": "resources/godot_icons/light/GuiVisibilityVisible.svg",
+					"dark": "resources/godot_icons/dark/GuiVisibilityVisible.svg"
 				}
 			},
 			{
@@ -81,8 +89,8 @@
 				"command": "godotTools.debugger.refreshSceneTree",
 				"title": "Refresh",
 				"icon": {
-					"light": "resources/light/icon_refresh.svg",
-					"dark": "resources/dark/icon_refresh.svg"
+					"light": "resources/godot_icons/light/Reload.svg",
+					"dark": "resources/godot_icons/dark/Reload.svg"
 				}
 			},
 			{
@@ -90,8 +98,8 @@
 				"command": "godotTools.debugger.refreshInspector",
 				"title": "Refresh",
 				"icon": {
-					"light": "resources/light/icon_refresh.svg",
-					"dark": "resources/dark/icon_refresh.svg"
+					"light": "resources/godot_icons/light/Reload.svg",
+					"dark": "resources/godot_icons/dark/Reload.svg"
 				}
 			},
 			{
@@ -99,21 +107,27 @@
 				"command": "godotTools.debugger.editValue",
 				"title": "Edit value",
 				"icon": {
-					"light": "resources/light/icon_edit.svg",
-					"dark": "resources/dark/icon_edit.svg"
+					"light": "resources/godot_icons/light/Edit.svg",
+					"dark": "resources/godot_icons/dark/Edit.svg"
 				}
 			},
 			{
 				"category": "Godot Tools",
 				"command": "godotTools.debugger.debugCurrentFile",
 				"title": "Debug Current File",
-				"icon": "$(play)"
+				"icon": {
+					"light": "resources/godot_icons/light/PlayScene.svg",
+					"dark": "resources/godot_icons/dark/PlayScene.svg"
+				}
 			},
 			{
 				"category": "Godot Tools",
 				"command": "godotTools.debugger.debugPinnedFile",
 				"title": "Debug Pinned File",
-				"icon": "$(play)"
+				"icon": {
+					"light": "resources/godot_icons/light/Play.svg",
+					"dark": "resources/godot_icons/dark/Play.svg"
+				}
 			},
 			{
 				"category": "Godot Tools",
@@ -154,6 +168,11 @@
 				"command": "godotTools.scenePreview.goToDefinition",
 				"title": "Go to Definition"
 			},
+			{
+				"category": "Godot Tools",
+				"command": "godotTools.scenePreview.openDocumentation",
+				"title": "Open Documentation"
+			},
 			{
 				"category": "Godot Tools",
 				"command": "godotTools.scenePreview.copyNodePath",
@@ -167,12 +186,20 @@
 			{
 				"category": "Godot Tools",
 				"command": "godotTools.scenePreview.openScene",
-				"title": "Open Scene"
+				"title": "Open Scene",
+				"icon": {
+					"light": "resources/InstanceOptions.svg",
+					"dark": "resources/InstanceOptions.svg"
+				}
 			},
 			{
 				"category": "Godot Tools",
 				"command": "godotTools.scenePreview.openScript",
-				"title": "Open Script"
+				"title": "Open Script",
+				"icon": {
+					"light": "resources/godot_icons/light/Script.svg",
+					"dark": "resources/godot_icons/dark/Script.svg"
+				}
 			},
 			{
 				"category": "Godot Tools",
@@ -189,7 +216,7 @@
 			{
 				"command": "godotTools.switchSceneScript",
 				"key": "alt+o",
-				"when": "editorLangId == 'gdscript' && editorTextFocus || editorLangId == 'gdresource' && editorTextFocus"
+				"when": "editorLangId in godotTools.context.godotFiles && editorTextFocus"
 			}
 		],
 		"configuration": {
@@ -251,28 +278,6 @@
 					"default": 10,
 					"description": "How many times the client will attempt to reconnect"
 				},
-				"godotTools.debugger.forceVisibleCollisionShapes": {
-					"type": "boolean",
-					"default": false,
-					"description": "Force the project to run with visible collision shapes"
-				},
-				"godotTools.debugger.forceVisibleNavMesh": {
-					"type": "boolean",
-					"default": false,
-					"description": "Force the project to run with visible navigation meshes"
-				},
-				"godotTools.documentation.newTabPlacement": {
-					"enum": [
-						"active",
-						"beside"
-					],
-					"enumDescriptions": [
-						"Place new documentation views in the active tabs group",
-						"Place new documentation views beside the active tabs group"
-					],
-					"default": "beside",
-					"description": "Where to place new documentation views"
-				},
 				"godotTools.scenePreview.previewRelatedScenes": {
 					"enum": [
 						"anyFolder",
@@ -299,7 +304,7 @@
 				"extensions": [
 					".gd"
 				],
-				"configuration": "./configurations/gdscript-configuration.json"
+				"configuration": "./configurations/gdscript.language-configuration.json"
 			},
 			{
 				"id": "gdscene",
@@ -310,7 +315,7 @@
 				"extensions": [
 					"tscn"
 				],
-				"configuration": "./configurations/gdresource-configuration.json"
+				"configuration": "./configurations/gdresource.language-configuration.json"
 			},
 			{
 				"id": "gdresource",
@@ -325,7 +330,7 @@
 					"gdns",
 					"gdnlib"
 				],
-				"configuration": "./configurations/gdresource-configuration.json"
+				"configuration": "./configurations/gdresource.language-configuration.json"
 			},
 			{
 				"id": "gdshader",
@@ -333,9 +338,10 @@
 					"gdshader"
 				],
 				"extensions": [
-					".gdshader"
+					".gdshader",
+					".gdshaderinc"
 				],
-				"configuration": "./configurations/gdshader-configuration.json"
+				"configuration": "./configurations/gdshader.language-configuration.json"
 			}
 		],
 		"grammars": [
@@ -349,12 +355,26 @@
 				"scopeName": "source.gdresource",
 				"path": "./syntaxes/GDResource.tmLanguage.json"
 			},
+			{
+				"language": "gdscene",
+				"scopeName": "source.gdresource",
+				"path": "./syntaxes/GDResource.tmLanguage.json"
+			},
 			{
 				"language": "gdshader",
 				"scopeName": "source.gdshader",
 				"path": "./syntaxes/GDShader.tmLanguage.json"
 			}
 		],
+		"semanticTokenScopes": [
+			{
+				"scopes": {
+					"nodePath": [
+						"constant.character.escape"
+					]
+				}
+			}
+		],
 		"snippets": [
 			{
 				"language": "gdscript",
@@ -402,7 +422,60 @@
 							},
 							"editor_path": {
 								"type": "string",
-								"description": "Absolute path to the Godot executable to be used for this debug profile."
+								"description": "Absolute path to the Godot executable to be used for this debug profile.",
+								"default": false
+							},
+							"profiling": {
+								"type": "boolean",
+								"description": "Enable profiling in the script debugger.",
+								"default": false
+							},
+							"single_threaded_scene": {
+								"type": "boolean",
+								"description": "Scene tree runs in single-threaded mode. Sub-thread groups are disabled and run on the main thread. (Godot 4 only)",
+								"default": false
+							},
+							"debug_collisions": {
+								"type": "boolean",
+								"description": "Show collision shapes when running the scene.",
+								"default": false
+							},
+							"debug_paths": {
+								"type": "boolean",
+								"description": "Show navigation polygons when running the scene. (Godot 4 only)",
+								"default": false
+							},
+							"debug_navigation": {
+								"type": "boolean",
+								"description": "Show navigation polygons when running the scene.",
+								"default": false
+							},
+							"debug_avoidance": {
+								"type": "boolean",
+								"description": "Show navigation avoidance debug visuals when running the scene. (Godot 4 only)",
+								"default": false
+							},
+							"debug_stringnames": {
+								"type": "boolean",
+								"description": "Print all StringName allocations to stdout when the engine quits. (Godot 4 only)",
+								"default": false
+							},
+							"frame_delay": {
+								"type": "number",
+								"description": "Simulate high CPU load (delay each frame by <ms> milliseconds)."
+							},
+							"time_scale": {
+								"type": "number",
+								"description": "Force time scale (higher values are faster, 1.0 is normal speed)."
+							},
+							"disable_vsync": {
+								"type": "boolean",
+								"description": "Forces disabling of vertical synchronization, even if enabled in the project settings. Does not override driver-level V-Sync enforcement. (Godot 4 only)",
+								"default": false
+							},
+							"fixed_fps": {
+								"type": "number",
+								"description": "Force a fixed number of frames per second. This setting disables real-time synchronization."
 							},
 							"additional_options": {
 								"type": "string",
@@ -429,28 +502,34 @@
 				},
 				"initialConfigurations": [
 					{
-						"name": "GDScript: Launch Godot",
+						"name": "GDScript: Launch Project",
 						"type": "godot",
 						"request": "launch",
 						"project": "${workspaceFolder}",
+						"debug_collisions": false,
+						"debug_paths": false,
+						"debug_navigation": false,
 						"additional_options": ""
 					}
 				],
 				"configurationSnippets": [
 					{
-						"label": "GDScript Godot Debug: Launch",
-						"description": "A new configuration for debugging a Godot project.",
+						"label": "GDScript: Launch Project",
+						"description": "A config to launch the current project.",
 						"body": {
 							"name": "GDScript: Launch Project",
 							"type": "godot",
 							"request": "launch",
 							"project": "${workspaceFolder}",
+							"debug_collisions": false,
+							"debug_paths": false,
+							"debug_navigation": false,
 							"additional_options": ""
 						}
 					},
 					{
 						"label": "GDScript: Launch Current File",
-						"description": "A new configuration for debugging a Godot project.",
+						"description": "A config to launch the currently open scene.",
 						"body": {
 							"name": "GDScript: Launch Current File",
 							"type": "godot",
@@ -462,7 +541,7 @@
 					},
 					{
 						"label": "GDScript: Launch Pinned File",
-						"description": "A new configuration for debugging a Godot project.",
+						"description": "A config to launch the currently pinned scene.",
 						"body": {
 							"name": "GDScript: Launch Pinned File",
 							"type": "godot",
@@ -471,17 +550,6 @@
 							"project": "${workspaceFolder}",
 							"additional_options": ""
 						}
-					},
-					{
-						"label": "GDScript Godot Debug: Attach",
-						"description": "A new configuration for debugging a Godot project.",
-						"body": {
-							"name": "GDScript: Attach to Godot",
-							"type": "godot",
-							"request": "attach",
-							"address": "127.0.0.1",
-							"port": 6007
-						}
 					}
 				]
 			}
@@ -534,6 +602,10 @@
 		],
 		"menus": {
 			"commandPalette": [
+				{
+					"command": "godotTools.listGodotClasses",
+					"when": "godotTools.context.connectedToLSP"
+				},
 				{
 					"command": "godotTools.scenePreview.refresh",
 					"when": "false"
@@ -542,6 +614,10 @@
 					"command": "godotTools.scenePreview.goToDefinition",
 					"when": "false"
 				},
+				{
+					"command": "godotTools.scenePreview.openDocumentation",
+					"when": "false"
+				},
 				{
 					"command": "godotTools.scenePreview.pin",
 					"when": "false"
@@ -626,6 +702,11 @@
 					"when": "view == scenePreview",
 					"group": "1@1"
 				},
+				{
+					"command": "godotTools.scenePreview.openDocumentation",
+					"when": "view == scenePreview",
+					"group": "1@1"
+				},
 				{
 					"command": "godotTools.scenePreview.copyNodePath",
 					"when": "view == scenePreview"
@@ -643,6 +724,16 @@
 					"command": "godotTools.scenePreview.openScript",
 					"when": "view == scenePreview && viewItem =~ /hasScript/",
 					"group": "1@2"
+				},
+				{
+					"command": "godotTools.scenePreview.openScene",
+					"when": "view == scenePreview && viewItem =~ /openable/",
+					"group": "inline"
+				},
+				{
+					"command": "godotTools.scenePreview.openScript",
+					"when": "view == scenePreview && viewItem =~ /hasScript/",
+					"group": "inline"
 				}
 			],
 			"explorer/context": [
@@ -702,14 +793,9 @@
 				}
 			],
 			"editor/context": [
-				{
-					"command": "godotTools.openTypeDocumentation",
-					"when": "godotTools.context.connectedToLSP && godotTools.context.typeFound",
-					"group": "navigation@9"
-				},
 				{
 					"command": "godotTools.switchSceneScript",
-					"when": "editorLangId in godotTools.context.sceneLikeFiles",
+					"when": "editorLangId in godotTools.context.godotFiles",
 					"group": "custom1@1"
 				}
 			]
@@ -717,7 +803,7 @@
 	},
 	"devDependencies": {
 		"@types/marked": "^4.0.8",
-		"@types/mocha": "^9.1.0",
+		"@types/mocha": "^10.0.6",
 		"@types/node": "^18.15.0",
 		"@types/prismjs": "^1.16.8",
 		"@types/vscode": "^1.80.0",
@@ -725,9 +811,12 @@
 		"@typescript-eslint/eslint-plugin": "^5.57.1",
 		"@typescript-eslint/eslint-plugin-tslint": "^5.57.1",
 		"@typescript-eslint/parser": "^5.57.1",
+		"@vscode/test-cli": "^0.0.4",
+		"@vscode/test-electron": "^2.3.8",
 		"@vscode/vsce": "^2.21.0",
 		"esbuild": "^0.17.15",
 		"eslint": "^8.37.0",
+		"mocha": "^10.2.0",
 		"ts-node": "^10.9.1",
 		"tsconfig-paths": "^4.2.0",
 		"tslint": "^5.20.1",
@@ -743,6 +832,9 @@
 		"prismjs": "^1.17.1",
 		"terminate": "^2.5.0",
 		"vscode-languageclient": "^7.0.0",
-		"ws": "^8.13.0"
+		"vscode-oniguruma": "^2.0.1",
+		"vscode-textmate": "^9.0.0",
+		"ws": "^8.13.0",
+		"ya-bbcode": "^4.0.0"
 	}
 }

+ 0 - 3
resources/dark/icon_GUI_visibility_visible.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m8 2c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0-0.00586 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246s5.8365-1.7892 6.9609-5.7246a1.0001 1.0001 0 0 0 0-0.55273c-1.1003-3.7876-4.4066-5.7227-6.9609-5.7227zm0 2a4 4 0 0 1 4 4 4 4 0 0 1-4 4 4 4 0 0 1-4-4 4 4 0 0 1 4-4zm0 2a2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill="#e0e0e0" fill-opacity=".99608" fill-rule="evenodd"/>
-</svg>

+ 0 - 3
resources/dark/icon_a_r_v_r_anchor.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m7 1v2h-2v2h2v3.2656l-2.5527-1.2773c-.15005-.075253-.31662-.11152-.48438-.10547-.36536.013648-.69415.2256-.85742.55273-.24709.49403-.046823 1.0948.44727 1.3418l4.4473 2.2227 4.4473-2.2227c.49409-.24697.69435-.84777.44726-1.3418-.24697-.49409-.84777-.69435-1.3418-.44727l-2.5527 1.2773v-3.2656h2v-2h-2v-2zm-3 11v1c0 .55228.44772 1 1 1-.55228 0-1 .44772-1 1v1h1v-1h1v1h1v-1c0-.55228-.44772-1-1-1 .55228 0 1-.44772 1-1v-1h-1v1h-1v-1zm5 0v4h1v-1h1v1h1v-1c-.000834-.17579-.047991-.34825-.13672-.5.088728-.15175.13588-.32421.13672-.5v-1c0-.55228-.44772-1-1-1h-1zm1 1h1v1h-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_a_r_v_r_camera.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m9.5 0a3 3 0 0 0 -2.9883 2.7773 3 3 0 0 0 -2.0117-.77734 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8242v2.1758c0 .554.44599 1 1 1h6c.55401 0 1-.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1-2.2305 3 3 0 0 0 -3-3zm-5.5 12v1c0 .55228.44772 1 1 1-.55228 0-1 .44772-1 1v1h1v-1h1v1h1v-1c0-.55228-.44772-1-1-1 .55228 0 1-.44772 1-1v-1h-1v1h-1v-1zm5 0v1 3h1v-1h1v1h1v-1c-.000834-.17579-.047991-.34825-.13672-.5.088728-.15175.13588-.32421.13672-.5v-1c0-.55228-.44772-1-1-1h-1zm1 1h1v1h-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_a_r_v_r_controller.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m2 1c-.554 0-1 .446-1 1v6c0 .554.446 1 1 1h12c.554 0 1-.446 1-1v-6c0-.554-.446-1-1-1zm2 1h2v2h2v2h-2v2h-2v-2h-2v-2h2zm9 1c.55228 0 1 .44772 1 1s-.44772 1-1 1-1-.44772-1-1 .44772-1 1-1zm-2 2c.55228 0 1 .44772 1 1s-.44772 1-1 1-1-.44772-1-1 .44772-1 1-1zm-7 7v1c0 .55228.44772 1 1 1-.55228 0-1 .44772-1 1v1h1v-1h1v1h1v-1c0-.55228-.44772-1-1-1 .55228 0 1-.44772 1-1v-1h-1v1h-1v-1zm5 0v1 3h1v-1h1v1h1v-1c-.000834-.17579-.047991-.34825-.13672-.5.088728-.15175.13588-.32421.13672-.5v-1c0-.55228-.44772-1-1-1h-1zm1 1h1v1h-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_a_r_v_r_origin.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m7 1v3h2v-3zm-4 4v2h3v-2zm5 0c-.55228 0-1 .44772-1 1s.44772 1 1 1 1-.44772 1-1-.44772-1-1-1zm2 0v2h3v-2zm-3 3v3h2v-3zm-3 4v1c0 .55228.44772 1 1 1-.55228 0-1 .44772-1 1v1h1v-1h1v1h1v-1c0-.55228-.44772-1-1-1 .55228 0 1-.44772 1-1v-1h-1v1h-1v-1zm5 0v1 3h1v-1h1v1h1v-1c-.000834-.17579-.047991-.34825-.13672-.5.088728-.15175.13588-.32421.13672-.5v-1c0-.55228-.44772-1-1-1h-1zm1 1h1v1h-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_accept_dialog.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .8954-2 2v1h14v-1c0-1.1046-.89543-2-2-2zm9 1h1v1h-1zm-11 3v8c0 1.1046.89543 2 2 2h10c1.1046 0 2-.8954 2-2v-8zm9.4746 1.6367 1.4141 1.4141-4.9492 4.9492-2.8281-2.8281 1.4141-1.4141 1.4141 1.4141z" fill="#a5efac"/>
-</svg>

+ 0 - 7
resources/dark/icon_animated_sprite.svg

@@ -1,7 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g fill="#a5b7f3">
-<path d="m7 0c-1.108 0-2 .89199-2 2h7c1.108 0 2 .89199 2 2v6c1.108 0 2-.89199 2-2v-6c0-1.108-.89199-2-2-2z" fill-opacity=".39216"/>
-<path d="m5 2c-1.108 0-2 .89199-2 2h7c1.108 0 2 .89199 2 2v7c1.108 0 2-.89199 2-2v-7c0-1.108-.89199-2-2-2z" fill-opacity=".58824"/>
-<path d="m3 4c-1.108 0-2 .89199-2 2v7c0 1.108.89199 2 2 2h7c1.108 0 2-.89199 2-2v-7c0-1.108-.89199-2-2-2zm0 4c.554 0 1 .446 1 1v1c0 .554-.446 1-1 1s-1-.446-1-1v-1c0-.554.446-1 1-1zm7 0c.554 0 1 .446 1 1v1c0 .554-.446 1-1 1s-1-.446-1-1v-1c0-.554.446-1 1-1zm-6 4h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25-1.7324z"/>
-</g>
-</svg>

+ 0 - 7
resources/dark/icon_animated_sprite_3d.svg

@@ -1,7 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g fill="#fc9c9c">
-<path d="m7 0c-1.108 0-2 .89199-2 2h7c1.108 0 2 .89199 2 2v6c1.108 0 2-.89199 2-2v-6c0-1.108-.89199-2-2-2z" fill-opacity=".39216"/>
-<path d="m5 2c-1.108 0-2 .89199-2 2h7c1.108 0 2 .89199 2 2v7c1.108 0 2-.89199 2-2v-7c0-1.108-.89199-2-2-2z" fill-opacity=".58824"/>
-<path d="m3 4c-1.108 0-2 .89199-2 2v7c0 1.108.89199 2 2 2h7c1.108 0 2-.89199 2-2v-7c0-1.108-.89199-2-2-2zm0 4c.554 0 1 .446 1 1v1c0 .554-.446 1-1 1s-1-.446-1-1v-1c0-.554.446-1 1-1zm7 0c.554 0 1 .446 1 1v1c0 .554-.446 1-1 1s-1-.446-1-1v-1c0-.554.446-1 1-1zm-6 4h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25-1.7324z"/>
-</g>
-</svg>

+ 0 - 3
resources/dark/icon_animation_player.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m1 1037.4v14h1.1667v-2h1.8333v2h8v-2h2v2h1v-14h-1v2h-2v-2h-8v2h-1.8333v-2zm1.1667 4h1.8333v2h-1.8333zm9.8333 0h2v2h-2zm-9.8333 4h1.8333v2h-1.8333zm9.8333 0h2v2h-2z" fill="#cea4f1"/>
-</svg>

+ 0 - 3
resources/dark/icon_animation_tree.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m1 1v14h1.166v-2h1.834v2h8v-2h2v2h1v-14h-1v2h-2v-2h-8v2h-1.834v-2zm4 3h2v2h4v2h-2v2h2v2h-3a1.0001 1.0001 0 0 1-1-1v-3h-1a1.0001 1.0001 0 0 1-1-1v-2zm-2.834 1h1.834v2h-1.834zm9.834 0h2v2h-2zm-9.834 4h1.834v2h-1.834zm9.834 0h2v2h-2z" fill="#cea4f1"/>
-</svg>

+ 0 - 3
resources/dark/icon_animation_tree_player.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m1 1v14h1.166v-2h1.834v2h8v-2h2v2h1v-14h-1v2h-2v-2h-8v2h-1.834v-2zm4 3h2v2h4v2h-2v2h2v2h-3a1.0001 1.0001 0 0 1-1-1v-3h-1a1.0001 1.0001 0 0 1-1-1v-2zm-2.834 1h1.834v2h-1.834zm9.834 0h2v2h-2zm-9.834 4h1.834v2h-1.834zm9.834 0h2v2h-2z" fill="#cea4f1"/>
-</svg>

+ 0 - 3
resources/dark/icon_area.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m1 1v4h2v-2h2v-2zm10 0v2h2v2h2v-4zm-7 3v8h8v-8zm2 2h4v4h-4zm-5 5v4h4v-2h-2v-2zm12 0v2h-2v2h4v-4z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_area_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m1 1v4h2v-2h2v-2zm10 0v2h2v2h2v-4zm-7 3v8h8v-8zm2 2h4v4h-4zm-5 5v4h4v-2h-2v-2zm12 0v2h-2v2h4v-4z" fill="#a5b7f3"/>
-</svg>

+ 0 - 11
resources/dark/icon_audio_stream_player.svg

@@ -1,11 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
-<stop stop-color="#ff7a7a" offset="0"/>
-<stop stop-color="#e1dc7a" offset=".5"/>
-<stop stop-color="#66ff9e" offset="1"/>
-</linearGradient>
-<g transform="translate(0 -1036.4)">
-<path d="m10.023 1044.4c-.56139-.013-1.0235.4264-1.0234.9724v5.0542c.0006911.7482.83361 1.2154 1.5.8414l4-2.5262c.66694-.3743.66694-1.3104 0-1.6847l-4-2.5261c-.14505-.082-.30893-.1269-.47656-.131z" fill="#e0e0e0"/>
-<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -.24609.037109l-7 2a1.0001 1.0001 0 0 0 -.72461.96094v5.5508a2.5 2.5 0 0 0 -.5-.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961-2.4121 1.0001 1.0001 0 0 0 .0039062-.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293-.99805z" fill="url(#a)"/>
-</g>
-</svg>

+ 0 - 11
resources/dark/icon_audio_stream_player_2_d.svg

@@ -1,11 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
-<stop stop-color="#ff7a7a" offset="0"/>
-<stop stop-color="#e1dc7a" offset=".5"/>
-<stop stop-color="#66ff9e" offset="1"/>
-</linearGradient>
-<g transform="translate(0 -1036.4)">
-<path d="m10.023 1044.4c-.56139-.013-1.0235.4264-1.0234.9724v5.0542c.0006911.7482.83361 1.2154 1.5.8414l4-2.5262c.66694-.3743.66694-1.3104 0-1.6847l-4-2.5261c-.14505-.082-.30893-.1269-.47656-.131z" fill="#a5b7f3"/>
-<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -.24609.037109l-7 2a1.0001 1.0001 0 0 0 -.72461.96094v5.5508a2.5 2.5 0 0 0 -.5-.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961-2.4121 1.0001 1.0001 0 0 0 .0039062-.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293-.99805z" fill="url(#a)"/>
-</g>
-</svg>

+ 0 - 11
resources/dark/icon_audio_stream_player_3_d.svg

@@ -1,11 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
-<stop stop-color="#ff7a7a" offset="0"/>
-<stop stop-color="#e1dc7a" offset=".5"/>
-<stop stop-color="#66ff9e" offset="1"/>
-</linearGradient>
-<g transform="translate(0 -1036.4)">
-<path d="m10.023 1044.4c-.56139-.013-1.0235.4264-1.0234.9724v5.0542c.0006911.7482.83361 1.2154 1.5.8414l4-2.5262c.66694-.3743.66694-1.3104 0-1.6847l-4-2.5261c-.14505-.082-.30893-.1269-.47656-.131z" fill="#fc9c9c"/>
-<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -.24609.037109l-7 2a1.0001 1.0001 0 0 0 -.72461.96094v5.5508a2.5 2.5 0 0 0 -.5-.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961-2.4121 1.0001 1.0001 0 0 0 .0039062-.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293-.99805z" fill="url(#a)"/>
-</g>
-</svg>

+ 0 - 3
resources/dark/icon_back_buffer_copy.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m1 1v11h5v-2h-3v-7h6v-2zm6 3v11h8v-11zm2 2h4v7h-4z" fill="#a5b7f3"/>
-</svg>

+ 0 - 3
resources/dark/icon_baked_lightmap.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m2 1v2h12v-2zm-1 3v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-9zm2 1h1v1h-1zm3 0h1v1h-1zm3 0h1v1h-1zm3 0h1v1h-1zm-9 2h10v6h-10zm3 1v1h4v-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_bone_2_d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804.7205 2.4664 2.4663 0 0 0 -.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397.6955 2.4664 2.4663 0 0 0 .69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 .31408-3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004-.3102 2.4664 2.4663 0 0 0 0-3.4875 2.4664 2.4663 0 0 0 -1.397-.6974 2.4664 2.4663 0 0 0 -.69561-1.3971 2.4664 2.4663 0 0 0 -1.7072-.7205z" fill="#a5b7f3"/>
-</svg>

+ 0 - 3
resources/dark/icon_bone_attachment.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804.7205 2.4664 2.4663 0 0 0 -.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397.6955 2.4664 2.4663 0 0 0 .69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 .31408-3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004-.3102 2.4664 2.4663 0 0 0 0-3.4875 2.4664 2.4663 0 0 0 -1.397-.6974 2.4664 2.4663 0 0 0 -.69561-1.3971 2.4664 2.4663 0 0 0 -1.7072-.7205z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_button.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m7 1v3.1328l-1.4453-.96484-1.1094 1.6641 3 2a1.0001 1.0001 0 0 0 1.1094 0l3-2-1.1094-1.6641-1.4453.96484v-3.1328zm-1.5 8c-.831 0-1.5.669-1.5 1.5v1.5h-2v2h12v-2h-2v-1.5c0-.831-.669-1.5-1.5-1.5z" fill="#a5efac"/>
-</svg>

File diff suppressed because it is too large
+ 0 - 1
resources/dark/icon_c_p_u_particles.svg


File diff suppressed because it is too large
+ 0 - 1
resources/dark/icon_c_p_u_particles_2_d.svg


+ 0 - 3
resources/dark/icon_camera.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m9 1038.4a3 3 0 0 0 -2.9883 2.7774 3 3 0 0 0 -2.0117-.7774 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8243v2.1757c0 .554.44599 1 1 1h6c.55401 0 1-.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1-2.2305 3 3 0 0 0 -3-3z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_camera_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m9 1038.4a3 3 0 0 0 -2.9883 2.7774 3 3 0 0 0 -2.0117-.7774 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8243v2.1757c0 .554.44599 1 1 1h6c.55401 0 1-.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1-2.2305 3 3 0 0 0 -3-3z" fill="#a5b7f3"/>
-</svg>

+ 0 - 3
resources/dark/icon_canvas_layer.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1a2 2 0 0 0 -2 2v6h1v-6a1 1 0 0 1 1-1h6v-1zm10.303 0c-.4344 0-.86973.16881-1.2012.50586l-6.8008 6.918 2.4004 2.4414 6.8008-6.918c.66286-.6742.66286-1.7672 0-2.4414-.33144-.33705-.76482-.50586-1.1992-.50586zm.69727 6v6a1 1 0 0 1 -1 1h-6v1h6a2 2 0 0 0 2-2v-6zm-9.8848 2.5781c-.48501-.048725-.90521.12503-1.1953.45508-.26373.3-.41992.72958-.41992 1.2383 0 1.6277-3.1385-.17848-.33789 2.6699.88382.899 2.6552.67038 3.5391-.22852.88384-.899.88382-2.357 0-3.2559-.55011-.55955-1.1009-.83018-1.5859-.87891z" fill="#e0e0e0" fill-opacity=".99608"/>
-</svg>

+ 0 - 10
resources/dark/icon_canvas_modulate.svg

@@ -1,10 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path d="m1 1037.4v14h14v-14zm2 2h10v10h-10z" fill="#a5b7f3"/>
-<g fill-rule="evenodd">
-<path d="m12 1048.4h-5l5-5z" fill="#70bfff"/>
-<path d="m4 1040.4h5l-5 5z" fill="#ff7070"/>
-<path d="m4 1048.4v-3l5-5h3v3l-5 5z" fill="#7aff70"/>
-</g>
-</g>
-</svg>

+ 0 - 3
resources/dark/icon_center_container.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .89543-2 2v10c0 1.1046.89543 2 2 2h10c1.1046 0 2-.89543 2-2v-10c0-1.1046-.89543-2-2-2zm0 2h10v10h-10zm3 1 2 2 2-2zm-2 2v4l2-2zm8 0-2 2 2 2zm-4 4-2 2h4z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_check_box.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 2c-1.1046 0-2 .89543-2 2v9c0 1.1046.89543 2 2 2h9c1.1046 0 2-.89543 2-2v-4.9277l-2 2v2.9277h-9v-9h6.5859l2-2zm9.3633 2.0508-4.9492 4.9492-1.4141-1.4141-1.4141 1.4141 2.8281 2.8281 6.3633-6.3633z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_check_button.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m5 4a4 4 0 0 0-4 4 4 4 0 0 0 4 4h6a4 4 0 0 0 4-4 4 4 0 0 0-4-4zm0 2h2.541a4 4 0 0 0-0.54102 2 4 4 0 0 0 0.54102 2h-2.541a2 2 0 0 1-2-2 2 2 0 0 1 2-2z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_clipped_camera.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m6.5 12v4h3v-1h-2v-3zm-1 0h-2c-.5 0-1 .5-1 1v2c-.01829.53653.5 1 1 1h2v-1h-2v-2h2zm4-12c-1.5691.0017903-2.8718 1.2125-2.9883 2.7773-.55103-.49952-1.268-.77655-2.0117-.77734-1.6569 0-3 1.3431-3 3 .00179 1.2698.80282 2.4009 2 2.8242v2.1758c0 .554.44599 1 1 1h6c.55401 0 1-.446 1-1v-1l3 2v-6l-3 2v-1.7695c.63486-.56783.99842-1.3788 1-2.2305 0-1.6569-1.3431-3-3-3zm1 12v4h1v-1h1c.55228 0 1-.44772 1-1v-1c0-.55228-.44775-.99374-1-1h-1zm1 1h1v1h-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_collision_polygon.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#fc9c9c" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
-</svg>

+ 0 - 3
resources/dark/icon_collision_polygon_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#a5b7f3" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/>
-</svg>

+ 0 - 3
resources/dark/icon_collision_shape.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m8 1050.4-6-3v-6l6-3 6 3v6z" fill="none" stroke="#fc9c9c" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
-</svg>

+ 0 - 3
resources/dark/icon_collision_shape_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m14 1050.4h-12v-12h12z" fill="none" stroke="#a5b7f3" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/>
-</svg>

+ 0 - 3
resources/dark/icon_color_picker.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m8 1c-1.108 0-2 0.892-2 2v2h-1v2h1v5a2 2 0 0 0 1 1.7285v1.2715h2v-1.2695a2 2 0 0 0 1-1.7305v-5h1v-2h-1v-2c0-1.108-0.892-2-2-2zm-1 6h2v5a1 1 0 0 1-1 1 1 1 0 0 1-1-1z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_color_picker_button.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m13 1c-1.108 0-2 .892-2 2v2h-1v2h1v5a2 2 0 0 0 1 1.7285v1.2715h2v-1.2695a2 2 0 0 0 1-1.7305v-5h1v-2h-1v-2c0-1.108-.892-2-2-2zm-9 1v3.1328l-1.4453-.96484-1.1094 1.6641 3 2c.3359.2239.77347.2239 1.1094 0l3-2-1.1094-1.6641-1.4453.96484v-3.1328zm8 5h2v5a1 1 0 0 1 -1 1 1 1 0 0 1 -1-1zm-8.5 3c-.831 0-1.5.669-1.5 1.5v.5 1h-1v2h8v-2h-1v-1-.5c0-.831-.669-1.5-1.5-1.5z" fill="#a5efac"/>
-</svg>

+ 0 - 10
resources/dark/icon_color_rect.svg

@@ -1,10 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m1 1v14h14v-14zm2 2h10v10h-10z" fill="#a5efac"/>
-<g fill-rule="evenodd">
-<path d="m12 1048.4h-4.8l4.8-4.8z" fill="#70bfff"/>
-<path d="m4 1040.4h4.8l-4.8 4.8z" fill="#ff7070"/>
-<path d="m4 1048.4v-3.2l4.8-4.8h3.2v3.2l-4.8 4.8z" fill="#7aff70"/>
-</g>
-</g>
-</svg>

File diff suppressed because it is too large
+ 0 - 1
resources/dark/icon_cone_twist_joint.svg


+ 0 - 3
resources/dark/icon_confirmation_dialog.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .8954-2 2v1h14v-1c0-1.1046-.89543-2-2-2zm9 1h1v1h-1zm-11 3v8c0 1.1046.89543 2 2 2h10c1.1046 0 2-.8954 2-2v-8zm6.9863 1.002c.34689-.0022844.6986.055762 1.0391.17969 1.3618.4956 2.1813 1.9126 1.9297 3.3398-.19105 1.0835-.96172 1.9461-1.9551 2.3008v.17773h-1-1v-.8418a1.0001 1.0001 0 0 1 1-1.1582c.49193 0 .89895-.34177.98438-.82617.085424-.4845-.18031-.94508-.64258-1.1133-.46227-.1683-.96106.013453-1.207.43945a1.0002 1.0002 0 0 1 -1.7324-1c.54346-.94148 1.5433-1.4912 2.584-1.498zm-.98633 6.998h2v1h-2z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_container.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .89543-2 2h2zm2 0v2h2v-2zm4 0v2h2v-2zm4 0v2h2c0-1.1046-.89543-2-2-2zm-12 4v2h2v-2zm12 0v2h2v-2zm-12 4v2h2v-2zm12 0v2h2v-2zm-12 4c0 1.1046.89543 2 2 2v-2zm4 0v2h2v-2zm4 0v2h2v-2zm4 0v2c1.1046 0 2-.89543 2-2z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_control.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m8 2a6 6 0 0 0-6 6 6 6 0 0 0 6 6 6 6 0 0 0 6-6 6 6 0 0 0-6-6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1-4 4 4 4 0 0 1-4-4 4 4 0 0 1 4-4z" fill="#a5efac"/>
-</svg>

+ 0 - 6
resources/dark/icon_damped_spring_joint_2d.svg

@@ -1,6 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g fill-opacity=".98824">
-<path d="m4 3v2l8 3v-2zm0 5v2l8 3v-2z" fill="#708cea"/>
-<path d="m4 3v2l8-2v-2zm0 5v2l8-2v-2zm0 5v2l8-2v-2z" fill="#a5b7f3"/>
-</g>
-</svg>

+ 0 - 3
resources/dark/icon_directional_light.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m7 1v3h2v-3zm-2.5352 2.0508-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141zm7.0703 0-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141zm-3.5352 1.9492c-1.6569 0-3 1.3432-3 3s1.3431 3 3 3 3-1.3432 3-3-1.3431-3-3-3zm-7 2v2h3v-2zm11 0v2h3v-2zm-7.5352 3.1211-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141zm7.0703 0-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141zm-4.5352 1.8789v3h2v-3z" fill="#fc9c9c" fill-opacity=".99608"/>
-</svg>

+ 0 - 3
resources/dark/icon_file_dialog.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .8954-2 2v1h14v-1c0-1.1046-.89543-2-2-2zm9 1h1v1h-1zm-11 3v8c0 1.1046.89543 2 2 2h10c1.1046 0 2-.8954 2-2v-8zm3 2h3c1 0 1 2 2 2h3v4h-8z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_g_i_probe.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4v-2h-3v-10h9v-2zm9 3a4 4 0 0 0 -4 4 4 4 0 0 0 2 3.459v.54102c0 .55401.44599 1 1 1h2c.55401 0 1-.44599 1-1v-.54102a4 4 0 0 0 2-3.459 4 4 0 0 0 -4-4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2-2 2 2 0 0 1 2-2zm-1 8v1h2v-1z" fill="#fc9c9c" fill-opacity=".99608"/>
-</svg>

+ 0 - 3
resources/dark/icon_generic_6_d_o_f_joint.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m8 1a1 1 0 0 0 -1 1v4.8828l-3.5527-1.7773a1 1 0 0 0 -.48438-.10352 1 1 0 0 0 -.85742.55078 1 1 0 0 0 .44727 1.3418l3.2109 1.6055-3.2109 1.6055a1 1 0 0 0 -.44727 1.3418 1 1 0 0 0 1.3418.44726l3.5527-1.7773v3.8828a1 1 0 0 0 1 1 1 1 0 0 0 1-1v-3.8828l3.5527 1.7773a1 1 0 0 0 1.3418-.44726 1 1 0 0 0 -.44726-1.3418l-3.2109-1.6055 3.2109-1.6055a1 1 0 0 0 .44726-1.3418 1 1 0 0 0 -.88672-.55273 1 1 0 0 0 -.45508.10547l-3.5527 1.7773v-4.8828a1 1 0 0 0 -1-1z" fill="#fc9c9c" fill-rule="evenodd"/>
-</svg>

+ 0 - 6
resources/dark/icon_graph_edit.svg

@@ -1,6 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0 -1-1.7305v-5.8555l4.793 4.793 1.4141-1.4141-4.793-4.793h5.8574a2 2 0 0 0 1.7285 1 2 2 0 0 0 2-2 2 2 0 0 0 -2-2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285-1zm10.656 6.9297-.70703.70703 1.4141 1.4141.70703-.70703zm-1.4141 1.4141-3.8887 3.8887-.35352 1.7676 1.7676-.35352 3.8887-3.8887-1.4141-1.4141z" fill="#a5efac"/>
-<ellipse cx="3" cy="1039.4" fill="#6e6e6e"/>
-</g>
-</svg>

+ 0 - 6
resources/dark/icon_graph_node.svg

@@ -1,6 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0-2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0-1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0-1-1.7305v-5.8555l4.0859 4.0859 1.4141-1.4141-4.0859-4.0859h5.8574a2 2 0 0 0 1.7285 1 2 2 0 0 0 2-2 2 2 0 0 0-2-2 2 2 0 0 0-1.7305 1h-6.541a2 2 0 0 0-1.7285-1zm9.5 9a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5z" fill="#a5efac"/>
-<ellipse cx="3" cy="1039.4" fill="#6e6e6e"/>
-</g>
-</svg>

+ 0 - 3
resources/dark/icon_grid_container.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .89543-2 2v10c0 1.1046.89543 2 2 2h10c1.1046 0 2-.89543 2-2v-10c0-1.1046-.89543-2-2-2zm0 2h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm-8 4h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm-8 4h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_groove_joint_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m15 1037.4h-5v6h-5v2h5v6h5zm-7 0h-7v14h7v-4h-5v-6h5z" fill="#a5b7f3" fill-opacity=".98824"/>
-</svg>

+ 0 - 3
resources/dark/icon_h_box_container.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .89543-2 2v10c0 1.1046.89543 2 2 2h10c1.1046 0 2-.89543 2-2v-10c0-1.1046-.89543-2-2-2zm0 2h2v10h-2zm4 0h2v10h-2zm4 0h2v10h-2z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_h_scroll_bar.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m15 1041.4c0-1.108-.892-2-2-2h-10c-1.108 0-2 .892-2 2v6c0 1.108.892 2 2 2h10c1.108 0 2-.892 2-2zm-1 2.9883a1.0001 1.0001 0 0 1 -.168.5664l-2 3a1.0001 1.0001 0 1 1 -1.664-1.1094l1.6289-2.4453-1.6289-2.4453a1.0001 1.0001 0 1 1 1.664-1.1094l2 3a1.0001 1.0001 0 0 1 .168.543zm-7.9922-2.9981a1.0001 1.0001 0 0 1 -.1758.5645l-1.6308 2.4453 1.6308 2.4453a1.0001 1.0001 0 1 1 -1.664 1.1094l-2-3a1.0001 1.0001 0 0 1 0-1.1094l2-3a1.0001 1.0001 0 0 1 1.8398.5449z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_h_separator.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m5 2v3h6v-3zm-4 5v2h14v-2zm4 4v3h6v-3z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_h_slider.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m2 3c-.55228 0-1 .44772-1 1v2c0 .55228.44772 1 1 1s1-.44772 1-1v-2c0-.55228-.44772-1-1-1zm12 0c-.55228 0-1 .44772-1 1v2c0 .55228.44772 1 1 1s1-.44772 1-1v-2c0-.55228-.44772-1-1-1zm-6 1c-.55228 0-1 .44772-1 1s.44772 1 1 1 1-.44772 1-1-.44772-1-1-1zm5 5c-1.1046 0-2 .89543-2 2 0 1.1046.89543 2 2 2 1.0099-.000337 1.8611-.75351 1.9844-1.7559.04003-.16104.03936-.32952-.002-.49024-.12404-1.0008-.97388-1.7527-1.9824-1.7539zm-11 1c-1.3523-.019125-1.3523 2.0191 0 2h7.1309c-.085635-.32648-.1296-.66248-.13086-1 .00189-.3376.046518-.67361.13281-1z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_h_split_container.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .89543-2 2v10c0 1.1046.89543 2 2 2h10c1.1046 0 2-.89543 2-2v-10c0-1.1046-.89543-2-2-2zm0 2h4v3l-2 2 2 2v3h-4zm6 0h4v10h-4v-3l2-2-2-2z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_h_t_t_p_request.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m4 1-3 4h2v3h2v-3h2zm7 0v3h-2l3 4 3-4h-2v-3zm-10 9v5h1v-2h1v2h1v-5h-1v2h-1v-2zm4 0v1h1v4h1v-4h1v-1zm4 0v1h1v4h1v-4h1v-1zm4 0v5h1v-2h2v-3h-2zm1 1h1v1h-1z" fill="#e0e0e0" fill-opacity=".99608"/>
-</svg>

+ 0 - 3
resources/dark/icon_hinge_joint.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m7.2832 1.3281a1.0001 1.0001 0 0 0 -.88086.51172l-3.6895 6.3906c.40599-.13877.83411-.23047 1.2871-.23047.37043 0 .72206.067873 1.0625.16211l3.0723-5.3223a1.0001 1.0001 0 0 0 -.85156-1.5117zm-3.2832 7.6719a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h10a1 1 0 0 0 1-1 1 1 0 0 0 -1-1h-7.1738a3 3 0 0 0 .17383-1 3 3 0 0 0 -3-3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_immediate_geometry.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m2.9208 1046.4c-.26373.3-.4204.7296-.4204 1.2383 0 1.6277-3.1381-.1781-.33757 2.6703.88382.899 2.6544.6701 3.5382-.2288.88384-.899.88382-2.3565 0-3.2554-1.1002-1.1191-2.2001-1.0845-2.7803-.4244zm2.3802-1.6103 2.4005 2.4416 6.8014-6.9177c.66286-.6742.66286-1.7673 0-2.4415-.66288-.6741-1.7376-.6741-2.4005 0z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_interpolated_camera.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m9.5.00004c-1.5691.0017903-2.8718 1.2125-2.9883 2.7773-.55103-.49952-1.268-.77655-2.0117-.77734-1.6569 0-3 1.3431-3 3 .00179 1.2698.80282 2.4009 2 2.8242v2.1758c0 .554.44599 1 1 1h6c.55401 0 .9853-.4462 1-1v-1l3 2v-6l-3 2v-1.7695c.63486-.56783.99842-1.3788 1-2.2305 0-1.6569-1.3431-3-3-3zm-6 12v4h1v-4zm3 0v4h1v-1h1c.55228 0 1-.44772 1-1v-1c0-.55228-.44824-1.024-1-1h-1zm5 0c-.55228 0-1 .44772-1 1v2c0 .55228.44772 1 1 1h1c.55228 0 1-.44772 1-1v-2c0-.55228-.44772-1-1-1zm-4 1h1v1h-1zm4 0h1v2h-1z" fill="#fc9c9c"/>
-</svg>

+ 0 - 3
resources/dark/icon_item_list.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .89543-2 2v10c0 1.1046.89543 2 2 2h10c1.1046 0 2-.89543 2-2v-10c0-1.1046-.89543-2-2-2zm0 2h10v10h-10zm1 1v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm-6 3v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm-6 3v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_kinematic_body.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m6 1c-.55401 0-1 .44599-1 1v3c0 .55401.44599 1 1 1h1v.99023a1.0001 1.0001 0 0 0 -.31641.0625l-2.0508.68359-.68359-2.0508a1.0001 1.0001 0 0 0 -.99023-.69727 1.0001 1.0001 0 0 0 -.9082 1.3281l1 3a1.0001 1.0001 0 0 0 1.2656.63281l1.6836-.56055v.61133c0 .04088.018715.07566.023437.11523l-4.5781 3.0527a1.0001 1.0001 0 1 0 1.1094 1.6641l5.0566-3.3711 1.4941 2.9863a1.0001 1.0001 0 0 0 1.2109.50195l3-1a1.0001 1.0001 0 1 0 -.63281-1.8965l-2.1777.72461-.97461-1.9512c.2759-.17764.46875-.47227.46875-.82617v-1h1.3828l.72266 1.4473a1.0001 1.0001 0 1 0 1.7891-.89453l-1-2a1.0001 1.0001 0 0 0 -.89453-.55273h-3v-1h1c.55401 0 1-.44599 1-1v-3c0-.55401-.44599-1-1-1zm0 2h1v2h-1z" fill="#fc9c9c" fill-opacity=".99608"/>
-</svg>

+ 0 - 3
resources/dark/icon_kinematic_body_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m6.4921 1c-.55401 0-1 .446-1 1v3c0 .554.44599 1 1 1h1v.9902a1.0001 1.0001 0 0 0 -.31641.062l-2.0508.6836-.68359-2.0508a1.0001 1.0001 0 0 0 -.99023-.6972 1.0001 1.0001 0 0 0 -.9082 1.3281l1 3a1.0001 1.0001 0 0 0 1.2656.6328l1.6836-.5605v.6113c0 .041.018715.076.023437.1152l-4.5781 3.0528a1.0001 1.0001 0 1 0 1.1094 1.664l5.0566-3.3711 1.4941 2.9864a1.0001 1.0001 0 0 0 1.2109.5019l3-1a1.0001 1.0001 0 1 0 -.63281-1.8965l-2.1777.7246-.97461-1.9511c.2759-.1777.46875-.4723.46875-.8262v-1h1.3828l.72266 1.4473a1.0001 1.0001 0 1 0 1.7891-.8946l-1-2a1.0001 1.0001 0 0 0 -.89453-.5527h-3v-1h1c.55401 0 1-.446 1-1v-3c0-.554-.44599-1-1-1zm0 2h1v2h-1z" fill="#a5b7f3"/>
-</svg>

+ 0 - 3
resources/dark/icon_label.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m6 3a1.0001 1.0001 0 0 0 -.70703.29297l-4 4a1.0001 1.0001 0 0 0 0 1.4141l4 4a1.0001 1.0001 0 0 0 .70703.29297h8a1.0001 1.0001 0 0 0 1-1v-8a1.0001 1.0001 0 0 0 -1-1h-8zm-1 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1z" fill="#a5efac" fill-rule="evenodd"/>
-</svg>

+ 0 - 3
resources/dark/icon_light_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m8 1a5 5 0 0 0-5 5 5 5 0 0 0 3 4.5762v2.4238h4v-2.4199a5 5 0 0 0 3-4.5801 5 5 0 0 0-5-5zm0 2a3 3 0 0 1 3 3 3 3 0 0 1-3 3 3 3 0 0 1-3-3 3 3 0 0 1 3-3zm-1 11v1h2v-1z" fill="#a5b7f3" fill-opacity=".98824"/>
-</svg>

+ 0 - 3
resources/dark/icon_light_occluder_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m8 1037.4c-2.7614 0-5 2.2386-5 5 .00253 1.9858 1.18 3.7819 3 4.5762v2.4238h4v-2.4199c1.8213-.7949 2.999-2.5929 3-4.5801 0-2.7614-2.2386-5-5-5zm0 2v6c-1.6569 0-3-1.3431-3-3s1.3431-3 3-3zm-1 11v1h2v-1z" fill="#a5b7f3" fill-opacity=".98824"/>
-</svg>

+ 0 - 3
resources/dark/icon_line_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m2 1045.4 3 4 3-10 3 6 3-2" fill="none" stroke="#a5b7f3" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
-</svg>

+ 0 - 3
resources/dark/icon_line_edit.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m2 4v5h2v-5zm-1 7c0 1.1046.89543 2 2 2h10c1.1046 0 2-.89543 2-2h-2-10z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_link_button.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m6 3a5 5 0 0 0 -4.3301 2.5 5 5 0 0 0 0 5 5 5 0 0 0 4.3301 2.5h1v-2h-1a3 3 0 0 1 -3-3 3 3 0 0 1 3-3h1v-2zm3 0v2h1a3 3 0 0 1 3 3 3 3 0 0 1 -3 3h-1v2h1a5 5 0 0 0 4.3301-2.5 5 5 0 0 0 0-5 5 5 0 0 0 -4.3301-2.5zm-3 4a.99998.99998 0 0 0 -1 1 .99998.99998 0 0 0 1 1h4a.99998.99998 0 0 0 1-1 .99998.99998 0 0 0 -1-1z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_listener.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m6 1a5 5 0 0 0 -5 5h2a3 3 0 0 1 3-3 3 3 0 0 1 3 3c0 1.75-.54175 2.3583-1.1406 2.8574-.29944.2495-.62954.44071-.97656.69141-.17351.1253-.35729.26529-.53711.49219-.17982.227-.3457.58398-.3457.95898 0 1.2778-.31632 1.5742-.63867 1.7676-.32236.1934-.86133.23242-1.3613.23242h-1v2h1c.5 0 1.461.038922 2.3887-.51758.87316-.5239 1.4826-1.6633 1.5566-3.2266.011365-.0098.027247-.024684.10938-.083984.21547-.1556.63537-.40194 1.0859-.77734.90112-.751 1.8594-2.1445 1.8594-4.3945a5 5 0 0 0 -5-5zm7.9277 1-1.7383 1.0039a6 6 0 0 1 .81055 2.9961 6 6 0 0 1 -.80859 2.998l1.7363 1.002a8 8 0 0 0 0-8z" fill="#fc9c9c"/>
-</svg>

+ 0 - 6
resources/dark/icon_margin_container.svg

@@ -1,6 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)" fill="#a5efac">
-<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 .89543-2 2v10c0 1.1046.89543 2 2 2h10c1.1046 0 2-.89543 2-2v-10c0-1.1046-.89543-2-2-2zm0 2h10v10h-10z"/>
-<path d="m4 1042.4v4l2-2z"/>
-</g>
-</svg>

+ 0 - 3
resources/dark/icon_menu_button.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m1 1v4h14v-4zm5 1h4l-2 2zm-4 4a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-7a1 1 0 0 0-1-1zm1 2h10v2h-10zm0 3h10v2h-10z" fill="#a5efac"/>
-</svg>

+ 0 - 3
resources/dark/icon_mesh_instance.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1a2 2 0 0 0-2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0-1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305-1h6.541a2 2 0 0 0 1.7285 1 2 2 0 0 0 2-2 2 2 0 0 0-1.0312-1.75h0.03125v-6.5215a2 2 0 0 0 1-1.7285 2 2 0 0 0-2-2 2 2 0 0 0-1.7305 1h-6.541a2 2 0 0 0-1.7285-1zm2.4141 3h5.8574a2 2 0 0 0 0.72852 0.73047v5.8555l-6.5859-6.5859zm-1.4141 1.4141 6.5859 6.5859h-5.8574a2 2 0 0 0-0.72852-0.73047v-5.8555z" fill="#fc9c9c" fill-opacity=".99608"/>
-</svg>

+ 0 - 3
resources/dark/icon_mesh_instance_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1a2 2 0 0 0-2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0-1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305-1h6.541a2 2 0 0 0 1.7285 1 2 2 0 0 0 2-2 2 2 0 0 0-1.0312-1.75h0.03125v-6.5215a2 2 0 0 0 1-1.7285 2 2 0 0 0-2-2 2 2 0 0 0-1.7305 1h-6.541a2 2 0 0 0-1.7285-1zm2.4141 3h5.8574a2 2 0 0 0 0.72852 0.73047v5.8555l-6.5859-6.5859zm-1.4141 1.4141 6.5859 6.5859h-5.8574a2 2 0 0 0-0.72852-0.73047v-5.8555z" fill="#a5b7f3"/>
-</svg>

+ 0 - 3
resources/dark/icon_multi_mesh_instance.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1c-1.1046 0-2 .89543-2 2 .0005649.71397.38169 1.3735 1 1.7305v6.541c-.61771.35663-.99874 1.0152-1 1.7285 0 1.1046.89543 2 2 2 .71397-.000565 1.3735-.38169 1.7305-1h1.2695v-2h-1.2715c-.17478-.30301-.42598-.55488-.72852-.73047v-5.8555l3.5859 3.5859h1.4141v-1.4141l-3.5859-3.5859h5.8574c.17532.30158.42647.55205.72852.72656v1.2734h2v-1.2695c.61831-.35698.99944-1.0165 1-1.7305 0-1.1046-.89543-2-2-2-.71397.0005648-1.3735.38169-1.7305 1h-6.541c-.35663-.61771-1.0152-.99874-1.7285-1zm8 7v3h-3v2h3v3h2v-3h3v-2h-3v-3z" fill="#fc9c9c" fill-opacity=".99608"/>
-</svg>

+ 0 - 4
resources/dark/icon_multi_mesh_instance_2d.svg

@@ -1,4 +0,0 @@
-<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg">
-<path d="m-1-1h582v402h-582z" fill="none"/>
-<path d="m3 1c-1.1046 0-2 .89543-2 2 .00056.71397.38169 1.3735 1 1.7305v6.541c-.61771.35664-.99874 1.0152-1 1.7285 0 1.1046.89543 2 2 2 .71397-.00056 1.3735-.38169 1.7305-1h1.2695v-2h-1.2715c-.17478-.30301-.42598-.55488-.72852-.73047v-5.8555l3.5859 3.5859h1.4141v-1.4141l-3.5859-3.5859h5.8574c.17532.30158.42647.55205.72852.72656v1.2734h2v-1.2695c.61831-.35698.99944-1.0165 1-1.7305 0-1.1046-.89543-2-2-2-.71397.00056-1.3735.38169-1.7305 1h-6.541c-.35664-.61771-1.0152-.99874-1.7285-1zm8 7v3h-3v2h3v3h2v-3h3v-2h-3v-3z" fill="#a5b7f3" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
-</svg>

+ 0 - 3
resources/dark/icon_navigation.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m3 1050.4 5-2 5 2-5-12z" fill="#fc9c9c" fill-opacity=".99608" fill-rule="evenodd"/>
-</svg>

+ 0 - 3
resources/dark/icon_navigation_2d.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path transform="translate(0 -1036.4)" d="m3 1050.4 5-2 5 2-5-12z" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd"/>
-</svg>

+ 0 - 3
resources/dark/icon_navigation_mesh_instance.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305-1h2.5078l.75-2h-3.2598a2 2 0 0 0 -.72852-.73047v-5.8555l4.6973 4.6973.77148-2.0566-4.0547-4.0547h5.8574a2 2 0 0 0 .72852.73047v.27148a2.0002 2.0002 0 0 1 .023438 0 2.0002 2.0002 0 0 1 1.8496 1.2969l.12695.33789v-1.9082a2 2 0 0 0 1-1.7285 2 2 0 0 0 -2-2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285-1zm9 6-3 8 3-2 3 2z" fill="#fc9c9c" fill-opacity=".99608"/>
-</svg>

+ 0 - 6
resources/dark/icon_navigation_polygon_instance.svg

@@ -1,6 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd">
-<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4.9023a2.1002 2.1002 0 0 1 .13086-.73633l.47461-1.2637h-4.5078v-10h8.5859l-4.293 4.293a1.0001 1.0001 0 0 0 0 1.4141l1.3262 1.3262 1.4141-3.7695a2.1002 2.1002 0 0 1 1.9922-1.3613 2.1002 2.1002 0 0 1 .43555.050781l2.2461-2.2461a1.0001 1.0001 0 0 0 -.70703-1.707h-12z"/>
-<path d="m15 1051.4-3-8-3 8 3-2z"/>
-</g>
-</svg>

Some files were not shown because too many files changed in this diff