diff --git a/.gitignore b/.gitignore index fdac585..4e36fcf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,5 @@ out node_modules -server -publish/*.vsix -test *.vsix -configurations/tmp.txt -configurations/test.py .vscode-test workspace.code-workspace diff --git a/.vscode-test.js b/.vscode-test.js new file mode 100644 index 0000000..a96fa20 --- /dev/null +++ b/.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', + } +); diff --git a/.vscode/launch.json b/.vscode/launch.json index 1bc3c49..65b8169 100644 --- a/.vscode/launch.json +++ b/.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" diff --git a/.vscodeignore b/.vscodeignore index 6303142..318ffbf 100644 --- a/.vscodeignore +++ b/.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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a254b5d --- /dev/null +++ b/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 + } +} +``` diff --git a/README.md b/README.md index bc8ad36..96c8fdb 100644 --- a/README.md +++ b/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 +- [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) -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 +# Features -![Showing the documentation on hover feature](img/godot-tools.png) +(**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 +# 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|", + "editor_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 +# Contributing -#### 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. +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. diff --git a/configurations/gdresource-configuration.json b/configurations/gdresource-configuration.json deleted file mode 100644 index 61fbaad..0000000 --- a/configurations/gdresource-configuration.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "comments": { - "lineComment": ";" - }, - "brackets": [ - ["(", ")"], - ["[", "]"], - ["{", "}"] - ], - "autoClosingPairs": [ - ["'", "'"], - ["\"", "\""], - ["(", ")"], - ["[", "]"], - ["{", "}"] - ], - "surroundingPairs": [ - ["'", "'"], - ["\"", "\""], - ["(", ")"], - ["[", "]"], - ["{", "}"] - ] -} diff --git a/configurations/gdresource.language-configuration.json b/configurations/gdresource.language-configuration.json new file mode 100644 index 0000000..9650818 --- /dev/null +++ b/configurations/gdresource.language-configuration.json @@ -0,0 +1,24 @@ +{ + "comments": { + "lineComment": ";" + }, + "brackets": [ + ["(", ")"], + ["[", "]"], + ["{", "}"] + ], + "autoClosingPairs": [ + ["'", "'"], + ["\"", "\""], + ["(", ")"], + ["[", "]"], + ["{", "}"] + ], + "surroundingPairs": [ + ["'", "'"], + ["\"", "\""], + ["(", ")"], + ["[", "]"], + ["{", "}"] + ] +} diff --git a/configurations/gdscript-configuration.json b/configurations/gdscript-configuration.json deleted file mode 100644 index 44bfed0..0000000 --- a/configurations/gdscript-configuration.json +++ /dev/null @@ -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" - } - } - ] -} diff --git a/configurations/gdscript.language-configuration.json b/configurations/gdscript.language-configuration.json new file mode 100644 index 0000000..090d7b1 --- /dev/null +++ b/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" + } + } + ] +} diff --git a/configurations/gdshader-configuration.json b/configurations/gdshader-configuration.json deleted file mode 100644 index e2fb479..0000000 --- a/configurations/gdshader-configuration.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "comments": { - "lineComment": "//", - "blockComment": ["/*", "*/"] - }, - "brackets": [ - ["(", ")"], - ["[", "]"], - ["{", "}"] - ], - "autoClosingPairs": [ - ["'", "'"], - ["\"", "\""], - ["(", ")"], - ["[", "]"], - ["{", "}"] - ], - "surroundingPairs": [ - ["'", "'"], - ["\"", "\""], - ["(", ")"], - ["[", "]"], - ["{", "}"] - ] -} diff --git a/configurations/gdshader.language-configuration.json b/configurations/gdshader.language-configuration.json new file mode 100644 index 0000000..067c08c --- /dev/null +++ b/configurations/gdshader.language-configuration.json @@ -0,0 +1,25 @@ +{ + "comments": { + "lineComment": "//", + "blockComment": ["/*", "*/"] + }, + "brackets": [ + ["(", ")"], + ["[", "]"], + ["{", "}"] + ], + "autoClosingPairs": [ + ["'", "'"], + ["\"", "\""], + ["(", ")"], + ["[", "]"], + ["{", "}"] + ], + "surroundingPairs": [ + ["'", "'"], + ["\"", "\""], + ["(", ")"], + ["[", "]"], + ["{", "}"] + ] +} diff --git a/img/hover-extresource.png b/img/hover-extresource.png new file mode 100644 index 0000000..65d56ac Binary files /dev/null and b/img/hover-extresource.png differ diff --git a/img/hover-subresource.png b/img/hover-subresource.png new file mode 100644 index 0000000..17e9623 Binary files /dev/null and b/img/hover-subresource.png differ diff --git a/img/scene-preview.png b/img/scene-preview.png new file mode 100644 index 0000000..6b11497 Binary files /dev/null and b/img/scene-preview.png differ diff --git a/media/docs.css b/media/docs.css new file mode 100644 index 0000000..e986855 --- /dev/null +++ b/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; +} diff --git a/media/pagemap.js b/media/pagemap.js new file mode 100644 index 0000000..4c50d66 --- /dev/null +++ b/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; + + +/***/ }) +/******/ ]); +}); diff --git a/media/prism.css b/media/prism.css new file mode 100644 index 0000000..79b8a14 --- /dev/null +++ b/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; +} diff --git a/package-lock.json b/package-lock.json index 8467178..4ec3888 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "godot-tools", - "version": "1.3.1", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "godot-tools", - "version": "1.3.1", + "version": "2.0.0", "license": "MIT", "dependencies": { "@vscode/debugadapter": "^1.64.0", @@ -18,11 +18,14 @@ "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" }, "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", @@ -30,9 +33,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", @@ -560,6 +566,102 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -620,6 +722,25 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -657,9 +778,9 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", - "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true }, "node_modules/@types/node": { @@ -1006,6 +1127,197 @@ "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.64.0.tgz", "integrity": "sha512-Zhf3KvB+J04M4HPE2yCvEILGVtPixXUQMLBvx4QcAtjhc5lnwlZbbt80LCsZO2B+2BH8RMgVXk3QQ5DEzEne2Q==" }, + "node_modules/@vscode/test-cli": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.4.tgz", + "integrity": "sha512-Tx0tfbxeSb2Xlo+jpd+GJrNLgKQHobhRHrYvOipZRZQYWZ82sKiK02VY09UjU1Czc/YnZnqyAnjUfaVGl3h09w==", + "dev": true, + "dependencies": { + "@types/mocha": "^10.0.2", + "chokidar": "^3.5.3", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^10.2.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "bin": { + "vscode-test": "out/bin.mjs" + } + }, + "node_modules/@vscode/test-cli/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vscode/test-cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vscode/test-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vscode/test-cli/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vscode/test-cli/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vscode/test-cli/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vscode/test-cli/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@vscode/test-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vscode/test-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", + "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vscode/test-electron/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@vscode/vsce": { "version": "2.21.1", "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.21.1.tgz", @@ -1110,6 +1422,18 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1126,6 +1450,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -1148,6 +1481,19 @@ "node": ">=4" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -1231,6 +1577,15 @@ ], "optional": true }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -1285,6 +1640,12 @@ "node": ">=8" } }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -1350,6 +1711,18 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1407,6 +1780,45 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -1414,6 +1826,61 @@ "dev": true, "optional": true }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -1461,8 +1928,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "optional": true + "dev": true }, "node_modules/create-require": { "version": "1.1.1", @@ -1529,6 +1995,18 @@ } } }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/decompress-response": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", @@ -1676,6 +2154,18 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -1732,6 +2222,15 @@ "@esbuild/win32-x64": "0.17.19" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2184,6 +2683,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, "node_modules/flat-cache": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", @@ -2204,6 +2712,34 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", @@ -2222,6 +2758,20 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -2245,6 +2795,15 @@ "wide-align": "^1.1.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -2267,9 +2826,9 @@ "optional": true }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -2388,6 +2947,15 @@ "dev": true, "optional": true }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -2419,6 +2987,33 @@ "entities": "^2.0.0" } }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -2449,6 +3044,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2497,6 +3098,18 @@ "dev": true, "optional": true }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2549,12 +3162,32 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -2562,6 +3195,24 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2617,6 +3268,18 @@ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/keytar": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.7.0.tgz", @@ -2660,6 +3323,15 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", @@ -2690,6 +3362,92 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2832,6 +3590,15 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -2851,6 +3618,148 @@ "dev": true, "optional": true }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2863,6 +3772,18 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -2904,6 +3825,15 @@ "dev": true, "optional": true }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -3014,6 +3944,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3083,6 +4019,31 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -3175,8 +4136,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true + "dev": true }, "node_modules/ps-tree": { "version": "1.2.0", @@ -3247,6 +4207,15 @@ } ] }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -3280,7 +4249,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "optional": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3291,6 +4259,27 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -3364,8 +4353,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true + "dev": true }, "node_modules/sax": { "version": "1.2.4", @@ -3382,6 +4370,15 @@ "semver": "bin/semver" } }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -3389,6 +4386,12 @@ "dev": true, "optional": true }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3503,7 +4506,6 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "optional": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -3523,6 +4525,51 @@ "node": ">=0.10.0" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -3536,6 +4583,28 @@ "node": ">=0.10.0" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -3864,8 +4933,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true + "dev": true }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", @@ -3922,6 +4990,16 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" }, + "node_modules/vscode-oniguruma": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-2.0.1.tgz", + "integrity": "sha512-poJU8iHIWnC3vgphJnrLZyI3YdqRlR27xzqDmpPXYzA93R4Gk8z7T6oqDzDoHjoikA2aS82crdXFkjELCdJsjQ==" + }, + "node_modules/vscode-textmate": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.0.0.tgz", + "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3947,6 +5025,201 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -3982,11 +5255,115 @@ "node": ">=4.0" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ya-bbcode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ya-bbcode/-/ya-bbcode-4.0.0.tgz", + "integrity": "sha512-J1mMD5a/H3rXjdZPEHdgr2DsfBb6G+KkSb2kebyP6SZqclWxVKngp+o+S55aRPLWOivHmUbvJOYdDEx125Ulag==", + "engines": { + "node": ">=16", + "npm": ">=8" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index 1d1dd77..640e41c 100644 --- a/package.json +++ b/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 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" } } diff --git a/resources/dark/icon_GUI_visibility_visible.svg b/resources/dark/icon_GUI_visibility_visible.svg deleted file mode 100644 index e203119..0000000 --- a/resources/dark/icon_GUI_visibility_visible.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_a_r_v_r_anchor.svg b/resources/dark/icon_a_r_v_r_anchor.svg deleted file mode 100644 index 5bb7c53..0000000 --- a/resources/dark/icon_a_r_v_r_anchor.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_a_r_v_r_camera.svg b/resources/dark/icon_a_r_v_r_camera.svg deleted file mode 100644 index 123f277..0000000 --- a/resources/dark/icon_a_r_v_r_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_a_r_v_r_controller.svg b/resources/dark/icon_a_r_v_r_controller.svg deleted file mode 100644 index 60487e3..0000000 --- a/resources/dark/icon_a_r_v_r_controller.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_a_r_v_r_origin.svg b/resources/dark/icon_a_r_v_r_origin.svg deleted file mode 100644 index 558fe79..0000000 --- a/resources/dark/icon_a_r_v_r_origin.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_accept_dialog.svg b/resources/dark/icon_accept_dialog.svg deleted file mode 100644 index bed006d..0000000 --- a/resources/dark/icon_accept_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_animated_sprite.svg b/resources/dark/icon_animated_sprite.svg deleted file mode 100644 index 044168b..0000000 --- a/resources/dark/icon_animated_sprite.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/resources/dark/icon_animated_sprite_3d.svg b/resources/dark/icon_animated_sprite_3d.svg deleted file mode 100644 index 69546be..0000000 --- a/resources/dark/icon_animated_sprite_3d.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/resources/dark/icon_animation_player.svg b/resources/dark/icon_animation_player.svg deleted file mode 100644 index a68af49..0000000 --- a/resources/dark/icon_animation_player.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_animation_tree.svg b/resources/dark/icon_animation_tree.svg deleted file mode 100644 index 75ae516..0000000 --- a/resources/dark/icon_animation_tree.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_animation_tree_player.svg b/resources/dark/icon_animation_tree_player.svg deleted file mode 100644 index 75ae516..0000000 --- a/resources/dark/icon_animation_tree_player.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_area.svg b/resources/dark/icon_area.svg deleted file mode 100644 index 1ab7106..0000000 --- a/resources/dark/icon_area.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_area_2d.svg b/resources/dark/icon_area_2d.svg deleted file mode 100644 index 6ccd61e..0000000 --- a/resources/dark/icon_area_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_audio_stream_player.svg b/resources/dark/icon_audio_stream_player.svg deleted file mode 100644 index 21e95af..0000000 --- a/resources/dark/icon_audio_stream_player.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/resources/dark/icon_audio_stream_player_2_d.svg b/resources/dark/icon_audio_stream_player_2_d.svg deleted file mode 100644 index 75b5241..0000000 --- a/resources/dark/icon_audio_stream_player_2_d.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/resources/dark/icon_audio_stream_player_3_d.svg b/resources/dark/icon_audio_stream_player_3_d.svg deleted file mode 100644 index 85217f6..0000000 --- a/resources/dark/icon_audio_stream_player_3_d.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/resources/dark/icon_back_buffer_copy.svg b/resources/dark/icon_back_buffer_copy.svg deleted file mode 100644 index c7abc53..0000000 --- a/resources/dark/icon_back_buffer_copy.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_baked_lightmap.svg b/resources/dark/icon_baked_lightmap.svg deleted file mode 100644 index b540a60..0000000 --- a/resources/dark/icon_baked_lightmap.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_bone_2_d.svg b/resources/dark/icon_bone_2_d.svg deleted file mode 100644 index 5585202..0000000 --- a/resources/dark/icon_bone_2_d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_bone_attachment.svg b/resources/dark/icon_bone_attachment.svg deleted file mode 100644 index 54c0a30..0000000 --- a/resources/dark/icon_bone_attachment.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_button.svg b/resources/dark/icon_button.svg deleted file mode 100644 index 37e627a..0000000 --- a/resources/dark/icon_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_c_p_u_particles.svg b/resources/dark/icon_c_p_u_particles.svg deleted file mode 100644 index 01634eb..0000000 --- a/resources/dark/icon_c_p_u_particles.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_c_p_u_particles_2_d.svg b/resources/dark/icon_c_p_u_particles_2_d.svg deleted file mode 100644 index 261659a..0000000 --- a/resources/dark/icon_c_p_u_particles_2_d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_camera.svg b/resources/dark/icon_camera.svg deleted file mode 100644 index 42dcab8..0000000 --- a/resources/dark/icon_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_camera_2d.svg b/resources/dark/icon_camera_2d.svg deleted file mode 100644 index b12126e..0000000 --- a/resources/dark/icon_camera_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_canvas_layer.svg b/resources/dark/icon_canvas_layer.svg deleted file mode 100644 index 8bd2541..0000000 --- a/resources/dark/icon_canvas_layer.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_canvas_modulate.svg b/resources/dark/icon_canvas_modulate.svg deleted file mode 100644 index 93e21ab..0000000 --- a/resources/dark/icon_canvas_modulate.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/resources/dark/icon_center_container.svg b/resources/dark/icon_center_container.svg deleted file mode 100644 index 2159a20..0000000 --- a/resources/dark/icon_center_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_check_box.svg b/resources/dark/icon_check_box.svg deleted file mode 100644 index aa63e1a..0000000 --- a/resources/dark/icon_check_box.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_check_button.svg b/resources/dark/icon_check_button.svg deleted file mode 100644 index 0b60838..0000000 --- a/resources/dark/icon_check_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_clipped_camera.svg b/resources/dark/icon_clipped_camera.svg deleted file mode 100644 index 0e31510..0000000 --- a/resources/dark/icon_clipped_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_collision_polygon.svg b/resources/dark/icon_collision_polygon.svg deleted file mode 100644 index 8b4b415..0000000 --- a/resources/dark/icon_collision_polygon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_collision_polygon_2d.svg b/resources/dark/icon_collision_polygon_2d.svg deleted file mode 100644 index e435366..0000000 --- a/resources/dark/icon_collision_polygon_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_collision_shape.svg b/resources/dark/icon_collision_shape.svg deleted file mode 100644 index 1ab14b1..0000000 --- a/resources/dark/icon_collision_shape.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_collision_shape_2d.svg b/resources/dark/icon_collision_shape_2d.svg deleted file mode 100644 index 71ab11b..0000000 --- a/resources/dark/icon_collision_shape_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_color_picker.svg b/resources/dark/icon_color_picker.svg deleted file mode 100644 index 2f08260..0000000 --- a/resources/dark/icon_color_picker.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_color_picker_button.svg b/resources/dark/icon_color_picker_button.svg deleted file mode 100644 index 4eb3f9a..0000000 --- a/resources/dark/icon_color_picker_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_color_rect.svg b/resources/dark/icon_color_rect.svg deleted file mode 100644 index 542361f..0000000 --- a/resources/dark/icon_color_rect.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/resources/dark/icon_cone_twist_joint.svg b/resources/dark/icon_cone_twist_joint.svg deleted file mode 100644 index 2941436..0000000 --- a/resources/dark/icon_cone_twist_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_confirmation_dialog.svg b/resources/dark/icon_confirmation_dialog.svg deleted file mode 100644 index 86ce894..0000000 --- a/resources/dark/icon_confirmation_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_container.svg b/resources/dark/icon_container.svg deleted file mode 100644 index 345cb19..0000000 --- a/resources/dark/icon_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_control.svg b/resources/dark/icon_control.svg deleted file mode 100644 index f767760..0000000 --- a/resources/dark/icon_control.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_damped_spring_joint_2d.svg b/resources/dark/icon_damped_spring_joint_2d.svg deleted file mode 100644 index 32163c5..0000000 --- a/resources/dark/icon_damped_spring_joint_2d.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_directional_light.svg b/resources/dark/icon_directional_light.svg deleted file mode 100644 index f55d8b9..0000000 --- a/resources/dark/icon_directional_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_file_dialog.svg b/resources/dark/icon_file_dialog.svg deleted file mode 100644 index 1bfb86f..0000000 --- a/resources/dark/icon_file_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_g_i_probe.svg b/resources/dark/icon_g_i_probe.svg deleted file mode 100644 index 8cbef11..0000000 --- a/resources/dark/icon_g_i_probe.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_generic_6_d_o_f_joint.svg b/resources/dark/icon_generic_6_d_o_f_joint.svg deleted file mode 100644 index 234f8c4..0000000 --- a/resources/dark/icon_generic_6_d_o_f_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_graph_edit.svg b/resources/dark/icon_graph_edit.svg deleted file mode 100644 index 9962d51..0000000 --- a/resources/dark/icon_graph_edit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_graph_node.svg b/resources/dark/icon_graph_node.svg deleted file mode 100644 index 7b803bc..0000000 --- a/resources/dark/icon_graph_node.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_grid_container.svg b/resources/dark/icon_grid_container.svg deleted file mode 100644 index f891f59..0000000 --- a/resources/dark/icon_grid_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_groove_joint_2d.svg b/resources/dark/icon_groove_joint_2d.svg deleted file mode 100644 index cb34d30..0000000 --- a/resources/dark/icon_groove_joint_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_h_box_container.svg b/resources/dark/icon_h_box_container.svg deleted file mode 100644 index 32e6a1f..0000000 --- a/resources/dark/icon_h_box_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_h_scroll_bar.svg b/resources/dark/icon_h_scroll_bar.svg deleted file mode 100644 index fda3ce9..0000000 --- a/resources/dark/icon_h_scroll_bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_h_separator.svg b/resources/dark/icon_h_separator.svg deleted file mode 100644 index 19a7769..0000000 --- a/resources/dark/icon_h_separator.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_h_slider.svg b/resources/dark/icon_h_slider.svg deleted file mode 100644 index cda1d01..0000000 --- a/resources/dark/icon_h_slider.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_h_split_container.svg b/resources/dark/icon_h_split_container.svg deleted file mode 100644 index 705cc0b..0000000 --- a/resources/dark/icon_h_split_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_h_t_t_p_request.svg b/resources/dark/icon_h_t_t_p_request.svg deleted file mode 100644 index f291bd4..0000000 --- a/resources/dark/icon_h_t_t_p_request.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_hinge_joint.svg b/resources/dark/icon_hinge_joint.svg deleted file mode 100644 index 053d0b7..0000000 --- a/resources/dark/icon_hinge_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_immediate_geometry.svg b/resources/dark/icon_immediate_geometry.svg deleted file mode 100644 index ce11351..0000000 --- a/resources/dark/icon_immediate_geometry.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_interpolated_camera.svg b/resources/dark/icon_interpolated_camera.svg deleted file mode 100644 index 7d254e1..0000000 --- a/resources/dark/icon_interpolated_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_item_list.svg b/resources/dark/icon_item_list.svg deleted file mode 100644 index 7a21d17..0000000 --- a/resources/dark/icon_item_list.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_kinematic_body.svg b/resources/dark/icon_kinematic_body.svg deleted file mode 100644 index d6f9eed..0000000 --- a/resources/dark/icon_kinematic_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_kinematic_body_2d.svg b/resources/dark/icon_kinematic_body_2d.svg deleted file mode 100644 index b4058cd..0000000 --- a/resources/dark/icon_kinematic_body_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_label.svg b/resources/dark/icon_label.svg deleted file mode 100644 index d8b2d82..0000000 --- a/resources/dark/icon_label.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_light_2d.svg b/resources/dark/icon_light_2d.svg deleted file mode 100644 index 2b92eee..0000000 --- a/resources/dark/icon_light_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_light_occluder_2d.svg b/resources/dark/icon_light_occluder_2d.svg deleted file mode 100644 index c4e838f..0000000 --- a/resources/dark/icon_light_occluder_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_line_2d.svg b/resources/dark/icon_line_2d.svg deleted file mode 100644 index 15a21f5..0000000 --- a/resources/dark/icon_line_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_line_edit.svg b/resources/dark/icon_line_edit.svg deleted file mode 100644 index 32a8794..0000000 --- a/resources/dark/icon_line_edit.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_link_button.svg b/resources/dark/icon_link_button.svg deleted file mode 100644 index b3bba30..0000000 --- a/resources/dark/icon_link_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_listener.svg b/resources/dark/icon_listener.svg deleted file mode 100644 index 98c7069..0000000 --- a/resources/dark/icon_listener.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_margin_container.svg b/resources/dark/icon_margin_container.svg deleted file mode 100644 index 183b2bd..0000000 --- a/resources/dark/icon_margin_container.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_menu_button.svg b/resources/dark/icon_menu_button.svg deleted file mode 100644 index c1cac77..0000000 --- a/resources/dark/icon_menu_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_mesh_instance.svg b/resources/dark/icon_mesh_instance.svg deleted file mode 100644 index 2ed890f..0000000 --- a/resources/dark/icon_mesh_instance.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_mesh_instance_2d.svg b/resources/dark/icon_mesh_instance_2d.svg deleted file mode 100644 index 3199be2..0000000 --- a/resources/dark/icon_mesh_instance_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_multi_mesh_instance.svg b/resources/dark/icon_multi_mesh_instance.svg deleted file mode 100644 index 78aabcc..0000000 --- a/resources/dark/icon_multi_mesh_instance.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_multi_mesh_instance_2d.svg b/resources/dark/icon_multi_mesh_instance_2d.svg deleted file mode 100644 index cc57849..0000000 --- a/resources/dark/icon_multi_mesh_instance_2d.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/resources/dark/icon_navigation.svg b/resources/dark/icon_navigation.svg deleted file mode 100644 index d10b990..0000000 --- a/resources/dark/icon_navigation.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_navigation_2d.svg b/resources/dark/icon_navigation_2d.svg deleted file mode 100644 index c5c8382..0000000 --- a/resources/dark/icon_navigation_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_navigation_mesh_instance.svg b/resources/dark/icon_navigation_mesh_instance.svg deleted file mode 100644 index 7fbd8e8..0000000 --- a/resources/dark/icon_navigation_mesh_instance.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_navigation_polygon_instance.svg b/resources/dark/icon_navigation_polygon_instance.svg deleted file mode 100644 index 3989433..0000000 --- a/resources/dark/icon_navigation_polygon_instance.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_nine_patch_rect.svg b/resources/dark/icon_nine_patch_rect.svg deleted file mode 100644 index 33d7570..0000000 --- a/resources/dark/icon_nine_patch_rect.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/resources/dark/icon_node.svg b/resources/dark/icon_node.svg deleted file mode 100644 index dc3c027..0000000 --- a/resources/dark/icon_node.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_node_2d.svg b/resources/dark/icon_node_2d.svg deleted file mode 100644 index 75d5e43..0000000 --- a/resources/dark/icon_node_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_omni_light.svg b/resources/dark/icon_omni_light.svg deleted file mode 100644 index 9e101f0..0000000 --- a/resources/dark/icon_omni_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_option_button.svg b/resources/dark/icon_option_button.svg deleted file mode 100644 index 78f435f..0000000 --- a/resources/dark/icon_option_button.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_panel.svg b/resources/dark/icon_panel.svg deleted file mode 100644 index 6928d34..0000000 --- a/resources/dark/icon_panel.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_panel_container.svg b/resources/dark/icon_panel_container.svg deleted file mode 100644 index 9a4c113..0000000 --- a/resources/dark/icon_panel_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_parallax_background.svg b/resources/dark/icon_parallax_background.svg deleted file mode 100644 index a81d69e..0000000 --- a/resources/dark/icon_parallax_background.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_parallax_layer.svg b/resources/dark/icon_parallax_layer.svg deleted file mode 100644 index afa6288..0000000 --- a/resources/dark/icon_parallax_layer.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_particles.svg b/resources/dark/icon_particles.svg deleted file mode 100644 index c006658..0000000 --- a/resources/dark/icon_particles.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_particles_2d.svg b/resources/dark/icon_particles_2d.svg deleted file mode 100644 index 35b67ef..0000000 --- a/resources/dark/icon_particles_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_path.svg b/resources/dark/icon_path.svg deleted file mode 100644 index 1d7b838..0000000 --- a/resources/dark/icon_path.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_path_2d.svg b/resources/dark/icon_path_2d.svg deleted file mode 100644 index 529b130..0000000 --- a/resources/dark/icon_path_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_path_follow.svg b/resources/dark/icon_path_follow.svg deleted file mode 100644 index 89a475c..0000000 --- a/resources/dark/icon_path_follow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_path_follow_2d.svg b/resources/dark/icon_path_follow_2d.svg deleted file mode 100644 index 46c9fca..0000000 --- a/resources/dark/icon_path_follow_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_physical_bone.svg b/resources/dark/icon_physical_bone.svg deleted file mode 100644 index 93794b3..0000000 --- a/resources/dark/icon_physical_bone.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/dark/icon_pin_joint.svg b/resources/dark/icon_pin_joint.svg deleted file mode 100644 index 2ee5773..0000000 --- a/resources/dark/icon_pin_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_pin_joint_2d.svg b/resources/dark/icon_pin_joint_2d.svg deleted file mode 100644 index 91f3ffc..0000000 --- a/resources/dark/icon_pin_joint_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_polygon_2_d.svg b/resources/dark/icon_polygon_2_d.svg deleted file mode 100644 index 5a32403..0000000 --- a/resources/dark/icon_polygon_2_d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_popup.svg b/resources/dark/icon_popup.svg deleted file mode 100644 index 2eb53e9..0000000 --- a/resources/dark/icon_popup.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_popup_dialog.svg b/resources/dark/icon_popup_dialog.svg deleted file mode 100644 index 422be97..0000000 --- a/resources/dark/icon_popup_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_popup_menu.svg b/resources/dark/icon_popup_menu.svg deleted file mode 100644 index 140635b..0000000 --- a/resources/dark/icon_popup_menu.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_popup_panel.svg b/resources/dark/icon_popup_panel.svg deleted file mode 100644 index d8980ce..0000000 --- a/resources/dark/icon_popup_panel.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_position_2d.svg b/resources/dark/icon_position_2d.svg deleted file mode 100644 index b813033..0000000 --- a/resources/dark/icon_position_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_position_3d.svg b/resources/dark/icon_position_3d.svg deleted file mode 100644 index 5e94db9..0000000 --- a/resources/dark/icon_position_3d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_progress_bar.svg b/resources/dark/icon_progress_bar.svg deleted file mode 100644 index ca6e417..0000000 --- a/resources/dark/icon_progress_bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_ray_cast.svg b/resources/dark/icon_ray_cast.svg deleted file mode 100644 index 0a6e4cb..0000000 --- a/resources/dark/icon_ray_cast.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_ray_cast_2d.svg b/resources/dark/icon_ray_cast_2d.svg deleted file mode 100644 index 1468cd9..0000000 --- a/resources/dark/icon_ray_cast_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_reference_rect.svg b/resources/dark/icon_reference_rect.svg deleted file mode 100644 index 140b4a2..0000000 --- a/resources/dark/icon_reference_rect.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_reflection_probe.svg b/resources/dark/icon_reflection_probe.svg deleted file mode 100644 index ff85399..0000000 --- a/resources/dark/icon_reflection_probe.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_remote_transform.svg b/resources/dark/icon_remote_transform.svg deleted file mode 100644 index 59408fe..0000000 --- a/resources/dark/icon_remote_transform.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_remote_transform_2d.svg b/resources/dark/icon_remote_transform_2d.svg deleted file mode 100644 index 1f515e2..0000000 --- a/resources/dark/icon_remote_transform_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_resource_preloader.svg b/resources/dark/icon_resource_preloader.svg deleted file mode 100644 index 98d6e18..0000000 --- a/resources/dark/icon_resource_preloader.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_rich_text_label.svg b/resources/dark/icon_rich_text_label.svg deleted file mode 100644 index ae87273..0000000 --- a/resources/dark/icon_rich_text_label.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_rigid_body.svg b/resources/dark/icon_rigid_body.svg deleted file mode 100644 index 1f7ffcb..0000000 --- a/resources/dark/icon_rigid_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_rigid_body_2d.svg b/resources/dark/icon_rigid_body_2d.svg deleted file mode 100644 index 424e0c4..0000000 --- a/resources/dark/icon_rigid_body_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_scroll_container.svg b/resources/dark/icon_scroll_container.svg deleted file mode 100644 index 930c0a2..0000000 --- a/resources/dark/icon_scroll_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_skeleton.svg b/resources/dark/icon_skeleton.svg deleted file mode 100644 index 1f34427..0000000 --- a/resources/dark/icon_skeleton.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_skeleton_2d.svg b/resources/dark/icon_skeleton_2d.svg deleted file mode 100644 index b298c87..0000000 --- a/resources/dark/icon_skeleton_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_skeleton_i_k.svg b/resources/dark/icon_skeleton_i_k.svg deleted file mode 100644 index 0b5759d..0000000 --- a/resources/dark/icon_skeleton_i_k.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_slider_joint.svg b/resources/dark/icon_slider_joint.svg deleted file mode 100644 index 80d956b..0000000 --- a/resources/dark/icon_slider_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_soft_body.svg b/resources/dark/icon_soft_body.svg deleted file mode 100644 index d5f32d5..0000000 --- a/resources/dark/icon_soft_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_spatial.svg b/resources/dark/icon_spatial.svg deleted file mode 100644 index 7f68d62..0000000 --- a/resources/dark/icon_spatial.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_spin_box.svg b/resources/dark/icon_spin_box.svg deleted file mode 100644 index 3fe639f..0000000 --- a/resources/dark/icon_spin_box.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_spot_light.svg b/resources/dark/icon_spot_light.svg deleted file mode 100644 index 622326f..0000000 --- a/resources/dark/icon_spot_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_spring_arm.svg b/resources/dark/icon_spring_arm.svg deleted file mode 100644 index a79efde..0000000 --- a/resources/dark/icon_spring_arm.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/dark/icon_sprite.svg b/resources/dark/icon_sprite.svg deleted file mode 100644 index 592bdd2..0000000 --- a/resources/dark/icon_sprite.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_sprite_3d.svg b/resources/dark/icon_sprite_3d.svg deleted file mode 100644 index ed1e7c3..0000000 --- a/resources/dark/icon_sprite_3d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_static_body.svg b/resources/dark/icon_static_body.svg deleted file mode 100644 index 450ced8..0000000 --- a/resources/dark/icon_static_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_static_body_2d.svg b/resources/dark/icon_static_body_2d.svg deleted file mode 100644 index cdea347..0000000 --- a/resources/dark/icon_static_body_2d.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_tab_container.svg b/resources/dark/icon_tab_container.svg deleted file mode 100644 index 736fee2..0000000 --- a/resources/dark/icon_tab_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_tabs.svg b/resources/dark/icon_tabs.svg deleted file mode 100644 index 468fcae..0000000 --- a/resources/dark/icon_tabs.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_text_edit.svg b/resources/dark/icon_text_edit.svg deleted file mode 100644 index 52725ea..0000000 --- a/resources/dark/icon_text_edit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_texture_button.svg b/resources/dark/icon_texture_button.svg deleted file mode 100644 index 0834ce7..0000000 --- a/resources/dark/icon_texture_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_texture_progress.svg b/resources/dark/icon_texture_progress.svg deleted file mode 100644 index b48f38e..0000000 --- a/resources/dark/icon_texture_progress.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/dark/icon_texture_rect.svg b/resources/dark/icon_texture_rect.svg deleted file mode 100644 index 416bbe5..0000000 --- a/resources/dark/icon_texture_rect.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_tile_map.svg b/resources/dark/icon_tile_map.svg deleted file mode 100644 index d65feaf..0000000 --- a/resources/dark/icon_tile_map.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_timer.svg b/resources/dark/icon_timer.svg deleted file mode 100644 index 6aed859..0000000 --- a/resources/dark/icon_timer.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_tool_button.svg b/resources/dark/icon_tool_button.svg deleted file mode 100644 index c3f2ea6..0000000 --- a/resources/dark/icon_tool_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_touch_screen_button.svg b/resources/dark/icon_touch_screen_button.svg deleted file mode 100644 index 1a08e36..0000000 --- a/resources/dark/icon_touch_screen_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_tree.svg b/resources/dark/icon_tree.svg deleted file mode 100644 index 58338e6..0000000 --- a/resources/dark/icon_tree.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_tween.svg b/resources/dark/icon_tween.svg deleted file mode 100644 index ad8bd94..0000000 --- a/resources/dark/icon_tween.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_v_box_container.svg b/resources/dark/icon_v_box_container.svg deleted file mode 100644 index 0e37156..0000000 --- a/resources/dark/icon_v_box_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_v_scroll_bar.svg b/resources/dark/icon_v_scroll_bar.svg deleted file mode 100644 index d793e3a..0000000 --- a/resources/dark/icon_v_scroll_bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_v_separator.svg b/resources/dark/icon_v_separator.svg deleted file mode 100644 index bb07e5d..0000000 --- a/resources/dark/icon_v_separator.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_v_slider.svg b/resources/dark/icon_v_slider.svg deleted file mode 100644 index fa9ff88..0000000 --- a/resources/dark/icon_v_slider.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_v_split_container.svg b/resources/dark/icon_v_split_container.svg deleted file mode 100644 index 3ac0a63..0000000 --- a/resources/dark/icon_v_split_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_vehicle_body.svg b/resources/dark/icon_vehicle_body.svg deleted file mode 100644 index 92120a4..0000000 --- a/resources/dark/icon_vehicle_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_vehicle_wheel.svg b/resources/dark/icon_vehicle_wheel.svg deleted file mode 100644 index cbe7552..0000000 --- a/resources/dark/icon_vehicle_wheel.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_video_player.svg b/resources/dark/icon_video_player.svg deleted file mode 100644 index 52b4365..0000000 --- a/resources/dark/icon_video_player.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_viewport.svg b/resources/dark/icon_viewport.svg deleted file mode 100644 index e7ea83f..0000000 --- a/resources/dark/icon_viewport.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_viewport_container.svg b/resources/dark/icon_viewport_container.svg deleted file mode 100644 index a251833..0000000 --- a/resources/dark/icon_viewport_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_visibility_enabler.svg b/resources/dark/icon_visibility_enabler.svg deleted file mode 100644 index 222f5d7..0000000 --- a/resources/dark/icon_visibility_enabler.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_visibility_enabler_2d.svg b/resources/dark/icon_visibility_enabler_2d.svg deleted file mode 100644 index 27dd937..0000000 --- a/resources/dark/icon_visibility_enabler_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_visibility_notifier.svg b/resources/dark/icon_visibility_notifier.svg deleted file mode 100644 index 96d0cbf..0000000 --- a/resources/dark/icon_visibility_notifier.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_visibility_notifier_2d.svg b/resources/dark/icon_visibility_notifier_2d.svg deleted file mode 100644 index 3e90d8a..0000000 --- a/resources/dark/icon_visibility_notifier_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_window_dialog.svg b/resources/dark/icon_window_dialog.svg deleted file mode 100644 index dbf49fd..0000000 --- a/resources/dark/icon_window_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/dark/icon_world_environment.svg b/resources/dark/icon_world_environment.svg deleted file mode 100644 index 06cff10..0000000 --- a/resources/dark/icon_world_environment.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/dark/icon_y_sort.svg b/resources/dark/icon_y_sort.svg deleted file mode 100644 index 18b0a03..0000000 --- a/resources/dark/icon_y_sort.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/godot_icons/dark/AcceptDialog.svg b/resources/godot_icons/dark/AcceptDialog.svg index d88ebd4..5d60a31 100644 --- a/resources/godot_icons/dark/AcceptDialog.svg +++ b/resources/godot_icons/dark/AcceptDialog.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimatableBody2D.svg b/resources/godot_icons/dark/AnimatableBody2D.svg index f41e22a..7365a24 100644 --- a/resources/godot_icons/dark/AnimatableBody2D.svg +++ b/resources/godot_icons/dark/AnimatableBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimatableBody3D.svg b/resources/godot_icons/dark/AnimatableBody3D.svg index a01a828..37f3083 100644 --- a/resources/godot_icons/dark/AnimatableBody3D.svg +++ b/resources/godot_icons/dark/AnimatableBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimatedSprite2D.svg b/resources/godot_icons/dark/AnimatedSprite2D.svg index 0c9d293..56aba60 100644 --- a/resources/godot_icons/dark/AnimatedSprite2D.svg +++ b/resources/godot_icons/dark/AnimatedSprite2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimatedSprite3D.svg b/resources/godot_icons/dark/AnimatedSprite3D.svg index b25ebae..1b2cf47 100644 --- a/resources/godot_icons/dark/AnimatedSprite3D.svg +++ b/resources/godot_icons/dark/AnimatedSprite3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimatedTexture.svg b/resources/godot_icons/dark/AnimatedTexture.svg index 5325731..eead92e 100644 --- a/resources/godot_icons/dark/AnimatedTexture.svg +++ b/resources/godot_icons/dark/AnimatedTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Animation.svg b/resources/godot_icons/dark/Animation.svg index 917784b..55d4809 100644 --- a/resources/godot_icons/dark/Animation.svg +++ b/resources/godot_icons/dark/Animation.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimationLibrary.svg b/resources/godot_icons/dark/AnimationLibrary.svg index 097a53a..63ed97b 100644 --- a/resources/godot_icons/dark/AnimationLibrary.svg +++ b/resources/godot_icons/dark/AnimationLibrary.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimationPlayer.svg b/resources/godot_icons/dark/AnimationPlayer.svg index 52b6b02..258eaf0 100644 --- a/resources/godot_icons/dark/AnimationPlayer.svg +++ b/resources/godot_icons/dark/AnimationPlayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AnimationTree.svg b/resources/godot_icons/dark/AnimationTree.svg index d648409..e11d0f1 100644 --- a/resources/godot_icons/dark/AnimationTree.svg +++ b/resources/godot_icons/dark/AnimationTree.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Area2D.svg b/resources/godot_icons/dark/Area2D.svg index 005f70e..5b0eceb 100644 --- a/resources/godot_icons/dark/Area2D.svg +++ b/resources/godot_icons/dark/Area2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Area3D.svg b/resources/godot_icons/dark/Area3D.svg index 4be8a2c..faf4e2f 100644 --- a/resources/godot_icons/dark/Area3D.svg +++ b/resources/godot_icons/dark/Area3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ArrayMesh.svg b/resources/godot_icons/dark/ArrayMesh.svg index 2494a51..9e39024 100644 --- a/resources/godot_icons/dark/ArrayMesh.svg +++ b/resources/godot_icons/dark/ArrayMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ArrayOccluder3D.svg b/resources/godot_icons/dark/ArrayOccluder3D.svg index ac45821..3d18fa0 100644 --- a/resources/godot_icons/dark/ArrayOccluder3D.svg +++ b/resources/godot_icons/dark/ArrayOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ArrowDown.svg b/resources/godot_icons/dark/ArrowDown.svg new file mode 100644 index 0000000..23b7af8 --- /dev/null +++ b/resources/godot_icons/dark/ArrowDown.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ArrowLeft.svg b/resources/godot_icons/dark/ArrowLeft.svg new file mode 100644 index 0000000..4141c3b --- /dev/null +++ b/resources/godot_icons/dark/ArrowLeft.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ArrowRight.svg b/resources/godot_icons/dark/ArrowRight.svg new file mode 100644 index 0000000..f433ef3 --- /dev/null +++ b/resources/godot_icons/dark/ArrowRight.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ArrowUp.svg b/resources/godot_icons/dark/ArrowUp.svg new file mode 100644 index 0000000..377d275 --- /dev/null +++ b/resources/godot_icons/dark/ArrowUp.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/AspectRatioContainer.svg b/resources/godot_icons/dark/AspectRatioContainer.svg index a7aef8e..8418cef 100644 --- a/resources/godot_icons/dark/AspectRatioContainer.svg +++ b/resources/godot_icons/dark/AspectRatioContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AtlasTexture.svg b/resources/godot_icons/dark/AtlasTexture.svg index e261d37..4f41122 100644 --- a/resources/godot_icons/dark/AtlasTexture.svg +++ b/resources/godot_icons/dark/AtlasTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AudioListener2D.svg b/resources/godot_icons/dark/AudioListener2D.svg index db84dcf..58f3b66 100644 --- a/resources/godot_icons/dark/AudioListener2D.svg +++ b/resources/godot_icons/dark/AudioListener2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AudioListener3D.svg b/resources/godot_icons/dark/AudioListener3D.svg index 7afbdcc..c669d39 100644 --- a/resources/godot_icons/dark/AudioListener3D.svg +++ b/resources/godot_icons/dark/AudioListener3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AudioStreamPlayer.svg b/resources/godot_icons/dark/AudioStreamPlayer.svg index 31bd847..317b25d 100644 --- a/resources/godot_icons/dark/AudioStreamPlayer.svg +++ b/resources/godot_icons/dark/AudioStreamPlayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AudioStreamPlayer2D.svg b/resources/godot_icons/dark/AudioStreamPlayer2D.svg index 7a8fde8..9788416 100644 --- a/resources/godot_icons/dark/AudioStreamPlayer2D.svg +++ b/resources/godot_icons/dark/AudioStreamPlayer2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AudioStreamPlayer3D.svg b/resources/godot_icons/dark/AudioStreamPlayer3D.svg index 5aa7e6d..02a8918 100644 --- a/resources/godot_icons/dark/AudioStreamPlayer3D.svg +++ b/resources/godot_icons/dark/AudioStreamPlayer3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/AudioStreamPolyphonic.svg b/resources/godot_icons/dark/AudioStreamPolyphonic.svg new file mode 100644 index 0000000..0e20205 --- /dev/null +++ b/resources/godot_icons/dark/AudioStreamPolyphonic.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/AudioStreamWAV.svg b/resources/godot_icons/dark/AudioStreamWAV.svg index 2e54de9..bb06b90 100644 --- a/resources/godot_icons/dark/AudioStreamWAV.svg +++ b/resources/godot_icons/dark/AudioStreamWAV.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Bone2D.svg b/resources/godot_icons/dark/Bone2D.svg index 2298022..a15a3d5 100644 --- a/resources/godot_icons/dark/Bone2D.svg +++ b/resources/godot_icons/dark/Bone2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/BoneAttachment3D.svg b/resources/godot_icons/dark/BoneAttachment3D.svg index 2f2a9cd..ec53486 100644 --- a/resources/godot_icons/dark/BoneAttachment3D.svg +++ b/resources/godot_icons/dark/BoneAttachment3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/BoxContainer.svg b/resources/godot_icons/dark/BoxContainer.svg index b5baf15..acb0620 100644 --- a/resources/godot_icons/dark/BoxContainer.svg +++ b/resources/godot_icons/dark/BoxContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/BoxMesh.svg b/resources/godot_icons/dark/BoxMesh.svg index ef2f77a..734f239 100644 --- a/resources/godot_icons/dark/BoxMesh.svg +++ b/resources/godot_icons/dark/BoxMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/BoxOccluder3D.svg b/resources/godot_icons/dark/BoxOccluder3D.svg index 3cee3db..888e9fe 100644 --- a/resources/godot_icons/dark/BoxOccluder3D.svg +++ b/resources/godot_icons/dark/BoxOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/BoxShape3D.svg b/resources/godot_icons/dark/BoxShape3D.svg index a16f0bb..ba86e08 100644 --- a/resources/godot_icons/dark/BoxShape3D.svg +++ b/resources/godot_icons/dark/BoxShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Button.svg b/resources/godot_icons/dark/Button.svg index 6046038..5f48214 100644 --- a/resources/godot_icons/dark/Button.svg +++ b/resources/godot_icons/dark/Button.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ButtonGroup.svg b/resources/godot_icons/dark/ButtonGroup.svg index 0fd49f0..81eaa7a 100644 --- a/resources/godot_icons/dark/ButtonGroup.svg +++ b/resources/godot_icons/dark/ButtonGroup.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CPUParticles2D.svg b/resources/godot_icons/dark/CPUParticles2D.svg index 2bb648a..d4d240a 100644 --- a/resources/godot_icons/dark/CPUParticles2D.svg +++ b/resources/godot_icons/dark/CPUParticles2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CPUParticles3D.svg b/resources/godot_icons/dark/CPUParticles3D.svg index d4c3b6b..fb17176 100644 --- a/resources/godot_icons/dark/CPUParticles3D.svg +++ b/resources/godot_icons/dark/CPUParticles3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSGBox3D.svg b/resources/godot_icons/dark/CSGBox3D.svg index c2d4e20..682f75c 100644 --- a/resources/godot_icons/dark/CSGBox3D.svg +++ b/resources/godot_icons/dark/CSGBox3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSGCombiner3D.svg b/resources/godot_icons/dark/CSGCombiner3D.svg index b159d0e..e648fd6 100644 --- a/resources/godot_icons/dark/CSGCombiner3D.svg +++ b/resources/godot_icons/dark/CSGCombiner3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSGCylinder3D.svg b/resources/godot_icons/dark/CSGCylinder3D.svg index 90fb45f..84bea3e 100644 --- a/resources/godot_icons/dark/CSGCylinder3D.svg +++ b/resources/godot_icons/dark/CSGCylinder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSGMesh3D.svg b/resources/godot_icons/dark/CSGMesh3D.svg index dd46504..e306c2b 100644 --- a/resources/godot_icons/dark/CSGMesh3D.svg +++ b/resources/godot_icons/dark/CSGMesh3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSGPolygon3D.svg b/resources/godot_icons/dark/CSGPolygon3D.svg index 1f5c3d4..bdf5138 100644 --- a/resources/godot_icons/dark/CSGPolygon3D.svg +++ b/resources/godot_icons/dark/CSGPolygon3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSGSphere3D.svg b/resources/godot_icons/dark/CSGSphere3D.svg index 45cf9a3..5e432c8 100644 --- a/resources/godot_icons/dark/CSGSphere3D.svg +++ b/resources/godot_icons/dark/CSGSphere3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSGTorus3D.svg b/resources/godot_icons/dark/CSGTorus3D.svg index d2e7649..340d504 100644 --- a/resources/godot_icons/dark/CSGTorus3D.svg +++ b/resources/godot_icons/dark/CSGTorus3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CSharpScript.svg b/resources/godot_icons/dark/CSharpScript.svg index 0b2cc84..1e1ec96 100644 --- a/resources/godot_icons/dark/CSharpScript.svg +++ b/resources/godot_icons/dark/CSharpScript.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Camera2D.svg b/resources/godot_icons/dark/Camera2D.svg index b6aa869..f0a63c2 100644 --- a/resources/godot_icons/dark/Camera2D.svg +++ b/resources/godot_icons/dark/Camera2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Camera3D.svg b/resources/godot_icons/dark/Camera3D.svg index f6e99cb..038307f 100644 --- a/resources/godot_icons/dark/Camera3D.svg +++ b/resources/godot_icons/dark/Camera3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CameraAttributesPhysical.svg b/resources/godot_icons/dark/CameraAttributesPhysical.svg new file mode 100644 index 0000000..6871177 --- /dev/null +++ b/resources/godot_icons/dark/CameraAttributesPhysical.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/CameraAttributesPractical.svg b/resources/godot_icons/dark/CameraAttributesPractical.svg new file mode 100644 index 0000000..c33351a --- /dev/null +++ b/resources/godot_icons/dark/CameraAttributesPractical.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/CameraTexture.svg b/resources/godot_icons/dark/CameraTexture.svg index 91e3fe9..af9c32f 100644 --- a/resources/godot_icons/dark/CameraTexture.svg +++ b/resources/godot_icons/dark/CameraTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CanvasGroup.svg b/resources/godot_icons/dark/CanvasGroup.svg index d3c9ba2..06284d9 100644 --- a/resources/godot_icons/dark/CanvasGroup.svg +++ b/resources/godot_icons/dark/CanvasGroup.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CanvasItemMaterial.svg b/resources/godot_icons/dark/CanvasItemMaterial.svg index 9a7a894..35f4bbb 100644 --- a/resources/godot_icons/dark/CanvasItemMaterial.svg +++ b/resources/godot_icons/dark/CanvasItemMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CanvasLayer.svg b/resources/godot_icons/dark/CanvasLayer.svg index 87295e6..e334df1 100644 --- a/resources/godot_icons/dark/CanvasLayer.svg +++ b/resources/godot_icons/dark/CanvasLayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CanvasModulate.svg b/resources/godot_icons/dark/CanvasModulate.svg index fb27d76..2593bf3 100644 --- a/resources/godot_icons/dark/CanvasModulate.svg +++ b/resources/godot_icons/dark/CanvasModulate.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CanvasTexture.svg b/resources/godot_icons/dark/CanvasTexture.svg new file mode 100644 index 0000000..8734da3 --- /dev/null +++ b/resources/godot_icons/dark/CanvasTexture.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/CapsuleMesh.svg b/resources/godot_icons/dark/CapsuleMesh.svg index 0bc7814..ad8eea2 100644 --- a/resources/godot_icons/dark/CapsuleMesh.svg +++ b/resources/godot_icons/dark/CapsuleMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CapsuleShape2D.svg b/resources/godot_icons/dark/CapsuleShape2D.svg index 5b3c411..dc1d5b0 100644 --- a/resources/godot_icons/dark/CapsuleShape2D.svg +++ b/resources/godot_icons/dark/CapsuleShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CapsuleShape3D.svg b/resources/godot_icons/dark/CapsuleShape3D.svg index c566d68..c8f000e 100644 --- a/resources/godot_icons/dark/CapsuleShape3D.svg +++ b/resources/godot_icons/dark/CapsuleShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CharacterBody2D.svg b/resources/godot_icons/dark/CharacterBody2D.svg index 70faad6..feb5700 100644 --- a/resources/godot_icons/dark/CharacterBody2D.svg +++ b/resources/godot_icons/dark/CharacterBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CharacterBody3D.svg b/resources/godot_icons/dark/CharacterBody3D.svg index f289813..1d8de12 100644 --- a/resources/godot_icons/dark/CharacterBody3D.svg +++ b/resources/godot_icons/dark/CharacterBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CheckBox.svg b/resources/godot_icons/dark/CheckBox.svg index 8707dfc..0acceaa 100644 --- a/resources/godot_icons/dark/CheckBox.svg +++ b/resources/godot_icons/dark/CheckBox.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CircleShape2D.svg b/resources/godot_icons/dark/CircleShape2D.svg index 37a0903..da55f1d 100644 --- a/resources/godot_icons/dark/CircleShape2D.svg +++ b/resources/godot_icons/dark/CircleShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CodeEdit.svg b/resources/godot_icons/dark/CodeEdit.svg index 46755cb..0ca6e3a 100644 --- a/resources/godot_icons/dark/CodeEdit.svg +++ b/resources/godot_icons/dark/CodeEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CodeHighlighter.svg b/resources/godot_icons/dark/CodeHighlighter.svg new file mode 100644 index 0000000..8e0de9c --- /dev/null +++ b/resources/godot_icons/dark/CodeHighlighter.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/CollisionPolygon2D.svg b/resources/godot_icons/dark/CollisionPolygon2D.svg index 59b991e..3d414e6 100644 --- a/resources/godot_icons/dark/CollisionPolygon2D.svg +++ b/resources/godot_icons/dark/CollisionPolygon2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CollisionPolygon3D.svg b/resources/godot_icons/dark/CollisionPolygon3D.svg index 1964bed..cdc8dd0 100644 --- a/resources/godot_icons/dark/CollisionPolygon3D.svg +++ b/resources/godot_icons/dark/CollisionPolygon3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CollisionShape2D.svg b/resources/godot_icons/dark/CollisionShape2D.svg index 9cac61f..8270280 100644 --- a/resources/godot_icons/dark/CollisionShape2D.svg +++ b/resources/godot_icons/dark/CollisionShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CollisionShape3D.svg b/resources/godot_icons/dark/CollisionShape3D.svg index 87d0705..d995c49 100644 --- a/resources/godot_icons/dark/CollisionShape3D.svg +++ b/resources/godot_icons/dark/CollisionShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ColorPicker.svg b/resources/godot_icons/dark/ColorPicker.svg index c4f48cd..81cdbbe 100644 --- a/resources/godot_icons/dark/ColorPicker.svg +++ b/resources/godot_icons/dark/ColorPicker.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ColorPickerButton.svg b/resources/godot_icons/dark/ColorPickerButton.svg index fa2a615..d00a6cd 100644 --- a/resources/godot_icons/dark/ColorPickerButton.svg +++ b/resources/godot_icons/dark/ColorPickerButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ColorRect.svg b/resources/godot_icons/dark/ColorRect.svg index 39fb7a5..ccee4ca 100644 --- a/resources/godot_icons/dark/ColorRect.svg +++ b/resources/godot_icons/dark/ColorRect.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CompressedTexture2D.svg b/resources/godot_icons/dark/CompressedTexture2D.svg index 54ff10b..aa65696 100644 --- a/resources/godot_icons/dark/CompressedTexture2D.svg +++ b/resources/godot_icons/dark/CompressedTexture2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CompressedTexture3D.svg b/resources/godot_icons/dark/CompressedTexture3D.svg new file mode 100644 index 0000000..0f027ad --- /dev/null +++ b/resources/godot_icons/dark/CompressedTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ConcavePolygonShape2D.svg b/resources/godot_icons/dark/ConcavePolygonShape2D.svg index 26eda84..cb5d98c 100644 --- a/resources/godot_icons/dark/ConcavePolygonShape2D.svg +++ b/resources/godot_icons/dark/ConcavePolygonShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ConcavePolygonShape3D.svg b/resources/godot_icons/dark/ConcavePolygonShape3D.svg index 67631ec..d970a16 100644 --- a/resources/godot_icons/dark/ConcavePolygonShape3D.svg +++ b/resources/godot_icons/dark/ConcavePolygonShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ConeTwistJoint3D.svg b/resources/godot_icons/dark/ConeTwistJoint3D.svg index 9eff38d..d44247d 100644 --- a/resources/godot_icons/dark/ConeTwistJoint3D.svg +++ b/resources/godot_icons/dark/ConeTwistJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ConfirmationDialog.svg b/resources/godot_icons/dark/ConfirmationDialog.svg index f23b5f9..1ef0c3c 100644 --- a/resources/godot_icons/dark/ConfirmationDialog.svg +++ b/resources/godot_icons/dark/ConfirmationDialog.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Container.svg b/resources/godot_icons/dark/Container.svg index a7be880..59f7083 100644 --- a/resources/godot_icons/dark/Container.svg +++ b/resources/godot_icons/dark/Container.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Control.svg b/resources/godot_icons/dark/Control.svg index 0ec9c4c..fe80f24 100644 --- a/resources/godot_icons/dark/Control.svg +++ b/resources/godot_icons/dark/Control.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ConvexPolygonShape2D.svg b/resources/godot_icons/dark/ConvexPolygonShape2D.svg index fa5369a..2324919 100644 --- a/resources/godot_icons/dark/ConvexPolygonShape2D.svg +++ b/resources/godot_icons/dark/ConvexPolygonShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ConvexPolygonShape3D.svg b/resources/godot_icons/dark/ConvexPolygonShape3D.svg index f0c9101..09c5ee9 100644 --- a/resources/godot_icons/dark/ConvexPolygonShape3D.svg +++ b/resources/godot_icons/dark/ConvexPolygonShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Curve.svg b/resources/godot_icons/dark/Curve.svg index 34d537a..4061583 100644 --- a/resources/godot_icons/dark/Curve.svg +++ b/resources/godot_icons/dark/Curve.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Curve2D.svg b/resources/godot_icons/dark/Curve2D.svg index 4470e66..e4cf1dc 100644 --- a/resources/godot_icons/dark/Curve2D.svg +++ b/resources/godot_icons/dark/Curve2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Curve3D.svg b/resources/godot_icons/dark/Curve3D.svg index f61b344..a5cd204 100644 --- a/resources/godot_icons/dark/Curve3D.svg +++ b/resources/godot_icons/dark/Curve3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CurveTexture.svg b/resources/godot_icons/dark/CurveTexture.svg index f5a2eec..b9838eb 100644 --- a/resources/godot_icons/dark/CurveTexture.svg +++ b/resources/godot_icons/dark/CurveTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CurveXYZTexture.svg b/resources/godot_icons/dark/CurveXYZTexture.svg new file mode 100644 index 0000000..e376dd4 --- /dev/null +++ b/resources/godot_icons/dark/CurveXYZTexture.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/CylinderMesh.svg b/resources/godot_icons/dark/CylinderMesh.svg index f6315c2..9d0045a 100644 --- a/resources/godot_icons/dark/CylinderMesh.svg +++ b/resources/godot_icons/dark/CylinderMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/CylinderShape3D.svg b/resources/godot_icons/dark/CylinderShape3D.svg index 1283097..a70a760 100644 --- a/resources/godot_icons/dark/CylinderShape3D.svg +++ b/resources/godot_icons/dark/CylinderShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/DampedSpringJoint2D.svg b/resources/godot_icons/dark/DampedSpringJoint2D.svg index d74f37d..5343ccb 100644 --- a/resources/godot_icons/dark/DampedSpringJoint2D.svg +++ b/resources/godot_icons/dark/DampedSpringJoint2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Decal.svg b/resources/godot_icons/dark/Decal.svg index 3ac5d2d..aa40b2c 100644 --- a/resources/godot_icons/dark/Decal.svg +++ b/resources/godot_icons/dark/Decal.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/DirectionalLight2D.svg b/resources/godot_icons/dark/DirectionalLight2D.svg index c40a4ee..7efbb77 100644 --- a/resources/godot_icons/dark/DirectionalLight2D.svg +++ b/resources/godot_icons/dark/DirectionalLight2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/DirectionalLight3D.svg b/resources/godot_icons/dark/DirectionalLight3D.svg index 5580bd4..6118b81 100644 --- a/resources/godot_icons/dark/DirectionalLight3D.svg +++ b/resources/godot_icons/dark/DirectionalLight3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Edit.svg b/resources/godot_icons/dark/Edit.svg new file mode 100644 index 0000000..6fc7ae0 --- /dev/null +++ b/resources/godot_icons/dark/Edit.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Environment.svg b/resources/godot_icons/dark/Environment.svg index f42ae39..b356459 100644 --- a/resources/godot_icons/dark/Environment.svg +++ b/resources/godot_icons/dark/Environment.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/FileDialog.svg b/resources/godot_icons/dark/FileDialog.svg index c1e5479..6b16dbb 100644 --- a/resources/godot_icons/dark/FileDialog.svg +++ b/resources/godot_icons/dark/FileDialog.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/FlowContainer.svg b/resources/godot_icons/dark/FlowContainer.svg index ffbb151..d3b0b75 100644 --- a/resources/godot_icons/dark/FlowContainer.svg +++ b/resources/godot_icons/dark/FlowContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/FogMaterial.svg b/resources/godot_icons/dark/FogMaterial.svg index 5db7dea..5fb9951 100644 --- a/resources/godot_icons/dark/FogMaterial.svg +++ b/resources/godot_icons/dark/FogMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/FogVolume.svg b/resources/godot_icons/dark/FogVolume.svg index 6176d1d..f27f04d 100644 --- a/resources/godot_icons/dark/FogVolume.svg +++ b/resources/godot_icons/dark/FogVolume.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/FontFile.svg b/resources/godot_icons/dark/FontFile.svg index 6b98c26..b9a81cd 100644 --- a/resources/godot_icons/dark/FontFile.svg +++ b/resources/godot_icons/dark/FontFile.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/FontVariation.svg b/resources/godot_icons/dark/FontVariation.svg index 9488679..1915bb3 100644 --- a/resources/godot_icons/dark/FontVariation.svg +++ b/resources/godot_icons/dark/FontVariation.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GDScript.svg b/resources/godot_icons/dark/GDScript.svg index aa59125..2671c00 100644 --- a/resources/godot_icons/dark/GDScript.svg +++ b/resources/godot_icons/dark/GDScript.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticles2D.svg b/resources/godot_icons/dark/GPUParticles2D.svg index b291bcd..90ffcbd 100644 --- a/resources/godot_icons/dark/GPUParticles2D.svg +++ b/resources/godot_icons/dark/GPUParticles2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticles3D.svg b/resources/godot_icons/dark/GPUParticles3D.svg index 969b172..04b2fc9 100644 --- a/resources/godot_icons/dark/GPUParticles3D.svg +++ b/resources/godot_icons/dark/GPUParticles3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticlesAttractorBox3D.svg b/resources/godot_icons/dark/GPUParticlesAttractorBox3D.svg index e32cfc1..31f3e9e 100644 --- a/resources/godot_icons/dark/GPUParticlesAttractorBox3D.svg +++ b/resources/godot_icons/dark/GPUParticlesAttractorBox3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticlesAttractorSphere3D.svg b/resources/godot_icons/dark/GPUParticlesAttractorSphere3D.svg index c330a24..dff12da 100644 --- a/resources/godot_icons/dark/GPUParticlesAttractorSphere3D.svg +++ b/resources/godot_icons/dark/GPUParticlesAttractorSphere3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticlesAttractorVectorField3D.svg b/resources/godot_icons/dark/GPUParticlesAttractorVectorField3D.svg index 33c8ea9..c56ea5f 100644 --- a/resources/godot_icons/dark/GPUParticlesAttractorVectorField3D.svg +++ b/resources/godot_icons/dark/GPUParticlesAttractorVectorField3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticlesCollisionBox3D.svg b/resources/godot_icons/dark/GPUParticlesCollisionBox3D.svg index 0410d3e..212b269 100644 --- a/resources/godot_icons/dark/GPUParticlesCollisionBox3D.svg +++ b/resources/godot_icons/dark/GPUParticlesCollisionBox3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticlesCollisionSDF3D.svg b/resources/godot_icons/dark/GPUParticlesCollisionSDF3D.svg index f6ca4ea..95ed463 100644 --- a/resources/godot_icons/dark/GPUParticlesCollisionSDF3D.svg +++ b/resources/godot_icons/dark/GPUParticlesCollisionSDF3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GPUParticlesCollisionSphere3D.svg b/resources/godot_icons/dark/GPUParticlesCollisionSphere3D.svg index 88759fa..36bc9c2 100644 --- a/resources/godot_icons/dark/GPUParticlesCollisionSphere3D.svg +++ b/resources/godot_icons/dark/GPUParticlesCollisionSphere3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Generic6DOFJoint3D.svg b/resources/godot_icons/dark/Generic6DOFJoint3D.svg index 63df5fc..d793057 100644 --- a/resources/godot_icons/dark/Generic6DOFJoint3D.svg +++ b/resources/godot_icons/dark/Generic6DOFJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Gradient.svg b/resources/godot_icons/dark/Gradient.svg index 99d3a87..0dff9da 100644 --- a/resources/godot_icons/dark/Gradient.svg +++ b/resources/godot_icons/dark/Gradient.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GradientTexture1D.svg b/resources/godot_icons/dark/GradientTexture1D.svg index 9be4b00..13da8ab 100644 --- a/resources/godot_icons/dark/GradientTexture1D.svg +++ b/resources/godot_icons/dark/GradientTexture1D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GradientTexture2D.svg b/resources/godot_icons/dark/GradientTexture2D.svg index 77d38cc..8a03f34 100644 --- a/resources/godot_icons/dark/GradientTexture2D.svg +++ b/resources/godot_icons/dark/GradientTexture2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GraphEdit.svg b/resources/godot_icons/dark/GraphEdit.svg index c0d9528..eda42d6 100644 --- a/resources/godot_icons/dark/GraphEdit.svg +++ b/resources/godot_icons/dark/GraphEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GraphElement.svg b/resources/godot_icons/dark/GraphElement.svg new file mode 100644 index 0000000..d5f7006 --- /dev/null +++ b/resources/godot_icons/dark/GraphElement.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/GraphNode.svg b/resources/godot_icons/dark/GraphNode.svg index ebb84e9..9cd726a 100644 --- a/resources/godot_icons/dark/GraphNode.svg +++ b/resources/godot_icons/dark/GraphNode.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GridContainer.svg b/resources/godot_icons/dark/GridContainer.svg index fb6207d..425407c 100644 --- a/resources/godot_icons/dark/GridContainer.svg +++ b/resources/godot_icons/dark/GridContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GridMap.svg b/resources/godot_icons/dark/GridMap.svg index 7a36fd8..e426416 100644 --- a/resources/godot_icons/dark/GridMap.svg +++ b/resources/godot_icons/dark/GridMap.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GrooveJoint2D.svg b/resources/godot_icons/dark/GrooveJoint2D.svg index a9439d5..89dbc33 100644 --- a/resources/godot_icons/dark/GrooveJoint2D.svg +++ b/resources/godot_icons/dark/GrooveJoint2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/GuiVisibilityHidden.svg b/resources/godot_icons/dark/GuiVisibilityHidden.svg new file mode 100644 index 0000000..3a5c959 --- /dev/null +++ b/resources/godot_icons/dark/GuiVisibilityHidden.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/GuiVisibilityVisible.svg b/resources/godot_icons/dark/GuiVisibilityVisible.svg new file mode 100644 index 0000000..18c2cbb --- /dev/null +++ b/resources/godot_icons/dark/GuiVisibilityVisible.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/GuiVisibilityXray.svg b/resources/godot_icons/dark/GuiVisibilityXray.svg new file mode 100644 index 0000000..52d7dd9 --- /dev/null +++ b/resources/godot_icons/dark/GuiVisibilityXray.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/HBoxContainer.svg b/resources/godot_icons/dark/HBoxContainer.svg index 791fca0..678e391 100644 --- a/resources/godot_icons/dark/HBoxContainer.svg +++ b/resources/godot_icons/dark/HBoxContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/HFlowContainer.svg b/resources/godot_icons/dark/HFlowContainer.svg index 8d01398..29761fc 100644 --- a/resources/godot_icons/dark/HFlowContainer.svg +++ b/resources/godot_icons/dark/HFlowContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/HScrollBar.svg b/resources/godot_icons/dark/HScrollBar.svg index 5828ccb..9bf9ee3 100644 --- a/resources/godot_icons/dark/HScrollBar.svg +++ b/resources/godot_icons/dark/HScrollBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/HSeparator.svg b/resources/godot_icons/dark/HSeparator.svg index d786767..7434b67 100644 --- a/resources/godot_icons/dark/HSeparator.svg +++ b/resources/godot_icons/dark/HSeparator.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/HSlider.svg b/resources/godot_icons/dark/HSlider.svg index 0ab453b..554dcc5 100644 --- a/resources/godot_icons/dark/HSlider.svg +++ b/resources/godot_icons/dark/HSlider.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/HSplitContainer.svg b/resources/godot_icons/dark/HSplitContainer.svg index 796e331..dcf876f 100644 --- a/resources/godot_icons/dark/HSplitContainer.svg +++ b/resources/godot_icons/dark/HSplitContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/HeightMapShape3D.svg b/resources/godot_icons/dark/HeightMapShape3D.svg index e1b3af8..330cee9 100644 --- a/resources/godot_icons/dark/HeightMapShape3D.svg +++ b/resources/godot_icons/dark/HeightMapShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Help.svg b/resources/godot_icons/dark/Help.svg new file mode 100644 index 0000000..ecb9d3e --- /dev/null +++ b/resources/godot_icons/dark/Help.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/HelpSearch.svg b/resources/godot_icons/dark/HelpSearch.svg new file mode 100644 index 0000000..f0935ac --- /dev/null +++ b/resources/godot_icons/dark/HelpSearch.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/HingeJoint3D.svg b/resources/godot_icons/dark/HingeJoint3D.svg index ca97169..607253c 100644 --- a/resources/godot_icons/dark/HingeJoint3D.svg +++ b/resources/godot_icons/dark/HingeJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ImageTexture.svg b/resources/godot_icons/dark/ImageTexture.svg index 25d4b53..17fc57d 100644 --- a/resources/godot_icons/dark/ImageTexture.svg +++ b/resources/godot_icons/dark/ImageTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ImageTexture3D.svg b/resources/godot_icons/dark/ImageTexture3D.svg new file mode 100644 index 0000000..7cb4d46 --- /dev/null +++ b/resources/godot_icons/dark/ImageTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ImmediateMesh.svg b/resources/godot_icons/dark/ImmediateMesh.svg index f94ef8c..ceedc00 100644 --- a/resources/godot_icons/dark/ImmediateMesh.svg +++ b/resources/godot_icons/dark/ImmediateMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ImportCheck.svg b/resources/godot_icons/dark/ImportCheck.svg new file mode 100644 index 0000000..83668e3 --- /dev/null +++ b/resources/godot_icons/dark/ImportCheck.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ImportFail.svg b/resources/godot_icons/dark/ImportFail.svg new file mode 100644 index 0000000..7343408 --- /dev/null +++ b/resources/godot_icons/dark/ImportFail.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ImporterMeshInstance3D.svg b/resources/godot_icons/dark/ImporterMeshInstance3D.svg index 5f42ee8..3a832fb 100644 --- a/resources/godot_icons/dark/ImporterMeshInstance3D.svg +++ b/resources/godot_icons/dark/ImporterMeshInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Info.svg b/resources/godot_icons/dark/Info.svg new file mode 100644 index 0000000..1a16f74 --- /dev/null +++ b/resources/godot_icons/dark/Info.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ItemList.svg b/resources/godot_icons/dark/ItemList.svg index fb98a70..5d07dbf 100644 --- a/resources/godot_icons/dark/ItemList.svg +++ b/resources/godot_icons/dark/ItemList.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Label.svg b/resources/godot_icons/dark/Label.svg index bfb1c90..e81d3b7 100644 --- a/resources/godot_icons/dark/Label.svg +++ b/resources/godot_icons/dark/Label.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Label3D.svg b/resources/godot_icons/dark/Label3D.svg index 1012553..547dfe5 100644 --- a/resources/godot_icons/dark/Label3D.svg +++ b/resources/godot_icons/dark/Label3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/LabelSettings.svg b/resources/godot_icons/dark/LabelSettings.svg index 5fef135..98f74fe 100644 --- a/resources/godot_icons/dark/LabelSettings.svg +++ b/resources/godot_icons/dark/LabelSettings.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/LightOccluder2D.svg b/resources/godot_icons/dark/LightOccluder2D.svg index 69a55d9..96807c0 100644 --- a/resources/godot_icons/dark/LightOccluder2D.svg +++ b/resources/godot_icons/dark/LightOccluder2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/LightmapProbe.svg b/resources/godot_icons/dark/LightmapProbe.svg index fdc4c84..31708e1 100644 --- a/resources/godot_icons/dark/LightmapProbe.svg +++ b/resources/godot_icons/dark/LightmapProbe.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Line2D.svg b/resources/godot_icons/dark/Line2D.svg index a0f9d1e..7185906 100644 --- a/resources/godot_icons/dark/Line2D.svg +++ b/resources/godot_icons/dark/Line2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/LineEdit.svg b/resources/godot_icons/dark/LineEdit.svg index 54e3190..3fea8a2 100644 --- a/resources/godot_icons/dark/LineEdit.svg +++ b/resources/godot_icons/dark/LineEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/LinkButton.svg b/resources/godot_icons/dark/LinkButton.svg index 3a99d24..22624bc 100644 --- a/resources/godot_icons/dark/LinkButton.svg +++ b/resources/godot_icons/dark/LinkButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Lock.svg b/resources/godot_icons/dark/Lock.svg new file mode 100644 index 0000000..df66e52 --- /dev/null +++ b/resources/godot_icons/dark/Lock.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/MarginContainer.svg b/resources/godot_icons/dark/MarginContainer.svg index 82e72c0..27613b6 100644 --- a/resources/godot_icons/dark/MarginContainer.svg +++ b/resources/godot_icons/dark/MarginContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/MeshInstance2D.svg b/resources/godot_icons/dark/MeshInstance2D.svg index b8df076..4e18520 100644 --- a/resources/godot_icons/dark/MeshInstance2D.svg +++ b/resources/godot_icons/dark/MeshInstance2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/MeshInstance3D.svg b/resources/godot_icons/dark/MeshInstance3D.svg index c8cde0e..0ab5399 100644 --- a/resources/godot_icons/dark/MeshInstance3D.svg +++ b/resources/godot_icons/dark/MeshInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/MeshLibrary.svg b/resources/godot_icons/dark/MeshLibrary.svg index 5d64acd..62a2b3e 100644 --- a/resources/godot_icons/dark/MeshLibrary.svg +++ b/resources/godot_icons/dark/MeshLibrary.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/MeshTexture.svg b/resources/godot_icons/dark/MeshTexture.svg index ccf16b8..4068d13 100644 --- a/resources/godot_icons/dark/MeshTexture.svg +++ b/resources/godot_icons/dark/MeshTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/MultiMesh.svg b/resources/godot_icons/dark/MultiMesh.svg index 5b49008..23c26c7 100644 --- a/resources/godot_icons/dark/MultiMesh.svg +++ b/resources/godot_icons/dark/MultiMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/MultiMeshInstance2D.svg b/resources/godot_icons/dark/MultiMeshInstance2D.svg index 07c72ae..724e08f 100644 --- a/resources/godot_icons/dark/MultiMeshInstance2D.svg +++ b/resources/godot_icons/dark/MultiMeshInstance2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/MultiMeshInstance3D.svg b/resources/godot_icons/dark/MultiMeshInstance3D.svg index 7f319f3..e161118 100644 --- a/resources/godot_icons/dark/MultiMeshInstance3D.svg +++ b/resources/godot_icons/dark/MultiMeshInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NavigationAgent2D.svg b/resources/godot_icons/dark/NavigationAgent2D.svg index fafa508..3701e44 100644 --- a/resources/godot_icons/dark/NavigationAgent2D.svg +++ b/resources/godot_icons/dark/NavigationAgent2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NavigationAgent3D.svg b/resources/godot_icons/dark/NavigationAgent3D.svg index 0c74394..4973dca 100644 --- a/resources/godot_icons/dark/NavigationAgent3D.svg +++ b/resources/godot_icons/dark/NavigationAgent3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NavigationLink2D.svg b/resources/godot_icons/dark/NavigationLink2D.svg index df470ec..149a0f0 100644 --- a/resources/godot_icons/dark/NavigationLink2D.svg +++ b/resources/godot_icons/dark/NavigationLink2D.svg @@ -1,4 +1 @@ - - - - + diff --git a/resources/godot_icons/dark/NavigationLink3D.svg b/resources/godot_icons/dark/NavigationLink3D.svg index 05f36da..5e89c67 100644 --- a/resources/godot_icons/dark/NavigationLink3D.svg +++ b/resources/godot_icons/dark/NavigationLink3D.svg @@ -1,4 +1 @@ - - - - + diff --git a/resources/godot_icons/dark/NavigationObstacle2D.svg b/resources/godot_icons/dark/NavigationObstacle2D.svg index 6999ddb..71e0e84 100644 --- a/resources/godot_icons/dark/NavigationObstacle2D.svg +++ b/resources/godot_icons/dark/NavigationObstacle2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NavigationObstacle3D.svg b/resources/godot_icons/dark/NavigationObstacle3D.svg index e93303d..a35f3c4 100644 --- a/resources/godot_icons/dark/NavigationObstacle3D.svg +++ b/resources/godot_icons/dark/NavigationObstacle3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NavigationPolygon.svg b/resources/godot_icons/dark/NavigationPolygon.svg index d0fc822..c120b4b 100644 --- a/resources/godot_icons/dark/NavigationPolygon.svg +++ b/resources/godot_icons/dark/NavigationPolygon.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NavigationRegion2D.svg b/resources/godot_icons/dark/NavigationRegion2D.svg index ba77b84..87feb39 100644 --- a/resources/godot_icons/dark/NavigationRegion2D.svg +++ b/resources/godot_icons/dark/NavigationRegion2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NavigationRegion3D.svg b/resources/godot_icons/dark/NavigationRegion3D.svg index 15018de..cc661a5 100644 --- a/resources/godot_icons/dark/NavigationRegion3D.svg +++ b/resources/godot_icons/dark/NavigationRegion3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NinePatchRect.svg b/resources/godot_icons/dark/NinePatchRect.svg index d857b71..17c9fc7 100644 --- a/resources/godot_icons/dark/NinePatchRect.svg +++ b/resources/godot_icons/dark/NinePatchRect.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Node.svg b/resources/godot_icons/dark/Node.svg index 199f94e..faa87ee 100644 --- a/resources/godot_icons/dark/Node.svg +++ b/resources/godot_icons/dark/Node.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Node2D.svg b/resources/godot_icons/dark/Node2D.svg index 7f27e06..a34b07e 100644 --- a/resources/godot_icons/dark/Node2D.svg +++ b/resources/godot_icons/dark/Node2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Node3D.svg b/resources/godot_icons/dark/Node3D.svg index dcd93f6..22d3481 100644 --- a/resources/godot_icons/dark/Node3D.svg +++ b/resources/godot_icons/dark/Node3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/NoiseTexture2D.svg b/resources/godot_icons/dark/NoiseTexture2D.svg new file mode 100644 index 0000000..0c22cfd --- /dev/null +++ b/resources/godot_icons/dark/NoiseTexture2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/NoiseTexture3D.svg b/resources/godot_icons/dark/NoiseTexture3D.svg new file mode 100644 index 0000000..92da633 --- /dev/null +++ b/resources/godot_icons/dark/NoiseTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ORMMaterial3D.svg b/resources/godot_icons/dark/ORMMaterial3D.svg index e092081..a70c44f 100644 --- a/resources/godot_icons/dark/ORMMaterial3D.svg +++ b/resources/godot_icons/dark/ORMMaterial3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Object.svg b/resources/godot_icons/dark/Object.svg index b1fa85d..2578fbe 100644 --- a/resources/godot_icons/dark/Object.svg +++ b/resources/godot_icons/dark/Object.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/OccluderInstance3D.svg b/resources/godot_icons/dark/OccluderInstance3D.svg index e204b7f..5810de9 100644 --- a/resources/godot_icons/dark/OccluderInstance3D.svg +++ b/resources/godot_icons/dark/OccluderInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/OccluderPolygon2D.svg b/resources/godot_icons/dark/OccluderPolygon2D.svg index aca2338..ba0eedf 100644 --- a/resources/godot_icons/dark/OccluderPolygon2D.svg +++ b/resources/godot_icons/dark/OccluderPolygon2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/OmniLight3D.svg b/resources/godot_icons/dark/OmniLight3D.svg index a3119f6..9ecf89b 100644 --- a/resources/godot_icons/dark/OmniLight3D.svg +++ b/resources/godot_icons/dark/OmniLight3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/OptionButton.svg b/resources/godot_icons/dark/OptionButton.svg index 50e6fae..39117e9 100644 --- a/resources/godot_icons/dark/OptionButton.svg +++ b/resources/godot_icons/dark/OptionButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PackedScene.svg b/resources/godot_icons/dark/PackedScene.svg index 6294989..935c159 100644 --- a/resources/godot_icons/dark/PackedScene.svg +++ b/resources/godot_icons/dark/PackedScene.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Panel.svg b/resources/godot_icons/dark/Panel.svg index f82822c..4ea5124 100644 --- a/resources/godot_icons/dark/Panel.svg +++ b/resources/godot_icons/dark/Panel.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PanelContainer.svg b/resources/godot_icons/dark/PanelContainer.svg index 017941b..c43f992 100644 --- a/resources/godot_icons/dark/PanelContainer.svg +++ b/resources/godot_icons/dark/PanelContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PanoramaSkyMaterial.svg b/resources/godot_icons/dark/PanoramaSkyMaterial.svg index eddcbfd..d230ba5 100644 --- a/resources/godot_icons/dark/PanoramaSkyMaterial.svg +++ b/resources/godot_icons/dark/PanoramaSkyMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ParallaxBackground.svg b/resources/godot_icons/dark/ParallaxBackground.svg index 71a586e..d1badf5 100644 --- a/resources/godot_icons/dark/ParallaxBackground.svg +++ b/resources/godot_icons/dark/ParallaxBackground.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ParallaxLayer.svg b/resources/godot_icons/dark/ParallaxLayer.svg index 8216c35..e2bccd6 100644 --- a/resources/godot_icons/dark/ParallaxLayer.svg +++ b/resources/godot_icons/dark/ParallaxLayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ParticleProcessMaterial.svg b/resources/godot_icons/dark/ParticleProcessMaterial.svg index 3359898..530c459 100644 --- a/resources/godot_icons/dark/ParticleProcessMaterial.svg +++ b/resources/godot_icons/dark/ParticleProcessMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Path2D.svg b/resources/godot_icons/dark/Path2D.svg index c911f9a..42fcf06 100644 --- a/resources/godot_icons/dark/Path2D.svg +++ b/resources/godot_icons/dark/Path2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Path3D.svg b/resources/godot_icons/dark/Path3D.svg index 2c5d783..8f6a62c 100644 --- a/resources/godot_icons/dark/Path3D.svg +++ b/resources/godot_icons/dark/Path3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PathFollow2D.svg b/resources/godot_icons/dark/PathFollow2D.svg index 50df95c..f94b959 100644 --- a/resources/godot_icons/dark/PathFollow2D.svg +++ b/resources/godot_icons/dark/PathFollow2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PathFollow3D.svg b/resources/godot_icons/dark/PathFollow3D.svg index 13d8162..03a7c63 100644 --- a/resources/godot_icons/dark/PathFollow3D.svg +++ b/resources/godot_icons/dark/PathFollow3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PhysicalBone2D.svg b/resources/godot_icons/dark/PhysicalBone2D.svg new file mode 100644 index 0000000..850e0a2 --- /dev/null +++ b/resources/godot_icons/dark/PhysicalBone2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PhysicalBone3D.svg b/resources/godot_icons/dark/PhysicalBone3D.svg index 55df1f1..799b5bf 100644 --- a/resources/godot_icons/dark/PhysicalBone3D.svg +++ b/resources/godot_icons/dark/PhysicalBone3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PhysicalSkyMaterial.svg b/resources/godot_icons/dark/PhysicalSkyMaterial.svg index a32b451..48763a5 100644 --- a/resources/godot_icons/dark/PhysicalSkyMaterial.svg +++ b/resources/godot_icons/dark/PhysicalSkyMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PinJoint2D.svg b/resources/godot_icons/dark/PinJoint2D.svg index 1b705a2..4caa2f9 100644 --- a/resources/godot_icons/dark/PinJoint2D.svg +++ b/resources/godot_icons/dark/PinJoint2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PinJoint3D.svg b/resources/godot_icons/dark/PinJoint3D.svg index 12f388b..f21dac4 100644 --- a/resources/godot_icons/dark/PinJoint3D.svg +++ b/resources/godot_icons/dark/PinJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PlaceholderMaterial.svg b/resources/godot_icons/dark/PlaceholderMaterial.svg new file mode 100644 index 0000000..3b5a803 --- /dev/null +++ b/resources/godot_icons/dark/PlaceholderMaterial.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlaceholderMesh.svg b/resources/godot_icons/dark/PlaceholderMesh.svg new file mode 100644 index 0000000..c36156e --- /dev/null +++ b/resources/godot_icons/dark/PlaceholderMesh.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlaceholderTexture2D.svg b/resources/godot_icons/dark/PlaceholderTexture2D.svg new file mode 100644 index 0000000..3e7a375 --- /dev/null +++ b/resources/godot_icons/dark/PlaceholderTexture2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlaceholderTexture3D.svg b/resources/godot_icons/dark/PlaceholderTexture3D.svg new file mode 100644 index 0000000..93014b9 --- /dev/null +++ b/resources/godot_icons/dark/PlaceholderTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlaneMesh.svg b/resources/godot_icons/dark/PlaneMesh.svg index 54b3361..857583d 100644 --- a/resources/godot_icons/dark/PlaneMesh.svg +++ b/resources/godot_icons/dark/PlaneMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Play.svg b/resources/godot_icons/dark/Play.svg new file mode 100644 index 0000000..385d501 --- /dev/null +++ b/resources/godot_icons/dark/Play.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlayBackwards.svg b/resources/godot_icons/dark/PlayBackwards.svg new file mode 100644 index 0000000..8ab80c7 --- /dev/null +++ b/resources/godot_icons/dark/PlayBackwards.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlayCustom.svg b/resources/godot_icons/dark/PlayCustom.svg new file mode 100644 index 0000000..118545e --- /dev/null +++ b/resources/godot_icons/dark/PlayCustom.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlayRemote.svg b/resources/godot_icons/dark/PlayRemote.svg new file mode 100644 index 0000000..78e5ae8 --- /dev/null +++ b/resources/godot_icons/dark/PlayRemote.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlayScene.svg b/resources/godot_icons/dark/PlayScene.svg new file mode 100644 index 0000000..7de0736 --- /dev/null +++ b/resources/godot_icons/dark/PlayScene.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PlayStart.svg b/resources/godot_icons/dark/PlayStart.svg new file mode 100644 index 0000000..ef24084 --- /dev/null +++ b/resources/godot_icons/dark/PlayStart.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PointLight2D.svg b/resources/godot_icons/dark/PointLight2D.svg index ed7300d..1ebcdfa 100644 --- a/resources/godot_icons/dark/PointLight2D.svg +++ b/resources/godot_icons/dark/PointLight2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PointMesh.svg b/resources/godot_icons/dark/PointMesh.svg index ec04989..2cafedc 100644 --- a/resources/godot_icons/dark/PointMesh.svg +++ b/resources/godot_icons/dark/PointMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Polygon2D.svg b/resources/godot_icons/dark/Polygon2D.svg index e59aba3..10a8588 100644 --- a/resources/godot_icons/dark/Polygon2D.svg +++ b/resources/godot_icons/dark/Polygon2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PolygonOccluder3D.svg b/resources/godot_icons/dark/PolygonOccluder3D.svg index fc87e5e..f4cbec0 100644 --- a/resources/godot_icons/dark/PolygonOccluder3D.svg +++ b/resources/godot_icons/dark/PolygonOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PolygonPathFinder.svg b/resources/godot_icons/dark/PolygonPathFinder.svg index f400037..50c5ffc 100644 --- a/resources/godot_icons/dark/PolygonPathFinder.svg +++ b/resources/godot_icons/dark/PolygonPathFinder.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Popup.svg b/resources/godot_icons/dark/Popup.svg index c25cc5b..a6cfe07 100644 --- a/resources/godot_icons/dark/Popup.svg +++ b/resources/godot_icons/dark/Popup.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/PortableCompressedTexture2D.svg b/resources/godot_icons/dark/PortableCompressedTexture2D.svg new file mode 100644 index 0000000..3f63dda --- /dev/null +++ b/resources/godot_icons/dark/PortableCompressedTexture2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/PrismMesh.svg b/resources/godot_icons/dark/PrismMesh.svg index 0fd169c..6481b26 100644 --- a/resources/godot_icons/dark/PrismMesh.svg +++ b/resources/godot_icons/dark/PrismMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ProceduralSkyMaterial.svg b/resources/godot_icons/dark/ProceduralSkyMaterial.svg index ceaf56d..87d61de 100644 --- a/resources/godot_icons/dark/ProceduralSkyMaterial.svg +++ b/resources/godot_icons/dark/ProceduralSkyMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Progress1.svg b/resources/godot_icons/dark/Progress1.svg new file mode 100644 index 0000000..8385bf0 --- /dev/null +++ b/resources/godot_icons/dark/Progress1.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Progress2.svg b/resources/godot_icons/dark/Progress2.svg new file mode 100644 index 0000000..9d48f48 --- /dev/null +++ b/resources/godot_icons/dark/Progress2.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Progress3.svg b/resources/godot_icons/dark/Progress3.svg new file mode 100644 index 0000000..c0ac80a --- /dev/null +++ b/resources/godot_icons/dark/Progress3.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Progress4.svg b/resources/godot_icons/dark/Progress4.svg new file mode 100644 index 0000000..b5162d0 --- /dev/null +++ b/resources/godot_icons/dark/Progress4.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Progress5.svg b/resources/godot_icons/dark/Progress5.svg new file mode 100644 index 0000000..f7b8f7a --- /dev/null +++ b/resources/godot_icons/dark/Progress5.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Progress6.svg b/resources/godot_icons/dark/Progress6.svg new file mode 100644 index 0000000..485c477 --- /dev/null +++ b/resources/godot_icons/dark/Progress6.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Progress7.svg b/resources/godot_icons/dark/Progress7.svg new file mode 100644 index 0000000..5a15ad8 --- /dev/null +++ b/resources/godot_icons/dark/Progress7.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Progress8.svg b/resources/godot_icons/dark/Progress8.svg new file mode 100644 index 0000000..06d0204 --- /dev/null +++ b/resources/godot_icons/dark/Progress8.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ProgressBar.svg b/resources/godot_icons/dark/ProgressBar.svg index 2200cb8..1bdd750 100644 --- a/resources/godot_icons/dark/ProgressBar.svg +++ b/resources/godot_icons/dark/ProgressBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/QuadMesh.svg b/resources/godot_icons/dark/QuadMesh.svg index 86cc1bc..c9f762c 100644 --- a/resources/godot_icons/dark/QuadMesh.svg +++ b/resources/godot_icons/dark/QuadMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/QuadOccluder3D.svg b/resources/godot_icons/dark/QuadOccluder3D.svg index 16da6f4..1f91cde 100644 --- a/resources/godot_icons/dark/QuadOccluder3D.svg +++ b/resources/godot_icons/dark/QuadOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RectangleShape2D.svg b/resources/godot_icons/dark/RectangleShape2D.svg index 2d6a503..4a0f516 100644 --- a/resources/godot_icons/dark/RectangleShape2D.svg +++ b/resources/godot_icons/dark/RectangleShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ReflectionProbe.svg b/resources/godot_icons/dark/ReflectionProbe.svg index 4d8248f..aa2138a 100644 --- a/resources/godot_icons/dark/ReflectionProbe.svg +++ b/resources/godot_icons/dark/ReflectionProbe.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RegEx.svg b/resources/godot_icons/dark/RegEx.svg new file mode 100644 index 0000000..4df26f4 --- /dev/null +++ b/resources/godot_icons/dark/RegEx.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/RegExMatch.svg b/resources/godot_icons/dark/RegExMatch.svg new file mode 100644 index 0000000..889cf6c --- /dev/null +++ b/resources/godot_icons/dark/RegExMatch.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Reload.svg b/resources/godot_icons/dark/Reload.svg new file mode 100644 index 0000000..9887d0d --- /dev/null +++ b/resources/godot_icons/dark/Reload.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ReloadSmall.svg b/resources/godot_icons/dark/ReloadSmall.svg new file mode 100644 index 0000000..970383f --- /dev/null +++ b/resources/godot_icons/dark/ReloadSmall.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/RemoteTransform2D.svg b/resources/godot_icons/dark/RemoteTransform2D.svg index abe5e33..ddbd806 100644 --- a/resources/godot_icons/dark/RemoteTransform2D.svg +++ b/resources/godot_icons/dark/RemoteTransform2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RemoteTransform3D.svg b/resources/godot_icons/dark/RemoteTransform3D.svg index d55e4e4..4ec5032 100644 --- a/resources/godot_icons/dark/RemoteTransform3D.svg +++ b/resources/godot_icons/dark/RemoteTransform3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ResourcePreloader.svg b/resources/godot_icons/dark/ResourcePreloader.svg index 7a788bb..16a1d8d 100644 --- a/resources/godot_icons/dark/ResourcePreloader.svg +++ b/resources/godot_icons/dark/ResourcePreloader.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RibbonTrailMesh.svg b/resources/godot_icons/dark/RibbonTrailMesh.svg index 3f6cf0b..7b22a2b 100644 --- a/resources/godot_icons/dark/RibbonTrailMesh.svg +++ b/resources/godot_icons/dark/RibbonTrailMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RichTextEffect.svg b/resources/godot_icons/dark/RichTextEffect.svg index f1d3f16..d06fb3f 100644 --- a/resources/godot_icons/dark/RichTextEffect.svg +++ b/resources/godot_icons/dark/RichTextEffect.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RigidBody2D.svg b/resources/godot_icons/dark/RigidBody2D.svg index 39c00d4..ca241c7 100644 --- a/resources/godot_icons/dark/RigidBody2D.svg +++ b/resources/godot_icons/dark/RigidBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RigidBody3D.svg b/resources/godot_icons/dark/RigidBody3D.svg index 6e7bdbf..a962ad2 100644 --- a/resources/godot_icons/dark/RigidBody3D.svg +++ b/resources/godot_icons/dark/RigidBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/RootMotionView.svg b/resources/godot_icons/dark/RootMotionView.svg index 9dee731..ef891a7 100644 --- a/resources/godot_icons/dark/RootMotionView.svg +++ b/resources/godot_icons/dark/RootMotionView.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Script.svg b/resources/godot_icons/dark/Script.svg new file mode 100644 index 0000000..0c5b363 --- /dev/null +++ b/resources/godot_icons/dark/Script.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ScriptCreate.svg b/resources/godot_icons/dark/ScriptCreate.svg new file mode 100644 index 0000000..fc54651 --- /dev/null +++ b/resources/godot_icons/dark/ScriptCreate.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ScriptRemove.svg b/resources/godot_icons/dark/ScriptRemove.svg new file mode 100644 index 0000000..14ae5d1 --- /dev/null +++ b/resources/godot_icons/dark/ScriptRemove.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ScrollContainer.svg b/resources/godot_icons/dark/ScrollContainer.svg index 6005906..351e231 100644 --- a/resources/godot_icons/dark/ScrollContainer.svg +++ b/resources/godot_icons/dark/ScrollContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Search.svg b/resources/godot_icons/dark/Search.svg new file mode 100644 index 0000000..e046e87 --- /dev/null +++ b/resources/godot_icons/dark/Search.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/SegmentShape2D.svg b/resources/godot_icons/dark/SegmentShape2D.svg index b6763f7..23e7054 100644 --- a/resources/godot_icons/dark/SegmentShape2D.svg +++ b/resources/godot_icons/dark/SegmentShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SeparationRayShape2D.svg b/resources/godot_icons/dark/SeparationRayShape2D.svg index 6966e75..71da58f 100644 --- a/resources/godot_icons/dark/SeparationRayShape2D.svg +++ b/resources/godot_icons/dark/SeparationRayShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SeparationRayShape3D.svg b/resources/godot_icons/dark/SeparationRayShape3D.svg index 44d32fe..65c68d0 100644 --- a/resources/godot_icons/dark/SeparationRayShape3D.svg +++ b/resources/godot_icons/dark/SeparationRayShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Shader.svg b/resources/godot_icons/dark/Shader.svg index 5a7e511..2828ad5 100644 --- a/resources/godot_icons/dark/Shader.svg +++ b/resources/godot_icons/dark/Shader.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ShaderGlobalsOverride.svg b/resources/godot_icons/dark/ShaderGlobalsOverride.svg index 3a4e4cf..8ac50f0 100644 --- a/resources/godot_icons/dark/ShaderGlobalsOverride.svg +++ b/resources/godot_icons/dark/ShaderGlobalsOverride.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ShaderInclude.svg b/resources/godot_icons/dark/ShaderInclude.svg new file mode 100644 index 0000000..8c540b5 --- /dev/null +++ b/resources/godot_icons/dark/ShaderInclude.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ShaderMaterial.svg b/resources/godot_icons/dark/ShaderMaterial.svg index 80a1d0a..a53be38 100644 --- a/resources/godot_icons/dark/ShaderMaterial.svg +++ b/resources/godot_icons/dark/ShaderMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ShapeCast2D.svg b/resources/godot_icons/dark/ShapeCast2D.svg index dcdba92..b1e71b3 100644 --- a/resources/godot_icons/dark/ShapeCast2D.svg +++ b/resources/godot_icons/dark/ShapeCast2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ShapeCast3D.svg b/resources/godot_icons/dark/ShapeCast3D.svg index 258dfa5..7ffa630 100644 --- a/resources/godot_icons/dark/ShapeCast3D.svg +++ b/resources/godot_icons/dark/ShapeCast3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Signals.svg b/resources/godot_icons/dark/Signals.svg new file mode 100644 index 0000000..3ac7c2b --- /dev/null +++ b/resources/godot_icons/dark/Signals.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/SignalsAndGroups.svg b/resources/godot_icons/dark/SignalsAndGroups.svg new file mode 100644 index 0000000..3f618c6 --- /dev/null +++ b/resources/godot_icons/dark/SignalsAndGroups.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/Skeleton2D.svg b/resources/godot_icons/dark/Skeleton2D.svg index b34a2a9..f9aa146 100644 --- a/resources/godot_icons/dark/Skeleton2D.svg +++ b/resources/godot_icons/dark/Skeleton2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Skeleton3D.svg b/resources/godot_icons/dark/Skeleton3D.svg index c376aef..965651e 100644 --- a/resources/godot_icons/dark/Skeleton3D.svg +++ b/resources/godot_icons/dark/Skeleton3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SkeletonIK3D.svg b/resources/godot_icons/dark/SkeletonIK3D.svg index f497934..94c0354 100644 --- a/resources/godot_icons/dark/SkeletonIK3D.svg +++ b/resources/godot_icons/dark/SkeletonIK3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Sky.svg b/resources/godot_icons/dark/Sky.svg index e463c5f..73656ed 100644 --- a/resources/godot_icons/dark/Sky.svg +++ b/resources/godot_icons/dark/Sky.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SliderJoint3D.svg b/resources/godot_icons/dark/SliderJoint3D.svg index 57d22df..1b76e43 100644 --- a/resources/godot_icons/dark/SliderJoint3D.svg +++ b/resources/godot_icons/dark/SliderJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Slot.svg b/resources/godot_icons/dark/Slot.svg new file mode 100644 index 0000000..93c125a --- /dev/null +++ b/resources/godot_icons/dark/Slot.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/SphereMesh.svg b/resources/godot_icons/dark/SphereMesh.svg index be2dd44..83dd42f 100644 --- a/resources/godot_icons/dark/SphereMesh.svg +++ b/resources/godot_icons/dark/SphereMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SphereOccluder3D.svg b/resources/godot_icons/dark/SphereOccluder3D.svg index 850e265..d593ce6 100644 --- a/resources/godot_icons/dark/SphereOccluder3D.svg +++ b/resources/godot_icons/dark/SphereOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SpinBox.svg b/resources/godot_icons/dark/SpinBox.svg index a8dc55d..aa63a09 100644 --- a/resources/godot_icons/dark/SpinBox.svg +++ b/resources/godot_icons/dark/SpinBox.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SplitContainer.svg b/resources/godot_icons/dark/SplitContainer.svg index 44ec14c..f9ee381 100644 --- a/resources/godot_icons/dark/SplitContainer.svg +++ b/resources/godot_icons/dark/SplitContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SpotLight3D.svg b/resources/godot_icons/dark/SpotLight3D.svg index 5849c80..547662d 100644 --- a/resources/godot_icons/dark/SpotLight3D.svg +++ b/resources/godot_icons/dark/SpotLight3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Sprite2D.svg b/resources/godot_icons/dark/Sprite2D.svg index faae0e4..16a903d 100644 --- a/resources/godot_icons/dark/Sprite2D.svg +++ b/resources/godot_icons/dark/Sprite2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Sprite3D.svg b/resources/godot_icons/dark/Sprite3D.svg index 4ccd8f9..e18a79b 100644 --- a/resources/godot_icons/dark/Sprite3D.svg +++ b/resources/godot_icons/dark/Sprite3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SpriteFrames.svg b/resources/godot_icons/dark/SpriteFrames.svg index 8ab0ec2..a6aecc4 100644 --- a/resources/godot_icons/dark/SpriteFrames.svg +++ b/resources/godot_icons/dark/SpriteFrames.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/StandardMaterial3D.svg b/resources/godot_icons/dark/StandardMaterial3D.svg index 717ba5d..41e9a67 100644 --- a/resources/godot_icons/dark/StandardMaterial3D.svg +++ b/resources/godot_icons/dark/StandardMaterial3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/StaticBody2D.svg b/resources/godot_icons/dark/StaticBody2D.svg index dce7134..0270f24 100644 --- a/resources/godot_icons/dark/StaticBody2D.svg +++ b/resources/godot_icons/dark/StaticBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/StaticBody3D.svg b/resources/godot_icons/dark/StaticBody3D.svg index 770417c..4b331ff 100644 --- a/resources/godot_icons/dark/StaticBody3D.svg +++ b/resources/godot_icons/dark/StaticBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Stop.svg b/resources/godot_icons/dark/Stop.svg new file mode 100644 index 0000000..b10acdb --- /dev/null +++ b/resources/godot_icons/dark/Stop.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/StyleBoxEmpty.svg b/resources/godot_icons/dark/StyleBoxEmpty.svg index 3c4546d..c110d45 100644 --- a/resources/godot_icons/dark/StyleBoxEmpty.svg +++ b/resources/godot_icons/dark/StyleBoxEmpty.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/StyleBoxFlat.svg b/resources/godot_icons/dark/StyleBoxFlat.svg index 5bf01f5..9868644 100644 --- a/resources/godot_icons/dark/StyleBoxFlat.svg +++ b/resources/godot_icons/dark/StyleBoxFlat.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/StyleBoxLine.svg b/resources/godot_icons/dark/StyleBoxLine.svg index 995f56f..818864f 100644 --- a/resources/godot_icons/dark/StyleBoxLine.svg +++ b/resources/godot_icons/dark/StyleBoxLine.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/StyleBoxTexture.svg b/resources/godot_icons/dark/StyleBoxTexture.svg index a356d11..9054053 100644 --- a/resources/godot_icons/dark/StyleBoxTexture.svg +++ b/resources/godot_icons/dark/StyleBoxTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SubViewport.svg b/resources/godot_icons/dark/SubViewport.svg index d5da67e..3644215 100644 --- a/resources/godot_icons/dark/SubViewport.svg +++ b/resources/godot_icons/dark/SubViewport.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SubViewportContainer.svg b/resources/godot_icons/dark/SubViewportContainer.svg index baf80e5..abe65e2 100644 --- a/resources/godot_icons/dark/SubViewportContainer.svg +++ b/resources/godot_icons/dark/SubViewportContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/SyntaxHighlighter.svg b/resources/godot_icons/dark/SyntaxHighlighter.svg new file mode 100644 index 0000000..4773251 --- /dev/null +++ b/resources/godot_icons/dark/SyntaxHighlighter.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/SystemFont.svg b/resources/godot_icons/dark/SystemFont.svg index 25415a2..438c707 100644 --- a/resources/godot_icons/dark/SystemFont.svg +++ b/resources/godot_icons/dark/SystemFont.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TabBar.svg b/resources/godot_icons/dark/TabBar.svg index 4fd4a5c..e6c6449 100644 --- a/resources/godot_icons/dark/TabBar.svg +++ b/resources/godot_icons/dark/TabBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TabContainer.svg b/resources/godot_icons/dark/TabContainer.svg index aeb5507..bd9ae38 100644 --- a/resources/godot_icons/dark/TabContainer.svg +++ b/resources/godot_icons/dark/TabContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TextEdit.svg b/resources/godot_icons/dark/TextEdit.svg index 4dfbff8..6ea17d7 100644 --- a/resources/godot_icons/dark/TextEdit.svg +++ b/resources/godot_icons/dark/TextEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TextMesh.svg b/resources/godot_icons/dark/TextMesh.svg index 234ce75..868ab6e 100644 --- a/resources/godot_icons/dark/TextMesh.svg +++ b/resources/godot_icons/dark/TextMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Texture2DArray.svg b/resources/godot_icons/dark/Texture2DArray.svg index 6d5bf0d..f585263 100644 --- a/resources/godot_icons/dark/Texture2DArray.svg +++ b/resources/godot_icons/dark/Texture2DArray.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TextureButton.svg b/resources/godot_icons/dark/TextureButton.svg index 4973869..4765d5a 100644 --- a/resources/godot_icons/dark/TextureButton.svg +++ b/resources/godot_icons/dark/TextureButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TextureProgressBar.svg b/resources/godot_icons/dark/TextureProgressBar.svg index 30d76e3..423e87e 100644 --- a/resources/godot_icons/dark/TextureProgressBar.svg +++ b/resources/godot_icons/dark/TextureProgressBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Theme.svg b/resources/godot_icons/dark/Theme.svg index 401d884..f35462d 100644 --- a/resources/godot_icons/dark/Theme.svg +++ b/resources/godot_icons/dark/Theme.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TileMap.svg b/resources/godot_icons/dark/TileMap.svg index 87bca73..d07b87a 100644 --- a/resources/godot_icons/dark/TileMap.svg +++ b/resources/godot_icons/dark/TileMap.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TileSet.svg b/resources/godot_icons/dark/TileSet.svg index 5da4068..5d423c0 100644 --- a/resources/godot_icons/dark/TileSet.svg +++ b/resources/godot_icons/dark/TileSet.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Timer.svg b/resources/godot_icons/dark/Timer.svg index 3fc6975..565a3b7 100644 --- a/resources/godot_icons/dark/Timer.svg +++ b/resources/godot_icons/dark/Timer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TorusMesh.svg b/resources/godot_icons/dark/TorusMesh.svg index 2ed973d..adf3a84 100644 --- a/resources/godot_icons/dark/TorusMesh.svg +++ b/resources/godot_icons/dark/TorusMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TouchScreenButton.svg b/resources/godot_icons/dark/TouchScreenButton.svg index 8ec481e..71c10f2 100644 --- a/resources/godot_icons/dark/TouchScreenButton.svg +++ b/resources/godot_icons/dark/TouchScreenButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Tree.svg b/resources/godot_icons/dark/Tree.svg index 9476f40..c17a928 100644 --- a/resources/godot_icons/dark/Tree.svg +++ b/resources/godot_icons/dark/Tree.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/TubeTrailMesh.svg b/resources/godot_icons/dark/TubeTrailMesh.svg index 3ca5242..1cbab36 100644 --- a/resources/godot_icons/dark/TubeTrailMesh.svg +++ b/resources/godot_icons/dark/TubeTrailMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Tween.svg b/resources/godot_icons/dark/Tween.svg index d5cfbbc..9d382a4 100644 --- a/resources/godot_icons/dark/Tween.svg +++ b/resources/godot_icons/dark/Tween.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Unlock.svg b/resources/godot_icons/dark/Unlock.svg new file mode 100644 index 0000000..d377cf1 --- /dev/null +++ b/resources/godot_icons/dark/Unlock.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/VBoxContainer.svg b/resources/godot_icons/dark/VBoxContainer.svg index 9a68df4..4cc0c91 100644 --- a/resources/godot_icons/dark/VBoxContainer.svg +++ b/resources/godot_icons/dark/VBoxContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VFlowContainer.svg b/resources/godot_icons/dark/VFlowContainer.svg index 392b214..cc9abce 100644 --- a/resources/godot_icons/dark/VFlowContainer.svg +++ b/resources/godot_icons/dark/VFlowContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VScrollBar.svg b/resources/godot_icons/dark/VScrollBar.svg index e0fc575..fa86213 100644 --- a/resources/godot_icons/dark/VScrollBar.svg +++ b/resources/godot_icons/dark/VScrollBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VSeparator.svg b/resources/godot_icons/dark/VSeparator.svg index 11038b7..afe309b 100644 --- a/resources/godot_icons/dark/VSeparator.svg +++ b/resources/godot_icons/dark/VSeparator.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VSlider.svg b/resources/godot_icons/dark/VSlider.svg index 0ecb1e9..9ba42e8 100644 --- a/resources/godot_icons/dark/VSlider.svg +++ b/resources/godot_icons/dark/VSlider.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VSplitContainer.svg b/resources/godot_icons/dark/VSplitContainer.svg index 21d45bd..1d60a38 100644 --- a/resources/godot_icons/dark/VSplitContainer.svg +++ b/resources/godot_icons/dark/VSplitContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VehicleBody3D.svg b/resources/godot_icons/dark/VehicleBody3D.svg index 6684368..34a35c8 100644 --- a/resources/godot_icons/dark/VehicleBody3D.svg +++ b/resources/godot_icons/dark/VehicleBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VehicleWheel3D.svg b/resources/godot_icons/dark/VehicleWheel3D.svg index 623d851..c567dd4 100644 --- a/resources/godot_icons/dark/VehicleWheel3D.svg +++ b/resources/godot_icons/dark/VehicleWheel3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VideoStreamPlayer.svg b/resources/godot_icons/dark/VideoStreamPlayer.svg index c5433e0..304a17c 100644 --- a/resources/godot_icons/dark/VideoStreamPlayer.svg +++ b/resources/godot_icons/dark/VideoStreamPlayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/ViewportTexture.svg b/resources/godot_icons/dark/ViewportTexture.svg index a5b1e4a..de2ad7f 100644 --- a/resources/godot_icons/dark/ViewportTexture.svg +++ b/resources/godot_icons/dark/ViewportTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisibleOnScreenEnabler2D.svg b/resources/godot_icons/dark/VisibleOnScreenEnabler2D.svg index 688890b..0214851 100644 --- a/resources/godot_icons/dark/VisibleOnScreenEnabler2D.svg +++ b/resources/godot_icons/dark/VisibleOnScreenEnabler2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisibleOnScreenEnabler3D.svg b/resources/godot_icons/dark/VisibleOnScreenEnabler3D.svg index 9b2ead8..3c03239 100644 --- a/resources/godot_icons/dark/VisibleOnScreenEnabler3D.svg +++ b/resources/godot_icons/dark/VisibleOnScreenEnabler3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisibleOnScreenNotifier2D.svg b/resources/godot_icons/dark/VisibleOnScreenNotifier2D.svg index 8eaf833..1d694ac 100644 --- a/resources/godot_icons/dark/VisibleOnScreenNotifier2D.svg +++ b/resources/godot_icons/dark/VisibleOnScreenNotifier2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisibleOnScreenNotifier3D.svg b/resources/godot_icons/dark/VisibleOnScreenNotifier3D.svg index 56f0a65..31c6a1c 100644 --- a/resources/godot_icons/dark/VisibleOnScreenNotifier3D.svg +++ b/resources/godot_icons/dark/VisibleOnScreenNotifier3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShader.svg b/resources/godot_icons/dark/VisualShader.svg index 92b4737..945d215 100644 --- a/resources/godot_icons/dark/VisualShader.svg +++ b/resources/godot_icons/dark/VisualShader.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeColorConstant.svg b/resources/godot_icons/dark/VisualShaderNodeColorConstant.svg index d327012..c2af7df 100644 --- a/resources/godot_icons/dark/VisualShaderNodeColorConstant.svg +++ b/resources/godot_icons/dark/VisualShaderNodeColorConstant.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeColorOp.svg b/resources/godot_icons/dark/VisualShaderNodeColorOp.svg index 005da8b..c21852a 100644 --- a/resources/godot_icons/dark/VisualShaderNodeColorOp.svg +++ b/resources/godot_icons/dark/VisualShaderNodeColorOp.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeCubeMap.svg b/resources/godot_icons/dark/VisualShaderNodeCubeMap.svg index fecb4d1..e28552c 100644 --- a/resources/godot_icons/dark/VisualShaderNodeCubeMap.svg +++ b/resources/godot_icons/dark/VisualShaderNodeCubeMap.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeCurveTexture.svg b/resources/godot_icons/dark/VisualShaderNodeCurveTexture.svg index e468acf..f1f6a54 100644 --- a/resources/godot_icons/dark/VisualShaderNodeCurveTexture.svg +++ b/resources/godot_icons/dark/VisualShaderNodeCurveTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeCurveXYZTexture.svg b/resources/godot_icons/dark/VisualShaderNodeCurveXYZTexture.svg index e468acf..f1f6a54 100644 --- a/resources/godot_icons/dark/VisualShaderNodeCurveXYZTexture.svg +++ b/resources/godot_icons/dark/VisualShaderNodeCurveXYZTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeExpression.svg b/resources/godot_icons/dark/VisualShaderNodeExpression.svg index 710ba81..ae403da 100644 --- a/resources/godot_icons/dark/VisualShaderNodeExpression.svg +++ b/resources/godot_icons/dark/VisualShaderNodeExpression.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeFloatFunc.svg b/resources/godot_icons/dark/VisualShaderNodeFloatFunc.svg index 382c4e6..7cf2a5f 100644 --- a/resources/godot_icons/dark/VisualShaderNodeFloatFunc.svg +++ b/resources/godot_icons/dark/VisualShaderNodeFloatFunc.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeFloatOp.svg b/resources/godot_icons/dark/VisualShaderNodeFloatOp.svg index 546ffc1..54048f0 100644 --- a/resources/godot_icons/dark/VisualShaderNodeFloatOp.svg +++ b/resources/godot_icons/dark/VisualShaderNodeFloatOp.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeGlobalExpression.svg b/resources/godot_icons/dark/VisualShaderNodeGlobalExpression.svg index 0cafffb..14b75e2 100644 --- a/resources/godot_icons/dark/VisualShaderNodeGlobalExpression.svg +++ b/resources/godot_icons/dark/VisualShaderNodeGlobalExpression.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeIntFunc.svg b/resources/godot_icons/dark/VisualShaderNodeIntFunc.svg index 382c4e6..7cf2a5f 100644 --- a/resources/godot_icons/dark/VisualShaderNodeIntFunc.svg +++ b/resources/godot_icons/dark/VisualShaderNodeIntFunc.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeIntOp.svg b/resources/godot_icons/dark/VisualShaderNodeIntOp.svg index 546ffc1..54048f0 100644 --- a/resources/godot_icons/dark/VisualShaderNodeIntOp.svg +++ b/resources/godot_icons/dark/VisualShaderNodeIntOp.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeTransformCompose.svg b/resources/godot_icons/dark/VisualShaderNodeTransformCompose.svg index 774f9e7..6f44f23 100644 --- a/resources/godot_icons/dark/VisualShaderNodeTransformCompose.svg +++ b/resources/godot_icons/dark/VisualShaderNodeTransformCompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeTransformDecompose.svg b/resources/godot_icons/dark/VisualShaderNodeTransformDecompose.svg index 9594bcb..1521181 100644 --- a/resources/godot_icons/dark/VisualShaderNodeTransformDecompose.svg +++ b/resources/godot_icons/dark/VisualShaderNodeTransformDecompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeTransformVecMult.svg b/resources/godot_icons/dark/VisualShaderNodeTransformVecMult.svg index 611f027..cd108f6 100644 --- a/resources/godot_icons/dark/VisualShaderNodeTransformVecMult.svg +++ b/resources/godot_icons/dark/VisualShaderNodeTransformVecMult.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeVectorCompose.svg b/resources/godot_icons/dark/VisualShaderNodeVectorCompose.svg index 2c4c1fb..6502ca5 100644 --- a/resources/godot_icons/dark/VisualShaderNodeVectorCompose.svg +++ b/resources/godot_icons/dark/VisualShaderNodeVectorCompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeVectorDecompose.svg b/resources/godot_icons/dark/VisualShaderNodeVectorDecompose.svg index 5fb8661..5ff0706 100644 --- a/resources/godot_icons/dark/VisualShaderNodeVectorDecompose.svg +++ b/resources/godot_icons/dark/VisualShaderNodeVectorDecompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeVectorDistance.svg b/resources/godot_icons/dark/VisualShaderNodeVectorDistance.svg index b7185f2..9ea5462 100644 --- a/resources/godot_icons/dark/VisualShaderNodeVectorDistance.svg +++ b/resources/godot_icons/dark/VisualShaderNodeVectorDistance.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeVectorFunc.svg b/resources/godot_icons/dark/VisualShaderNodeVectorFunc.svg index e452bc3..11405f1 100644 --- a/resources/godot_icons/dark/VisualShaderNodeVectorFunc.svg +++ b/resources/godot_icons/dark/VisualShaderNodeVectorFunc.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VisualShaderNodeVectorLen.svg b/resources/godot_icons/dark/VisualShaderNodeVectorLen.svg index dce4890..ad9b51d 100644 --- a/resources/godot_icons/dark/VisualShaderNodeVectorLen.svg +++ b/resources/godot_icons/dark/VisualShaderNodeVectorLen.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VoxelGI.svg b/resources/godot_icons/dark/VoxelGI.svg index 1f22cd8..6cad765 100644 --- a/resources/godot_icons/dark/VoxelGI.svg +++ b/resources/godot_icons/dark/VoxelGI.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/VoxelGIData.svg b/resources/godot_icons/dark/VoxelGIData.svg index 5975115..a4eb174 100644 --- a/resources/godot_icons/dark/VoxelGIData.svg +++ b/resources/godot_icons/dark/VoxelGIData.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/World2D.svg b/resources/godot_icons/dark/World2D.svg index d784836..94d42a2 100644 --- a/resources/godot_icons/dark/World2D.svg +++ b/resources/godot_icons/dark/World2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/World3D.svg b/resources/godot_icons/dark/World3D.svg index acb1083..1e292e2 100644 --- a/resources/godot_icons/dark/World3D.svg +++ b/resources/godot_icons/dark/World3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/WorldBoundaryShape2D.svg b/resources/godot_icons/dark/WorldBoundaryShape2D.svg index 70defbe..34dcbdc 100644 --- a/resources/godot_icons/dark/WorldBoundaryShape2D.svg +++ b/resources/godot_icons/dark/WorldBoundaryShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/WorldBoundaryShape3D.svg b/resources/godot_icons/dark/WorldBoundaryShape3D.svg index a73e74a..c7d0495 100644 --- a/resources/godot_icons/dark/WorldBoundaryShape3D.svg +++ b/resources/godot_icons/dark/WorldBoundaryShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/WorldEnvironment.svg b/resources/godot_icons/dark/WorldEnvironment.svg index 2df8b2b..c6497ce 100644 --- a/resources/godot_icons/dark/WorldEnvironment.svg +++ b/resources/godot_icons/dark/WorldEnvironment.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/XRAnchor3D.svg b/resources/godot_icons/dark/XRAnchor3D.svg index 0f6282a..83173e6 100644 --- a/resources/godot_icons/dark/XRAnchor3D.svg +++ b/resources/godot_icons/dark/XRAnchor3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/XRCamera3D.svg b/resources/godot_icons/dark/XRCamera3D.svg index 9f9072f..9608bfd 100644 --- a/resources/godot_icons/dark/XRCamera3D.svg +++ b/resources/godot_icons/dark/XRCamera3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/XRController3D.svg b/resources/godot_icons/dark/XRController3D.svg index 9296b11..2bd776b 100644 --- a/resources/godot_icons/dark/XRController3D.svg +++ b/resources/godot_icons/dark/XRController3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/XROrigin3D.svg b/resources/godot_icons/dark/XROrigin3D.svg index dda24e7..178bce2 100644 --- a/resources/godot_icons/dark/XROrigin3D.svg +++ b/resources/godot_icons/dark/XROrigin3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/dark/Zoom.svg b/resources/godot_icons/dark/Zoom.svg new file mode 100644 index 0000000..655636b --- /dev/null +++ b/resources/godot_icons/dark/Zoom.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ZoomLess.svg b/resources/godot_icons/dark/ZoomLess.svg new file mode 100644 index 0000000..acaadb6 --- /dev/null +++ b/resources/godot_icons/dark/ZoomLess.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ZoomMore.svg b/resources/godot_icons/dark/ZoomMore.svg new file mode 100644 index 0000000..2327fca --- /dev/null +++ b/resources/godot_icons/dark/ZoomMore.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/dark/ZoomReset.svg b/resources/godot_icons/dark/ZoomReset.svg new file mode 100644 index 0000000..75c9aeb --- /dev/null +++ b/resources/godot_icons/dark/ZoomReset.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/AcceptDialog.svg b/resources/godot_icons/light/AcceptDialog.svg index 35b5b47..c06a51f 100644 --- a/resources/godot_icons/light/AcceptDialog.svg +++ b/resources/godot_icons/light/AcceptDialog.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimatableBody2D.svg b/resources/godot_icons/light/AnimatableBody2D.svg index 49ac80a..0d8eb99 100644 --- a/resources/godot_icons/light/AnimatableBody2D.svg +++ b/resources/godot_icons/light/AnimatableBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimatableBody3D.svg b/resources/godot_icons/light/AnimatableBody3D.svg index 7744881..993ac56 100644 --- a/resources/godot_icons/light/AnimatableBody3D.svg +++ b/resources/godot_icons/light/AnimatableBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimatedSprite2D.svg b/resources/godot_icons/light/AnimatedSprite2D.svg index ad39f86..2bbeaff 100644 --- a/resources/godot_icons/light/AnimatedSprite2D.svg +++ b/resources/godot_icons/light/AnimatedSprite2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimatedSprite3D.svg b/resources/godot_icons/light/AnimatedSprite3D.svg index ee6c5da..91a15c5 100644 --- a/resources/godot_icons/light/AnimatedSprite3D.svg +++ b/resources/godot_icons/light/AnimatedSprite3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimatedTexture.svg b/resources/godot_icons/light/AnimatedTexture.svg index c7c363e..2a5c896 100644 --- a/resources/godot_icons/light/AnimatedTexture.svg +++ b/resources/godot_icons/light/AnimatedTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Animation.svg b/resources/godot_icons/light/Animation.svg index 52095ee..bfde7bb 100644 --- a/resources/godot_icons/light/Animation.svg +++ b/resources/godot_icons/light/Animation.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimationLibrary.svg b/resources/godot_icons/light/AnimationLibrary.svg index 0aaf38a..c328ef2 100644 --- a/resources/godot_icons/light/AnimationLibrary.svg +++ b/resources/godot_icons/light/AnimationLibrary.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimationPlayer.svg b/resources/godot_icons/light/AnimationPlayer.svg index 38ec45d..13f927f 100644 --- a/resources/godot_icons/light/AnimationPlayer.svg +++ b/resources/godot_icons/light/AnimationPlayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AnimationTree.svg b/resources/godot_icons/light/AnimationTree.svg index ea2d4c3..f1fb371 100644 --- a/resources/godot_icons/light/AnimationTree.svg +++ b/resources/godot_icons/light/AnimationTree.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Area2D.svg b/resources/godot_icons/light/Area2D.svg index a5e0837..9e74d92 100644 --- a/resources/godot_icons/light/Area2D.svg +++ b/resources/godot_icons/light/Area2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Area3D.svg b/resources/godot_icons/light/Area3D.svg index a5dd916..79eb41b 100644 --- a/resources/godot_icons/light/Area3D.svg +++ b/resources/godot_icons/light/Area3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ArrayMesh.svg b/resources/godot_icons/light/ArrayMesh.svg index 2494a51..9e39024 100644 --- a/resources/godot_icons/light/ArrayMesh.svg +++ b/resources/godot_icons/light/ArrayMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ArrayOccluder3D.svg b/resources/godot_icons/light/ArrayOccluder3D.svg index ac45821..3d18fa0 100644 --- a/resources/godot_icons/light/ArrayOccluder3D.svg +++ b/resources/godot_icons/light/ArrayOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ArrowDown.svg b/resources/godot_icons/light/ArrowDown.svg new file mode 100644 index 0000000..5be994e --- /dev/null +++ b/resources/godot_icons/light/ArrowDown.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ArrowLeft.svg b/resources/godot_icons/light/ArrowLeft.svg new file mode 100644 index 0000000..3d83bc3 --- /dev/null +++ b/resources/godot_icons/light/ArrowLeft.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ArrowRight.svg b/resources/godot_icons/light/ArrowRight.svg new file mode 100644 index 0000000..9a150e4 --- /dev/null +++ b/resources/godot_icons/light/ArrowRight.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ArrowUp.svg b/resources/godot_icons/light/ArrowUp.svg new file mode 100644 index 0000000..76febc0 --- /dev/null +++ b/resources/godot_icons/light/ArrowUp.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/AspectRatioContainer.svg b/resources/godot_icons/light/AspectRatioContainer.svg index 868ace9..efe0439 100644 --- a/resources/godot_icons/light/AspectRatioContainer.svg +++ b/resources/godot_icons/light/AspectRatioContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AtlasTexture.svg b/resources/godot_icons/light/AtlasTexture.svg index d862857..5a10abe 100644 --- a/resources/godot_icons/light/AtlasTexture.svg +++ b/resources/godot_icons/light/AtlasTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AudioListener2D.svg b/resources/godot_icons/light/AudioListener2D.svg index 3d8d02f..c3d532a 100644 --- a/resources/godot_icons/light/AudioListener2D.svg +++ b/resources/godot_icons/light/AudioListener2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AudioListener3D.svg b/resources/godot_icons/light/AudioListener3D.svg index 0a5bee5..40da0f1 100644 --- a/resources/godot_icons/light/AudioListener3D.svg +++ b/resources/godot_icons/light/AudioListener3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AudioStreamPlayer.svg b/resources/godot_icons/light/AudioStreamPlayer.svg index af4c642..216cce7 100644 --- a/resources/godot_icons/light/AudioStreamPlayer.svg +++ b/resources/godot_icons/light/AudioStreamPlayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AudioStreamPlayer2D.svg b/resources/godot_icons/light/AudioStreamPlayer2D.svg index 101f180..3015826 100644 --- a/resources/godot_icons/light/AudioStreamPlayer2D.svg +++ b/resources/godot_icons/light/AudioStreamPlayer2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AudioStreamPlayer3D.svg b/resources/godot_icons/light/AudioStreamPlayer3D.svg index 087f7ea..6cbfefd 100644 --- a/resources/godot_icons/light/AudioStreamPlayer3D.svg +++ b/resources/godot_icons/light/AudioStreamPlayer3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/AudioStreamPolyphonic.svg b/resources/godot_icons/light/AudioStreamPolyphonic.svg new file mode 100644 index 0000000..0e20205 --- /dev/null +++ b/resources/godot_icons/light/AudioStreamPolyphonic.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/AudioStreamWAV.svg b/resources/godot_icons/light/AudioStreamWAV.svg index 2e54de9..bb06b90 100644 --- a/resources/godot_icons/light/AudioStreamWAV.svg +++ b/resources/godot_icons/light/AudioStreamWAV.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Bone2D.svg b/resources/godot_icons/light/Bone2D.svg index 339c51e..d41c4f7 100644 --- a/resources/godot_icons/light/Bone2D.svg +++ b/resources/godot_icons/light/Bone2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/BoneAttachment3D.svg b/resources/godot_icons/light/BoneAttachment3D.svg index a14f2f5..f8ef02f 100644 --- a/resources/godot_icons/light/BoneAttachment3D.svg +++ b/resources/godot_icons/light/BoneAttachment3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/BoxContainer.svg b/resources/godot_icons/light/BoxContainer.svg index d2cf482..fd2b88c 100644 --- a/resources/godot_icons/light/BoxContainer.svg +++ b/resources/godot_icons/light/BoxContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/BoxMesh.svg b/resources/godot_icons/light/BoxMesh.svg index ef2f77a..734f239 100644 --- a/resources/godot_icons/light/BoxMesh.svg +++ b/resources/godot_icons/light/BoxMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/BoxOccluder3D.svg b/resources/godot_icons/light/BoxOccluder3D.svg index 3cee3db..888e9fe 100644 --- a/resources/godot_icons/light/BoxOccluder3D.svg +++ b/resources/godot_icons/light/BoxOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/BoxShape3D.svg b/resources/godot_icons/light/BoxShape3D.svg index a16f0bb..ba86e08 100644 --- a/resources/godot_icons/light/BoxShape3D.svg +++ b/resources/godot_icons/light/BoxShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Button.svg b/resources/godot_icons/light/Button.svg index 5532cbb..a465d2f 100644 --- a/resources/godot_icons/light/Button.svg +++ b/resources/godot_icons/light/Button.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ButtonGroup.svg b/resources/godot_icons/light/ButtonGroup.svg index 0807dd9..db40a80 100644 --- a/resources/godot_icons/light/ButtonGroup.svg +++ b/resources/godot_icons/light/ButtonGroup.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CPUParticles2D.svg b/resources/godot_icons/light/CPUParticles2D.svg index 7f4683e..798ab69 100644 --- a/resources/godot_icons/light/CPUParticles2D.svg +++ b/resources/godot_icons/light/CPUParticles2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CPUParticles3D.svg b/resources/godot_icons/light/CPUParticles3D.svg index d246bb9..9f9469c 100644 --- a/resources/godot_icons/light/CPUParticles3D.svg +++ b/resources/godot_icons/light/CPUParticles3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSGBox3D.svg b/resources/godot_icons/light/CSGBox3D.svg index 4a90a7d..7cbd8f5 100644 --- a/resources/godot_icons/light/CSGBox3D.svg +++ b/resources/godot_icons/light/CSGBox3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSGCombiner3D.svg b/resources/godot_icons/light/CSGCombiner3D.svg index 052c52e..4dbc5b6 100644 --- a/resources/godot_icons/light/CSGCombiner3D.svg +++ b/resources/godot_icons/light/CSGCombiner3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSGCylinder3D.svg b/resources/godot_icons/light/CSGCylinder3D.svg index bb12d67..c14946a 100644 --- a/resources/godot_icons/light/CSGCylinder3D.svg +++ b/resources/godot_icons/light/CSGCylinder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSGMesh3D.svg b/resources/godot_icons/light/CSGMesh3D.svg index f9289f5..b794693 100644 --- a/resources/godot_icons/light/CSGMesh3D.svg +++ b/resources/godot_icons/light/CSGMesh3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSGPolygon3D.svg b/resources/godot_icons/light/CSGPolygon3D.svg index 34bf574..aa0ff7d 100644 --- a/resources/godot_icons/light/CSGPolygon3D.svg +++ b/resources/godot_icons/light/CSGPolygon3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSGSphere3D.svg b/resources/godot_icons/light/CSGSphere3D.svg index 6e24285..35ee560 100644 --- a/resources/godot_icons/light/CSGSphere3D.svg +++ b/resources/godot_icons/light/CSGSphere3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSGTorus3D.svg b/resources/godot_icons/light/CSGTorus3D.svg index fed77ea..171575c 100644 --- a/resources/godot_icons/light/CSGTorus3D.svg +++ b/resources/godot_icons/light/CSGTorus3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CSharpScript.svg b/resources/godot_icons/light/CSharpScript.svg index 34df0ec..07992dc 100644 --- a/resources/godot_icons/light/CSharpScript.svg +++ b/resources/godot_icons/light/CSharpScript.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Camera2D.svg b/resources/godot_icons/light/Camera2D.svg index 73f1850..4b6fc7c 100644 --- a/resources/godot_icons/light/Camera2D.svg +++ b/resources/godot_icons/light/Camera2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Camera3D.svg b/resources/godot_icons/light/Camera3D.svg index a0ff107..85f4f20 100644 --- a/resources/godot_icons/light/Camera3D.svg +++ b/resources/godot_icons/light/Camera3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CameraAttributesPhysical.svg b/resources/godot_icons/light/CameraAttributesPhysical.svg new file mode 100644 index 0000000..a980480 --- /dev/null +++ b/resources/godot_icons/light/CameraAttributesPhysical.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/CameraAttributesPractical.svg b/resources/godot_icons/light/CameraAttributesPractical.svg new file mode 100644 index 0000000..476adaa --- /dev/null +++ b/resources/godot_icons/light/CameraAttributesPractical.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/CameraTexture.svg b/resources/godot_icons/light/CameraTexture.svg index eb05286..8bd6690 100644 --- a/resources/godot_icons/light/CameraTexture.svg +++ b/resources/godot_icons/light/CameraTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CanvasGroup.svg b/resources/godot_icons/light/CanvasGroup.svg index 9294df3..7d93dde 100644 --- a/resources/godot_icons/light/CanvasGroup.svg +++ b/resources/godot_icons/light/CanvasGroup.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CanvasItemMaterial.svg b/resources/godot_icons/light/CanvasItemMaterial.svg index 9a7a894..35f4bbb 100644 --- a/resources/godot_icons/light/CanvasItemMaterial.svg +++ b/resources/godot_icons/light/CanvasItemMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CanvasLayer.svg b/resources/godot_icons/light/CanvasLayer.svg index aa06eb3..ae07360 100644 --- a/resources/godot_icons/light/CanvasLayer.svg +++ b/resources/godot_icons/light/CanvasLayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CanvasModulate.svg b/resources/godot_icons/light/CanvasModulate.svg index 5e23bf5..8c6ff3f 100644 --- a/resources/godot_icons/light/CanvasModulate.svg +++ b/resources/godot_icons/light/CanvasModulate.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CanvasTexture.svg b/resources/godot_icons/light/CanvasTexture.svg new file mode 100644 index 0000000..b3f5239 --- /dev/null +++ b/resources/godot_icons/light/CanvasTexture.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/CapsuleMesh.svg b/resources/godot_icons/light/CapsuleMesh.svg index 0bc7814..ad8eea2 100644 --- a/resources/godot_icons/light/CapsuleMesh.svg +++ b/resources/godot_icons/light/CapsuleMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CapsuleShape2D.svg b/resources/godot_icons/light/CapsuleShape2D.svg index 5b3c411..dc1d5b0 100644 --- a/resources/godot_icons/light/CapsuleShape2D.svg +++ b/resources/godot_icons/light/CapsuleShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CapsuleShape3D.svg b/resources/godot_icons/light/CapsuleShape3D.svg index c566d68..c8f000e 100644 --- a/resources/godot_icons/light/CapsuleShape3D.svg +++ b/resources/godot_icons/light/CapsuleShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CharacterBody2D.svg b/resources/godot_icons/light/CharacterBody2D.svg index 14f7b9d..1bf25a8 100644 --- a/resources/godot_icons/light/CharacterBody2D.svg +++ b/resources/godot_icons/light/CharacterBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CharacterBody3D.svg b/resources/godot_icons/light/CharacterBody3D.svg index 81c1085..47348fc 100644 --- a/resources/godot_icons/light/CharacterBody3D.svg +++ b/resources/godot_icons/light/CharacterBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CheckBox.svg b/resources/godot_icons/light/CheckBox.svg index 3feed66..c4e3d71 100644 --- a/resources/godot_icons/light/CheckBox.svg +++ b/resources/godot_icons/light/CheckBox.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CircleShape2D.svg b/resources/godot_icons/light/CircleShape2D.svg index 37a0903..da55f1d 100644 --- a/resources/godot_icons/light/CircleShape2D.svg +++ b/resources/godot_icons/light/CircleShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CodeEdit.svg b/resources/godot_icons/light/CodeEdit.svg index a6323c3..af82ec6 100644 --- a/resources/godot_icons/light/CodeEdit.svg +++ b/resources/godot_icons/light/CodeEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CodeHighlighter.svg b/resources/godot_icons/light/CodeHighlighter.svg new file mode 100644 index 0000000..5ac077f --- /dev/null +++ b/resources/godot_icons/light/CodeHighlighter.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/CollisionPolygon2D.svg b/resources/godot_icons/light/CollisionPolygon2D.svg index 0a382bc..e59aefb 100644 --- a/resources/godot_icons/light/CollisionPolygon2D.svg +++ b/resources/godot_icons/light/CollisionPolygon2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CollisionPolygon3D.svg b/resources/godot_icons/light/CollisionPolygon3D.svg index e3fe83e..389fb6d 100644 --- a/resources/godot_icons/light/CollisionPolygon3D.svg +++ b/resources/godot_icons/light/CollisionPolygon3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CollisionShape2D.svg b/resources/godot_icons/light/CollisionShape2D.svg index dc13dd2..3223f91 100644 --- a/resources/godot_icons/light/CollisionShape2D.svg +++ b/resources/godot_icons/light/CollisionShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CollisionShape3D.svg b/resources/godot_icons/light/CollisionShape3D.svg index 9012123..7ec34db 100644 --- a/resources/godot_icons/light/CollisionShape3D.svg +++ b/resources/godot_icons/light/CollisionShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ColorPicker.svg b/resources/godot_icons/light/ColorPicker.svg index 37d81eb..0cddd3e 100644 --- a/resources/godot_icons/light/ColorPicker.svg +++ b/resources/godot_icons/light/ColorPicker.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ColorPickerButton.svg b/resources/godot_icons/light/ColorPickerButton.svg index ea65e63..b1463e2 100644 --- a/resources/godot_icons/light/ColorPickerButton.svg +++ b/resources/godot_icons/light/ColorPickerButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ColorRect.svg b/resources/godot_icons/light/ColorRect.svg index 8a60f19..f7c412c 100644 --- a/resources/godot_icons/light/ColorRect.svg +++ b/resources/godot_icons/light/ColorRect.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CompressedTexture2D.svg b/resources/godot_icons/light/CompressedTexture2D.svg index dafbd4f..079de58 100644 --- a/resources/godot_icons/light/CompressedTexture2D.svg +++ b/resources/godot_icons/light/CompressedTexture2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CompressedTexture3D.svg b/resources/godot_icons/light/CompressedTexture3D.svg new file mode 100644 index 0000000..ebe2a4e --- /dev/null +++ b/resources/godot_icons/light/CompressedTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ConcavePolygonShape2D.svg b/resources/godot_icons/light/ConcavePolygonShape2D.svg index 26eda84..cb5d98c 100644 --- a/resources/godot_icons/light/ConcavePolygonShape2D.svg +++ b/resources/godot_icons/light/ConcavePolygonShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ConcavePolygonShape3D.svg b/resources/godot_icons/light/ConcavePolygonShape3D.svg index 67631ec..d970a16 100644 --- a/resources/godot_icons/light/ConcavePolygonShape3D.svg +++ b/resources/godot_icons/light/ConcavePolygonShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ConeTwistJoint3D.svg b/resources/godot_icons/light/ConeTwistJoint3D.svg index 0ad0481..42d63ec 100644 --- a/resources/godot_icons/light/ConeTwistJoint3D.svg +++ b/resources/godot_icons/light/ConeTwistJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ConfirmationDialog.svg b/resources/godot_icons/light/ConfirmationDialog.svg index 58e658e..1c5e6a3 100644 --- a/resources/godot_icons/light/ConfirmationDialog.svg +++ b/resources/godot_icons/light/ConfirmationDialog.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Container.svg b/resources/godot_icons/light/Container.svg index 00c49cc..55d56f8 100644 --- a/resources/godot_icons/light/Container.svg +++ b/resources/godot_icons/light/Container.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Control.svg b/resources/godot_icons/light/Control.svg index 86ab859..8e24219 100644 --- a/resources/godot_icons/light/Control.svg +++ b/resources/godot_icons/light/Control.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ConvexPolygonShape2D.svg b/resources/godot_icons/light/ConvexPolygonShape2D.svg index fa5369a..2324919 100644 --- a/resources/godot_icons/light/ConvexPolygonShape2D.svg +++ b/resources/godot_icons/light/ConvexPolygonShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ConvexPolygonShape3D.svg b/resources/godot_icons/light/ConvexPolygonShape3D.svg index f0c9101..09c5ee9 100644 --- a/resources/godot_icons/light/ConvexPolygonShape3D.svg +++ b/resources/godot_icons/light/ConvexPolygonShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Curve.svg b/resources/godot_icons/light/Curve.svg index 62b5711..03c5ed5 100644 --- a/resources/godot_icons/light/Curve.svg +++ b/resources/godot_icons/light/Curve.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Curve2D.svg b/resources/godot_icons/light/Curve2D.svg index 0dcba50..1b0c321 100644 --- a/resources/godot_icons/light/Curve2D.svg +++ b/resources/godot_icons/light/Curve2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Curve3D.svg b/resources/godot_icons/light/Curve3D.svg index 0f0e29e..3661d7d 100644 --- a/resources/godot_icons/light/Curve3D.svg +++ b/resources/godot_icons/light/Curve3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CurveTexture.svg b/resources/godot_icons/light/CurveTexture.svg index 8e1d8d1..5aecd63 100644 --- a/resources/godot_icons/light/CurveTexture.svg +++ b/resources/godot_icons/light/CurveTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CurveXYZTexture.svg b/resources/godot_icons/light/CurveXYZTexture.svg new file mode 100644 index 0000000..dc2bd86 --- /dev/null +++ b/resources/godot_icons/light/CurveXYZTexture.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/CylinderMesh.svg b/resources/godot_icons/light/CylinderMesh.svg index f6315c2..9d0045a 100644 --- a/resources/godot_icons/light/CylinderMesh.svg +++ b/resources/godot_icons/light/CylinderMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/CylinderShape3D.svg b/resources/godot_icons/light/CylinderShape3D.svg index 1283097..a70a760 100644 --- a/resources/godot_icons/light/CylinderShape3D.svg +++ b/resources/godot_icons/light/CylinderShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/DampedSpringJoint2D.svg b/resources/godot_icons/light/DampedSpringJoint2D.svg index fe2d32e..3601ac9 100644 --- a/resources/godot_icons/light/DampedSpringJoint2D.svg +++ b/resources/godot_icons/light/DampedSpringJoint2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Decal.svg b/resources/godot_icons/light/Decal.svg index 5fcca3e..bddfec4 100644 --- a/resources/godot_icons/light/Decal.svg +++ b/resources/godot_icons/light/Decal.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/DirectionalLight2D.svg b/resources/godot_icons/light/DirectionalLight2D.svg index e29ee19..eec5ce3 100644 --- a/resources/godot_icons/light/DirectionalLight2D.svg +++ b/resources/godot_icons/light/DirectionalLight2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/DirectionalLight3D.svg b/resources/godot_icons/light/DirectionalLight3D.svg index f648951..139718e 100644 --- a/resources/godot_icons/light/DirectionalLight3D.svg +++ b/resources/godot_icons/light/DirectionalLight3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Edit.svg b/resources/godot_icons/light/Edit.svg new file mode 100644 index 0000000..7ae4d03 --- /dev/null +++ b/resources/godot_icons/light/Edit.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Environment.svg b/resources/godot_icons/light/Environment.svg index 5e195a9..cf634fc 100644 --- a/resources/godot_icons/light/Environment.svg +++ b/resources/godot_icons/light/Environment.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/FileDialog.svg b/resources/godot_icons/light/FileDialog.svg index 59246e6..086ac35 100644 --- a/resources/godot_icons/light/FileDialog.svg +++ b/resources/godot_icons/light/FileDialog.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/FlowContainer.svg b/resources/godot_icons/light/FlowContainer.svg index ada32b0..ac79f76 100644 --- a/resources/godot_icons/light/FlowContainer.svg +++ b/resources/godot_icons/light/FlowContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/FogMaterial.svg b/resources/godot_icons/light/FogMaterial.svg index 5db7dea..5fb9951 100644 --- a/resources/godot_icons/light/FogMaterial.svg +++ b/resources/godot_icons/light/FogMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/FogVolume.svg b/resources/godot_icons/light/FogVolume.svg index a98742f..96cdfc2 100644 --- a/resources/godot_icons/light/FogVolume.svg +++ b/resources/godot_icons/light/FogVolume.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/FontFile.svg b/resources/godot_icons/light/FontFile.svg index e9595e9..33a7363 100644 --- a/resources/godot_icons/light/FontFile.svg +++ b/resources/godot_icons/light/FontFile.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/FontVariation.svg b/resources/godot_icons/light/FontVariation.svg index 119e354..d9c2e4a 100644 --- a/resources/godot_icons/light/FontVariation.svg +++ b/resources/godot_icons/light/FontVariation.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GDScript.svg b/resources/godot_icons/light/GDScript.svg index 5407eb4..c6a0835 100644 --- a/resources/godot_icons/light/GDScript.svg +++ b/resources/godot_icons/light/GDScript.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticles2D.svg b/resources/godot_icons/light/GPUParticles2D.svg index 70707e9..855f1bf 100644 --- a/resources/godot_icons/light/GPUParticles2D.svg +++ b/resources/godot_icons/light/GPUParticles2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticles3D.svg b/resources/godot_icons/light/GPUParticles3D.svg index 00d8335..5253cf3 100644 --- a/resources/godot_icons/light/GPUParticles3D.svg +++ b/resources/godot_icons/light/GPUParticles3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticlesAttractorBox3D.svg b/resources/godot_icons/light/GPUParticlesAttractorBox3D.svg index 0a4ff11..4ba807c 100644 --- a/resources/godot_icons/light/GPUParticlesAttractorBox3D.svg +++ b/resources/godot_icons/light/GPUParticlesAttractorBox3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticlesAttractorSphere3D.svg b/resources/godot_icons/light/GPUParticlesAttractorSphere3D.svg index a4fe432..bcaa50e 100644 --- a/resources/godot_icons/light/GPUParticlesAttractorSphere3D.svg +++ b/resources/godot_icons/light/GPUParticlesAttractorSphere3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticlesAttractorVectorField3D.svg b/resources/godot_icons/light/GPUParticlesAttractorVectorField3D.svg index fd95329..b803c90 100644 --- a/resources/godot_icons/light/GPUParticlesAttractorVectorField3D.svg +++ b/resources/godot_icons/light/GPUParticlesAttractorVectorField3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticlesCollisionBox3D.svg b/resources/godot_icons/light/GPUParticlesCollisionBox3D.svg index 7148f4d..3c44ee2 100644 --- a/resources/godot_icons/light/GPUParticlesCollisionBox3D.svg +++ b/resources/godot_icons/light/GPUParticlesCollisionBox3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticlesCollisionSDF3D.svg b/resources/godot_icons/light/GPUParticlesCollisionSDF3D.svg index fb85e0f..58dda79 100644 --- a/resources/godot_icons/light/GPUParticlesCollisionSDF3D.svg +++ b/resources/godot_icons/light/GPUParticlesCollisionSDF3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GPUParticlesCollisionSphere3D.svg b/resources/godot_icons/light/GPUParticlesCollisionSphere3D.svg index 8ae3113..f845e91 100644 --- a/resources/godot_icons/light/GPUParticlesCollisionSphere3D.svg +++ b/resources/godot_icons/light/GPUParticlesCollisionSphere3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Generic6DOFJoint3D.svg b/resources/godot_icons/light/Generic6DOFJoint3D.svg index 73d45d8..5795003 100644 --- a/resources/godot_icons/light/Generic6DOFJoint3D.svg +++ b/resources/godot_icons/light/Generic6DOFJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Gradient.svg b/resources/godot_icons/light/Gradient.svg index b9996e4..62044fb 100644 --- a/resources/godot_icons/light/Gradient.svg +++ b/resources/godot_icons/light/Gradient.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GradientTexture1D.svg b/resources/godot_icons/light/GradientTexture1D.svg index c269e82..078bd18 100644 --- a/resources/godot_icons/light/GradientTexture1D.svg +++ b/resources/godot_icons/light/GradientTexture1D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GradientTexture2D.svg b/resources/godot_icons/light/GradientTexture2D.svg index 4b18cd3..0bc5e42 100644 --- a/resources/godot_icons/light/GradientTexture2D.svg +++ b/resources/godot_icons/light/GradientTexture2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GraphEdit.svg b/resources/godot_icons/light/GraphEdit.svg index 8330c13..b7d4d18 100644 --- a/resources/godot_icons/light/GraphEdit.svg +++ b/resources/godot_icons/light/GraphEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GraphElement.svg b/resources/godot_icons/light/GraphElement.svg new file mode 100644 index 0000000..995e6b5 --- /dev/null +++ b/resources/godot_icons/light/GraphElement.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/GraphNode.svg b/resources/godot_icons/light/GraphNode.svg index 22d4645..493fa0c 100644 --- a/resources/godot_icons/light/GraphNode.svg +++ b/resources/godot_icons/light/GraphNode.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GridContainer.svg b/resources/godot_icons/light/GridContainer.svg index 9297f98..fe284fc 100644 --- a/resources/godot_icons/light/GridContainer.svg +++ b/resources/godot_icons/light/GridContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GridMap.svg b/resources/godot_icons/light/GridMap.svg index 2b0694f..50a7518 100644 --- a/resources/godot_icons/light/GridMap.svg +++ b/resources/godot_icons/light/GridMap.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GrooveJoint2D.svg b/resources/godot_icons/light/GrooveJoint2D.svg index 2b5280e..9545bbd 100644 --- a/resources/godot_icons/light/GrooveJoint2D.svg +++ b/resources/godot_icons/light/GrooveJoint2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/GuiVisibilityHidden.svg b/resources/godot_icons/light/GuiVisibilityHidden.svg new file mode 100644 index 0000000..7d323fb --- /dev/null +++ b/resources/godot_icons/light/GuiVisibilityHidden.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/GuiVisibilityVisible.svg b/resources/godot_icons/light/GuiVisibilityVisible.svg new file mode 100644 index 0000000..335149f --- /dev/null +++ b/resources/godot_icons/light/GuiVisibilityVisible.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/GuiVisibilityXray.svg b/resources/godot_icons/light/GuiVisibilityXray.svg new file mode 100644 index 0000000..a88f617 --- /dev/null +++ b/resources/godot_icons/light/GuiVisibilityXray.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/HBoxContainer.svg b/resources/godot_icons/light/HBoxContainer.svg index 5e9f116..49d1f3c 100644 --- a/resources/godot_icons/light/HBoxContainer.svg +++ b/resources/godot_icons/light/HBoxContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/HFlowContainer.svg b/resources/godot_icons/light/HFlowContainer.svg index 573c063..757c119 100644 --- a/resources/godot_icons/light/HFlowContainer.svg +++ b/resources/godot_icons/light/HFlowContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/HScrollBar.svg b/resources/godot_icons/light/HScrollBar.svg index ba7f9e2..53662f4 100644 --- a/resources/godot_icons/light/HScrollBar.svg +++ b/resources/godot_icons/light/HScrollBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/HSeparator.svg b/resources/godot_icons/light/HSeparator.svg index 9dfc724..3e8df20 100644 --- a/resources/godot_icons/light/HSeparator.svg +++ b/resources/godot_icons/light/HSeparator.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/HSlider.svg b/resources/godot_icons/light/HSlider.svg index c02391f..ee54917 100644 --- a/resources/godot_icons/light/HSlider.svg +++ b/resources/godot_icons/light/HSlider.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/HSplitContainer.svg b/resources/godot_icons/light/HSplitContainer.svg index 3558bc8..24bd682 100644 --- a/resources/godot_icons/light/HSplitContainer.svg +++ b/resources/godot_icons/light/HSplitContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/HeightMapShape3D.svg b/resources/godot_icons/light/HeightMapShape3D.svg index e1b3af8..330cee9 100644 --- a/resources/godot_icons/light/HeightMapShape3D.svg +++ b/resources/godot_icons/light/HeightMapShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Help.svg b/resources/godot_icons/light/Help.svg new file mode 100644 index 0000000..40dd7aa --- /dev/null +++ b/resources/godot_icons/light/Help.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/HelpSearch.svg b/resources/godot_icons/light/HelpSearch.svg new file mode 100644 index 0000000..8366ec4 --- /dev/null +++ b/resources/godot_icons/light/HelpSearch.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/HingeJoint3D.svg b/resources/godot_icons/light/HingeJoint3D.svg index 200cf43..1ff5099 100644 --- a/resources/godot_icons/light/HingeJoint3D.svg +++ b/resources/godot_icons/light/HingeJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ImageTexture.svg b/resources/godot_icons/light/ImageTexture.svg index e5d93f3..ee80559 100644 --- a/resources/godot_icons/light/ImageTexture.svg +++ b/resources/godot_icons/light/ImageTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ImageTexture3D.svg b/resources/godot_icons/light/ImageTexture3D.svg new file mode 100644 index 0000000..1c65636 --- /dev/null +++ b/resources/godot_icons/light/ImageTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ImmediateMesh.svg b/resources/godot_icons/light/ImmediateMesh.svg index f94ef8c..ceedc00 100644 --- a/resources/godot_icons/light/ImmediateMesh.svg +++ b/resources/godot_icons/light/ImmediateMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ImportCheck.svg b/resources/godot_icons/light/ImportCheck.svg new file mode 100644 index 0000000..83668e3 --- /dev/null +++ b/resources/godot_icons/light/ImportCheck.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ImportFail.svg b/resources/godot_icons/light/ImportFail.svg new file mode 100644 index 0000000..7343408 --- /dev/null +++ b/resources/godot_icons/light/ImportFail.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ImporterMeshInstance3D.svg b/resources/godot_icons/light/ImporterMeshInstance3D.svg index 1937769..17c3a57 100644 --- a/resources/godot_icons/light/ImporterMeshInstance3D.svg +++ b/resources/godot_icons/light/ImporterMeshInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Info.svg b/resources/godot_icons/light/Info.svg new file mode 100644 index 0000000..8773a66 --- /dev/null +++ b/resources/godot_icons/light/Info.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ItemList.svg b/resources/godot_icons/light/ItemList.svg index acd21f3..07293b8 100644 --- a/resources/godot_icons/light/ItemList.svg +++ b/resources/godot_icons/light/ItemList.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Label.svg b/resources/godot_icons/light/Label.svg index 718f76c..bfa902e 100644 --- a/resources/godot_icons/light/Label.svg +++ b/resources/godot_icons/light/Label.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Label3D.svg b/resources/godot_icons/light/Label3D.svg index 0324b1b..cfb1b73 100644 --- a/resources/godot_icons/light/Label3D.svg +++ b/resources/godot_icons/light/Label3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/LabelSettings.svg b/resources/godot_icons/light/LabelSettings.svg index 2695248..b7e2679 100644 --- a/resources/godot_icons/light/LabelSettings.svg +++ b/resources/godot_icons/light/LabelSettings.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/LightOccluder2D.svg b/resources/godot_icons/light/LightOccluder2D.svg index 2a42087..655396b 100644 --- a/resources/godot_icons/light/LightOccluder2D.svg +++ b/resources/godot_icons/light/LightOccluder2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/LightmapProbe.svg b/resources/godot_icons/light/LightmapProbe.svg index bc32b4f..c690c25 100644 --- a/resources/godot_icons/light/LightmapProbe.svg +++ b/resources/godot_icons/light/LightmapProbe.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Line2D.svg b/resources/godot_icons/light/Line2D.svg index 17dc2aa..797607d 100644 --- a/resources/godot_icons/light/Line2D.svg +++ b/resources/godot_icons/light/Line2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/LineEdit.svg b/resources/godot_icons/light/LineEdit.svg index 2868ab7..e84ef1d 100644 --- a/resources/godot_icons/light/LineEdit.svg +++ b/resources/godot_icons/light/LineEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/LinkButton.svg b/resources/godot_icons/light/LinkButton.svg index 6f05e80..c912c65 100644 --- a/resources/godot_icons/light/LinkButton.svg +++ b/resources/godot_icons/light/LinkButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Lock.svg b/resources/godot_icons/light/Lock.svg new file mode 100644 index 0000000..17e4565 --- /dev/null +++ b/resources/godot_icons/light/Lock.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/MarginContainer.svg b/resources/godot_icons/light/MarginContainer.svg index a7f095a..5ef6000 100644 --- a/resources/godot_icons/light/MarginContainer.svg +++ b/resources/godot_icons/light/MarginContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/MeshInstance2D.svg b/resources/godot_icons/light/MeshInstance2D.svg index cada502..26f48bb 100644 --- a/resources/godot_icons/light/MeshInstance2D.svg +++ b/resources/godot_icons/light/MeshInstance2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/MeshInstance3D.svg b/resources/godot_icons/light/MeshInstance3D.svg index 166674c..19128bb 100644 --- a/resources/godot_icons/light/MeshInstance3D.svg +++ b/resources/godot_icons/light/MeshInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/MeshLibrary.svg b/resources/godot_icons/light/MeshLibrary.svg index 5d64acd..62a2b3e 100644 --- a/resources/godot_icons/light/MeshLibrary.svg +++ b/resources/godot_icons/light/MeshLibrary.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/MeshTexture.svg b/resources/godot_icons/light/MeshTexture.svg index d91933b..0da5518 100644 --- a/resources/godot_icons/light/MeshTexture.svg +++ b/resources/godot_icons/light/MeshTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/MultiMesh.svg b/resources/godot_icons/light/MultiMesh.svg index 5b49008..23c26c7 100644 --- a/resources/godot_icons/light/MultiMesh.svg +++ b/resources/godot_icons/light/MultiMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/MultiMeshInstance2D.svg b/resources/godot_icons/light/MultiMeshInstance2D.svg index 0bb3a1f..59c37aa 100644 --- a/resources/godot_icons/light/MultiMeshInstance2D.svg +++ b/resources/godot_icons/light/MultiMeshInstance2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/MultiMeshInstance3D.svg b/resources/godot_icons/light/MultiMeshInstance3D.svg index 630bd74..238c609 100644 --- a/resources/godot_icons/light/MultiMeshInstance3D.svg +++ b/resources/godot_icons/light/MultiMeshInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NavigationAgent2D.svg b/resources/godot_icons/light/NavigationAgent2D.svg index 5e146d6..7c5d281 100644 --- a/resources/godot_icons/light/NavigationAgent2D.svg +++ b/resources/godot_icons/light/NavigationAgent2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NavigationAgent3D.svg b/resources/godot_icons/light/NavigationAgent3D.svg index 423a038..9563eb1 100644 --- a/resources/godot_icons/light/NavigationAgent3D.svg +++ b/resources/godot_icons/light/NavigationAgent3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NavigationLink2D.svg b/resources/godot_icons/light/NavigationLink2D.svg index df470ec..483b332 100644 --- a/resources/godot_icons/light/NavigationLink2D.svg +++ b/resources/godot_icons/light/NavigationLink2D.svg @@ -1,4 +1 @@ - - - - + diff --git a/resources/godot_icons/light/NavigationLink3D.svg b/resources/godot_icons/light/NavigationLink3D.svg index 05f36da..63faa56 100644 --- a/resources/godot_icons/light/NavigationLink3D.svg +++ b/resources/godot_icons/light/NavigationLink3D.svg @@ -1,4 +1 @@ - - - - + diff --git a/resources/godot_icons/light/NavigationObstacle2D.svg b/resources/godot_icons/light/NavigationObstacle2D.svg index 58331b5..44d45e0 100644 --- a/resources/godot_icons/light/NavigationObstacle2D.svg +++ b/resources/godot_icons/light/NavigationObstacle2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NavigationObstacle3D.svg b/resources/godot_icons/light/NavigationObstacle3D.svg index 8bcce21..6383d35 100644 --- a/resources/godot_icons/light/NavigationObstacle3D.svg +++ b/resources/godot_icons/light/NavigationObstacle3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NavigationPolygon.svg b/resources/godot_icons/light/NavigationPolygon.svg index b525e6a..fc15da0 100644 --- a/resources/godot_icons/light/NavigationPolygon.svg +++ b/resources/godot_icons/light/NavigationPolygon.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NavigationRegion2D.svg b/resources/godot_icons/light/NavigationRegion2D.svg index b4db666..10e3fbe 100644 --- a/resources/godot_icons/light/NavigationRegion2D.svg +++ b/resources/godot_icons/light/NavigationRegion2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NavigationRegion3D.svg b/resources/godot_icons/light/NavigationRegion3D.svg index 388394a..a66f4e2 100644 --- a/resources/godot_icons/light/NavigationRegion3D.svg +++ b/resources/godot_icons/light/NavigationRegion3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NinePatchRect.svg b/resources/godot_icons/light/NinePatchRect.svg index a034283..0166565 100644 --- a/resources/godot_icons/light/NinePatchRect.svg +++ b/resources/godot_icons/light/NinePatchRect.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Node.svg b/resources/godot_icons/light/Node.svg index a0cde6c..87e7b05 100644 --- a/resources/godot_icons/light/Node.svg +++ b/resources/godot_icons/light/Node.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Node2D.svg b/resources/godot_icons/light/Node2D.svg index a3a004a..ff0f1d9 100644 --- a/resources/godot_icons/light/Node2D.svg +++ b/resources/godot_icons/light/Node2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Node3D.svg b/resources/godot_icons/light/Node3D.svg index 6183d9e..4c665d0 100644 --- a/resources/godot_icons/light/Node3D.svg +++ b/resources/godot_icons/light/Node3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/NoiseTexture2D.svg b/resources/godot_icons/light/NoiseTexture2D.svg new file mode 100644 index 0000000..2fcdb2b --- /dev/null +++ b/resources/godot_icons/light/NoiseTexture2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/NoiseTexture3D.svg b/resources/godot_icons/light/NoiseTexture3D.svg new file mode 100644 index 0000000..4b7529d --- /dev/null +++ b/resources/godot_icons/light/NoiseTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ORMMaterial3D.svg b/resources/godot_icons/light/ORMMaterial3D.svg index e092081..a70c44f 100644 --- a/resources/godot_icons/light/ORMMaterial3D.svg +++ b/resources/godot_icons/light/ORMMaterial3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Object.svg b/resources/godot_icons/light/Object.svg index e87ef4b..972d3d9 100644 --- a/resources/godot_icons/light/Object.svg +++ b/resources/godot_icons/light/Object.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/OccluderInstance3D.svg b/resources/godot_icons/light/OccluderInstance3D.svg index 68ac1ea..dd7663c 100644 --- a/resources/godot_icons/light/OccluderInstance3D.svg +++ b/resources/godot_icons/light/OccluderInstance3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/OccluderPolygon2D.svg b/resources/godot_icons/light/OccluderPolygon2D.svg index 21662d0..cd9acde 100644 --- a/resources/godot_icons/light/OccluderPolygon2D.svg +++ b/resources/godot_icons/light/OccluderPolygon2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/OmniLight3D.svg b/resources/godot_icons/light/OmniLight3D.svg index 4f95a5d..cc28159 100644 --- a/resources/godot_icons/light/OmniLight3D.svg +++ b/resources/godot_icons/light/OmniLight3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/OptionButton.svg b/resources/godot_icons/light/OptionButton.svg index f90ea34..8b1c1b3 100644 --- a/resources/godot_icons/light/OptionButton.svg +++ b/resources/godot_icons/light/OptionButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PackedScene.svg b/resources/godot_icons/light/PackedScene.svg index 67f3250..fc1a257 100644 --- a/resources/godot_icons/light/PackedScene.svg +++ b/resources/godot_icons/light/PackedScene.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Panel.svg b/resources/godot_icons/light/Panel.svg index aeda1bb..4868947 100644 --- a/resources/godot_icons/light/Panel.svg +++ b/resources/godot_icons/light/Panel.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PanelContainer.svg b/resources/godot_icons/light/PanelContainer.svg index 320ce60..f234285 100644 --- a/resources/godot_icons/light/PanelContainer.svg +++ b/resources/godot_icons/light/PanelContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PanoramaSkyMaterial.svg b/resources/godot_icons/light/PanoramaSkyMaterial.svg index eddcbfd..d230ba5 100644 --- a/resources/godot_icons/light/PanoramaSkyMaterial.svg +++ b/resources/godot_icons/light/PanoramaSkyMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ParallaxBackground.svg b/resources/godot_icons/light/ParallaxBackground.svg index f3485ea..4f68563 100644 --- a/resources/godot_icons/light/ParallaxBackground.svg +++ b/resources/godot_icons/light/ParallaxBackground.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ParallaxLayer.svg b/resources/godot_icons/light/ParallaxLayer.svg index 81912b9..a683f64 100644 --- a/resources/godot_icons/light/ParallaxLayer.svg +++ b/resources/godot_icons/light/ParallaxLayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ParticleProcessMaterial.svg b/resources/godot_icons/light/ParticleProcessMaterial.svg index 3359898..530c459 100644 --- a/resources/godot_icons/light/ParticleProcessMaterial.svg +++ b/resources/godot_icons/light/ParticleProcessMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Path2D.svg b/resources/godot_icons/light/Path2D.svg index 569ad85..8503957 100644 --- a/resources/godot_icons/light/Path2D.svg +++ b/resources/godot_icons/light/Path2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Path3D.svg b/resources/godot_icons/light/Path3D.svg index a35b717..1e7cdf6 100644 --- a/resources/godot_icons/light/Path3D.svg +++ b/resources/godot_icons/light/Path3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PathFollow2D.svg b/resources/godot_icons/light/PathFollow2D.svg index 4a279b2..a0f093d 100644 --- a/resources/godot_icons/light/PathFollow2D.svg +++ b/resources/godot_icons/light/PathFollow2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PathFollow3D.svg b/resources/godot_icons/light/PathFollow3D.svg index 1ea019c..cdd0cc9 100644 --- a/resources/godot_icons/light/PathFollow3D.svg +++ b/resources/godot_icons/light/PathFollow3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PhysicalBone2D.svg b/resources/godot_icons/light/PhysicalBone2D.svg new file mode 100644 index 0000000..e2cc3d8 --- /dev/null +++ b/resources/godot_icons/light/PhysicalBone2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PhysicalBone3D.svg b/resources/godot_icons/light/PhysicalBone3D.svg index 57abd40..921341f 100644 --- a/resources/godot_icons/light/PhysicalBone3D.svg +++ b/resources/godot_icons/light/PhysicalBone3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PhysicalSkyMaterial.svg b/resources/godot_icons/light/PhysicalSkyMaterial.svg index a32b451..48763a5 100644 --- a/resources/godot_icons/light/PhysicalSkyMaterial.svg +++ b/resources/godot_icons/light/PhysicalSkyMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PinJoint2D.svg b/resources/godot_icons/light/PinJoint2D.svg index ddb1d70..9013627 100644 --- a/resources/godot_icons/light/PinJoint2D.svg +++ b/resources/godot_icons/light/PinJoint2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PinJoint3D.svg b/resources/godot_icons/light/PinJoint3D.svg index 1edb877..9f46490 100644 --- a/resources/godot_icons/light/PinJoint3D.svg +++ b/resources/godot_icons/light/PinJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PlaceholderMaterial.svg b/resources/godot_icons/light/PlaceholderMaterial.svg new file mode 100644 index 0000000..3b5a803 --- /dev/null +++ b/resources/godot_icons/light/PlaceholderMaterial.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlaceholderMesh.svg b/resources/godot_icons/light/PlaceholderMesh.svg new file mode 100644 index 0000000..c36156e --- /dev/null +++ b/resources/godot_icons/light/PlaceholderMesh.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlaceholderTexture2D.svg b/resources/godot_icons/light/PlaceholderTexture2D.svg new file mode 100644 index 0000000..f77c5ae --- /dev/null +++ b/resources/godot_icons/light/PlaceholderTexture2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlaceholderTexture3D.svg b/resources/godot_icons/light/PlaceholderTexture3D.svg new file mode 100644 index 0000000..42a1832 --- /dev/null +++ b/resources/godot_icons/light/PlaceholderTexture3D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlaneMesh.svg b/resources/godot_icons/light/PlaneMesh.svg index 54b3361..857583d 100644 --- a/resources/godot_icons/light/PlaneMesh.svg +++ b/resources/godot_icons/light/PlaneMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Play.svg b/resources/godot_icons/light/Play.svg new file mode 100644 index 0000000..5662730 --- /dev/null +++ b/resources/godot_icons/light/Play.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlayBackwards.svg b/resources/godot_icons/light/PlayBackwards.svg new file mode 100644 index 0000000..41fd32a --- /dev/null +++ b/resources/godot_icons/light/PlayBackwards.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlayCustom.svg b/resources/godot_icons/light/PlayCustom.svg new file mode 100644 index 0000000..654c206 --- /dev/null +++ b/resources/godot_icons/light/PlayCustom.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlayRemote.svg b/resources/godot_icons/light/PlayRemote.svg new file mode 100644 index 0000000..3456cec --- /dev/null +++ b/resources/godot_icons/light/PlayRemote.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlayScene.svg b/resources/godot_icons/light/PlayScene.svg new file mode 100644 index 0000000..3e43368 --- /dev/null +++ b/resources/godot_icons/light/PlayScene.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PlayStart.svg b/resources/godot_icons/light/PlayStart.svg new file mode 100644 index 0000000..19666f1 --- /dev/null +++ b/resources/godot_icons/light/PlayStart.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PointLight2D.svg b/resources/godot_icons/light/PointLight2D.svg index f51b3c8..40d3b6f 100644 --- a/resources/godot_icons/light/PointLight2D.svg +++ b/resources/godot_icons/light/PointLight2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PointMesh.svg b/resources/godot_icons/light/PointMesh.svg index ec04989..2cafedc 100644 --- a/resources/godot_icons/light/PointMesh.svg +++ b/resources/godot_icons/light/PointMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Polygon2D.svg b/resources/godot_icons/light/Polygon2D.svg index 182623b..d87b0c0 100644 --- a/resources/godot_icons/light/Polygon2D.svg +++ b/resources/godot_icons/light/Polygon2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PolygonOccluder3D.svg b/resources/godot_icons/light/PolygonOccluder3D.svg index fc87e5e..f4cbec0 100644 --- a/resources/godot_icons/light/PolygonOccluder3D.svg +++ b/resources/godot_icons/light/PolygonOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PolygonPathFinder.svg b/resources/godot_icons/light/PolygonPathFinder.svg index 3225006..a3b1540 100644 --- a/resources/godot_icons/light/PolygonPathFinder.svg +++ b/resources/godot_icons/light/PolygonPathFinder.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Popup.svg b/resources/godot_icons/light/Popup.svg index 76897b3..739802f 100644 --- a/resources/godot_icons/light/Popup.svg +++ b/resources/godot_icons/light/Popup.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/PortableCompressedTexture2D.svg b/resources/godot_icons/light/PortableCompressedTexture2D.svg new file mode 100644 index 0000000..b8e5421 --- /dev/null +++ b/resources/godot_icons/light/PortableCompressedTexture2D.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/PrismMesh.svg b/resources/godot_icons/light/PrismMesh.svg index 0fd169c..6481b26 100644 --- a/resources/godot_icons/light/PrismMesh.svg +++ b/resources/godot_icons/light/PrismMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ProceduralSkyMaterial.svg b/resources/godot_icons/light/ProceduralSkyMaterial.svg index ceaf56d..87d61de 100644 --- a/resources/godot_icons/light/ProceduralSkyMaterial.svg +++ b/resources/godot_icons/light/ProceduralSkyMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Progress1.svg b/resources/godot_icons/light/Progress1.svg new file mode 100644 index 0000000..1eff9a7 --- /dev/null +++ b/resources/godot_icons/light/Progress1.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Progress2.svg b/resources/godot_icons/light/Progress2.svg new file mode 100644 index 0000000..cc40810 --- /dev/null +++ b/resources/godot_icons/light/Progress2.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Progress3.svg b/resources/godot_icons/light/Progress3.svg new file mode 100644 index 0000000..bfa3b47 --- /dev/null +++ b/resources/godot_icons/light/Progress3.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Progress4.svg b/resources/godot_icons/light/Progress4.svg new file mode 100644 index 0000000..b53bacf --- /dev/null +++ b/resources/godot_icons/light/Progress4.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Progress5.svg b/resources/godot_icons/light/Progress5.svg new file mode 100644 index 0000000..a34be81 --- /dev/null +++ b/resources/godot_icons/light/Progress5.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Progress6.svg b/resources/godot_icons/light/Progress6.svg new file mode 100644 index 0000000..8f223b1 --- /dev/null +++ b/resources/godot_icons/light/Progress6.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Progress7.svg b/resources/godot_icons/light/Progress7.svg new file mode 100644 index 0000000..17abb3b --- /dev/null +++ b/resources/godot_icons/light/Progress7.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Progress8.svg b/resources/godot_icons/light/Progress8.svg new file mode 100644 index 0000000..168b53b --- /dev/null +++ b/resources/godot_icons/light/Progress8.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ProgressBar.svg b/resources/godot_icons/light/ProgressBar.svg index 241365e..7fc41be 100644 --- a/resources/godot_icons/light/ProgressBar.svg +++ b/resources/godot_icons/light/ProgressBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/QuadMesh.svg b/resources/godot_icons/light/QuadMesh.svg index 86cc1bc..c9f762c 100644 --- a/resources/godot_icons/light/QuadMesh.svg +++ b/resources/godot_icons/light/QuadMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/QuadOccluder3D.svg b/resources/godot_icons/light/QuadOccluder3D.svg index 16da6f4..1f91cde 100644 --- a/resources/godot_icons/light/QuadOccluder3D.svg +++ b/resources/godot_icons/light/QuadOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RectangleShape2D.svg b/resources/godot_icons/light/RectangleShape2D.svg index 2d6a503..4a0f516 100644 --- a/resources/godot_icons/light/RectangleShape2D.svg +++ b/resources/godot_icons/light/RectangleShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ReflectionProbe.svg b/resources/godot_icons/light/ReflectionProbe.svg index 7ab1640..b95a8af 100644 --- a/resources/godot_icons/light/ReflectionProbe.svg +++ b/resources/godot_icons/light/ReflectionProbe.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RegEx.svg b/resources/godot_icons/light/RegEx.svg new file mode 100644 index 0000000..cd3dace --- /dev/null +++ b/resources/godot_icons/light/RegEx.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/RegExMatch.svg b/resources/godot_icons/light/RegExMatch.svg new file mode 100644 index 0000000..f180431 --- /dev/null +++ b/resources/godot_icons/light/RegExMatch.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Reload.svg b/resources/godot_icons/light/Reload.svg new file mode 100644 index 0000000..8d1403c --- /dev/null +++ b/resources/godot_icons/light/Reload.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ReloadSmall.svg b/resources/godot_icons/light/ReloadSmall.svg new file mode 100644 index 0000000..9770ebc --- /dev/null +++ b/resources/godot_icons/light/ReloadSmall.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/RemoteTransform2D.svg b/resources/godot_icons/light/RemoteTransform2D.svg index d768e6d..a52afa4 100644 --- a/resources/godot_icons/light/RemoteTransform2D.svg +++ b/resources/godot_icons/light/RemoteTransform2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RemoteTransform3D.svg b/resources/godot_icons/light/RemoteTransform3D.svg index 4ca650a..c2bab89 100644 --- a/resources/godot_icons/light/RemoteTransform3D.svg +++ b/resources/godot_icons/light/RemoteTransform3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ResourcePreloader.svg b/resources/godot_icons/light/ResourcePreloader.svg index 3de2de8..1b3f03b 100644 --- a/resources/godot_icons/light/ResourcePreloader.svg +++ b/resources/godot_icons/light/ResourcePreloader.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RibbonTrailMesh.svg b/resources/godot_icons/light/RibbonTrailMesh.svg index 3f6cf0b..7b22a2b 100644 --- a/resources/godot_icons/light/RibbonTrailMesh.svg +++ b/resources/godot_icons/light/RibbonTrailMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RichTextEffect.svg b/resources/godot_icons/light/RichTextEffect.svg index 65e59b6..f89e808 100644 --- a/resources/godot_icons/light/RichTextEffect.svg +++ b/resources/godot_icons/light/RichTextEffect.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RigidBody2D.svg b/resources/godot_icons/light/RigidBody2D.svg index 412fc8b..9d26e57 100644 --- a/resources/godot_icons/light/RigidBody2D.svg +++ b/resources/godot_icons/light/RigidBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RigidBody3D.svg b/resources/godot_icons/light/RigidBody3D.svg index 8858243..392c83c 100644 --- a/resources/godot_icons/light/RigidBody3D.svg +++ b/resources/godot_icons/light/RigidBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/RootMotionView.svg b/resources/godot_icons/light/RootMotionView.svg index 702c16a..0e37b8b 100644 --- a/resources/godot_icons/light/RootMotionView.svg +++ b/resources/godot_icons/light/RootMotionView.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Script.svg b/resources/godot_icons/light/Script.svg new file mode 100644 index 0000000..be0b8e3 --- /dev/null +++ b/resources/godot_icons/light/Script.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ScriptCreate.svg b/resources/godot_icons/light/ScriptCreate.svg new file mode 100644 index 0000000..6de652f --- /dev/null +++ b/resources/godot_icons/light/ScriptCreate.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ScriptRemove.svg b/resources/godot_icons/light/ScriptRemove.svg new file mode 100644 index 0000000..6383cc7 --- /dev/null +++ b/resources/godot_icons/light/ScriptRemove.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ScrollContainer.svg b/resources/godot_icons/light/ScrollContainer.svg index 45ed149..344a939 100644 --- a/resources/godot_icons/light/ScrollContainer.svg +++ b/resources/godot_icons/light/ScrollContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Search.svg b/resources/godot_icons/light/Search.svg new file mode 100644 index 0000000..040e70e --- /dev/null +++ b/resources/godot_icons/light/Search.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/SegmentShape2D.svg b/resources/godot_icons/light/SegmentShape2D.svg index b6763f7..23e7054 100644 --- a/resources/godot_icons/light/SegmentShape2D.svg +++ b/resources/godot_icons/light/SegmentShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SeparationRayShape2D.svg b/resources/godot_icons/light/SeparationRayShape2D.svg index 6966e75..71da58f 100644 --- a/resources/godot_icons/light/SeparationRayShape2D.svg +++ b/resources/godot_icons/light/SeparationRayShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SeparationRayShape3D.svg b/resources/godot_icons/light/SeparationRayShape3D.svg index 44d32fe..65c68d0 100644 --- a/resources/godot_icons/light/SeparationRayShape3D.svg +++ b/resources/godot_icons/light/SeparationRayShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Shader.svg b/resources/godot_icons/light/Shader.svg index 532af5a..354dde9 100644 --- a/resources/godot_icons/light/Shader.svg +++ b/resources/godot_icons/light/Shader.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ShaderGlobalsOverride.svg b/resources/godot_icons/light/ShaderGlobalsOverride.svg index 8de6c10..1171481 100644 --- a/resources/godot_icons/light/ShaderGlobalsOverride.svg +++ b/resources/godot_icons/light/ShaderGlobalsOverride.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ShaderInclude.svg b/resources/godot_icons/light/ShaderInclude.svg new file mode 100644 index 0000000..cff1f03 --- /dev/null +++ b/resources/godot_icons/light/ShaderInclude.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ShaderMaterial.svg b/resources/godot_icons/light/ShaderMaterial.svg index 80a1d0a..a53be38 100644 --- a/resources/godot_icons/light/ShaderMaterial.svg +++ b/resources/godot_icons/light/ShaderMaterial.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ShapeCast2D.svg b/resources/godot_icons/light/ShapeCast2D.svg index 019df10..77cff29 100644 --- a/resources/godot_icons/light/ShapeCast2D.svg +++ b/resources/godot_icons/light/ShapeCast2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ShapeCast3D.svg b/resources/godot_icons/light/ShapeCast3D.svg index 13a82a0..57b27ff 100644 --- a/resources/godot_icons/light/ShapeCast3D.svg +++ b/resources/godot_icons/light/ShapeCast3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Signals.svg b/resources/godot_icons/light/Signals.svg new file mode 100644 index 0000000..434ddbb --- /dev/null +++ b/resources/godot_icons/light/Signals.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/SignalsAndGroups.svg b/resources/godot_icons/light/SignalsAndGroups.svg new file mode 100644 index 0000000..0c2c77f --- /dev/null +++ b/resources/godot_icons/light/SignalsAndGroups.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/Skeleton2D.svg b/resources/godot_icons/light/Skeleton2D.svg index 9a71620..cdcda14 100644 --- a/resources/godot_icons/light/Skeleton2D.svg +++ b/resources/godot_icons/light/Skeleton2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Skeleton3D.svg b/resources/godot_icons/light/Skeleton3D.svg index 19617c0..249715d 100644 --- a/resources/godot_icons/light/Skeleton3D.svg +++ b/resources/godot_icons/light/Skeleton3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SkeletonIK3D.svg b/resources/godot_icons/light/SkeletonIK3D.svg index 724e0ef..1d2d0f5 100644 --- a/resources/godot_icons/light/SkeletonIK3D.svg +++ b/resources/godot_icons/light/SkeletonIK3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Sky.svg b/resources/godot_icons/light/Sky.svg index e463c5f..73656ed 100644 --- a/resources/godot_icons/light/Sky.svg +++ b/resources/godot_icons/light/Sky.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SliderJoint3D.svg b/resources/godot_icons/light/SliderJoint3D.svg index 38a0a08..94853a5 100644 --- a/resources/godot_icons/light/SliderJoint3D.svg +++ b/resources/godot_icons/light/SliderJoint3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Slot.svg b/resources/godot_icons/light/Slot.svg new file mode 100644 index 0000000..93c125a --- /dev/null +++ b/resources/godot_icons/light/Slot.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/SphereMesh.svg b/resources/godot_icons/light/SphereMesh.svg index be2dd44..83dd42f 100644 --- a/resources/godot_icons/light/SphereMesh.svg +++ b/resources/godot_icons/light/SphereMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SphereOccluder3D.svg b/resources/godot_icons/light/SphereOccluder3D.svg index 850e265..d593ce6 100644 --- a/resources/godot_icons/light/SphereOccluder3D.svg +++ b/resources/godot_icons/light/SphereOccluder3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SpinBox.svg b/resources/godot_icons/light/SpinBox.svg index bc15b79..31ca217 100644 --- a/resources/godot_icons/light/SpinBox.svg +++ b/resources/godot_icons/light/SpinBox.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SplitContainer.svg b/resources/godot_icons/light/SplitContainer.svg index 06b46b8..241fbb4 100644 --- a/resources/godot_icons/light/SplitContainer.svg +++ b/resources/godot_icons/light/SplitContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SpotLight3D.svg b/resources/godot_icons/light/SpotLight3D.svg index d280576..fcca99e 100644 --- a/resources/godot_icons/light/SpotLight3D.svg +++ b/resources/godot_icons/light/SpotLight3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Sprite2D.svg b/resources/godot_icons/light/Sprite2D.svg index 80affa4..4683e74 100644 --- a/resources/godot_icons/light/Sprite2D.svg +++ b/resources/godot_icons/light/Sprite2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Sprite3D.svg b/resources/godot_icons/light/Sprite3D.svg index c994380..134ae57 100644 --- a/resources/godot_icons/light/Sprite3D.svg +++ b/resources/godot_icons/light/Sprite3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SpriteFrames.svg b/resources/godot_icons/light/SpriteFrames.svg index 53ee6f6..34a6b5d 100644 --- a/resources/godot_icons/light/SpriteFrames.svg +++ b/resources/godot_icons/light/SpriteFrames.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/StandardMaterial3D.svg b/resources/godot_icons/light/StandardMaterial3D.svg index 717ba5d..41e9a67 100644 --- a/resources/godot_icons/light/StandardMaterial3D.svg +++ b/resources/godot_icons/light/StandardMaterial3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/StaticBody2D.svg b/resources/godot_icons/light/StaticBody2D.svg index 3dc4893..e15c9f1 100644 --- a/resources/godot_icons/light/StaticBody2D.svg +++ b/resources/godot_icons/light/StaticBody2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/StaticBody3D.svg b/resources/godot_icons/light/StaticBody3D.svg index d86c881..a4f1773 100644 --- a/resources/godot_icons/light/StaticBody3D.svg +++ b/resources/godot_icons/light/StaticBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Stop.svg b/resources/godot_icons/light/Stop.svg new file mode 100644 index 0000000..7b1ef97 --- /dev/null +++ b/resources/godot_icons/light/Stop.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/StyleBoxEmpty.svg b/resources/godot_icons/light/StyleBoxEmpty.svg index 3c4546d..c110d45 100644 --- a/resources/godot_icons/light/StyleBoxEmpty.svg +++ b/resources/godot_icons/light/StyleBoxEmpty.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/StyleBoxFlat.svg b/resources/godot_icons/light/StyleBoxFlat.svg index 5bf01f5..9868644 100644 --- a/resources/godot_icons/light/StyleBoxFlat.svg +++ b/resources/godot_icons/light/StyleBoxFlat.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/StyleBoxLine.svg b/resources/godot_icons/light/StyleBoxLine.svg index 995f56f..818864f 100644 --- a/resources/godot_icons/light/StyleBoxLine.svg +++ b/resources/godot_icons/light/StyleBoxLine.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/StyleBoxTexture.svg b/resources/godot_icons/light/StyleBoxTexture.svg index a356d11..9054053 100644 --- a/resources/godot_icons/light/StyleBoxTexture.svg +++ b/resources/godot_icons/light/StyleBoxTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SubViewport.svg b/resources/godot_icons/light/SubViewport.svg index 5b80105..10f85fb 100644 --- a/resources/godot_icons/light/SubViewport.svg +++ b/resources/godot_icons/light/SubViewport.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SubViewportContainer.svg b/resources/godot_icons/light/SubViewportContainer.svg index 49c8f4f..8f2516d 100644 --- a/resources/godot_icons/light/SubViewportContainer.svg +++ b/resources/godot_icons/light/SubViewportContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/SyntaxHighlighter.svg b/resources/godot_icons/light/SyntaxHighlighter.svg new file mode 100644 index 0000000..6bd0176 --- /dev/null +++ b/resources/godot_icons/light/SyntaxHighlighter.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/SystemFont.svg b/resources/godot_icons/light/SystemFont.svg index 93a84a9..9f3520b 100644 --- a/resources/godot_icons/light/SystemFont.svg +++ b/resources/godot_icons/light/SystemFont.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TabBar.svg b/resources/godot_icons/light/TabBar.svg index 9ed03bd..24f1941 100644 --- a/resources/godot_icons/light/TabBar.svg +++ b/resources/godot_icons/light/TabBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TabContainer.svg b/resources/godot_icons/light/TabContainer.svg index 130ce79..0283308 100644 --- a/resources/godot_icons/light/TabContainer.svg +++ b/resources/godot_icons/light/TabContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TextEdit.svg b/resources/godot_icons/light/TextEdit.svg index 661a540..fd9b09f 100644 --- a/resources/godot_icons/light/TextEdit.svg +++ b/resources/godot_icons/light/TextEdit.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TextMesh.svg b/resources/godot_icons/light/TextMesh.svg index 234ce75..868ab6e 100644 --- a/resources/godot_icons/light/TextMesh.svg +++ b/resources/godot_icons/light/TextMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Texture2DArray.svg b/resources/godot_icons/light/Texture2DArray.svg index 88b695d..331495b 100644 --- a/resources/godot_icons/light/Texture2DArray.svg +++ b/resources/godot_icons/light/Texture2DArray.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TextureButton.svg b/resources/godot_icons/light/TextureButton.svg index 0d45d2c..f5f061c 100644 --- a/resources/godot_icons/light/TextureButton.svg +++ b/resources/godot_icons/light/TextureButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TextureProgressBar.svg b/resources/godot_icons/light/TextureProgressBar.svg index 2095997..058d115 100644 --- a/resources/godot_icons/light/TextureProgressBar.svg +++ b/resources/godot_icons/light/TextureProgressBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Theme.svg b/resources/godot_icons/light/Theme.svg index 401d884..f35462d 100644 --- a/resources/godot_icons/light/Theme.svg +++ b/resources/godot_icons/light/Theme.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TileMap.svg b/resources/godot_icons/light/TileMap.svg index bad925b..6272897 100644 --- a/resources/godot_icons/light/TileMap.svg +++ b/resources/godot_icons/light/TileMap.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TileSet.svg b/resources/godot_icons/light/TileSet.svg index 1f123ea..126a4cc 100644 --- a/resources/godot_icons/light/TileSet.svg +++ b/resources/godot_icons/light/TileSet.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Timer.svg b/resources/godot_icons/light/Timer.svg index 7a9eb35..ea36d18 100644 --- a/resources/godot_icons/light/Timer.svg +++ b/resources/godot_icons/light/Timer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TorusMesh.svg b/resources/godot_icons/light/TorusMesh.svg index 2ed973d..adf3a84 100644 --- a/resources/godot_icons/light/TorusMesh.svg +++ b/resources/godot_icons/light/TorusMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TouchScreenButton.svg b/resources/godot_icons/light/TouchScreenButton.svg index 77d8264..afef08b 100644 --- a/resources/godot_icons/light/TouchScreenButton.svg +++ b/resources/godot_icons/light/TouchScreenButton.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Tree.svg b/resources/godot_icons/light/Tree.svg index 902486b..9028f38 100644 --- a/resources/godot_icons/light/Tree.svg +++ b/resources/godot_icons/light/Tree.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/TubeTrailMesh.svg b/resources/godot_icons/light/TubeTrailMesh.svg index 3ca5242..1cbab36 100644 --- a/resources/godot_icons/light/TubeTrailMesh.svg +++ b/resources/godot_icons/light/TubeTrailMesh.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Tween.svg b/resources/godot_icons/light/Tween.svg index a7310e5..53d1fd4 100644 --- a/resources/godot_icons/light/Tween.svg +++ b/resources/godot_icons/light/Tween.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Unlock.svg b/resources/godot_icons/light/Unlock.svg new file mode 100644 index 0000000..eef8fbf --- /dev/null +++ b/resources/godot_icons/light/Unlock.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/VBoxContainer.svg b/resources/godot_icons/light/VBoxContainer.svg index 1a804e3..60c5280 100644 --- a/resources/godot_icons/light/VBoxContainer.svg +++ b/resources/godot_icons/light/VBoxContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VFlowContainer.svg b/resources/godot_icons/light/VFlowContainer.svg index a75bc52..b148987 100644 --- a/resources/godot_icons/light/VFlowContainer.svg +++ b/resources/godot_icons/light/VFlowContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VScrollBar.svg b/resources/godot_icons/light/VScrollBar.svg index e98da2e..ef07040 100644 --- a/resources/godot_icons/light/VScrollBar.svg +++ b/resources/godot_icons/light/VScrollBar.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VSeparator.svg b/resources/godot_icons/light/VSeparator.svg index 3980f67..01d1070 100644 --- a/resources/godot_icons/light/VSeparator.svg +++ b/resources/godot_icons/light/VSeparator.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VSlider.svg b/resources/godot_icons/light/VSlider.svg index 6f21d81..84dc823 100644 --- a/resources/godot_icons/light/VSlider.svg +++ b/resources/godot_icons/light/VSlider.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VSplitContainer.svg b/resources/godot_icons/light/VSplitContainer.svg index aa9701c..b130e52 100644 --- a/resources/godot_icons/light/VSplitContainer.svg +++ b/resources/godot_icons/light/VSplitContainer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VehicleBody3D.svg b/resources/godot_icons/light/VehicleBody3D.svg index d83f85f..badb5d7 100644 --- a/resources/godot_icons/light/VehicleBody3D.svg +++ b/resources/godot_icons/light/VehicleBody3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VehicleWheel3D.svg b/resources/godot_icons/light/VehicleWheel3D.svg index ecab1e9..88e377c 100644 --- a/resources/godot_icons/light/VehicleWheel3D.svg +++ b/resources/godot_icons/light/VehicleWheel3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VideoStreamPlayer.svg b/resources/godot_icons/light/VideoStreamPlayer.svg index d89d55b..92afaae 100644 --- a/resources/godot_icons/light/VideoStreamPlayer.svg +++ b/resources/godot_icons/light/VideoStreamPlayer.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/ViewportTexture.svg b/resources/godot_icons/light/ViewportTexture.svg index 18e7a45..05ebe22 100644 --- a/resources/godot_icons/light/ViewportTexture.svg +++ b/resources/godot_icons/light/ViewportTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisibleOnScreenEnabler2D.svg b/resources/godot_icons/light/VisibleOnScreenEnabler2D.svg index 95b8b89..5a56a49 100644 --- a/resources/godot_icons/light/VisibleOnScreenEnabler2D.svg +++ b/resources/godot_icons/light/VisibleOnScreenEnabler2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisibleOnScreenEnabler3D.svg b/resources/godot_icons/light/VisibleOnScreenEnabler3D.svg index bf3412b..62dedcf 100644 --- a/resources/godot_icons/light/VisibleOnScreenEnabler3D.svg +++ b/resources/godot_icons/light/VisibleOnScreenEnabler3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisibleOnScreenNotifier2D.svg b/resources/godot_icons/light/VisibleOnScreenNotifier2D.svg index 2a85b4f..9f32063 100644 --- a/resources/godot_icons/light/VisibleOnScreenNotifier2D.svg +++ b/resources/godot_icons/light/VisibleOnScreenNotifier2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisibleOnScreenNotifier3D.svg b/resources/godot_icons/light/VisibleOnScreenNotifier3D.svg index 76f5e24..904455a 100644 --- a/resources/godot_icons/light/VisibleOnScreenNotifier3D.svg +++ b/resources/godot_icons/light/VisibleOnScreenNotifier3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShader.svg b/resources/godot_icons/light/VisualShader.svg index 929f296..d0125a8 100644 --- a/resources/godot_icons/light/VisualShader.svg +++ b/resources/godot_icons/light/VisualShader.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeColorConstant.svg b/resources/godot_icons/light/VisualShaderNodeColorConstant.svg index d327012..c2af7df 100644 --- a/resources/godot_icons/light/VisualShaderNodeColorConstant.svg +++ b/resources/godot_icons/light/VisualShaderNodeColorConstant.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeColorOp.svg b/resources/godot_icons/light/VisualShaderNodeColorOp.svg index 005da8b..c21852a 100644 --- a/resources/godot_icons/light/VisualShaderNodeColorOp.svg +++ b/resources/godot_icons/light/VisualShaderNodeColorOp.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeCubeMap.svg b/resources/godot_icons/light/VisualShaderNodeCubeMap.svg index fecb4d1..e28552c 100644 --- a/resources/godot_icons/light/VisualShaderNodeCubeMap.svg +++ b/resources/godot_icons/light/VisualShaderNodeCubeMap.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeCurveTexture.svg b/resources/godot_icons/light/VisualShaderNodeCurveTexture.svg index e468acf..f1f6a54 100644 --- a/resources/godot_icons/light/VisualShaderNodeCurveTexture.svg +++ b/resources/godot_icons/light/VisualShaderNodeCurveTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeCurveXYZTexture.svg b/resources/godot_icons/light/VisualShaderNodeCurveXYZTexture.svg index e468acf..f1f6a54 100644 --- a/resources/godot_icons/light/VisualShaderNodeCurveXYZTexture.svg +++ b/resources/godot_icons/light/VisualShaderNodeCurveXYZTexture.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeExpression.svg b/resources/godot_icons/light/VisualShaderNodeExpression.svg index 710ba81..ae403da 100644 --- a/resources/godot_icons/light/VisualShaderNodeExpression.svg +++ b/resources/godot_icons/light/VisualShaderNodeExpression.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeFloatFunc.svg b/resources/godot_icons/light/VisualShaderNodeFloatFunc.svg index 382c4e6..7cf2a5f 100644 --- a/resources/godot_icons/light/VisualShaderNodeFloatFunc.svg +++ b/resources/godot_icons/light/VisualShaderNodeFloatFunc.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeFloatOp.svg b/resources/godot_icons/light/VisualShaderNodeFloatOp.svg index 546ffc1..54048f0 100644 --- a/resources/godot_icons/light/VisualShaderNodeFloatOp.svg +++ b/resources/godot_icons/light/VisualShaderNodeFloatOp.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeGlobalExpression.svg b/resources/godot_icons/light/VisualShaderNodeGlobalExpression.svg index 0cafffb..14b75e2 100644 --- a/resources/godot_icons/light/VisualShaderNodeGlobalExpression.svg +++ b/resources/godot_icons/light/VisualShaderNodeGlobalExpression.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeIntFunc.svg b/resources/godot_icons/light/VisualShaderNodeIntFunc.svg index 382c4e6..7cf2a5f 100644 --- a/resources/godot_icons/light/VisualShaderNodeIntFunc.svg +++ b/resources/godot_icons/light/VisualShaderNodeIntFunc.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeIntOp.svg b/resources/godot_icons/light/VisualShaderNodeIntOp.svg index 546ffc1..54048f0 100644 --- a/resources/godot_icons/light/VisualShaderNodeIntOp.svg +++ b/resources/godot_icons/light/VisualShaderNodeIntOp.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeTransformCompose.svg b/resources/godot_icons/light/VisualShaderNodeTransformCompose.svg index 774f9e7..6f44f23 100644 --- a/resources/godot_icons/light/VisualShaderNodeTransformCompose.svg +++ b/resources/godot_icons/light/VisualShaderNodeTransformCompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeTransformDecompose.svg b/resources/godot_icons/light/VisualShaderNodeTransformDecompose.svg index 9594bcb..1521181 100644 --- a/resources/godot_icons/light/VisualShaderNodeTransformDecompose.svg +++ b/resources/godot_icons/light/VisualShaderNodeTransformDecompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeTransformVecMult.svg b/resources/godot_icons/light/VisualShaderNodeTransformVecMult.svg index 611f027..cd108f6 100644 --- a/resources/godot_icons/light/VisualShaderNodeTransformVecMult.svg +++ b/resources/godot_icons/light/VisualShaderNodeTransformVecMult.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeVectorCompose.svg b/resources/godot_icons/light/VisualShaderNodeVectorCompose.svg index 2c4c1fb..6502ca5 100644 --- a/resources/godot_icons/light/VisualShaderNodeVectorCompose.svg +++ b/resources/godot_icons/light/VisualShaderNodeVectorCompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeVectorDecompose.svg b/resources/godot_icons/light/VisualShaderNodeVectorDecompose.svg index 5fb8661..5ff0706 100644 --- a/resources/godot_icons/light/VisualShaderNodeVectorDecompose.svg +++ b/resources/godot_icons/light/VisualShaderNodeVectorDecompose.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeVectorDistance.svg b/resources/godot_icons/light/VisualShaderNodeVectorDistance.svg index b7185f2..9ea5462 100644 --- a/resources/godot_icons/light/VisualShaderNodeVectorDistance.svg +++ b/resources/godot_icons/light/VisualShaderNodeVectorDistance.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeVectorFunc.svg b/resources/godot_icons/light/VisualShaderNodeVectorFunc.svg index e452bc3..11405f1 100644 --- a/resources/godot_icons/light/VisualShaderNodeVectorFunc.svg +++ b/resources/godot_icons/light/VisualShaderNodeVectorFunc.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VisualShaderNodeVectorLen.svg b/resources/godot_icons/light/VisualShaderNodeVectorLen.svg index dce4890..ad9b51d 100644 --- a/resources/godot_icons/light/VisualShaderNodeVectorLen.svg +++ b/resources/godot_icons/light/VisualShaderNodeVectorLen.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VoxelGI.svg b/resources/godot_icons/light/VoxelGI.svg index 47edc49..d3fc3ba 100644 --- a/resources/godot_icons/light/VoxelGI.svg +++ b/resources/godot_icons/light/VoxelGI.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/VoxelGIData.svg b/resources/godot_icons/light/VoxelGIData.svg index ff2f84f..ff91ec1 100644 --- a/resources/godot_icons/light/VoxelGIData.svg +++ b/resources/godot_icons/light/VoxelGIData.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/World2D.svg b/resources/godot_icons/light/World2D.svg index 5e53b20..d39466b 100644 --- a/resources/godot_icons/light/World2D.svg +++ b/resources/godot_icons/light/World2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/World3D.svg b/resources/godot_icons/light/World3D.svg index b3f20e7..372d157 100644 --- a/resources/godot_icons/light/World3D.svg +++ b/resources/godot_icons/light/World3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/WorldBoundaryShape2D.svg b/resources/godot_icons/light/WorldBoundaryShape2D.svg index 70defbe..34dcbdc 100644 --- a/resources/godot_icons/light/WorldBoundaryShape2D.svg +++ b/resources/godot_icons/light/WorldBoundaryShape2D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/WorldBoundaryShape3D.svg b/resources/godot_icons/light/WorldBoundaryShape3D.svg index a73e74a..c7d0495 100644 --- a/resources/godot_icons/light/WorldBoundaryShape3D.svg +++ b/resources/godot_icons/light/WorldBoundaryShape3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/WorldEnvironment.svg b/resources/godot_icons/light/WorldEnvironment.svg index c4cc955..8cb9a9a 100644 --- a/resources/godot_icons/light/WorldEnvironment.svg +++ b/resources/godot_icons/light/WorldEnvironment.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/XRAnchor3D.svg b/resources/godot_icons/light/XRAnchor3D.svg index ba49827..4789db6 100644 --- a/resources/godot_icons/light/XRAnchor3D.svg +++ b/resources/godot_icons/light/XRAnchor3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/XRCamera3D.svg b/resources/godot_icons/light/XRCamera3D.svg index 4e754c0..dbbd116 100644 --- a/resources/godot_icons/light/XRCamera3D.svg +++ b/resources/godot_icons/light/XRCamera3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/XRController3D.svg b/resources/godot_icons/light/XRController3D.svg index e7fb638..0c5dc93 100644 --- a/resources/godot_icons/light/XRController3D.svg +++ b/resources/godot_icons/light/XRController3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/XROrigin3D.svg b/resources/godot_icons/light/XROrigin3D.svg index aeef103..844d830 100644 --- a/resources/godot_icons/light/XROrigin3D.svg +++ b/resources/godot_icons/light/XROrigin3D.svg @@ -1 +1 @@ - + diff --git a/resources/godot_icons/light/Zoom.svg b/resources/godot_icons/light/Zoom.svg new file mode 100644 index 0000000..1bbff97 --- /dev/null +++ b/resources/godot_icons/light/Zoom.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ZoomLess.svg b/resources/godot_icons/light/ZoomLess.svg new file mode 100644 index 0000000..1a193d8 --- /dev/null +++ b/resources/godot_icons/light/ZoomLess.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ZoomMore.svg b/resources/godot_icons/light/ZoomMore.svg new file mode 100644 index 0000000..d918527 --- /dev/null +++ b/resources/godot_icons/light/ZoomMore.svg @@ -0,0 +1 @@ + diff --git a/resources/godot_icons/light/ZoomReset.svg b/resources/godot_icons/light/ZoomReset.svg new file mode 100644 index 0000000..c8e773d --- /dev/null +++ b/resources/godot_icons/light/ZoomReset.svg @@ -0,0 +1 @@ + diff --git a/resources/hashes b/resources/hashes deleted file mode 100644 index 7ca3616..0000000 --- a/resources/hashes +++ /dev/null @@ -1,161 +0,0 @@ -icon_accept_dialog acd6ad21bbb15e44cda96d9063a8901f -icon_animated_sprite 270529e7145defc9e9f25a9662673536 -icon_animated_sprite_3d 7b0302f87d63ed013ba494a8d9218dc5 -icon_animation_player b2ede8ebdb67a4c8cbcb9c59d7b7e6b6 -icon_animation_tree a2fdc32212441cff75b0e5494c1b925e -icon_animation_tree_player a2fdc32212441cff75b0e5494c1b925e -icon_area 91092ba21aea2dd4928fcdd938ff6e46 -icon_area_2d 05545caafbc5d05bba2fc6de5928181e -icon_audio_stream_player 45e9947805241cce604d16b441ce6949 -icon_audio_stream_player_2_d c1e674966c627afa39068d8b8b88ddaf -icon_audio_stream_player_3_d ea1f6cc9624afa009419246b1e040ad6 -icon_a_r_v_r_anchor c2fa7d8b07c8753708ccd51fbfb750fb -icon_a_r_v_r_camera 57c9ee0a702fe1a03dd2f396ff304615 -icon_a_r_v_r_controller 5f39b1c4684b3a48a660f740fa9995d3 -icon_a_r_v_r_origin 9ee2aae61803f98f1913cbbfe6086e95 -icon_back_buffer_copy 1e8f39900ca051e8a9eeabc36a407135 -icon_baked_lightmap 99174fff2b5652da2c9bdf7c8869ef6c -icon_bone_2_d 04b832eadd359da67c3b51ac5198c2d2 -icon_bone_attachment b69dccb74bec608ea2bf6aedc3554d8d -icon_button a446868b97eb18615b1c0a649134535c -icon_camera 6b0ecdc420e94bdd635029132b7cf46a -icon_camera_2d f80f29d6af02ef6375c57fdf047900f8 -icon_canvas_layer 9d9d90ac888f833a0380b5b79819bda8 -icon_canvas_modulate eda1bd7d03c35d1f0762aa186b300480 -icon_center_container 04c7fecadc8f545fa39531e4398305e5 -icon_check_box a52807384ac7c3ad00ea2ef342501873 -icon_check_button 10c5f6800dd76afd34131a7cfc5208b5 -icon_clipped_camera 8c35cee49100276370afdb1492d8b649 -icon_collision_polygon c34c38ea1b38d6fb6d4f53817df41360 -icon_collision_polygon_2d 4bc34f2d5ff14a1c2ebf71c73942c21c -icon_collision_shape 8d4af566441db96cbc91b39d96912b27 -icon_collision_shape_2d c0e2b1ff8f25204d410ca0999d63c73d -icon_color_picker 720b46e85ba2f78e9192d6ed256340c1 -icon_color_picker_button 257604d44e7e23830d1983c86d4b555c -icon_color_rect 895c788b6b267baf2362622ff6f4f63b -icon_cone_twist_joint 79de179e62442e6571f5308a4605a6d2 -icon_confirmation_dialog 492c281c1d2512085ddbc8aaaa2ccf4f -icon_container df91572922e2a08dada37efbc1c4fea2 -icon_control ec59a74f624ed7a94a1ff24fd7bf3b93 -icon_c_p_u_particles b0e67fd89e1dee6663d87609b91c97a3 -icon_c_p_u_particles_2_d 221a2e65f720f258fb840f846cf3b191 -icon_damped_spring_joint_2d 483fc5a895c9b61b12c08e4ec78f14d8 -icon_directional_light ae154b892f967b6007dd56cf1b48555f -icon_edit dc3fff822c1ee004b92abbde27c7c682 -icon_file_dialog ca184caa0803a839bd8b6a1741c488c4 -icon_generic_6_d_o_f_joint 2bda3edbadf5cdda95fdcba6d16f8298 -icon_graph_edit 6a702bc4f31f63480019ba02cccbe6c0 -icon_graph_node fcf82785241eff77ea9972fc6fc2ef6e -icon_grid_container ea1012684b85a26c83ca7a491f9ab69e -icon_groove_joint_2d c3a49e1857964a04f7ed79866f3a8593 -icon_GUI_visibility_visible d956e435dec554864979aeee1bded043 -icon_g_i_probe a9aa9a6c2dc9ec58e0866e68e32ee24a -icon_hinge_joint 6b6364c48a664b654b841e48f794c4b0 -icon_h_box_container e2bf20d71fd7e612fcd787fa2c578bfc -icon_h_scroll_bar f4caa08c6ba15499e9e887ff9c701b0d -icon_h_separator 6a85f7720840b049fb9f9b47aa573329 -icon_h_slider 024c37595249a0e528206ecfed2ce983 -icon_h_split_container 74af42ae4779ef2dac29edaae1796c8d -icon_h_t_t_p_request 0f4d11fea914d437e713592e78bcd177 -icon_immediate_geometry 462129d475ce79f04670e2bcd1e47d32 -icon_interpolated_camera 2613060b44a5de86691362e07421192d -icon_item_list 82c5e66a1a2760c6701e66963c643118 -icon_kinematic_body baf39f197a9bed032b00783ce2b6c24b -icon_kinematic_body_2d 2ad0acbb50e157b9dfc46bf9af6e2449 -icon_label b8145440a57c66e2ac5e137cb907e640 -icon_light_2d 3e2947b328601f54f04ad885062c0726 -icon_light_occluder_2d 4c8471724f261ee26e4bfd428e4fa629 -icon_line_2d e21071cf08d2c0d89460aff3325a786d -icon_line_edit 4b4df6e706db709878cfffc97719145c -icon_link_button a505b74407b6259e96bf8c7f250a4557 -icon_listener 25920e978223a76a1ed8638d3e91dfca -icon_margin_container 7c7987b67b00a6ce200bd11414347ce8 -icon_menu_button 92af7cdf26a019204c853d6e4dad0e2f -icon_mesh_instance 417906bfc6e01952a01b12ce411a34b9 -icon_mesh_instance_2d 74e10998b51ae9fb88a4435933e63536 -icon_multi_mesh_instance 7f282664fe0b8a5c2a4be1a7c79b6090 -icon_multi_mesh_instance_2d 3bec394a3502b2b93292964b40cffb34 -icon_navigation 1cbcea8e75045c000204ac8a1ac08c7d -icon_navigation_2d 813a74261535fe2aec60a85b803ab26e -icon_navigation_mesh_instance 45706f13916f2d5997a376282337b150 -icon_navigation_polygon_instance 2bde0514ce8a5b758b4d515487bfc671 -icon_nine_patch_rect 146f15b2dd23bcd6c71bc262750c75ae -icon_node 8eed32d4596a4ac5573c98f8b8db554d -icon_node_2d 2c21bd745d7b8242048e1cba9d036d36 -icon_omni_light 56662c10dea4add3ecbab319d5fc19b8 -icon_option_button 5f0ab46ce7953dafef13f58430c412e4 -icon_panel ec03c4f34c36bdfcbf34291550acc18f -icon_panel_container 20aded28be4f4094c432a9ae617da43b -icon_parallax_background fb28ab07c87d2abd63a0a897d0e22668 -icon_parallax_layer 7a7782d2622475c351ae9194a37a3de9 -icon_particles 876f1f2b496c0a7cd7fdf698d5744c5a -icon_particles_2d f0cc98af251a7ddd1b7f3783d56998c1 -icon_path bd3a8f248df5492e785ff9774f6c14ff -icon_path_2d ad4c04049cc0dab5b73f67970f871502 -icon_path_follow 3c96e4979e645b6278984a4165b7451e -icon_path_follow_2d 0e5ed2a4bec5117ba72a1da8bfcdc370 -icon_physical_bone 477ad88c7ee226caa82c9fd4f9c4fe03 -icon_pin_joint 0859ac5caf660107e4e981e7f4bd4292 -icon_pin_joint_2d ac9b958e5029c3e517ff02863b3de602 -icon_polygon_2_d 1e9aaa8f172ed5df66af9c80c491f446 -icon_popup 70dd3a76942d94f4a50eab4937eb8de8 -icon_popup_dialog 8750584d6ad520368fc36dae74a25e96 -icon_popup_menu faa11ffe4722a1ed4cc212c0473325cb -icon_popup_panel e6d82be16a1f4cbd995c3628a7221743 -icon_position_2d 272e1b2f9c31550e8dd6aee94cf814c8 -icon_position_3d a21e92e39df5f17111eb6a751c258f36 -icon_progress_bar f0457c45b4b062743f6e17992d91fd4f -icon_ray_cast 3da43b7484ca367cb63dd7e8089038e1 -icon_ray_cast_2d 6dcd2660cb0da6620af18c2f15ca1f2d -icon_reference_rect 7bb50d353c0fbe4c66c65aad105a3710 -icon_reflection_probe 34acdd090988fd2432f046ed9daae7b2 -icon_refresh 6a7635d996186118ca7bdec52940fa47 -icon_remote_transform cbe7a93c44f0aa2fd6c1b4ce791f7d18 -icon_remote_transform_2d da99738feafc61c71990da52d09217c5 -icon_resource_preloader 54f8797edfb1a591469bd8a495693ecd -icon_rich_text_label 90c5820d0690ccbbc2417abddf10a065 -icon_rigid_body 384368c095922e9ca71cf241b1959e7d -icon_rigid_body_2d a5d7985831fe85fa523a9c4de7949a29 -icon_scroll_container c16f92706fe8b478fa1e4b4cb989bceb -icon_skeleton 4380f3accb79e3f21221d8094fec7f00 -icon_skeleton_2d c23ad7d61b470c55741e340adccd258c -icon_skeleton_i_k 33310ed7229c0f427bd024e5e09aa583 -icon_slider_joint b3ea8ca937ae99391356917bd4828f7f -icon_soft_body e3bcbf442155f984d4a221d0bb2d51bd -icon_spatial 8c3b8eb9e610cf9f9f408cfda48eb22f -icon_spin_box dde10cb14e0b9b747e771f5ab24cfefa -icon_spot_light 6770b4669be1bc20dd3577c65048432b -icon_spring_arm d74a1036e477174520013ab462b4e1c3 -icon_sprite ac17b5a5be395600db43ddbca3d463d4 -icon_sprite_3d 5dac01bc8de8c2dfcede3c999842f2a3 -icon_static_body 0f92bf400c4623adbb64c15b01e0382e -icon_static_body_2d 3dd22d2168d5372b3dee50429c4b6ecb -icon_tabs 7e78ecce029538648eb6ef5cc3f94d57 -icon_tab_container 9270d0970d93715da62075751ae88bc9 -icon_texture_button 488e98f85acc4ba2cdd9558a5af29344 -icon_texture_progress b8b440d119ea40edcbeade9e10ee35b5 -icon_texture_rect 92ced3405382fa051b6560e714b4b8ed -icon_text_edit 9d93c58e090d546b5f1ee3e0a693fbd2 -icon_tile_map e1558aa483145cd909169b9ec1cfa1ae -icon_timer d1419c36011566b646e568d77be7cb09 -icon_tool_button 4a65d7656827a1a1b5ac38f10b4646e8 -icon_touch_screen_button 30adb0de710d854b0cb0bf15b1536835 -icon_tree bad9393472d4c2f33bbe3afb8cb64f39 -icon_tween edf1c6b9262a66c22ecf96982c557337 -icon_vehicle_body 49ab6b5393e04b3285ca459b77078713 -icon_vehicle_wheel 7ffca5bd273ac964bfac6a7de017edc9 -icon_video_player 56452495f2f5a67026259ac4d765b2ba -icon_viewport f4d16e71d5ede737174bd18800757696 -icon_viewport_container f1d6d0ef263589f8a59fad13ac648d45 -icon_visibility_enabler 7c774f0c24f95fd89e419ea28cedd33f -icon_visibility_enabler_2d a38023de192b545a8834ad4e2547c659 -icon_visibility_notifier b7114d0e69234903d554819775947360 -icon_visibility_notifier_2d c93ff4ad11f6cc5d63b65346698bc5fc -icon_v_box_container 53ab4bb91711b591043e9207219d983f -icon_v_scroll_bar 8dcfef3ee1fb291f07c278786c4af788 -icon_v_separator cdbf0a84486f142e1776e16b4c50c918 -icon_v_slider 17b523456407d17b95bc2895e5baf528 -icon_v_split_container 4c3c0ae52be2afe50860a3c622eefe49 -icon_window_dialog 174b718610528486f3f8445f0bfba263 -icon_world_environment 451ec32bf9d7a89d2e1e34dfa1158e26 -icon_y_sort f76aa85d366d9d55e4b86d2390cf988c diff --git a/resources/light/icon_GUI_visibility_visible.svg b/resources/light/icon_GUI_visibility_visible.svg deleted file mode 100644 index cad97b6..0000000 --- a/resources/light/icon_GUI_visibility_visible.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_a_r_v_r_anchor.svg b/resources/light/icon_a_r_v_r_anchor.svg deleted file mode 100644 index 2a9ad42..0000000 --- a/resources/light/icon_a_r_v_r_anchor.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_a_r_v_r_camera.svg b/resources/light/icon_a_r_v_r_camera.svg deleted file mode 100644 index 82cf4ca..0000000 --- a/resources/light/icon_a_r_v_r_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_a_r_v_r_controller.svg b/resources/light/icon_a_r_v_r_controller.svg deleted file mode 100644 index ee3d772..0000000 --- a/resources/light/icon_a_r_v_r_controller.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_a_r_v_r_origin.svg b/resources/light/icon_a_r_v_r_origin.svg deleted file mode 100644 index 3ac4a06..0000000 --- a/resources/light/icon_a_r_v_r_origin.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_accept_dialog.svg b/resources/light/icon_accept_dialog.svg deleted file mode 100644 index d35907f..0000000 --- a/resources/light/icon_accept_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_animated_sprite.svg b/resources/light/icon_animated_sprite.svg deleted file mode 100644 index cab15ea..0000000 --- a/resources/light/icon_animated_sprite.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/resources/light/icon_animated_sprite_3d.svg b/resources/light/icon_animated_sprite_3d.svg deleted file mode 100644 index 9c26784..0000000 --- a/resources/light/icon_animated_sprite_3d.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/resources/light/icon_animation_player.svg b/resources/light/icon_animation_player.svg deleted file mode 100644 index 15e210d..0000000 --- a/resources/light/icon_animation_player.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_animation_tree.svg b/resources/light/icon_animation_tree.svg deleted file mode 100644 index 578dc19..0000000 --- a/resources/light/icon_animation_tree.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_animation_tree_player.svg b/resources/light/icon_animation_tree_player.svg deleted file mode 100644 index 578dc19..0000000 --- a/resources/light/icon_animation_tree_player.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_area.svg b/resources/light/icon_area.svg deleted file mode 100644 index adb2881..0000000 --- a/resources/light/icon_area.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_area_2d.svg b/resources/light/icon_area_2d.svg deleted file mode 100644 index bfb4be4..0000000 --- a/resources/light/icon_area_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_audio_stream_player.svg b/resources/light/icon_audio_stream_player.svg deleted file mode 100644 index 6b5ee1a..0000000 --- a/resources/light/icon_audio_stream_player.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/resources/light/icon_audio_stream_player_2_d.svg b/resources/light/icon_audio_stream_player_2_d.svg deleted file mode 100644 index b2efc1e..0000000 --- a/resources/light/icon_audio_stream_player_2_d.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/resources/light/icon_audio_stream_player_3_d.svg b/resources/light/icon_audio_stream_player_3_d.svg deleted file mode 100644 index 6981acc..0000000 --- a/resources/light/icon_audio_stream_player_3_d.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/resources/light/icon_back_buffer_copy.svg b/resources/light/icon_back_buffer_copy.svg deleted file mode 100644 index e7fd1a6..0000000 --- a/resources/light/icon_back_buffer_copy.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_baked_lightmap.svg b/resources/light/icon_baked_lightmap.svg deleted file mode 100644 index 2a4bde3..0000000 --- a/resources/light/icon_baked_lightmap.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_bone_2_d.svg b/resources/light/icon_bone_2_d.svg deleted file mode 100644 index 18dc6c8..0000000 --- a/resources/light/icon_bone_2_d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_bone_attachment.svg b/resources/light/icon_bone_attachment.svg deleted file mode 100644 index 9ebcfc9..0000000 --- a/resources/light/icon_bone_attachment.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_button.svg b/resources/light/icon_button.svg deleted file mode 100644 index d233dfb..0000000 --- a/resources/light/icon_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_c_p_u_particles.svg b/resources/light/icon_c_p_u_particles.svg deleted file mode 100644 index c5d04d2..0000000 --- a/resources/light/icon_c_p_u_particles.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_c_p_u_particles_2_d.svg b/resources/light/icon_c_p_u_particles_2_d.svg deleted file mode 100644 index 7b1aeb9..0000000 --- a/resources/light/icon_c_p_u_particles_2_d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_camera.svg b/resources/light/icon_camera.svg deleted file mode 100644 index 1bbff56..0000000 --- a/resources/light/icon_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_camera_2d.svg b/resources/light/icon_camera_2d.svg deleted file mode 100644 index 08bd9e7..0000000 --- a/resources/light/icon_camera_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_canvas_layer.svg b/resources/light/icon_canvas_layer.svg deleted file mode 100644 index 5a4c8df..0000000 --- a/resources/light/icon_canvas_layer.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_canvas_modulate.svg b/resources/light/icon_canvas_modulate.svg deleted file mode 100644 index 2a1e91b..0000000 --- a/resources/light/icon_canvas_modulate.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/resources/light/icon_center_container.svg b/resources/light/icon_center_container.svg deleted file mode 100644 index edd2211..0000000 --- a/resources/light/icon_center_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_check_box.svg b/resources/light/icon_check_box.svg deleted file mode 100644 index d8735cb..0000000 --- a/resources/light/icon_check_box.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_check_button.svg b/resources/light/icon_check_button.svg deleted file mode 100644 index 094d9b2..0000000 --- a/resources/light/icon_check_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_clipped_camera.svg b/resources/light/icon_clipped_camera.svg deleted file mode 100644 index f9f117f..0000000 --- a/resources/light/icon_clipped_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_collision_polygon.svg b/resources/light/icon_collision_polygon.svg deleted file mode 100644 index e6efc22..0000000 --- a/resources/light/icon_collision_polygon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_collision_polygon_2d.svg b/resources/light/icon_collision_polygon_2d.svg deleted file mode 100644 index c10933c..0000000 --- a/resources/light/icon_collision_polygon_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_collision_shape.svg b/resources/light/icon_collision_shape.svg deleted file mode 100644 index 5a6c301..0000000 --- a/resources/light/icon_collision_shape.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_collision_shape_2d.svg b/resources/light/icon_collision_shape_2d.svg deleted file mode 100644 index 70278bc..0000000 --- a/resources/light/icon_collision_shape_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_color_picker.svg b/resources/light/icon_color_picker.svg deleted file mode 100644 index b11fe60..0000000 --- a/resources/light/icon_color_picker.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_color_picker_button.svg b/resources/light/icon_color_picker_button.svg deleted file mode 100644 index 25b6613..0000000 --- a/resources/light/icon_color_picker_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_color_rect.svg b/resources/light/icon_color_rect.svg deleted file mode 100644 index bb205e2..0000000 --- a/resources/light/icon_color_rect.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/resources/light/icon_cone_twist_joint.svg b/resources/light/icon_cone_twist_joint.svg deleted file mode 100644 index c420963..0000000 --- a/resources/light/icon_cone_twist_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_confirmation_dialog.svg b/resources/light/icon_confirmation_dialog.svg deleted file mode 100644 index 64f2941..0000000 --- a/resources/light/icon_confirmation_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_container.svg b/resources/light/icon_container.svg deleted file mode 100644 index c04c212..0000000 --- a/resources/light/icon_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_control.svg b/resources/light/icon_control.svg deleted file mode 100644 index 63a1aa7..0000000 --- a/resources/light/icon_control.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_damped_spring_joint_2d.svg b/resources/light/icon_damped_spring_joint_2d.svg deleted file mode 100644 index 6c5741f..0000000 --- a/resources/light/icon_damped_spring_joint_2d.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_directional_light.svg b/resources/light/icon_directional_light.svg deleted file mode 100644 index 2cddf9a..0000000 --- a/resources/light/icon_directional_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_file_dialog.svg b/resources/light/icon_file_dialog.svg deleted file mode 100644 index 8027951..0000000 --- a/resources/light/icon_file_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_g_i_probe.svg b/resources/light/icon_g_i_probe.svg deleted file mode 100644 index 6a1282d..0000000 --- a/resources/light/icon_g_i_probe.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_generic_6_d_o_f_joint.svg b/resources/light/icon_generic_6_d_o_f_joint.svg deleted file mode 100644 index f1b7b55..0000000 --- a/resources/light/icon_generic_6_d_o_f_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_graph_edit.svg b/resources/light/icon_graph_edit.svg deleted file mode 100644 index 36c9ae5..0000000 --- a/resources/light/icon_graph_edit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_graph_node.svg b/resources/light/icon_graph_node.svg deleted file mode 100644 index 468aaf0..0000000 --- a/resources/light/icon_graph_node.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_grid_container.svg b/resources/light/icon_grid_container.svg deleted file mode 100644 index 40953c9..0000000 --- a/resources/light/icon_grid_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_groove_joint_2d.svg b/resources/light/icon_groove_joint_2d.svg deleted file mode 100644 index e7b2929..0000000 --- a/resources/light/icon_groove_joint_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_h_box_container.svg b/resources/light/icon_h_box_container.svg deleted file mode 100644 index efcdffa..0000000 --- a/resources/light/icon_h_box_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_h_scroll_bar.svg b/resources/light/icon_h_scroll_bar.svg deleted file mode 100644 index a5b2b2a..0000000 --- a/resources/light/icon_h_scroll_bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_h_separator.svg b/resources/light/icon_h_separator.svg deleted file mode 100644 index 2a8ca25..0000000 --- a/resources/light/icon_h_separator.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_h_slider.svg b/resources/light/icon_h_slider.svg deleted file mode 100644 index 2f3483d..0000000 --- a/resources/light/icon_h_slider.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_h_split_container.svg b/resources/light/icon_h_split_container.svg deleted file mode 100644 index 76650dd..0000000 --- a/resources/light/icon_h_split_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_h_t_t_p_request.svg b/resources/light/icon_h_t_t_p_request.svg deleted file mode 100644 index ed6981a..0000000 --- a/resources/light/icon_h_t_t_p_request.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_hinge_joint.svg b/resources/light/icon_hinge_joint.svg deleted file mode 100644 index aa66c4c..0000000 --- a/resources/light/icon_hinge_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_immediate_geometry.svg b/resources/light/icon_immediate_geometry.svg deleted file mode 100644 index c01f380..0000000 --- a/resources/light/icon_immediate_geometry.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_interpolated_camera.svg b/resources/light/icon_interpolated_camera.svg deleted file mode 100644 index 87c1e3b..0000000 --- a/resources/light/icon_interpolated_camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_item_list.svg b/resources/light/icon_item_list.svg deleted file mode 100644 index 93d6b68..0000000 --- a/resources/light/icon_item_list.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_kinematic_body.svg b/resources/light/icon_kinematic_body.svg deleted file mode 100644 index c7abf9a..0000000 --- a/resources/light/icon_kinematic_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_kinematic_body_2d.svg b/resources/light/icon_kinematic_body_2d.svg deleted file mode 100644 index baebfa2..0000000 --- a/resources/light/icon_kinematic_body_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_label.svg b/resources/light/icon_label.svg deleted file mode 100644 index 8a818bd..0000000 --- a/resources/light/icon_label.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_light_2d.svg b/resources/light/icon_light_2d.svg deleted file mode 100644 index 9edaaee..0000000 --- a/resources/light/icon_light_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_light_occluder_2d.svg b/resources/light/icon_light_occluder_2d.svg deleted file mode 100644 index 3c38f92..0000000 --- a/resources/light/icon_light_occluder_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_line_2d.svg b/resources/light/icon_line_2d.svg deleted file mode 100644 index 13752b5..0000000 --- a/resources/light/icon_line_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_line_edit.svg b/resources/light/icon_line_edit.svg deleted file mode 100644 index cd487c5..0000000 --- a/resources/light/icon_line_edit.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_link_button.svg b/resources/light/icon_link_button.svg deleted file mode 100644 index f88c1f2..0000000 --- a/resources/light/icon_link_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_listener.svg b/resources/light/icon_listener.svg deleted file mode 100644 index 0b4fd72..0000000 --- a/resources/light/icon_listener.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_margin_container.svg b/resources/light/icon_margin_container.svg deleted file mode 100644 index 47fe297..0000000 --- a/resources/light/icon_margin_container.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_menu_button.svg b/resources/light/icon_menu_button.svg deleted file mode 100644 index a2180e9..0000000 --- a/resources/light/icon_menu_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_mesh_instance.svg b/resources/light/icon_mesh_instance.svg deleted file mode 100644 index df548c3..0000000 --- a/resources/light/icon_mesh_instance.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_mesh_instance_2d.svg b/resources/light/icon_mesh_instance_2d.svg deleted file mode 100644 index 6a7f305..0000000 --- a/resources/light/icon_mesh_instance_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_multi_mesh_instance.svg b/resources/light/icon_multi_mesh_instance.svg deleted file mode 100644 index b2b9b65..0000000 --- a/resources/light/icon_multi_mesh_instance.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_multi_mesh_instance_2d.svg b/resources/light/icon_multi_mesh_instance_2d.svg deleted file mode 100644 index e09a1f5..0000000 --- a/resources/light/icon_multi_mesh_instance_2d.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/resources/light/icon_navigation.svg b/resources/light/icon_navigation.svg deleted file mode 100644 index 778ce5b..0000000 --- a/resources/light/icon_navigation.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_navigation_2d.svg b/resources/light/icon_navigation_2d.svg deleted file mode 100644 index dc3c552..0000000 --- a/resources/light/icon_navigation_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_navigation_mesh_instance.svg b/resources/light/icon_navigation_mesh_instance.svg deleted file mode 100644 index 84ffabf..0000000 --- a/resources/light/icon_navigation_mesh_instance.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_navigation_polygon_instance.svg b/resources/light/icon_navigation_polygon_instance.svg deleted file mode 100644 index c93b7d1..0000000 --- a/resources/light/icon_navigation_polygon_instance.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_nine_patch_rect.svg b/resources/light/icon_nine_patch_rect.svg deleted file mode 100644 index 74072b5..0000000 --- a/resources/light/icon_nine_patch_rect.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/resources/light/icon_node.svg b/resources/light/icon_node.svg deleted file mode 100644 index cae7079..0000000 --- a/resources/light/icon_node.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_node_2d.svg b/resources/light/icon_node_2d.svg deleted file mode 100644 index 356a1bd..0000000 --- a/resources/light/icon_node_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_omni_light.svg b/resources/light/icon_omni_light.svg deleted file mode 100644 index 87f8ab1..0000000 --- a/resources/light/icon_omni_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_option_button.svg b/resources/light/icon_option_button.svg deleted file mode 100644 index d84f205..0000000 --- a/resources/light/icon_option_button.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_panel.svg b/resources/light/icon_panel.svg deleted file mode 100644 index 9f723a0..0000000 --- a/resources/light/icon_panel.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_panel_container.svg b/resources/light/icon_panel_container.svg deleted file mode 100644 index 1d1f1ab..0000000 --- a/resources/light/icon_panel_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_parallax_background.svg b/resources/light/icon_parallax_background.svg deleted file mode 100644 index bfe6bad..0000000 --- a/resources/light/icon_parallax_background.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_parallax_layer.svg b/resources/light/icon_parallax_layer.svg deleted file mode 100644 index 54d0b55..0000000 --- a/resources/light/icon_parallax_layer.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_particles.svg b/resources/light/icon_particles.svg deleted file mode 100644 index 4ece220..0000000 --- a/resources/light/icon_particles.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_particles_2d.svg b/resources/light/icon_particles_2d.svg deleted file mode 100644 index 5ddd269..0000000 --- a/resources/light/icon_particles_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_path.svg b/resources/light/icon_path.svg deleted file mode 100644 index f1cd7bc..0000000 --- a/resources/light/icon_path.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_path_2d.svg b/resources/light/icon_path_2d.svg deleted file mode 100644 index 43492dd..0000000 --- a/resources/light/icon_path_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_path_follow.svg b/resources/light/icon_path_follow.svg deleted file mode 100644 index a165202..0000000 --- a/resources/light/icon_path_follow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_path_follow_2d.svg b/resources/light/icon_path_follow_2d.svg deleted file mode 100644 index d7f4fbc..0000000 --- a/resources/light/icon_path_follow_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_physical_bone.svg b/resources/light/icon_physical_bone.svg deleted file mode 100644 index 5f25040..0000000 --- a/resources/light/icon_physical_bone.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/light/icon_pin_joint.svg b/resources/light/icon_pin_joint.svg deleted file mode 100644 index 3a732c2..0000000 --- a/resources/light/icon_pin_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_pin_joint_2d.svg b/resources/light/icon_pin_joint_2d.svg deleted file mode 100644 index dfe0bf5..0000000 --- a/resources/light/icon_pin_joint_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_polygon_2_d.svg b/resources/light/icon_polygon_2_d.svg deleted file mode 100644 index 0dd196b..0000000 --- a/resources/light/icon_polygon_2_d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_popup.svg b/resources/light/icon_popup.svg deleted file mode 100644 index af3ac1b..0000000 --- a/resources/light/icon_popup.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_popup_dialog.svg b/resources/light/icon_popup_dialog.svg deleted file mode 100644 index 3d99858..0000000 --- a/resources/light/icon_popup_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_popup_menu.svg b/resources/light/icon_popup_menu.svg deleted file mode 100644 index f78dd50..0000000 --- a/resources/light/icon_popup_menu.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_popup_panel.svg b/resources/light/icon_popup_panel.svg deleted file mode 100644 index 55f4af5..0000000 --- a/resources/light/icon_popup_panel.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_position_2d.svg b/resources/light/icon_position_2d.svg deleted file mode 100644 index fd9116c..0000000 --- a/resources/light/icon_position_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_position_3d.svg b/resources/light/icon_position_3d.svg deleted file mode 100644 index 58dea0e..0000000 --- a/resources/light/icon_position_3d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_progress_bar.svg b/resources/light/icon_progress_bar.svg deleted file mode 100644 index 01d3387..0000000 --- a/resources/light/icon_progress_bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_ray_cast.svg b/resources/light/icon_ray_cast.svg deleted file mode 100644 index 69a2281..0000000 --- a/resources/light/icon_ray_cast.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_ray_cast_2d.svg b/resources/light/icon_ray_cast_2d.svg deleted file mode 100644 index 7791071..0000000 --- a/resources/light/icon_ray_cast_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_reference_rect.svg b/resources/light/icon_reference_rect.svg deleted file mode 100644 index 3fb547a..0000000 --- a/resources/light/icon_reference_rect.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_reflection_probe.svg b/resources/light/icon_reflection_probe.svg deleted file mode 100644 index ddf10f6..0000000 --- a/resources/light/icon_reflection_probe.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_remote_transform.svg b/resources/light/icon_remote_transform.svg deleted file mode 100644 index 359fa93..0000000 --- a/resources/light/icon_remote_transform.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_remote_transform_2d.svg b/resources/light/icon_remote_transform_2d.svg deleted file mode 100644 index f2afdd4..0000000 --- a/resources/light/icon_remote_transform_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_resource_preloader.svg b/resources/light/icon_resource_preloader.svg deleted file mode 100644 index fc31ea4..0000000 --- a/resources/light/icon_resource_preloader.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_rich_text_label.svg b/resources/light/icon_rich_text_label.svg deleted file mode 100644 index 9b86f48..0000000 --- a/resources/light/icon_rich_text_label.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_rigid_body.svg b/resources/light/icon_rigid_body.svg deleted file mode 100644 index 9968a6a..0000000 --- a/resources/light/icon_rigid_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_rigid_body_2d.svg b/resources/light/icon_rigid_body_2d.svg deleted file mode 100644 index 057cb01..0000000 --- a/resources/light/icon_rigid_body_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_scroll_container.svg b/resources/light/icon_scroll_container.svg deleted file mode 100644 index 2eeb60e..0000000 --- a/resources/light/icon_scroll_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_skeleton.svg b/resources/light/icon_skeleton.svg deleted file mode 100644 index a82f891..0000000 --- a/resources/light/icon_skeleton.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_skeleton_2d.svg b/resources/light/icon_skeleton_2d.svg deleted file mode 100644 index a9a925c..0000000 --- a/resources/light/icon_skeleton_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_skeleton_i_k.svg b/resources/light/icon_skeleton_i_k.svg deleted file mode 100644 index 4585882..0000000 --- a/resources/light/icon_skeleton_i_k.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_slider_joint.svg b/resources/light/icon_slider_joint.svg deleted file mode 100644 index bf5e467..0000000 --- a/resources/light/icon_slider_joint.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_soft_body.svg b/resources/light/icon_soft_body.svg deleted file mode 100644 index a912f12..0000000 --- a/resources/light/icon_soft_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_spatial.svg b/resources/light/icon_spatial.svg deleted file mode 100644 index e59eff4..0000000 --- a/resources/light/icon_spatial.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_spin_box.svg b/resources/light/icon_spin_box.svg deleted file mode 100644 index becdaca..0000000 --- a/resources/light/icon_spin_box.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_spot_light.svg b/resources/light/icon_spot_light.svg deleted file mode 100644 index 44a1dd6..0000000 --- a/resources/light/icon_spot_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_spring_arm.svg b/resources/light/icon_spring_arm.svg deleted file mode 100644 index 8869e94..0000000 --- a/resources/light/icon_spring_arm.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/light/icon_sprite.svg b/resources/light/icon_sprite.svg deleted file mode 100644 index 82cadaa..0000000 --- a/resources/light/icon_sprite.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_sprite_3d.svg b/resources/light/icon_sprite_3d.svg deleted file mode 100644 index aa0518e..0000000 --- a/resources/light/icon_sprite_3d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_static_body.svg b/resources/light/icon_static_body.svg deleted file mode 100644 index 45b0d5b..0000000 --- a/resources/light/icon_static_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_static_body_2d.svg b/resources/light/icon_static_body_2d.svg deleted file mode 100644 index 3004e89..0000000 --- a/resources/light/icon_static_body_2d.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_tab_container.svg b/resources/light/icon_tab_container.svg deleted file mode 100644 index f97cab1..0000000 --- a/resources/light/icon_tab_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_tabs.svg b/resources/light/icon_tabs.svg deleted file mode 100644 index 0df9d7e..0000000 --- a/resources/light/icon_tabs.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_text_edit.svg b/resources/light/icon_text_edit.svg deleted file mode 100644 index 4a41e95..0000000 --- a/resources/light/icon_text_edit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_texture_button.svg b/resources/light/icon_texture_button.svg deleted file mode 100644 index 778346c..0000000 --- a/resources/light/icon_texture_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_texture_progress.svg b/resources/light/icon_texture_progress.svg deleted file mode 100644 index 465f4b5..0000000 --- a/resources/light/icon_texture_progress.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/light/icon_texture_rect.svg b/resources/light/icon_texture_rect.svg deleted file mode 100644 index 3696914..0000000 --- a/resources/light/icon_texture_rect.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_tile_map.svg b/resources/light/icon_tile_map.svg deleted file mode 100644 index 64ff6ec..0000000 --- a/resources/light/icon_tile_map.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_timer.svg b/resources/light/icon_timer.svg deleted file mode 100644 index c7bc63d..0000000 --- a/resources/light/icon_timer.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_tool_button.svg b/resources/light/icon_tool_button.svg deleted file mode 100644 index 7aaad76..0000000 --- a/resources/light/icon_tool_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_touch_screen_button.svg b/resources/light/icon_touch_screen_button.svg deleted file mode 100644 index 2ca363e..0000000 --- a/resources/light/icon_touch_screen_button.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_tree.svg b/resources/light/icon_tree.svg deleted file mode 100644 index 0480f94..0000000 --- a/resources/light/icon_tree.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_tween.svg b/resources/light/icon_tween.svg deleted file mode 100644 index 10f7a99..0000000 --- a/resources/light/icon_tween.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_v_box_container.svg b/resources/light/icon_v_box_container.svg deleted file mode 100644 index 3e9390f..0000000 --- a/resources/light/icon_v_box_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_v_scroll_bar.svg b/resources/light/icon_v_scroll_bar.svg deleted file mode 100644 index 38d0196..0000000 --- a/resources/light/icon_v_scroll_bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_v_separator.svg b/resources/light/icon_v_separator.svg deleted file mode 100644 index 58781a9..0000000 --- a/resources/light/icon_v_separator.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_v_slider.svg b/resources/light/icon_v_slider.svg deleted file mode 100644 index 728de39..0000000 --- a/resources/light/icon_v_slider.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_v_split_container.svg b/resources/light/icon_v_split_container.svg deleted file mode 100644 index 7fc7990..0000000 --- a/resources/light/icon_v_split_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_vehicle_body.svg b/resources/light/icon_vehicle_body.svg deleted file mode 100644 index 4bca6e1..0000000 --- a/resources/light/icon_vehicle_body.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_vehicle_wheel.svg b/resources/light/icon_vehicle_wheel.svg deleted file mode 100644 index 9783eec..0000000 --- a/resources/light/icon_vehicle_wheel.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_video_player.svg b/resources/light/icon_video_player.svg deleted file mode 100644 index adcc5de..0000000 --- a/resources/light/icon_video_player.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_viewport.svg b/resources/light/icon_viewport.svg deleted file mode 100644 index a9be724..0000000 --- a/resources/light/icon_viewport.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_viewport_container.svg b/resources/light/icon_viewport_container.svg deleted file mode 100644 index 7284518..0000000 --- a/resources/light/icon_viewport_container.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_visibility_enabler.svg b/resources/light/icon_visibility_enabler.svg deleted file mode 100644 index 283f75d..0000000 --- a/resources/light/icon_visibility_enabler.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_visibility_enabler_2d.svg b/resources/light/icon_visibility_enabler_2d.svg deleted file mode 100644 index d3151a6..0000000 --- a/resources/light/icon_visibility_enabler_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_visibility_notifier.svg b/resources/light/icon_visibility_notifier.svg deleted file mode 100644 index 52d38f9..0000000 --- a/resources/light/icon_visibility_notifier.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_visibility_notifier_2d.svg b/resources/light/icon_visibility_notifier_2d.svg deleted file mode 100644 index 6be2ab7..0000000 --- a/resources/light/icon_visibility_notifier_2d.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_window_dialog.svg b/resources/light/icon_window_dialog.svg deleted file mode 100644 index 19db82a..0000000 --- a/resources/light/icon_window_dialog.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/light/icon_world_environment.svg b/resources/light/icon_world_environment.svg deleted file mode 100644 index 1ecc4a2..0000000 --- a/resources/light/icon_world_environment.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/light/icon_y_sort.svg b/resources/light/icon_y_sort.svg deleted file mode 100644 index 1fd9bd0..0000000 --- a/resources/light/icon_y_sort.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/onig.wasm b/resources/onig.wasm new file mode 100644 index 0000000..162f14a Binary files /dev/null and b/resources/onig.wasm differ diff --git a/resources/dark/icon_edit.svg b/resources/other_icons/dark/icon_edit.svg similarity index 100% rename from resources/dark/icon_edit.svg rename to resources/other_icons/dark/icon_edit.svg diff --git a/resources/dark/icon_refresh.svg b/resources/other_icons/dark/icon_refresh.svg similarity index 100% rename from resources/dark/icon_refresh.svg rename to resources/other_icons/dark/icon_refresh.svg diff --git a/resources/light/icon_edit.svg b/resources/other_icons/light/icon_edit.svg similarity index 99% rename from resources/light/icon_edit.svg rename to resources/other_icons/light/icon_edit.svg index b826c1c..96850e4 100644 --- a/resources/light/icon_edit.svg +++ b/resources/other_icons/light/icon_edit.svg @@ -1,5 +1,5 @@ - - - - - + + + + + diff --git a/resources/light/icon_refresh.svg b/resources/other_icons/light/icon_refresh.svg similarity index 99% rename from resources/light/icon_refresh.svg rename to resources/other_icons/light/icon_refresh.svg index f8e9ae3..4973f5e 100644 --- a/resources/light/icon_refresh.svg +++ b/resources/other_icons/light/icon_refresh.svg @@ -1,3 +1,3 @@ - - - + + + diff --git a/src/debugger/debug_runtime.ts b/src/debugger/debug_runtime.ts index afe9e25..6a70aa3 100644 --- a/src/debugger/debug_runtime.ts +++ b/src/debugger/debug_runtime.ts @@ -1,6 +1,6 @@ import { SceneTreeProvider } from "./scene_tree_provider"; import path = require("path"); -import { createLogger } from "../logger"; +import { createLogger } from "../utils"; const log = createLogger("debugger.runtime"); diff --git a/src/debugger/debugger.ts b/src/debugger/debugger.ts index 257e02b..c35601b 100644 --- a/src/debugger/debugger.ts +++ b/src/debugger/debugger.ts @@ -13,15 +13,18 @@ import { DebugSession, CancellationToken, ProviderResult, - Uri + FileDecoration, + FileDecorationProvider, + Uri, + EventEmitter, + Event, } from "vscode"; import { DebugProtocol } from "@vscode/debugprotocol"; import { GodotDebugSession as Godot3DebugSession } from "./godot3/debug_session"; import { GodotDebugSession as Godot4DebugSession } from "./godot4/debug_session"; -import { register_command, projectVersion, set_context } from "../utils"; +import { register_command, projectVersion, set_context, createLogger } from "../utils"; import { SceneTreeProvider, SceneNode } from "./scene_tree_provider"; import { InspectorProvider, RemoteProperty } from "./inspector_provider"; -import { createLogger } from "../logger"; const log = createLogger("debugger", { output: "Godot Debugger" }); @@ -31,6 +34,17 @@ export interface LaunchRequestArguments extends DebugProtocol.LaunchRequestArgum project: string; scene: string; editor_path: string; + profiling: boolean; + single_threaded_scene: boolean; + debug_collisions: boolean; + debug_paths: boolean; + debug_navigation: boolean; + debug_avoidance: boolean; + debug_stringnames: boolean; + frame_delay: number; + time_scale: number; + disable_vsync: boolean; + fixed_fps: number; additional_options: string; } @@ -44,20 +58,27 @@ export interface AttachRequestArguments extends DebugProtocol.AttachRequestArgum export let pinnedScene: Uri; -export class GodotDebugger implements DebugAdapterDescriptorFactory, DebugConfigurationProvider { +export class GodotDebugger implements DebugAdapterDescriptorFactory, DebugConfigurationProvider, FileDecorationProvider { public session?: Godot3DebugSession | Godot4DebugSession; public inspectorProvider = new InspectorProvider(); public sceneTreeProvider = new SceneTreeProvider(); + private _onDidChangeFileDecorations = new EventEmitter(); + get onDidChangeFileDecorations(): Event { + return this._onDidChangeFileDecorations.event; + } constructor(private context: ExtensionContext) { log.info("Initializing Godot Debugger"); + this.restore_pinned_file(); + context.subscriptions.push( debug.registerDebugConfigurationProvider("godot", this), debug.registerDebugAdapterDescriptorFactory("godot", this), window.registerTreeDataProvider("inspectNode", this.inspectorProvider), window.registerTreeDataProvider("activeSceneTree", this.sceneTreeProvider), + window.registerFileDecorationProvider(this), register_command("debugger.inspectNode", this.inspect_node.bind(this)), register_command("debugger.refreshSceneTree", this.refresh_scene_tree.bind(this)), register_command("debugger.refreshInspector", this.refresh_inspector.bind(this)), @@ -70,6 +91,15 @@ export class GodotDebugger implements DebugAdapterDescriptorFactory, DebugConfig ); } + provideFileDecoration(uri: Uri, token: CancellationToken): FileDecoration | undefined { + if (uri.scheme !== "file") return undefined; + if (pinnedScene && uri.fsPath === pinnedScene.fsPath) { + return { + badge: "🖈", + }; + } + } + public createDebugAdapterDescriptor(session: DebugSession): ProviderResult { log.info("Creating debug session"); log.info(`Project version identified as ${projectVersion}`); @@ -182,18 +212,34 @@ export class GodotDebugger implements DebugAdapterDescriptorFactory, DebugConfig } log.info(`Pinning debug target file: '${uri.fsPath}'`); set_context("pinnedScene", [uri.fsPath]); + if (pinnedScene) { + this._onDidChangeFileDecorations.fire(pinnedScene); + } pinnedScene = uri; + this.context.workspaceState.update("pinnedScene", pinnedScene); + this._onDidChangeFileDecorations.fire(uri); } public unpin_file(uri: Uri) { log.info(`Unpinning debug target file: '${pinnedScene}'`); set_context("pinnedScene", []); + const previousPinnedScene = pinnedScene; pinnedScene = undefined; + this.context.workspaceState.update("pinnedScene", pinnedScene); + this._onDidChangeFileDecorations.fire(previousPinnedScene); + } + + public restore_pinned_file() { + pinnedScene = this.context.workspaceState.get("pinnedScene", undefined); + if (pinnedScene) { + log.info(`Restoring pinned debug target file: '${pinnedScene.fsPath}'`); + set_context("pinnedScene", [pinnedScene.fsPath]); + } } public open_pinned_file() { log.info(`Opening pinned debug target file: '${pinnedScene}'`); - if (pinnedScene){ + if (pinnedScene) { window.showTextDocument(pinnedScene); } } diff --git a/src/debugger/godot3/debug_session.ts b/src/debugger/godot3/debug_session.ts index e7a1a30..620bc8e 100644 --- a/src/debugger/godot3/debug_session.ts +++ b/src/debugger/godot3/debug_session.ts @@ -17,7 +17,7 @@ import { SceneTreeProvider } from "../scene_tree_provider"; import { ObjectId } from "./variables/variants"; import { parse_variable, is_variable_built_in_type } from "./helpers"; import { ServerController } from "./server_controller"; -import { createLogger } from "../../logger"; +import { createLogger } from "../../utils"; const log = createLogger("debugger.session", { output: "Godot Debugger" }); diff --git a/src/debugger/godot3/helpers.ts b/src/debugger/godot3/helpers.ts index 60f00a4..e03e9ff 100644 --- a/src/debugger/godot3/helpers.ts +++ b/src/debugger/godot3/helpers.ts @@ -1,18 +1,18 @@ -import { GodotVariable, RawObject } from "../debug_runtime"; +import { GodotVariable, } from "../debug_runtime"; import { SceneNode } from "../scene_tree_provider"; export function parse_next_scene_node(params: any[], ofs: { offset: number } = { offset: 0 }): SceneNode { - const child_count: number = params[ofs.offset++]; + const childCount: number = params[ofs.offset++]; const name: string = params[ofs.offset++]; - const class_name: string = params[ofs.offset++]; + const className: string = params[ofs.offset++]; const id: number = params[ofs.offset++]; const children: SceneNode[] = []; - for (let i = 0; i < child_count; ++i) { + for (let i = 0; i < childCount; ++i) { children.push(parse_next_scene_node(params, ofs)); } - return new SceneNode(name, class_name, id, children); + return new SceneNode(name, className, id, children); } export function split_buffers(buffer: Buffer) { @@ -65,7 +65,7 @@ export function build_sub_values(va: GodotVariable) { va.sub_values = subValues; - subValues?.forEach((sva) => build_sub_values(sva)); + subValues?.forEach(build_sub_values); } export function parse_variable(va: GodotVariable, i?: number) { diff --git a/src/debugger/godot3/server_controller.ts b/src/debugger/godot3/server_controller.ts index cd69d89..5b0c139 100644 --- a/src/debugger/godot3/server_controller.ts +++ b/src/debugger/godot3/server_controller.ts @@ -9,11 +9,10 @@ import { RawObject } from "./variables/variants"; import { GodotStackFrame, GodotStackVars } from "../debug_runtime"; import { GodotDebugSession } from "./debug_session"; import { parse_next_scene_node, split_buffers, build_sub_values } from "./helpers"; -import { get_configuration, get_free_port, projectVersion } from "../../utils"; +import { get_configuration, get_free_port, projectVersion, createLogger } from "../../utils"; import { prompt_for_godot_executable } from "../../utils/prompts"; import { subProcess, killSubProcesses } from "../../utils/subspawn"; import { LaunchRequestArguments, AttachRequestArguments, pinnedScene } from "../debugger"; -import { createLogger } from "../../logger"; const log = createLogger("debugger.controller", { output: "Godot Debugger" }); const socketLog = createLogger("debugger.socket"); @@ -139,12 +138,12 @@ export class ServerController { const address = args.address.replace("tcp://", ""); command += ` --remote-debug "${address}:${args.port}"`; - if (get_configuration("debugger.forceVisibleCollisionShapes")) { - command += " --debug-collisions"; - } - if (get_configuration("debugger.forceVisibleNavMesh")) { - command += " --debug-navigation"; - } + if (args.profiling) { command += " --profiling"; } + if (args.debug_collisions) { command += " --debug-collisions"; } + if (args.debug_paths) { command += " --debug-paths"; } + if (args.frame_delay) { command += ` --frame-delay ${args.frame_delay}`; } + if (args.time_scale) { command += ` --time-scale ${args.time_scale}`; } + if (args.fixed_fps) { command += ` --fixed-fps ${args.fixed_fps}`; } if (args.scene && args.scene !== "main") { log.info(`Custom scene argument provided: ${args.scene}`); diff --git a/src/debugger/godot4/debug_session.ts b/src/debugger/godot4/debug_session.ts index e7a1a30..f36159d 100644 --- a/src/debugger/godot4/debug_session.ts +++ b/src/debugger/godot4/debug_session.ts @@ -17,7 +17,7 @@ import { SceneTreeProvider } from "../scene_tree_provider"; import { ObjectId } from "./variables/variants"; import { parse_variable, is_variable_built_in_type } from "./helpers"; import { ServerController } from "./server_controller"; -import { createLogger } from "../../logger"; +import { createLogger } from "../../utils"; const log = createLogger("debugger.session", { output: "Godot Debugger" }); @@ -515,8 +515,9 @@ export class GodotDebugSession extends LoggingDebugSession { ? collection_items.get(key)?.id : collection_items[key]?.id; } else { - result.object_id = Array.from(root.value.entries()) - .find(x => x && x[0].split("Members/").join("").split("Locals/").join("") == propertyName)[1].id; + const entries = Array.from(root.value.entries()); + const item = entries.find(x => x && x[0].split("Members/").join("").split("Locals/").join("") == propertyName); + result.object_id = item?.[1].id; } } diff --git a/src/debugger/godot4/helpers.ts b/src/debugger/godot4/helpers.ts index a40d4bb..066a985 100644 --- a/src/debugger/godot4/helpers.ts +++ b/src/debugger/godot4/helpers.ts @@ -1,23 +1,20 @@ -import { GodotVariable, RawObject } from "../debug_runtime"; +import { GodotVariable, } from "../debug_runtime"; import { SceneNode } from "../scene_tree_provider"; -import { createLogger } from "../../logger"; - -const log = createLogger("debugger.helpers"); export function parse_next_scene_node(params: any[], ofs: { offset: number } = { offset: 0 }): SceneNode { - const child_count: number = params[ofs.offset++]; + const childCount: number = params[ofs.offset++]; const name: string = params[ofs.offset++]; - const class_name: string = params[ofs.offset++]; + const className: string = params[ofs.offset++]; const id: number = params[ofs.offset++]; - const scene_file_path: string = params[ofs.offset++]; - const view_flags: number = params[ofs.offset++]; + const sceneFilePath: string = params[ofs.offset++]; + const viewFlags: number = params[ofs.offset++]; const children: SceneNode[] = []; - for (let i = 0; i < child_count; ++i) { + for (let i = 0; i < childCount; ++i) { children.push(parse_next_scene_node(params, ofs)); } - return new SceneNode(name, class_name, id, children, scene_file_path, view_flags); + return new SceneNode(name, className, id, children, sceneFilePath, viewFlags); } export function split_buffers(buffer: Buffer) { @@ -39,7 +36,6 @@ export function is_variable_built_in_type(va: GodotVariable) { return ["number", "bigint", "boolean", "string"].some(x => x == type); } - export function build_sub_values(va: GodotVariable) { const value = va.value; @@ -74,7 +70,6 @@ export function build_sub_values(va: GodotVariable) { subValues?.forEach(build_sub_values); } - export function parse_variable(va: GodotVariable, i?: number) { const value = va.value; let rendered_value = ""; diff --git a/src/debugger/godot4/server_controller.ts b/src/debugger/godot4/server_controller.ts index 1939a2f..2c6c524 100644 --- a/src/debugger/godot4/server_controller.ts +++ b/src/debugger/godot4/server_controller.ts @@ -9,11 +9,10 @@ import { RawObject } from "./variables/variants"; import { GodotStackFrame, GodotVariable, GodotStackVars } from "../debug_runtime"; import { GodotDebugSession } from "./debug_session"; import { parse_next_scene_node, split_buffers, build_sub_values } from "./helpers"; -import { get_configuration, get_free_port, projectVersion } from "../../utils"; +import { get_configuration, get_free_port, projectVersion, createLogger } from "../../utils"; import { prompt_for_godot_executable } from "../../utils/prompts"; import { subProcess, killSubProcesses } from "../../utils/subspawn"; import { LaunchRequestArguments, AttachRequestArguments, pinnedScene } from "../debugger"; -import { createLogger } from "../../logger"; const log = createLogger("debugger.controller", { output: "Godot Debugger" }); const socketLog = createLogger("debugger.socket"); @@ -140,12 +139,17 @@ export class ServerController { const address = args.address.replace("tcp://", ""); command += ` --remote-debug "tcp://${address}:${args.port}"`; - if (get_configuration("debugger.forceVisibleCollisionShapes")) { - command += " --debug-collisions"; - } - if (get_configuration("debugger.forceVisibleNavMesh")) { - command += " --debug-navigation"; - } + if (args.profiling) { command += " --profiling"; } + if (args.single_threaded_scene) { command += " --single-threaded-scene"; } + if (args.debug_collisions) { command += " --debug-collisions"; } + if (args.debug_paths) { command += " --debug-paths"; } + if (args.debug_navigation) { command += " --debug-navigation"; } + if (args.debug_avoidance) { command += " --debug-avoidance"; } + if (args.debug_stringnames) { command += " --debug-stringnames"; } + if (args.frame_delay) { command += ` --frame-delay ${args.frame_delay}`; } + if (args.time_scale) { command += ` --time-scale ${args.time_scale}`; } + if (args.disable_vsync) { command += " --disable-vsync"; } + if (args.fixed_fps) { command += ` --fixed-fps ${args.fixed_fps}`; } if (args.scene && args.scene !== "main") { log.info(`Custom scene argument provided: ${args.scene}`); diff --git a/src/debugger/index.ts b/src/debugger/index.ts new file mode 100644 index 0000000..2392ae7 --- /dev/null +++ b/src/debugger/index.ts @@ -0,0 +1 @@ +export * from "./debugger"; diff --git a/src/debugger/scene_tree_provider.ts b/src/debugger/scene_tree_provider.ts index acbf822..b09052a 100644 --- a/src/debugger/scene_tree_provider.ts +++ b/src/debugger/scene_tree_provider.ts @@ -7,6 +7,9 @@ import { TreeItemCollapsibleState, } from "vscode"; import path = require("path"); +import { get_extension_uri } from "../utils"; + +const iconDir = get_extension_uri("resources", "godot_icons").fsPath; export class SceneTreeProvider implements TreeDataProvider { private _on_did_change_tree_data: EventEmitter< @@ -75,7 +78,6 @@ export class SceneNode extends TreeItem { ) { super(label); - const iconDir = path.join(__filename, "..", "..", "..", "resources", "godot_icons"); const iconName = class_name + ".svg"; this.iconPath = { diff --git a/src/document_link_provider.ts b/src/document_link_provider.ts deleted file mode 100644 index 39cfa79..0000000 --- a/src/document_link_provider.ts +++ /dev/null @@ -1,39 +0,0 @@ -import * as vscode from "vscode"; -import { Uri, Position, Range } from "vscode"; -import { convert_resource_path_to_uri } from "./utils"; - -export class GDDocumentLinkProvider implements vscode.DocumentLinkProvider { - private context: vscode.ExtensionContext; - - constructor(context: vscode.ExtensionContext) { - this.context = context; - - const disp = vscode.languages.registerDocumentLinkProvider( - ["gdresource"], - this - ); - - context.subscriptions.push(disp); - } - - async provideDocumentLinks( - document: vscode.TextDocument, - token: vscode.CancellationToken - ): Promise { - let links = []; - let lines = document.getText().split("\n"); - for (let i = 0; i < lines.length; i++) { - const match = lines[i].match(/res:\/\/[^"^']*/); - if (match) { - const start = new Position(i, match.index); - const end = new Position(i, match.index + match[0].length); - const r = new Range(start, end); - const uri = await convert_resource_path_to_uri(match[0]); - if (uri instanceof Uri) { - links.push(new vscode.DocumentLink(r, uri)); - } - } - } - return links; - } -} diff --git a/src/extension.ts b/src/extension.ts index 59f8867..bcc2b24 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,10 +1,20 @@ import * as path from "path"; import * as vscode from "vscode"; -import { attemptSettingsUpdate } from "./settings_updater"; -import { GDDocumentLinkProvider } from "./document_link_provider"; -import { ClientConnectionManager } from "./lsp/ClientConnectionManager"; -import { ScenePreviewProvider } from "./scene_preview_provider"; -import { GodotDebugger } from "./debugger/debugger"; +import { attemptSettingsUpdate } from "./utils"; +import { + GDInlayHintsProvider, + GDHoverProvider, + GDDocumentLinkProvider, + GDSemanticTokensProvider, + GDCompletionItemProvider, + GDDocumentationProvider, + GDDefinitionProvider, + GDTaskProvider, +} from "./providers"; +import { ClientConnectionManager } from "./lsp"; +import { ScenePreviewProvider } from "./scene_tools"; +import { GodotDebugger } from "./debugger"; +import { FormattingProvider } from "./formatter"; import { exec, execSync } from "child_process"; import { get_configuration, @@ -18,23 +28,45 @@ import { } from "./utils"; import { prompt_for_godot_executable } from "./utils/prompts"; -let lspClientManager: ClientConnectionManager = null; -let linkProvider: GDDocumentLinkProvider = null; -let scenePreviewManager: ScenePreviewProvider = null; -let godotDebugger: GodotDebugger = null; +interface Extension { + context?: vscode.ExtensionContext; + lsp?: ClientConnectionManager; + debug?: GodotDebugger; + scenePreviewProvider?: ScenePreviewProvider; + linkProvider?: GDDocumentLinkProvider; + hoverProvider?: GDHoverProvider; + inlayProvider?: GDInlayHintsProvider; + formattingProvider?: FormattingProvider; + docsProvider?: GDDocumentationProvider; + definitionProvider?: GDDefinitionProvider; + semanticTokensProvider?: GDSemanticTokensProvider; + completionProvider?: GDCompletionItemProvider; + tasksProvider?: GDTaskProvider; +} + +export const globals: Extension = {}; export function activate(context: vscode.ExtensionContext) { attemptSettingsUpdate(context); - lspClientManager = new ClientConnectionManager(context); - linkProvider = new GDDocumentLinkProvider(context); - scenePreviewManager = new ScenePreviewProvider(); - godotDebugger = new GodotDebugger(context); + globals.context = context; + globals.lsp = new ClientConnectionManager(context); + globals.debug = new GodotDebugger(context); + globals.scenePreviewProvider = new ScenePreviewProvider(context); + globals.linkProvider = new GDDocumentLinkProvider(context); + globals.hoverProvider = new GDHoverProvider(context); + globals.inlayProvider = new GDInlayHintsProvider(context); + globals.formattingProvider = new FormattingProvider(context); + globals.docsProvider = new GDDocumentationProvider(context); + globals.definitionProvider = new GDDefinitionProvider(context); + // globals.semanticTokensProvider = new GDSemanticTokensProvider(context); + // globals.completionProvider = new GDCompletionItemProvider(context); + // globals.tasksProvider = new GDTaskProvider(context); context.subscriptions.push( register_command("openEditor", open_workspace_with_editor), register_command("copyResourcePath", copy_resource_path), - register_command("openTypeDocumentation", open_type_documentation), + register_command("listGodotClasses", list_classes), register_command("switchSceneScript", switch_scene_script), ); @@ -46,7 +78,7 @@ export function activate(context: vscode.ExtensionContext) { export function deactivate(): Thenable { return new Promise((resolve, reject) => { - lspClientManager.client.stop(); + globals.lsp.client.stop(); resolve(); }); } @@ -68,8 +100,8 @@ function copy_resource_path(uri: vscode.Uri) { vscode.env.clipboard.writeText(relative_path); } -function open_type_documentation() { - lspClientManager.client.open_documentation(); +async function list_classes() { + await globals.lsp.client.list_classes(); } async function switch_scene_script() { @@ -96,7 +128,7 @@ function open_workspace_with_editor() { const pattern = /([34])\.([0-9]+)\.(?:[0-9]+\.)?(?:\w+\.)+[0-9a-f]{9}/; const match = output.match(pattern); if (!match) { - const message = `Cannot launch Godot editor: '${settingName}' of '${godotPath}' is not a valid Godot executable`; + const message = `Cannot launch Godot editor: '${settingName}' value of '${godotPath}' is not a valid Godot executable`; prompt_for_godot_executable(message, settingName); return; } @@ -106,7 +138,7 @@ function open_workspace_with_editor() { return; } } catch { - const message = `Cannot launch Godot editor: ${settingName} of ${godotPath} is not a valid Godot executable`; + const message = `Cannot launch Godot editor: ${settingName} value of ${godotPath} is not a valid Godot executable`; prompt_for_godot_executable(message, settingName); return; } diff --git a/src/formatter/formatter.test.ts b/src/formatter/formatter.test.ts new file mode 100644 index 0000000..0561626 --- /dev/null +++ b/src/formatter/formatter.test.ts @@ -0,0 +1,17 @@ +import * as assert from "assert"; +import * as vscode from "vscode"; +import * as path from "path"; + +import { format_document } from "./textmate"; + +const dots = ["..", "..", ".."]; +const basePath = path.join(__filename, ...dots); + +suite("GDScript Formatter Tests", () => { + test("Test Formatting", async () => { + const uri = vscode.Uri.file(path.join(basePath, "src/formatter/tests/test1.in.gd")); + const document = await vscode.workspace.openTextDocument(uri); + const edits = format_document(document); + assert.strictEqual(4, edits.length); + }); +}); diff --git a/src/formatter/formatter.ts b/src/formatter/formatter.ts new file mode 100644 index 0000000..cda1e51 --- /dev/null +++ b/src/formatter/formatter.ts @@ -0,0 +1,19 @@ +import * as vscode from "vscode"; +import { format_document } from "./textmate"; +import { createLogger } from "../utils"; + +const log = createLogger("formatter"); + +export class FormattingProvider implements vscode.DocumentFormattingEditProvider { + constructor(private context: vscode.ExtensionContext) { + const selector = { language: "gdscript", scheme: "file" }; + + context.subscriptions.push( + vscode.languages.registerDocumentFormattingEditProvider(selector, this), + ); + } + + public provideDocumentFormattingEdits(document: vscode.TextDocument) { + return format_document(document); + } +} diff --git a/src/formatter/index.ts b/src/formatter/index.ts new file mode 100644 index 0000000..e4288c7 --- /dev/null +++ b/src/formatter/index.ts @@ -0,0 +1 @@ +export * from "./formatter"; diff --git a/src/formatter/symbols.ts b/src/formatter/symbols.ts new file mode 100644 index 0000000..43f2db6 --- /dev/null +++ b/src/formatter/symbols.ts @@ -0,0 +1,73 @@ + +export const keywords = [ + "and", + "as", + "await", + "break", + "breakpoint", + "class_name", + "class", + "const", + "continue", + "elif", + "else", + "enum", + "export", + "extends", + "for", + "if", + "in", + "is", + "master", + "mastersync", + "match", + "not", + "onready", + "or", + "pass", + "puppet", + "puppetsync", + "remote", + "remotesync", + "return", + "setget", + "signal", + "static", + "tool", + "var", + "while", + "yield", +]; + +export const symbols = [ + "**", + "<<", + ">>", + "==", + "!=", + ">=", + "<=", + "&&", + "||", + "+=", + "-=", + "*=", + "/=", + "%=", + "**=", + "&=", + "^=", + "|=", + "<<=", + ">>=", + ":=", + "->", + "-", + "+", + "/", + "*", + ">", + "<", + "-", + "%", +]; diff --git a/src/formatter/tests/test1.in.gd b/src/formatter/tests/test1.in.gd new file mode 100644 index 0000000..1ee6ca7 --- /dev/null +++ b/src/formatter/tests/test1.in.gd @@ -0,0 +1,5 @@ +extends Node + + +func test (): + pass diff --git a/src/formatter/tests/test1.out.gd b/src/formatter/tests/test1.out.gd new file mode 100644 index 0000000..db8d4c9 --- /dev/null +++ b/src/formatter/tests/test1.out.gd @@ -0,0 +1,4 @@ +extends Node + +func test(): + pass diff --git a/src/formatter/textmate.ts b/src/formatter/textmate.ts new file mode 100644 index 0000000..920b51c --- /dev/null +++ b/src/formatter/textmate.ts @@ -0,0 +1,196 @@ +import { Range, TextDocument, TextEdit } from "vscode"; +import * as fs from "fs"; +import * as vsctm from "vscode-textmate"; +import * as oniguruma from "vscode-oniguruma"; +import { keywords, symbols } from "./symbols"; +import { get_extension_uri } from "../utils"; + +// Promisify readFile +function readFile(path) { + return new Promise((resolve, reject) => { + fs.readFile(path, (error, data) => error ? reject(error) : resolve(data)); + }); +} + +const grammarPath = get_extension_uri("syntaxes/GDScript.tmLanguage.json").fsPath; +const wasmPath = get_extension_uri("resources/onig.wasm").fsPath; +const wasmBin = fs.readFileSync(wasmPath).buffer; + +// Create a registry that can create a grammar from a scope name. +const registry = new vsctm.Registry({ + onigLib: oniguruma.loadWASM(wasmBin).then(() => { + return { + createOnigScanner(patterns) { return new oniguruma.OnigScanner(patterns); }, + createOnigString(s) { return new oniguruma.OnigString(s); } + }; + }), + loadGrammar: (scopeName) => { + if (scopeName === "source.gdscript") { + return readFile(grammarPath).then(data => vsctm.parseRawGrammar(data.toString(), grammarPath)); + } + console.log(`Unknown scope name: ${scopeName}`); + return null; + } +}); + +interface Token { + // startIndex: number; + // endIndex: number; + scopes: string[]; + value: string; + type?: string; + param?: boolean; + skip?: boolean; +} + +function parse_token(token: Token) { + if (token.scopes.includes("meta.function.parameters.gdscript")) { + token.param = true; + } + if (token.scopes.includes("meta.literal.nodepath.gdscript")) { + token.skip = true; + } + if (keywords.includes(token.value)) { + token.type = "keyword"; + return; + } + if (symbols.includes(token.value)) { + token.type = "symbol"; + return; + } + if (token.scopes.includes("keyword.language.gdscript")) { + token.type = "keyword"; + return; + } + if (token.scopes.includes("constant.language.gdscript")) { + token.type = "constant"; + return; + } + if (token.scopes.includes("variable.other.gdscript")) { + token.type = "variable"; + return; + } +} + +function between(tokens: Token[], current: number) { + const nextToken = tokens[current]; + const prevToken = tokens[current - 1]; + const next = nextToken.value; + const prev = prevToken?.value; + + // console.log(prevToken, nextToken); + + if (!prev) return ""; + + if (next === "#") return " "; + if (prevToken.skip) return ""; + + if (nextToken.param) { + if (next === "=") return ""; + if (prev === "=") return ""; + if (prevToken?.type === "symbol") return " "; + if (nextToken.type === "symbol") return " "; + } + + if (next === ":") { + if (["var", "const"].includes(tokens[current - 2]?.value)) { + if (tokens[current + 1]?.value !== "=") return ""; + return " "; + } + if (prevToken?.type === "keyword") return ""; + } + if (prev === "@") return ""; + + if (prev === ":" && next === "=") return ""; + if (next === "(") { + if (prev === "export") return ""; + if (prev === "func") return ""; + if (prev === "assert") return ""; + } + + if (prev === ")" && nextToken.type === "keyword") return " "; + + if (prev === ":") return " "; + if (prev === ";") return " "; + if (prev === "#") return " "; + if (next === "=") return " "; + if (prev === "=") return " "; + if (prev === "(") return ""; + if (next === "{") return " "; + if (next === "{}") return " "; + + if (prevToken?.type === "keyword") return " "; + if (nextToken.type === "keyword") return " "; + if (prevToken?.type === "symbol") return " "; + if (nextToken.type === "symbol") return " "; + + if (prev === ",") return " "; + + return ""; +} + +let grammar = null; + +registry.loadGrammar("source.gdscript").then(g => { grammar = g; }); + +export function format_document(document: TextDocument): TextEdit[] { + // quit early if grammar is not loaded + if (!grammar) { + return []; + } + const edits: TextEdit[] = []; + + let lineTokens: vsctm.ITokenizeLineResult = null; + for (let lineNum = 0; lineNum < document.lineCount; lineNum++) { + const line = document.lineAt(lineNum); + + // skip empty lines + if (line.isEmptyOrWhitespace) { + // delete empty lines + if (lineNum === 0 || document.lineAt(lineNum - 1).isEmptyOrWhitespace) { + const range = new Range(lineNum, 0, lineNum + 1, 0); + edits.push(TextEdit.delete(range)); + } + continue; + } + // skip comments + if (line.text[line.firstNonWhitespaceCharacterIndex] === "#") { + continue; + } + + let nextLine = ""; + lineTokens = grammar.tokenizeLine(line.text, lineTokens?.ruleStack ?? vsctm.INITIAL); + + // TODO: detect whitespace type and automatically convert + const leadingWhitespace = line.text.slice(0, line.firstNonWhitespaceCharacterIndex); + nextLine += leadingWhitespace; + const first = lineTokens.tokens[0]; + if (line.text.slice(first.startIndex, first.endIndex).trim() === "") { + lineTokens.tokens.shift(); + } + + const tokens: Token[] = []; + for (const t of lineTokens.tokens) { + const value = line.text.slice(t.startIndex, t.endIndex).trim(); + // skip whitespace tokens + if (value.trim() === "") { + continue; + } + + const token: Token = { + scopes: t.scopes, + value: value, + }; + + parse_token(token); + tokens.push(token); + } + for (let i = 0; i < tokens.length; i++) { + nextLine += between(tokens, i) + tokens[i].value; + } + + edits.push(TextEdit.replace(line.range, nextLine)); + } + + return edits; +} diff --git a/src/lsp/ClientConnectionManager.ts b/src/lsp/ClientConnectionManager.ts index 7814059..a9aec80 100644 --- a/src/lsp/ClientConnectionManager.ts +++ b/src/lsp/ClientConnectionManager.ts @@ -1,5 +1,4 @@ import * as vscode from "vscode"; -import * as fs from "fs"; import GDScriptLanguageClient, { ClientStatus, TargetLSP } from "./GDScriptLanguageClient"; import { get_configuration, @@ -9,9 +8,9 @@ import { set_context, register_command, set_configuration, + createLogger, } from "../utils"; import { prompt_for_godot_executable, prompt_for_reload, select_godot_executable } from "../utils/prompts"; -import { createLogger } from "../logger"; import { execSync } from "child_process"; import { subProcess, killSubProcesses } from "../utils/subspawn"; @@ -28,7 +27,6 @@ enum ManagerStatus { } export class ClientConnectionManager { - private context: vscode.ExtensionContext; public client: GDScriptLanguageClient = null; private reconnectionAttempts = 0; @@ -39,26 +37,16 @@ export class ClientConnectionManager { private connectedVersion: string = ""; - constructor(p_context: vscode.ExtensionContext) { - this.context = p_context; + constructor(private context: vscode.ExtensionContext) { + this.context = context; - this.client = new GDScriptLanguageClient(p_context); + this.client = new GDScriptLanguageClient(context); this.client.watch_status(this.on_client_status_changed.bind(this)); setInterval(() => { this.retry_callback(); }, get_configuration("lsp.autoReconnect.cooldown")); - register_command("startLanguageServer", () => { - // TODO: this might leave the manager in a wierd state - this.start_language_server(); - this.reconnectionAttempts = 0; - this.target = TargetLSP.HEADLESS; - this.client.connect_to_server(this.target); - }); - register_command("stopLanguageServer", this.stop_language_server.bind(this)); - register_command("checkStatus", this.on_status_item_click.bind(this)); - set_context("connectedToLSP", false); this.statusWidget = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); @@ -66,6 +54,19 @@ export class ClientConnectionManager { this.statusWidget.show(); this.update_status_widget(); + context.subscriptions.push( + register_command("startLanguageServer", () => { + // TODO: this might leave the manager in a wierd state + this.start_language_server(); + this.reconnectionAttempts = 0; + this.target = TargetLSP.HEADLESS; + this.client.connect_to_server(this.target); + }), + register_command("stopLanguageServer", this.stop_language_server.bind(this)), + register_command("checkStatus", this.on_status_item_click.bind(this)), + this.statusWidget, + ); + this.connect_to_language_server(); } @@ -172,7 +173,7 @@ export class ClientConnectionManager { } private get_lsp_connection_string() { - let host = get_configuration("lsp.serverHost"); + const host = get_configuration("lsp.serverHost"); let port = get_configuration("lsp.serverPort"); if (this.client.port !== -1) { port = this.client.port; @@ -313,11 +314,20 @@ export class ClientConnectionManager { this.update_status_widget(); const lspTarget = this.get_lsp_connection_string(); - let message = `Couldn't connect to the GDScript language server at ${lspTarget}. Is the Godot editor or language server running?`; - vscode.window.showErrorMessage(message, "Retry", "Ignore").then(item => { + const message = `Couldn't connect to the GDScript language server at ${lspTarget}. Is the Godot editor or language server running?`; + + let options = ["Retry", "Ignore"]; + if (this.target == TargetLSP.EDITOR) { + options = ["Open workspace with Godot Editor", ...options]; + } + + vscode.window.showErrorMessage(message, ...options).then(item => { if (item == "Retry") { this.connect_to_language_server(); } + if (item == "Open workspace with Godot Editor") { + vscode.commands.executeCommand("godotTools.openEditor"); + } }); } } diff --git a/src/lsp/GDScriptLanguageClient.ts b/src/lsp/GDScriptLanguageClient.ts index 606a1b9..7d399d7 100644 --- a/src/lsp/GDScriptLanguageClient.ts +++ b/src/lsp/GDScriptLanguageClient.ts @@ -1,12 +1,11 @@ +import * as vscode from "vscode"; +import { LanguageClient, NotificationMessage, RequestMessage, ResponseMessage } from "vscode-languageclient/node"; import { EventEmitter } from "events"; -import * as vscode from 'vscode'; -import { LanguageClient, RequestMessage, ResponseMessage, integer } from "vscode-languageclient/node"; -import { createLogger, LOG_LEVEL } from "../logger"; -import { get_configuration, set_context } from "../utils"; +import { get_configuration, createLogger } from "../utils"; import { Message, MessageIO, MessageIOReader, MessageIOWriter, TCPMessageIO, WebSocketMessageIO } from "./MessageIO"; -import { NativeDocumentManager } from './NativeDocumentManager'; +import { globals } from "../extension"; -const log = createLogger("lsp.client", {level: LOG_LEVEL.SILENT}); +const log = createLogger("lsp.client"); export enum ClientStatus { PENDING, @@ -24,13 +23,9 @@ const CUSTOM_MESSAGE = "gdscript_client/"; export default class GDScriptLanguageClient extends LanguageClient { public readonly io: MessageIO = (get_configuration("lsp.serverProtocol") == "ws") ? new WebSocketMessageIO() : new TCPMessageIO(); - private context: vscode.ExtensionContext; - private _started: boolean = false; - private _status: ClientStatus; private _status_changed_callbacks: ((v: ClientStatus) => void)[] = []; private _initialize_request: Message = null; - private message_handler: MessageHandler = null; - private native_doc_manager: NativeDocumentManager = null; + private messageHandler: MessageHandler = null; public target: TargetLSP = TargetLSP.EDITOR; @@ -39,7 +34,10 @@ export default class GDScriptLanguageClient extends LanguageClient { public sentMessages = new Map(); public lastSymbolHovered: string = ""; + private _started: boolean = false; public get started(): boolean { return this._started; } + + private _status: ClientStatus; public get status(): ClientStatus { return this._status; } public set status(v: ClientStatus) { if (this._status != v) { @@ -56,14 +54,9 @@ export default class GDScriptLanguageClient extends LanguageClient { } } - public open_documentation() { - const symbol = this.lastSymbolHovered; - this.native_doc_manager.request_documentation(symbol); - } - - constructor(context: vscode.ExtensionContext) { + constructor(private context: vscode.ExtensionContext) { super( - `GDScriptLanguageClient`, + "GDScriptLanguageClient", () => { return new Promise((resolve, reject) => { resolve({ reader: new MessageIOReader(this.io), writer: new MessageIOWriter(this.io) }); @@ -77,18 +70,20 @@ export default class GDScriptLanguageClient extends LanguageClient { ], synchronize: { // Notify the server about file changes to '.gd files contain in the workspace - // fileEvents: workspace.createFileSystemWatcher("**/*.gd"), + fileEvents: vscode.workspace.createFileSystemWatcher("**/*.gd"), }, } ); - this.context = context; this.status = ClientStatus.PENDING; - this.message_handler = new MessageHandler(this.io); - this.io.on('disconnected', this.on_disconnected.bind(this)); - this.io.on('connected', this.on_connected.bind(this)); - this.io.on('message', this.on_message.bind(this)); - this.io.on('send_message', this.on_send_message.bind(this)); - this.native_doc_manager = new NativeDocumentManager(this.io); + this.io.on("disconnected", this.on_disconnected.bind(this)); + this.io.on("connected", this.on_connected.bind(this)); + this.io.on("message", this.on_message.bind(this)); + this.io.on("send_message", this.on_send_message.bind(this)); + this.messageHandler = new MessageHandler(this.io); + } + + public async list_classes() { + await globals.docsProvider.list_native_classes(); } connect_to_server(target: TargetLSP = TargetLSP.EDITOR) { @@ -120,18 +115,15 @@ export default class GDScriptLanguageClient extends LanguageClient { } private on_send_message(message: RequestMessage) { - log.debug("tx:", message); - - this.sentMessages.set(message.id, message.method); + this.sentMessages.set(message.id, message); if (message.method == "initialize") { this._initialize_request = message; } } - private on_message(message: ResponseMessage) { + private on_message(message: ResponseMessage | NotificationMessage) { const msgString = JSON.stringify(message); - log.debug("rx:", message); // This is a dirty hack to fix the language server sending us // invalid file URIs @@ -142,55 +134,78 @@ export default class GDScriptLanguageClient extends LanguageClient { const count = (message["result"] as Array).length; for (let i = 0; i < count; i++) { const x: string = message["result"][i]["target"]; - message["result"][i]["target"] = x.replace('file://', 'file:///'); + message["result"][i]["target"] = x.replace("file://", "file:///"); } } - const method = this.sentMessages.get(message.id); - if (method === "textDocument/hover") { - this.handle_hover_response(message); - - // this is a dirty hack to fix language server sending us prerendered - // markdown but not correctly stripping leading #'s, leading to - // docstrings being displayed as titles - const value: string = message.result["contents"]?.value; - message.result["contents"].value = value?.replace(/\n[#]+/g, '\n'); + if ("method" in message && message.method === "gdscript/capabilities") { + globals.docsProvider.register_capabilities(message); } - this.message_handler.on_message(message); + if ("id" in message) { + const sentMessage = this.sentMessages.get(message.id); + if (sentMessage && sentMessage.method === "textDocument/hover") { + // fix markdown contents + let value: string = message.result["contents"]?.value; + if (value) { + // this is a dirty hack to fix language server sending us prerendered + // markdown but not correctly stripping leading #'s, leading to + // docstrings being displayed as titles + value = value.replace(/\n[#]+/g, "\n"); + + // fix bbcode code boxes + value = value.replace("`codeblocks`", ""); + value = value.replace("`/codeblocks`", ""); + value = value.replace("`gdscript`", "\nGDScript:\n```gdscript"); + value = value.replace("`/gdscript`", "```"); + value = value.replace("`csharp`", "\nC#:\n```csharp"); + value = value.replace("`/csharp`", "```"); + + message.result["contents"].value = value; + } + } + } + + this.messageHandler.on_message(message); } - private handle_hover_response(message: ResponseMessage) { - this.lastSymbolHovered = ""; - set_context("typeFound", false); + public async get_symbol_at_position(uri: vscode.Uri, position: vscode.Position) { + const params = { + textDocument: { uri: uri.toString() }, + position: { line: position.line, character: position.character }, + }; + const response = await this.sendRequest("textDocument/hover", params); - let decl: string = message?.result["contents"]?.value; + return this.parse_hover_response(response); + } + + private parse_hover_response(message) { + const contents = message["contents"]; + + let decl: string; + if (contents instanceof Array) { + decl = contents[0]; + } else { + decl = contents.value; + } if (!decl) { - return; + return ""; } decl = decl.split("\n")[0].trim(); - // strip off the value - if (decl.includes("=")) { - decl = decl.split("=")[0]; - } - if (decl.includes(":")) { - const parts = decl.split(":"); - if (parts.length === 2) { - decl = parts[1].trim(); - - } - } - if (decl.includes("")) { - decl = decl.split(" ")[2]; + let match; + let result = undefined; + match = decl.match(/(?:func|const) (@?\w+)\.(\w+)/); + if (match) { + result = `${match[1]}.${match[2]}`; } - if (decl.includes(" ")) { - return; + match = decl.match(/ class (\w+)/); + if (match) { + result = `${match[1]}`; } - this.lastSymbolHovered = decl; - set_context("typeFound", true); + return result; } private on_connected() { @@ -228,14 +243,14 @@ class MessageHandler extends EventEmitter { this.io = io; } - changeWorkspace(params: { path: string }) { - vscode.window.showErrorMessage("The GDScript language server can't work properly!\nThe open workspace is different from the editor's.", 'Reload', 'Ignore').then(item => { - if (item == "Reload") { - let folderUrl = vscode.Uri.file(params.path); - vscode.commands.executeCommand('vscode.openFolder', folderUrl, false); - } - }); - } + // changeWorkspace(params: { path: string }) { + // vscode.window.showErrorMessage("The GDScript language server can't work properly!\nThe open workspace is different from the editor's.", 'Reload', 'Ignore').then(item => { + // if (item == "Reload") { + // let folderUrl = vscode.Uri.file(params.path); + // vscode.commands.executeCommand('vscode.openFolder', folderUrl, false); + // } + // }); + // } on_message(message: any) { // FIXME: Hot fix VSCode 1.42 hover position @@ -243,10 +258,11 @@ class MessageHandler extends EventEmitter { message.result.range = undefined; } + // What does this do? if (message && message.method && (message.method as string).startsWith(CUSTOM_MESSAGE)) { const method = (message.method as string).substring(CUSTOM_MESSAGE.length, message.method.length); if (this[method]) { - let ret = this[method](message.params); + const ret = this[method](message.params); if (ret) { this.io.writer.write(ret); } diff --git a/src/lsp/MessageIO.ts b/src/lsp/MessageIO.ts index a430542..560ed06 100644 --- a/src/lsp/MessageIO.ts +++ b/src/lsp/MessageIO.ts @@ -1,11 +1,22 @@ -import { AbstractMessageReader, MessageReader, DataCallback, Disposable } from "vscode-jsonrpc"; +import { + AbstractMessageReader, + MessageReader, + DataCallback, + Disposable, + RequestMessage, + ResponseMessage, + NotificationMessage, + AbstractMessageWriter, + MessageWriter +} from "vscode-jsonrpc"; import { EventEmitter } from "events"; -import { WebSocket, Data } from 'ws'; -import { Socket } from 'net'; - +import { WebSocket, Data } from "ws"; +import { Socket } from "net"; import MessageBuffer from "./MessageBuffer"; -import { AbstractMessageWriter, MessageWriter } from "vscode-jsonrpc"; -import { RequestMessage, ResponseMessage, NotificationMessage } from "vscode-jsonrpc"; +import { createLogger } from "../utils"; + +const log = createLogger("lsp.io"); + export type Message = RequestMessage | ResponseMessage | NotificationMessage; export class MessageIO extends EventEmitter { @@ -19,7 +30,7 @@ export class MessageIO extends EventEmitter { protected on_message(chunk: Data) { let message = chunk.toString(); - this.emit('data', message); + this.emit("data", message); } on_send_message(message: any) { @@ -46,14 +57,14 @@ export class WebSocketMessageIO extends MessageIO { } } - async connect_to_language_server(host:string, port: number): Promise { + async connect_to_language_server(host: string, port: number): Promise { return new Promise((resolve, reject) => { this.socket = null; const ws = new WebSocket(`ws://${host}:${port}`); - ws.on('open', ()=>{ this.on_connected(ws); resolve(); }); - ws.on('message', this.on_message.bind(this)); - ws.on('error', this.on_disconnected.bind(this)); - ws.on('close', this.on_disconnected.bind(this)); + ws.on("open", () => { this.on_connected(ws); resolve(); }); + ws.on("message", this.on_message.bind(this)); + ws.on("error", this.on_disconnected.bind(this)); + ws.on("close", this.on_disconnected.bind(this)); }); } @@ -64,7 +75,7 @@ export class WebSocketMessageIO extends MessageIO { protected on_disconnected() { this.socket = null; - this.emit('disconnected'); + this.emit("disconnected"); } } @@ -77,16 +88,16 @@ export class TCPMessageIO extends MessageIO { } } - async connect_to_language_server(host:string, port: number):Promise { + async connect_to_language_server(host: string, port: number): Promise { return new Promise((resolve, reject) => { this.socket = null; const socket = new Socket(); socket.connect(port, host); - socket.on('connect', ()=>{ this.on_connected(socket); resolve(); }); - socket.on('data', this.on_message.bind(this)); - socket.on('end', this.on_disconnected.bind(this)); - socket.on('close', this.on_disconnected.bind(this)); - socket.on('error', this.on_error.bind(this)); + socket.on("connect", () => { this.on_connected(socket); resolve(); }); + socket.on("data", this.on_message.bind(this)); + socket.on("end", this.on_disconnected.bind(this)); + socket.on("close", this.on_disconnected.bind(this)); + socket.on("error", this.on_error.bind(this)); }); } @@ -97,7 +108,7 @@ export class TCPMessageIO extends MessageIO { protected on_disconnected() { this.socket = null; - this.emit('disconnected'); + this.emit("disconnected"); } protected on_error(error) { @@ -116,7 +127,7 @@ export class MessageIOReader extends AbstractMessageReader implements MessageRea private partialMessageTimer: NodeJS.Timeout | undefined; private _partialMessageTimeout: number; - public constructor(io: MessageIO, encoding: BufferEncoding = 'utf8') { + public constructor(io: MessageIO, encoding: BufferEncoding = "utf8") { super(); this.io = io; this.io.reader = this; @@ -137,12 +148,9 @@ export class MessageIOReader extends AbstractMessageReader implements MessageRea this.messageToken = 0; this.partialMessageTimer = undefined; this.callback = callback; - this.io.on('data', (data: Buffer) => { - this.onData(data); - }); - this.io.on('error', (error: any) => this.fireError(error)); - this.io.on('close', () => this.fireClose()); - + this.io.on("data", this.onData.bind(this)); + this.io.on("error", this.fireError.bind(this)); + this.io.on("close", this.fireClose.bind(this)); return; } @@ -154,13 +162,13 @@ export class MessageIOReader extends AbstractMessageReader implements MessageRea if (!headers) { return; } - let contentLength = headers['Content-Length']; + let contentLength = headers["Content-Length"]; if (!contentLength) { - throw new Error('Header must provide a Content-Length property.'); + throw new Error("Header must provide a Content-Length property."); } let length = parseInt(contentLength); if (isNaN(length)) { - throw new Error('Content-Length value must be a number.'); + throw new Error("Content-Length value must be a number."); } this.nextMessageLength = length; // Take the encoding form the header. For compatibility @@ -176,6 +184,8 @@ export class MessageIOReader extends AbstractMessageReader implements MessageRea this.nextMessageLength = -1; this.messageToken++; var json = JSON.parse(msg); + + log.debug("rx:", json); this.callback(json); // callback this.io.on_message_callback(json); @@ -204,29 +214,32 @@ export class MessageIOReader extends AbstractMessageReader implements MessageRea } } -const ContentLength: string = 'Content-Length: '; -const CRLF = '\r\n'; +const ContentLength: string = "Content-Length: "; +const CRLF = "\r\n"; export class MessageIOWriter extends AbstractMessageWriter implements MessageWriter { private io: MessageIO; private encoding: BufferEncoding; private errorCount: number; - public constructor(io: MessageIO, encoding: BufferEncoding = 'utf8') { + public constructor(io: MessageIO, encoding: BufferEncoding = "utf8") { super(); this.io = io; this.io.writer = this; this.encoding = encoding as BufferEncoding; this.errorCount = 0; - this.io.on('error', (error: any) => this.fireError(error)); - this.io.on('close', () => this.fireClose()); + this.io.on("error", (error: any) => this.fireError(error)); + this.io.on("close", () => this.fireClose()); } - + public end(): void { - + } public write(msg: Message): Promise { + if ((msg as RequestMessage).method === "didChangeWatchedFiles") { + return; + } let json = JSON.stringify(msg); let contentLength = Buffer.byteLength(json, this.encoding); @@ -238,15 +251,17 @@ export class MessageIOWriter extends AbstractMessageWriter implements MessageWri // callback this.io.on_send_message(msg); // Header must be written in ASCII encoding - this.io.send_message(headers.join('')); + this.io.send_message(headers.join("")); // Now write the content. This can be written in any encoding + + log.debug("tx:", msg); this.io.send_message(json); this.errorCount = 0; } catch (error) { this.errorCount++; this.fireError(error, msg, this.errorCount); } - + return; } } diff --git a/src/lsp/NativeDocumentManager.ts b/src/lsp/NativeDocumentManager.ts deleted file mode 100644 index 71f8930..0000000 --- a/src/lsp/NativeDocumentManager.ts +++ /dev/null @@ -1,695 +0,0 @@ -import * as vscode from "vscode"; -import * as ls from "vscode-languageclient"; -import { EventEmitter } from "events"; -import { MessageIO } from "./MessageIO"; -import { NotificationMessage } from "vscode-jsonrpc"; -import * as Prism from "prismjs"; -import { marked } from "marked"; -import { get_configuration, register_command } from "../utils"; -import { - Methods, - NativeSymbolInspectParams, - GodotNativeSymbol, - GodotNativeClassInfo, - GodotCapabilities, -} from "./gdscript.capabilities"; - -marked.setOptions({ - highlight: function (code, lang) { - return Prism.highlight(code, GDScriptGrammar, lang); - }, -}); - -const enum WebViewMessageType { - INSPECT_NATIVE_SYMBOL = "INSPECT_NATIVE_SYMBOL", -} - -export class NativeDocumentManager extends EventEmitter { - private io: MessageIO = null; - private native_classes: { [key: string]: GodotNativeClassInfo } = {}; - - constructor(io: MessageIO) { - super(); - this.io = io; - io.on("message", (message: NotificationMessage) => { - if (message.method == Methods.SHOW_NATIVE_SYMBOL) { - this.show_native_symbol(message.params as GodotNativeSymbol); - } else if (message.method == Methods.GDSCRIPT_CAPABILITIES) { - for (const gdclass of (message.params as GodotCapabilities) - .native_classes) { - this.native_classes[gdclass.name] = gdclass; - } - for (const gdclass of (message.params as GodotCapabilities) - .native_classes) { - if (gdclass.inherits) { - const extended_classes = - this.native_classes[gdclass.inherits].extended_classes || []; - extended_classes.push(gdclass.name); - this.native_classes[ - gdclass.inherits - ].extended_classes = extended_classes; - } - } - } - }); - - register_command("listNativeClasses", this.list_native_classes.bind(this)); - } - - public request_documentation(symbolName: string) { - if (symbolName in this.native_classes) { - this.inspect_native_symbol({ - native_class: symbolName, - symbol_name: symbolName, - }); - } - } - - private async list_native_classes() { - let classname = await vscode.window.showQuickPick( - Object.keys(this.native_classes).sort(), - { - placeHolder: "Type godot class name here", - canPickMany: false, - } - ); - if (classname) { - this.inspect_native_symbol({ - native_class: classname, - symbol_name: classname, - }); - } - } - - private inspect_native_symbol(params: NativeSymbolInspectParams) { - let json_data = ""; - if (get_configuration("lsp.serverProtocol") == "ws") { - json_data = JSON.stringify({ - id: -1, - jsonrpc: "2.0", - method: Methods.INSPECT_NATIVE_SYMBOL, - params, - }); - } else { - json_data = JSON.stringify({ - jsonrpc: "2.0", - method: Methods.INSPECT_NATIVE_SYMBOL, - params: params, - }); - this.send_header(json_data.length); - } - this.io.send_message(json_data); - } - - private send_header(data_length: number) { - this.io.send_message(`Content-Length: ${data_length}\r\n\r\n`); - } - - private show_native_symbol(symbol: GodotNativeSymbol) { - // 创建webview - const panel = vscode.window.createWebviewPanel( - "doc", - symbol.name, - this.get_new_native_symbol_column(), - { - enableScripts: true, // 启用JS,默认禁用 - retainContextWhenHidden: false, // webview被隐藏时保持状态,避免被重置 - enableFindWidget: true, - } - ); - panel.title = symbol.name; - panel.webview.html = this.make_html_content(symbol); - panel.webview.onDidReceiveMessage(this.on_webview_message.bind(this)); - } - - /** - * Returns placement for a new native symbol window based on the extension - * configuration and previously opened native symbols. - */ - private get_new_native_symbol_column(): vscode.ViewColumn { - const config_placement = get_configuration("documentation.newTabPlacement"); - - if (config_placement == "active") { - return vscode.ViewColumn.Active; - } - - const tab_groups = vscode.window.tabGroups; - const visible_text_editors = vscode.window.visibleTextEditors; - const editor_columns = visible_text_editors.map(editor => editor.viewColumn); - - // Assume the first non-editor column is the column where other native - // symbols have been opened. - - const active_column = tab_groups.activeTabGroup.viewColumn; - const is_non_editor_column_active = !editor_columns.includes(active_column); - if (is_non_editor_column_active) { - return active_column; - } - - const all_columns = tab_groups.all.map(group => group.viewColumn); - const first_non_editor_column = all_columns.find(column => !editor_columns.includes(column)); - if (first_non_editor_column) { - return first_non_editor_column; - } else { - return vscode.ViewColumn.Beside; - } - } - - private on_webview_message(msg: any) { - switch (msg.type) { - case WebViewMessageType.INSPECT_NATIVE_SYMBOL: - this.inspect_native_symbol(msg.data); - break; - default: - break; - } - } - - private make_html_content(symbol: GodotNativeSymbol): string { - return ` - - - - - ${this.make_symbol_document(symbol)} - - `; - } - - private make_symbol_document(symbol: GodotNativeSymbol): string { - const classlink = make_link(symbol.native_class, undefined); - const classinfo = this.native_classes[symbol.native_class]; - - function make_function_signature(s: GodotNativeSymbol, with_class = false) { - let parts = /\((.*)?\)\s*\-\>\s*(([A-z0-9]+)?)$/.exec(s.detail); - if (!parts) { - return ""; - } - const ret_type = make_link(parts[2] || "void", undefined); - let args = (parts[1] || "").replace( - /\:\s([A-z0-9_]+)(\,\s*)?/g, - `: $1$2` - ); - args = args.replace(/\s=\s(.*?)[\,\)]/g, ""); - return `${ret_type} ${with_class ? `${classlink}.` : ""}${element( - "a", - s.name, - { href: `#${s.name}` } - )}( ${args} )`; - } - - function make_symbol_elements( - s: GodotNativeSymbol, - with_class = false - ): { index?: string; body: string } { - switch (s.kind) { - case ls.SymbolKind.Property: - case ls.SymbolKind.Variable: - { - // var Control.anchor_left: float - const parts = /\.([A-z_0-9]+)\:\s(.*)$/.exec(s.detail); - if (!parts) { - return; - } - let type = make_link(parts[2], undefined); - let name = element("a", s.name, { href: `#${s.name}` }); - const title = element( - "h4", - `${type} ${with_class ? `${classlink}.` : ""}${s.name}` - ); - const doc = element( - "p", - format_documentation(s.documentation, symbol.native_class) - ); - const div = element("div", title + doc); - return { - index: type + " " + name, - body: div, - }; - } - break; - case ls.SymbolKind.Constant: - { - // const Control.FOCUS_ALL: FocusMode = 2 - // const Control.NOTIFICATION_RESIZED = 40 - const parts = /\.([A-Za-z_0-9]+)(\:\s*)?([A-z0-9_\.]+)?\s*=\s*(.*)$/.exec( - s.detail - ); - if (!parts) { - return; - } - let type = make_link(parts[3] || "int", undefined); - let name = parts[1]; - let value = element("code", parts[4]); - - const title = element( - "p", - `${type} ${with_class ? `${classlink}.` : ""}${name} = ${value}` - ); - const doc = element( - "p", - format_documentation(s.documentation, symbol.native_class) - ); - const div = element("div", title + doc); - return { - body: div, - }; - } - break; - case ls.SymbolKind.Event: - { - const parts = /\.([A-z0-9]+)\((.*)?\)/.exec(s.detail); - if (!parts) { - return; - } - const args = (parts[2] || "").replace( - /\:\s([A-z0-9_]+)(\,\s*)?/g, - `: $1$2` - ); - const title = element( - "p", - `${with_class ? `signal ${with_class ? `${classlink}.` : ""}` : "" - }${s.name}( ${args} )` - ); - const doc = element( - "p", - format_documentation(s.documentation, symbol.native_class) - ); - const div = element("div", title + doc); - return { - body: div, - }; - } - break; - case ls.SymbolKind.Method: - case ls.SymbolKind.Function: - { - const signature = make_function_signature(s, with_class); - const title = element("h4", signature); - const doc = element( - "p", - format_documentation(s.documentation, symbol.native_class) - ); - const div = element("div", title + doc); - return { - index: signature, - body: div, - }; - } - break; - default: - break; - } - } - - if (symbol.kind == ls.SymbolKind.Class) { - let doc = element("h2", `Native class ${symbol.name}`); - const parts = /extends\s+([A-z0-9]+)/.exec(symbol.detail); - let inherits = parts && parts.length > 1 ? parts[1] : ""; - if (inherits) { - let inherits_chian = ""; - let base_class = this.native_classes[inherits]; - while (base_class) { - inherits_chian += `${inherits_chian ? " >" : ""} ${make_link( - base_class.name, - undefined - )}`; - base_class = this.native_classes[base_class.inherits]; - } - inherits = `Inherits: ${inherits_chian}`; - doc += element("p", inherits); - } - if (classinfo && classinfo.extended_classes) { - let inherited = ""; - for (const c of classinfo.extended_classes) { - inherited += (inherited ? ", " : " ") + make_link(c, c); - } - doc += element("p", `Inherited by:${inherited}`); - } - - let constants = ""; - let signals = ""; - let methods_index = ""; - let methods = ""; - let properties_index = ""; - let propertyies = ""; - let others = ""; - - for (let s of symbol.children as GodotNativeSymbol[]) { - const elements = make_symbol_elements(s); - switch (s.kind) { - case ls.SymbolKind.Property: - case ls.SymbolKind.Variable: - properties_index += element("li", elements.index); - propertyies += element("li", elements.body, { id: s.name }); - break; - case ls.SymbolKind.Constant: - constants += element("li", elements.body, { id: s.name }); - break; - case ls.SymbolKind.Event: - signals += element("li", elements.body, { id: s.name }); - break; - case ls.SymbolKind.Method: - case ls.SymbolKind.Function: - methods_index += element("li", elements.index); - methods += element("li", elements.body, { id: s.name }); - break; - default: - others += element("li", elements.body, { id: s.name }); - break; - } - } - - function add_group(title: string, block: string) { - if (block) { - doc += element("h3", title); - doc += element("ul", block); - } - } - - doc += element( - "p", - format_documentation(symbol.documentation, symbol.native_class) - ); - add_group("Properties", properties_index); - add_group("Constants", constants); - add_group("Signals", signals); - add_group("Methods", methods_index); - add_group("Property Descriptions", propertyies); - add_group("Method Descriptions", methods); - add_group("Other Members", others); - doc += element("script", `var godot_class = "${symbol.native_class}";`); - - return doc; - } else { - let doc = ""; - const elements = make_symbol_elements(symbol, true); - if (elements.index) { - const symbols: ls.SymbolKind[] = [ls.SymbolKind.Function, ls.SymbolKind.Method]; - if (!symbols.includes(symbol.kind)) { - doc += element("h2", elements.index); - } - } - doc += element("div", elements.body); - return doc; - } - } -} - -function element( - tag: K, - content: string, - props = {}, - new_line?: boolean, - indent?: string -) { - let props_str = ""; - for (const key in props) { - if (props.hasOwnProperty(key)) { - props_str += ` ${key}="${props[key]}"`; - } - } - return `${indent || ""}<${tag} ${props_str}>${content}${new_line ? "\n" : "" - }`; -} -function make_link(classname: string, symbol: string) { - if (!symbol || symbol == classname) { - return element("a", classname, { - onclick: `inspect('${classname}', '${classname}')`, - href: "", - }); - } else { - return element("a", `${classname}.${symbol}`, { - onclick: `inspect('${classname}', '${symbol}')`, - href: "", - }); - } -} - -function make_codeblock(code: string) { - const md = marked.parse("```gdscript\n" + code + "\n```"); - return `
${md}
`; -} - -function format_documentation(p_bbcode: string, classname: string) { - let html = p_bbcode.trim(); - let lines = html.split("\n"); - let in_code_block = false; - let code_block_indent = -1; - let cur_code_block = ""; - - html = ""; - for (let i = 0; i < lines.length; i++) { - let line = lines[i]; - let block_start = line.indexOf("[codeblock]"); - if (block_start != -1) { - code_block_indent = block_start; - in_code_block = true; - line = line.replace("[codeblock]", ""); - } else if (in_code_block) { - line = line.substr(code_block_indent, line.length); - } - - if (in_code_block && line.indexOf("[/codeblock]") != -1) { - line = line.replace("[/codeblock]", ""); - in_code_block = false; - html += make_codeblock(cur_code_block); - cur_code_block = ""; - } - - if (!in_code_block) { - line = line.trim(); - // [i] [/u] [code] --> - line = line.replace(/(\[(\/?)([a-z]+)\])/g, `<$2$3>`); - // [Reference] --> Reference - line = line.replace( - /(\[([A-Z]+[A-Z_a-z0-9]*)\])/g, - `$2` - ); - // [method _set] --> _set - line = line.replace( - /(\[([a-z]+)\s+([A-Z_a-z][A-Z_a-z0-9]*)\])/g, - `$3` - ); - line += "
"; - html += line; - } else { - line += "\n"; - if (cur_code_block || line.trim()) { - cur_code_block += line; - } - } - } - return html; -} - -const GDScriptGrammar = { - comment: { - pattern: /(^|[^\\])#.*/, - lookbehind: true, - }, - "string-interpolation": { - pattern: /(?:f|rf|fr)(?:("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i, - greedy: true, - inside: { - interpolation: { - // "{" "}" - pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/, - lookbehind: true, - inside: { - "format-spec": { - pattern: /(:)[^:(){}]+(?=}$)/, - lookbehind: true, - }, - "conversion-option": { - pattern: /![sra](?=[:}]$)/, - alias: "punctuation", - }, - rest: null, - }, - }, - string: /[\s\S]+/, - }, - }, - "triple-quoted-string": { - pattern: /(?:[rub]|rb|br)?("""|''')[\s\S]+?\1/i, - greedy: true, - alias: "string", - }, - string: { - pattern: /(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i, - greedy: true, - }, - function: { - pattern: /((?:^|\s)func[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g, - lookbehind: true, - }, - "class-name": { - pattern: /(\bclass\s+)\w+/i, - lookbehind: true, - }, - decorator: { - pattern: /(^\s*)@\w+(?:\.\w+)*/im, - lookbehind: true, - alias: ["annotation", "punctuation"], - inside: { - punctuation: /\./, - }, - }, - keyword: /\b(?:if|elif|else|for|while|break|continue|pass|return|match|func|class|class_name|extends|is|onready|tool|static|export|setget|const|var|as|void|enum|preload|assert|yield|signal|breakpoint|rpc|sync|master|puppet|slave|remotesync|mastersync|puppetsync)\b/, - builtin: /\b(?:PI|TAU|NAN|INF|_|sin|cos|tan|sinh|cosh|tanh|asin|acos|atan|atan2|sqrt|fmod|fposmod|floor|ceil|round|abs|sign|pow|log|exp|is_nan|is_inf|ease|decimals|stepify|lerp|dectime|randomize|randi|randf|rand_range|seed|rand_seed|deg2rad|rad2deg|linear2db|db2linear|max|min|clamp|nearest_po2|weakref|funcref|convert|typeof|type_exists|char|str|print|printt|prints|printerr|printraw|var2str|str2var|var2bytes|bytes2var|range|load|inst2dict|dict2inst|hash|Color8|print_stack|instance_from_id|preload|yield|assert|Vector2|Vector3|Color|Rect2|Array|Basis|Dictionary|Plane|Quat|RID|Rect3|Transform|Transform2D|AABB|String|Color|NodePath|RID|Object|Dictionary|Array|PoolByteArray|PoolIntArray|PoolRealArray|PoolStringArray|PoolVector2Array|PoolVector3Array|PoolColorArray)\b/, - boolean: /\b(?:true|false)\b/, - number: /(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i, - operator: /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/, - punctuation: /[{}[\];(),.:]/, -}; - -const PrismStyleSheet = ` -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; /* base3 */ -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #93a1a1; /* base1 */ -} - -.token.punctuation { - color: #586e75; /* base01 */ -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #268bd2; /* blue */ -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.url, -.token.inserted { - color: #2aa198; /* cyan */ -} - -.token.entity { - color: #657b83; /* base00 */ - background: #eee8d5; /* base2 */ -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #859900; /* green */ -} - -.token.function, -.token.class-name { - color: #b58900; /* yellow */ -} - -.token.regex, -.token.important, -.token.variable { - color: #cb4b16; /* orange */ -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} -`; diff --git a/src/lsp/gdscript.capabilities.ts b/src/lsp/gdscript.capabilities.ts index 35e7ff7..e1a805e 100644 --- a/src/lsp/gdscript.capabilities.ts +++ b/src/lsp/gdscript.capabilities.ts @@ -1,12 +1,5 @@ import { DocumentSymbol, Range, SymbolKind } from "vscode-languageclient"; - -export const enum Methods { - GDSCRIPT_CAPABILITIES = 'gdscript/capabilities', - SHOW_NATIVE_SYMBOL = 'gdscript/show_native_symbol', - INSPECT_NATIVE_SYMBOL = 'textDocument/nativeSymbol' -} - export interface NativeSymbolInspectParams { native_class: string; symbol_name: string; @@ -23,6 +16,7 @@ export class GodotNativeSymbol implements DocumentSymbol { children?: DocumentSymbol[]; documentation: string; native_class: string; + class_info?: GodotNativeClassInfo; } export interface GodotNativeClassInfo { diff --git a/src/lsp/index.ts b/src/lsp/index.ts new file mode 100644 index 0000000..dfbe3c8 --- /dev/null +++ b/src/lsp/index.ts @@ -0,0 +1 @@ +export { ClientConnectionManager } from "./ClientConnectionManager"; diff --git a/src/providers/completions.ts b/src/providers/completions.ts new file mode 100644 index 0000000..f87d8ac --- /dev/null +++ b/src/providers/completions.ts @@ -0,0 +1,41 @@ +import * as vscode from "vscode"; +import { + Uri, + Position, + Range, + TextDocument, + CancellationToken, + ProviderResult, + CompletionContext, + CompletionList, + CompletionItem, + CompletionItemProvider, + ExtensionContext, +} from "vscode"; +import { createLogger } from "../utils"; + +const log = createLogger("providers.completions"); + +export class GDCompletionItemProvider implements CompletionItemProvider { + constructor(private context: ExtensionContext) { + const selector = [ + { language: "gdresource", scheme: "file" }, + { language: "gdscene", scheme: "file" }, + { language: "gdscript", scheme: "file" }, + ]; + context.subscriptions.push( + vscode.languages.registerCompletionItemProvider(selector, this), + ); + } + + provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): ProviderResult> { + const items = []; + + const linePrefix = document.lineAt(position).text.slice(0, position.character); + + log.debug("provideCompletionItems"); + log.debug("linePrefix", linePrefix); + + return items; + } +} diff --git a/src/providers/definition.ts b/src/providers/definition.ts new file mode 100644 index 0000000..7e60dc0 --- /dev/null +++ b/src/providers/definition.ts @@ -0,0 +1,69 @@ +import * as vscode from "vscode"; +import { + Uri, + Position, + TextDocument, + CancellationToken, + Location, + Definition, + DefinitionProvider, + ExtensionContext, +} from "vscode"; +import { make_docs_uri, createLogger } from "../utils"; +import { globals } from "../extension"; + +const log = createLogger("providers.definitions"); + +export class GDDefinitionProvider implements DefinitionProvider { + constructor(private context: ExtensionContext) { + const selector = [ + { language: "gdresource", scheme: "file" }, + { language: "gdscene", scheme: "file" }, + { language: "gdscript", scheme: "file" }, + ]; + + context.subscriptions.push( + vscode.languages.registerDefinitionProvider(selector, this), + ); + } + + async provideDefinition(document: TextDocument, position: Position, token: CancellationToken): Promise { + if (["gdresource", "gdscene"].includes(document.languageId)) { + const range = document.getWordRangeAtPosition(position, /(\w+)/); + if (range) { + const word = document.getText(range); + if (globals.docsProvider.classInfo[word] !== undefined) { + const uri = make_docs_uri(word); + return new Location(uri, new Position(0, 0)); + } else { + let i = 0; + let line; + let match; + + do { + line = document.lineAt(position.line - i++); + match = line.text.match(/(?<=type)="(\w+)"/); + } while (!match && line.lineNumber > 0); + + if (globals.docsProvider.classInfo[match[1]] !== undefined) { + const uri = make_docs_uri(match[1], word); + return new Location(uri, new Position(0, 0)); + } + } + } + + return null; + } + + const target = await globals.lsp.client.get_symbol_at_position(document.uri, position); + + if (!target) { + return null; + } + + const parts = target.split("."); + const uri = make_docs_uri(parts[0], parts[1]); + + return new Location(uri, new Position(0, 0)); + } +} diff --git a/src/providers/document_link.ts b/src/providers/document_link.ts new file mode 100644 index 0000000..f5e23a8 --- /dev/null +++ b/src/providers/document_link.ts @@ -0,0 +1,82 @@ +import * as vscode from "vscode"; +import { + Uri, + Range, + TextDocument, + CancellationToken, + DocumentLink, + DocumentLinkProvider, + ExtensionContext, +} from "vscode"; +import { SceneParser } from "../scene_tools"; +import { convert_resource_path_to_uri, createLogger } from "../utils"; + +const log = createLogger("providers.document_links"); + +export class GDDocumentLinkProvider implements DocumentLinkProvider { + public parser = new SceneParser(); + + constructor(private context: ExtensionContext) { + const selector = [ + { language: "gdresource", scheme: "file" }, + { language: "gdscene", scheme: "file" }, + { language: "gdscript", scheme: "file" }, + ]; + context.subscriptions.push( + vscode.languages.registerDocumentLinkProvider(selector, this), + ); + } + + async provideDocumentLinks(document: TextDocument, token: CancellationToken): Promise { + const scene = this.parser.parse_scene(document); + const text = document.getText(); + const path = document.uri.fsPath; + + const links: DocumentLink[] = []; + + if (["gdresource", "gdscene"].includes(document.languageId)) { + for (const match of text.matchAll(/ExtResource\(\s?"?(\w+)\s?"?\)/g)) { + const id = match[1]; + const uri = Uri.from({ + scheme: "file", + path: path, + fragment: `${scene.externalResources[id].line},0`, + }); + + const r = this.create_range(document, match); + const link = new DocumentLink(r, uri); + link.tooltip = "Jump to resource definition"; + links.push(link); + } + + for (const match of text.matchAll(/SubResource\(\s?"?(\w+)\s?"?\)/g)) { + const id = match[1]; + const uri = Uri.from({ + scheme: "file", + path: path, + fragment: `${scene.subResources[id].line},0`, + }); + + const r = this.create_range(document, match); + const link = new DocumentLink(r, uri); + links.push(link); + } + } + for (const match of text.matchAll(/res:\/\/[^"^']*/g)) { + const r = this.create_range(document, match); + const uri = await convert_resource_path_to_uri(match[0]); + if (uri instanceof Uri) { + links.push(new DocumentLink(r, uri)); + } + } + + return links; + } + + private create_range(document: TextDocument, match: RegExpMatchArray) { + const start = document.positionAt(match.index); + const end = document.positionAt(match.index + match[0].length); + const r = new Range(start, end); + return r; + } +} diff --git a/src/providers/documentation.ts b/src/providers/documentation.ts new file mode 100644 index 0000000..6dedf1c --- /dev/null +++ b/src/providers/documentation.ts @@ -0,0 +1,124 @@ +import * as vscode from "vscode"; +import { + CancellationToken, + CustomDocument, + CustomDocumentOpenContext, + CustomReadonlyEditorProvider, + ExtensionContext, + Uri, + WebviewPanel, +} from "vscode"; +import { NotificationMessage } from "vscode-jsonrpc"; +import { + NativeSymbolInspectParams, + GodotNativeSymbol, + GodotNativeClassInfo, + GodotCapabilities, +} from "../lsp/gdscript.capabilities"; +import { make_html_content } from "./documentation_builder"; +import { createLogger, get_extension_uri, make_docs_uri } from "../utils"; +import { globals } from "../extension"; + +const log = createLogger("providers.docs"); + +export class GDDocumentationProvider implements CustomReadonlyEditorProvider { + public classInfo = new Map(); + public symbolDb = new Map(); + public htmlDb = new Map(); + + private ready = false; + + constructor(private context: ExtensionContext) { + const options = { + webviewOptions: { + enableScripts: true, + retainContextWhenHidden: true, + enableFindWidget: true, + }, + supportsMultipleEditorsPerDocument: true, + }; + context.subscriptions.push( + vscode.window.registerCustomEditorProvider("gddoc", this, options), + ); + } + + public register_capabilities(message: NotificationMessage) { + for (const gdclass of (message.params as GodotCapabilities).native_classes) { + this.classInfo[gdclass.name] = gdclass; + } + for (const gdclass of (message.params as GodotCapabilities).native_classes) { + if (gdclass.inherits) { + const extended_classes = this.classInfo[gdclass.inherits].extended_classes || []; + extended_classes.push(gdclass.name); + this.classInfo[gdclass.inherits].extended_classes = extended_classes; + } + } + this.ready = true; + } + + public async list_native_classes() { + const classname = await vscode.window.showQuickPick( + Object.keys(this.classInfo).sort(), + { + placeHolder: "Type godot class name here", + canPickMany: false, + } + ); + if (classname) { + vscode.commands.executeCommand("vscode.open", make_docs_uri(classname)); + } + } + + public openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): CustomDocument { + return { uri: uri, dispose: () => { } }; + } + + public async resolveCustomEditor(document: CustomDocument, panel: WebviewPanel, token: CancellationToken): Promise { + const className = document.uri.path.split(".")[0]; + const target = document.uri.fragment; + let symbol: GodotNativeSymbol = null; + + panel.webview.options = { + enableScripts: true, + }; + + while (!this.ready) { + await new Promise(resolve => setTimeout(resolve, 100)); + } + + if (className in this.symbolDb) { + symbol = this.symbolDb[className]; + } + + if (!symbol && className in this.classInfo) { + const params: NativeSymbolInspectParams = { + native_class: className, + symbol_name: className, + }; + + const response = await globals.lsp.client.sendRequest("textDocument/nativeSymbol", params); + + symbol = response as GodotNativeSymbol; + symbol.class_info = this.classInfo[symbol.name]; + this.symbolDb[symbol.name] = symbol; + } + if (!this.htmlDb.has(className)) { + this.htmlDb[className] = make_html_content(panel.webview, symbol, target); + } + panel.webview.html = this.htmlDb[className]; + panel.iconPath = get_extension_uri("resources/godot_icon.svg"); + panel.webview.onDidReceiveMessage(msg => { + if (msg.type === "INSPECT_NATIVE_SYMBOL") { + const uri = make_docs_uri(msg.data.native_class, msg.data.symbol_name); + vscode.commands.executeCommand("vscode.open", uri); + } + }); + + if (target) { + panel.webview.postMessage({ + command: "focus", + target: target, + }); + } + } +} diff --git a/src/providers/documentation_builder.ts b/src/providers/documentation_builder.ts new file mode 100644 index 0000000..8673708 --- /dev/null +++ b/src/providers/documentation_builder.ts @@ -0,0 +1,485 @@ +import * as vscode from "vscode"; +import { SymbolKind } from "vscode-languageclient"; +import * as Prism from "prismjs"; +import * as csharp from "prismjs/components/prism-csharp"; +import { marked } from "marked"; +import { GodotNativeSymbol } from "../lsp/gdscript.capabilities"; +import { get_extension_uri } from "../utils"; +import yabbcode = require("ya-bbcode"); + +const parser = new yabbcode(); + +//! I do not understand why this is necessary +//! if you don't touch this csharp object, it's not imported or something, idk +const wtf = csharp; + +marked.setOptions({ + highlight: function (code, lang) { + if (lang === "gdscript") { + return Prism.highlight(code, GDScriptGrammar, lang); + } + if (lang === "csharp") { + return Prism.highlight(code, Prism.languages.csharp, lang); + } + }, +}); + +// TODO: find a better way to apply this theming +let options = ""; +const theme = vscode.window.activeColorTheme.kind; +if (theme === vscode.ColorThemeKind.Dark) { + options = `{ + viewport: null, + styles: { + 'header,footer,section,article': '#d4d4d480', + 'h1,a': '#d4d4d480', + 'h2,h3,h4': '#d4d4d480' + }, + back: 'rgba(1,1,1,0.08)', + view: '#79797933', + drag: '#bfbfbf33', + interval: 50 + }`; +} else if (theme === vscode.ColorThemeKind.Light) { + options = `{ + viewport: null, + styles: { + 'header,footer,section,article': 'rgba(0,0,0,0.08)', + 'h1,a': 'rgba(0,0,0,0.10)', + 'h2,h3,h4': 'rgba(0,0,0,0.08)' + }, + back: 'rgba(0,0,0,0.08)', + view: 'rgba(0,0,0,0.08)', + drag: 'rgba(0,0,0,0.08)', + interval: 50 + }`; +} + +export function make_html_content(webview: vscode.Webview, symbol: GodotNativeSymbol, target?: string): string { + const pagemapJsUri = webview.asWebviewUri(get_extension_uri("media", "pagemap.js")); + const prismCssUri = webview.asWebviewUri(get_extension_uri("media", "prism.css")); + const docsCssUri = webview.asWebviewUri(get_extension_uri("media", "docs.css")); + + let initialFocus = ""; + if (target) { + initialFocus = ` + window.addEventListener('load', event => { + document.getElementById('${target}').scrollIntoView(); + }); + `; + } + + return /*html*/` + + + + + + + ${symbol.name} + + +
+ ${make_symbol_document(symbol)} +
+ + + + + + + `; +} + +export function make_symbol_document(symbol: GodotNativeSymbol): string { + const classlink = make_link(symbol.native_class, undefined); + + function make_function_signature(s: GodotNativeSymbol, with_class = false) { + const parts = /\((.*)?\)\s*\-\>\s*(([A-z0-9]+)?)$/.exec(s.detail); + if (!parts) { + return ""; + } + const ret_type = make_link(parts[2] || "void", undefined); + let args = (parts[1] || "").replace( + /\:\s([A-z0-9_]+)(\,\s*)?/g, + ": $1$2" + ); + args = args.replace(/\s=\s(.*?)[\,\)]/g, ""); + return `${ret_type} ${with_class ? `${classlink}.` : ""}${element( + "a", + s.name, + { href: `#${s.name}` } + )}( ${args} )`; + } + + function make_symbol_elements( + s: GodotNativeSymbol, + with_class = false + ): { index?: string; body: string } { + switch (s.kind) { + case SymbolKind.Property: + case SymbolKind.Variable: + { + // var Control.anchor_left: float + const parts = /\.([A-z_0-9]+)\:\s(.*)$/.exec(s.detail); + if (!parts) { + return; + } + const type = make_link(parts[2], undefined); + const name = element("a", s.name, { href: `#${s.name}` }); + const title = element( + "h4", + `${type} ${with_class ? `${classlink}.` : ""}${s.name}` + ); + const doc = element( + "p", + format_documentation(s.documentation, symbol.native_class) + ); + const div = element("div", title + doc); + return { + index: type + " " + name, + body: div, + }; + } + break; + case SymbolKind.Constant: + { + // const Control.FOCUS_ALL: FocusMode = 2 + // const Control.NOTIFICATION_RESIZED = 40 + const parts = /\.([A-Za-z_0-9]+)(\:\s*)?([A-z0-9_\.]+)?\s*=\s*(.*)$/.exec( + s.detail + ); + if (!parts) { + return; + } + const type = make_link(parts[3] || "int", undefined); + const name = parts[1]; + const value = element("code", parts[4]); + + const title = element( + "p", + `${type} ${with_class ? `${classlink}.` : ""}${name} = ${value}` + ); + const doc = element( + "p", + format_documentation(s.documentation, symbol.native_class) + ); + const div = element("div", title + doc); + return { + body: div, + }; + } + break; + case SymbolKind.Event: + { + const parts = /\.([A-z0-9]+)\((.*)?\)/.exec(s.detail); + if (!parts) { + return; + } + const args = (parts[2] || "").replace( + /\:\s([A-z0-9_]+)(\,\s*)?/g, + ": $1$2" + ); + const title = element( + "p", + `${with_class ? `signal ${with_class ? `${classlink}.` : ""}` : "" + }${s.name}( ${args} )` + ); + const doc = element( + "p", + format_documentation(s.documentation, symbol.native_class) + ); + const div = element("div", title + doc); + return { + body: div, + }; + } + break; + case SymbolKind.Method: + case SymbolKind.Function: + { + const signature = make_function_signature(s, with_class); + const title = element("h4", signature); + const doc = element( + "p", + format_documentation(s.documentation, symbol.native_class) + ); + const div = element("div", title + doc); + return { + index: signature, + body: div, + }; + } + break; + default: + break; + } + } + + if (symbol.kind == SymbolKind.Class) { + let doc = element("h2", `Native class ${symbol.name}`); + const parts = /extends\s+([A-z0-9]+)/.exec(symbol.detail); + let inherits = parts && parts.length > 1 ? parts[1] : ""; + if (inherits) { + let inherits_chain = ""; + let base_class = symbol.class_info[inherits]; + while (base_class) { + inherits_chain += `${inherits_chain ? " >" : ""} ${make_link( + base_class.name, + undefined + )}`; + base_class = symbol.class_info[base_class.inherits]; + } + inherits = `Inherits: ${inherits_chain}`; + doc += element("p", inherits); + } + if (symbol.class_info && symbol.class_info.extended_classes) { + let inherited = ""; + for (const c of symbol.class_info.extended_classes) { + inherited += (inherited ? ", " : " ") + make_link(c, c); + } + doc += element("p", `Inherited by:${inherited}`); + } + + let constants = ""; + let signals = ""; + let methods_index = ""; + let methods = ""; + let properties_index = ""; + let propertyies = ""; + let others = ""; + + for (const s of symbol.children as GodotNativeSymbol[]) { + const elements = make_symbol_elements(s); + switch (s.kind) { + case SymbolKind.Property: + case SymbolKind.Variable: + properties_index += element("li", elements.index); + propertyies += element("li", elements.body, { id: s.name }); + break; + case SymbolKind.Constant: + constants += element("li", elements.body, { id: s.name }); + break; + case SymbolKind.Event: + signals += element("li", elements.body, { id: s.name }); + break; + case SymbolKind.Method: + case SymbolKind.Function: + methods_index += element("li", elements.index); + methods += element("li", elements.body, { id: s.name }); + break; + default: + others += element("li", elements.body, { id: s.name }); + break; + } + } + + const add_group = (title: string, block: string) => { + if (block) { + doc += element("h3", title); + doc += element("ul", block); + } + }; + + doc += element( + "p", + format_documentation(symbol.documentation, symbol.native_class) + ); + add_group("Properties", properties_index); + add_group("Constants", constants); + add_group("Signals", signals); + add_group("Methods", methods_index); + add_group("Property Descriptions", propertyies); + add_group("Method Descriptions", methods); + add_group("Other Members", others); + doc += element("script", `var godot_class = "${symbol.native_class}";`); + + return doc; + } else { + let doc = ""; + const elements = make_symbol_elements(symbol, true); + if (elements.index) { + const symbols: SymbolKind[] = [SymbolKind.Function, SymbolKind.Method]; + if (!symbols.includes(symbol.kind)) { + doc += element("h2", elements.index); + } + } + doc += element("div", elements.body); + return doc; + } +} + +function element( + tag: K, + content: string, + props = {}, + new_line?: boolean, + indent?: string +) { + let props_str = ""; + for (const key in props) { + if (Object.prototype.hasOwnProperty.call(props, key)) { + props_str += ` ${key}="${props[key]}"`; + } + } + return `${indent || ""}<${tag} ${props_str}>${content}${new_line ? "\n" : "" + }`; +} + +function make_link(classname: string, symbol: string) { + if (!symbol || symbol == classname) { + return element("a", classname, { + onclick: `inspect('${classname}')`, + href: "", + }); + } else { + return element("a", `${classname}.${symbol}`, { + onclick: `inspect('${classname}', '${symbol}')`, + href: "", + }); + } +} + +function make_codeblock(code: string, language: string) { + const lines = code.split("\n"); + const indent = lines[0].match(/^\s*/)[0].length; + code = lines.map(line => line.slice(indent)).join("\n"); + return marked.parse(`\`\`\`${language}\n${code}\n\`\`\``); +} + +function format_documentation(bbcode: string, classname: string) { + let html = parser.parse(bbcode.trim()); + + html = html.replaceAll(/\[\/?codeblocks\]()?/g, ""); + html = html.replaceAll(""", "\""); + + for (const match of html.matchAll(/\[codeblock].*?\[\/codeblock]/gs)) { + let block = match[0]; + block = block.replaceAll(/\[\/?codeblock\]()?/g, ""); + block = block.replaceAll("
", "\n"); + html = html.replace(match[0], make_codeblock(block, "gdscript")); + } + for (const match of html.matchAll(/\[gdscript].*?\[\/gdscript]/gs)) { + let block = match[0]; + block = block.replaceAll(/\[\/?gdscript\]()?/g, ""); + block = block.replaceAll("
", "\n"); + html = html.replace(match[0], make_codeblock(block, "gdscript")); + } + for (const match of html.matchAll(/\[csharp].*?\[\/csharp]/gs)) { + let block = match[0]; + block = block.replaceAll(/\[\/?csharp\]()?/g, ""); + block = block.replaceAll("
", "\n"); + html = html.replace(match[0], make_codeblock(block, "csharp")); + } + +html = html.replaceAll("
", ""); +// [param ] +html = html.replaceAll( + /\[param\s+(@?[A-Z_a-z][A-Z_a-z0-9]*?)\]/g, + "$1" +); +// [method ] +html = html.replaceAll( + /\[method\s+(@?[A-Z_a-z][A-Z_a-z0-9]*?)\]/g, + `$1` +); +// [] +html = html.replaceAll( + /\[(\w+)\]/g, + `$1` // eslint-disable-line quotes +); +// [method .] +html = html.replaceAll( + /\[\w+\s+(@?[A-Z_a-z][A-Z_a-z0-9]*?)\.(\w+)\]/g, + `$1.$2` // eslint-disable-line quotes +); + + return html; +} + +const GDScriptGrammar = { + comment: { + pattern: /(^|[^\\])#.*/, + lookbehind: true, + }, + "string-interpolation": { + pattern: /(?:f|rf|fr)(?:("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i, + greedy: true, + inside: { + interpolation: { + // "{" "}" + pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/, + lookbehind: true, + inside: { + "format-spec": { + pattern: /(:)[^:(){}]+(?=}$)/, + lookbehind: true, + }, + "conversion-option": { + pattern: /![sra](?=[:}]$)/, + alias: "punctuation", + }, + rest: null, + }, + }, + string: /[\s\S]+/, + }, + }, + "triple-quoted-string": { + pattern: /(?:[rub]|rb|br)?("""|''')[\s\S]+?\1/i, + greedy: true, + alias: "string", + }, + string: { + pattern: /(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i, + greedy: true, + }, + function: { + pattern: /((?:^|\s)func[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g, + lookbehind: true, + }, + "class-name": { + pattern: /(\bclass\s+)\w+/i, + lookbehind: true, + }, + decorator: { + pattern: /(^\s*)@\w+(?:\.\w+)*/im, + lookbehind: true, + alias: ["annotation", "punctuation"], + inside: { + punctuation: /\./, + }, + }, + keyword: /\b(?:if|elif|else|for|while|break|continue|pass|return|match|func|class|class_name|extends|is|onready|tool|static|export|setget|const|var|as|void|enum|preload|assert|yield|signal|breakpoint|rpc|sync|master|puppet|slave|remotesync|mastersync|puppetsync)\b/, + builtin: /\b(?:PI|TAU|NAN|INF|_|sin|cos|tan|sinh|cosh|tanh|asin|acos|atan|atan2|sqrt|fmod|fposmod|floor|ceil|round|abs|sign|pow|log|exp|is_nan|is_inf|ease|decimals|stepify|lerp|dectime|randomize|randi|randf|rand_range|seed|rand_seed|deg2rad|rad2deg|linear2db|db2linear|max|min|clamp|nearest_po2|weakref|funcref|convert|typeof|type_exists|char|str|print|printt|prints|printerr|printraw|var2str|str2var|var2bytes|bytes2var|range|load|inst2dict|dict2inst|hash|Color8|print_stack|instance_from_id|preload|yield|assert|Vector2|Vector3|Color|Rect2|Array|Basis|Dictionary|Plane|Quat|RID|Rect3|Transform|Transform2D|AABB|String|Color|NodePath|RID|Object|Dictionary|Array|PoolByteArray|PoolIntArray|PoolRealArray|PoolStringArray|PoolVector2Array|PoolVector3Array|PoolColorArray)\b/, + boolean: /\b(?:true|false)\b/, + number: /(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i, + operator: /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/, + punctuation: /[{}[\];(),.:]/, +}; diff --git a/src/providers/hover.ts b/src/providers/hover.ts new file mode 100644 index 0000000..b04a5a0 --- /dev/null +++ b/src/providers/hover.ts @@ -0,0 +1,108 @@ +import * as vscode from "vscode"; +import { + Uri, + Position, + TextDocument, + CancellationToken, + ExtensionContext, + HoverProvider, + MarkdownString, + Hover, +} from "vscode"; +import { SceneParser } from "../scene_tools"; +import { convert_resource_path_to_uri, createLogger } from "../utils"; + +const log = createLogger("providers.hover"); + +export class GDHoverProvider implements HoverProvider { + public parser = new SceneParser(); + + constructor(private context: ExtensionContext) { + const selector = [ + { language: "gdresource", scheme: "file" }, + { language: "gdscene", scheme: "file" }, + { language: "gdscript", scheme: "file" }, + ]; + context.subscriptions.push( + vscode.languages.registerHoverProvider(selector, this), + ); + } + + async get_links(text: string): Promise { + let links = ""; + for (const match of text.matchAll(/res:\/\/[^"^']*/g)) { + const uri = await convert_resource_path_to_uri(match[0]); + if (uri instanceof Uri) { + links += `* [${match[0]}](${uri})\n`; + } + } + return links; + } + + async provideHover(document: TextDocument, position: Position, token: CancellationToken): Promise { + if (["gdresource", "gdscene"].includes(document.languageId)) { + const scene = this.parser.parse_scene(document); + + const wordPattern = /(?:Ext|Sub)Resource\(\s?"?(\w+)\s?"?\)/; + const word = document.getText(document.getWordRangeAtPosition(position, wordPattern)); + + if (word.startsWith("ExtResource")) { + const match = word.match(wordPattern); + const id = match[1]; + const resource = scene.externalResources[id]; + const definition = scene.externalResources[id].body; + const links = await this.get_links(definition); + + const contents = new MarkdownString(); + contents.appendMarkdown(links); + contents.appendMarkdown("---"); + contents.appendCodeblock(definition, "gdresource"); + if (resource.type === "Script") { + contents.appendMarkdown("---"); + const uri = await convert_resource_path_to_uri(resource.path); + const text = (await vscode.workspace.openTextDocument(uri)).getText(); + contents.appendCodeblock(text, "gdscript"); + } + const hover = new Hover(contents); + return hover; + } + + if (word.startsWith("SubResource")) { + const match = word.match(wordPattern); + const id = match[1]; + + let definition = scene.subResources[id].body; + // don't display contents of giant arrays + definition = definition?.replace(/Array\([0-9,\.\- ]*\)/, "Array(...)"); + + const contents = new MarkdownString(); + contents.appendCodeblock(definition, "gdresource"); + const hover = new Hover(contents); + return hover; + } + } + + const link = document.getText(document.getWordRangeAtPosition(position, /res:\/\/[^"^']*/)); + if (link.startsWith("res://")) { + let type = ""; + if (link.endsWith(".gd")) { + type = "gdscript"; + } else if (link.endsWith(".cs")) { + type = "csharp"; + } else if (link.endsWith(".tscn")) { + type = "gdscene"; + } else if (link.endsWith(".tres")) { + type = "gdresource"; + } else { + return; + } + + const uri = await convert_resource_path_to_uri(link); + const text = (await vscode.workspace.openTextDocument(uri)).getText(); + const contents = new MarkdownString(); + contents.appendCodeblock(text, type); + const hover = new Hover(contents); + return hover; + } + } +} diff --git a/src/providers/index.ts b/src/providers/index.ts new file mode 100644 index 0000000..9373428 --- /dev/null +++ b/src/providers/index.ts @@ -0,0 +1,8 @@ +export * from "./completions"; +export * from "./definition"; +export * from "./document_link"; +export * from "./hover"; +export * from "./inlay_hints"; +export * from "./semantic_tokens"; +export * from "./documentation"; +export * from "./tasks"; diff --git a/src/providers/inlay_hints.ts b/src/providers/inlay_hints.ts new file mode 100644 index 0000000..726cfc7 --- /dev/null +++ b/src/providers/inlay_hints.ts @@ -0,0 +1,63 @@ +import * as vscode from "vscode"; +import { + Range, + TextDocument, + CancellationToken, + InlayHint, + ProviderResult, + InlayHintKind, + InlayHintsProvider, + ExtensionContext, +} from "vscode"; +import { SceneParser } from "../scene_tools"; +import { createLogger } from "../utils"; + +const log = createLogger("providers.inlay_hints"); + +export class GDInlayHintsProvider implements InlayHintsProvider { + public parser = new SceneParser(); + + constructor(private context: ExtensionContext) { + const selector = [ + { language: "gdresource", scheme: "file" }, + { language: "gdscene", scheme: "file" }, + { language: "gdscript", scheme: "file" }, + ]; + context.subscriptions.push( + vscode.languages.registerInlayHintsProvider(selector, this), + ); + } + + provideInlayHints(document: TextDocument, range: Range, token: CancellationToken): ProviderResult { + const scene = this.parser.parse_scene(document); + const text = document.getText(); + + const hints: InlayHint[] = []; + + for (const match of text.matchAll(/ExtResource\(\s?"?(\w+)\s?"?\)/g)) { + const id = match[1]; + const end = document.positionAt(match.index + match[0].length); + const resource = scene.externalResources[id]; + + const label = `${resource.type}: "${resource.path}"`; + + const hint = new InlayHint(end, label, InlayHintKind.Type); + hint.paddingLeft = true; + hints.push(hint); + } + + for (const match of text.matchAll(/SubResource\(\s?"?(\w+)\s?"?\)/g)) { + const id = match[1]; + const end = document.positionAt(match.index + match[0].length); + const resource = scene.subResources[id]; + + const label = `${resource.type}`; + + const hint = new InlayHint(end, label, InlayHintKind.Type); + hint.paddingLeft = true; + hints.push(hint); + } + + return hints; + } +} diff --git a/src/providers/semantic_tokens.ts b/src/providers/semantic_tokens.ts new file mode 100644 index 0000000..31e479c --- /dev/null +++ b/src/providers/semantic_tokens.ts @@ -0,0 +1,59 @@ +import * as vscode from "vscode"; +import { + Uri, + Position, + Range, + TextDocument, + CancellationToken, + ExtensionContext, + DocumentSemanticTokensProvider, + SemanticTokens, + SemanticTokensLegend, + SemanticTokensBuilder, +} from "vscode"; +import { createLogger } from "../utils"; + +const log = createLogger("providers.tokens"); + +export class GDSemanticTokensProvider implements DocumentSemanticTokensProvider { + private legend = new SemanticTokensLegend( + [ + "nodePath", + "%", + ], + ["test"], + ); + + constructor(private context: ExtensionContext) { + const selector = [ + { language: "gdresource", scheme: "file" }, + { language: "gdscene", scheme: "file" }, + { language: "gdscript", scheme: "file" }, + ]; + + context.subscriptions.push( + vscode.languages.registerDocumentSemanticTokensProvider(selector, this, this.legend), + ); + } + + async provideDocumentSemanticTokens(document: TextDocument, token: CancellationToken): Promise { + log.debug("provideDocumentSemanticTokens"); + const builder = new SemanticTokensBuilder(this.legend); + const text = document.getText(); + + const pattern = /(?<=(?:get_node|has_node|find_node|get_node_or_null|has_node_and_resource)\(\s?)(("|')((?!\2).)*\2)(?=\s?\))/g; + for (const match of text.matchAll(pattern)) { + const r = this.create_range(document, match); + builder.push(r, "nodePath", []); + } + + return builder.build(); + } + + private create_range(document: TextDocument, match: RegExpMatchArray) { + const start = document.positionAt(match.index); + const end = document.positionAt(match.index + match[0].length); + const r = new Range(start, end); + return r; + } +} diff --git a/src/providers/tasks.ts b/src/providers/tasks.ts new file mode 100644 index 0000000..b4a626b --- /dev/null +++ b/src/providers/tasks.ts @@ -0,0 +1,45 @@ +import * as vscode from "vscode"; +import { + Task, + TaskProvider, + TaskScope, + TaskDefinition, + ExtensionContext, +} from "vscode"; +import { createLogger } from "../utils"; + +const log = createLogger("providers.tasks"); + +interface GDTaskDefinition extends TaskDefinition { + task: string; + file?: string; +} + +export class GDTaskProvider implements TaskProvider { + constructor(private context: ExtensionContext) { + context.subscriptions.push( + vscode.tasks.registerTaskProvider("godot", this), + ); + } + + public provideTasks() { + const tasks: Task[] = []; + + const workspaceFolder = vscode.workspace.workspaceFolders[0]; + const taskName = "test"; + const kind: GDTaskDefinition = { + type: "godot", + task: taskName, + }; + const task = new vscode.Task(kind, workspaceFolder, taskName, "godot"); + tasks.push(task); + + return tasks; + } + + public resolveTask(_task: Task) { + log.debug("resolveTask", _task); + + return _task; + } +} diff --git a/src/scene_preview_provider.ts b/src/scene_preview_provider.ts deleted file mode 100644 index 4a13aef..0000000 --- a/src/scene_preview_provider.ts +++ /dev/null @@ -1,339 +0,0 @@ -import { - TreeDataProvider, - EventEmitter, - Event, - TreeView, - ProviderResult, - TreeItem, - TreeItemCollapsibleState, -} from "vscode"; -import path = require("path"); -import fs = require("fs"); -import * as vscode from "vscode"; -import { - get_configuration, - find_file, - set_context, - convert_resource_path_to_uri, - register_command, -} from "./utils"; -import { createLogger } from "./logger"; - -const log = createLogger("scene preview"); - -export class ScenePreviewProvider implements TreeDataProvider { - private root: SceneNode | undefined; - private tree: TreeView; - private scenePreviewPinned = false; - private currentScene = ""; - private externalResources = {}; - - private changeEvent = new EventEmitter(); - - public get onDidChangeTreeData(): Event { - return this.changeEvent.event; - } - - public async refresh() { - if (this.scenePreviewPinned) { - return; - } - - const editor = vscode.window.activeTextEditor; - if (editor) { - let fileName = editor.document.uri.fsPath; - const mode = get_configuration("scenePreview.previewRelatedScenes"); - // attempt to find related scene - if (!fileName.endsWith(".tscn")) { - const searchName = fileName.replace(".gd", ".tscn"); - - if (mode == "anyFolder") { - const relatedScene = await find_file(searchName); - if (!relatedScene) { - return; - } - fileName = relatedScene.fsPath; - } - - if (mode == "sameFolder") { - if (fs.existsSync(searchName)) { - fileName = searchName; - } else { - return; - } - } - if (mode == "off") { - return; - } - } - // don't attempt to parse non-scenes - if (!fileName.endsWith(".tscn")) { - return; - } - // don't reparse the currently selected scene - if (this.currentScene == fileName) { - // TODO: reparse the currentScene if it's changed - // ideas: store a hash? check last modified time? - return; - } - await this.parse_scene(fileName); - this.changeEvent.fire(); - } - } - - constructor() { - this.tree = vscode.window.createTreeView("scenePreview", { - treeDataProvider: this, - }); - - this.tree.onDidChangeSelection(this.tree_selection_changed); - - register_command("scenePreview.pin", this.pin_preview.bind(this)); - register_command("scenePreview.unpin", this.unpin_preview.bind(this)); - register_command("scenePreview.copyNodePath", this.copy_node_path.bind(this)); - register_command("scenePreview.copyResourcePath", this.copy_resource_path.bind(this)); - register_command("scenePreview.openScene", this.open_scene.bind(this)); - register_command("scenePreview.openScript", this.open_script.bind(this)); - register_command("scenePreview.goToDefinition", this.go_to_definition.bind(this)); - - register_command("scenePreview.refresh", () => - this.refresh() - ); - - vscode.window.onDidChangeActiveTextEditor(() => { - vscode.commands.executeCommand("godotTools.scenePreview.refresh"); - }); - - this.refresh(); - } - - private pin_preview() { - this.scenePreviewPinned = true; - set_context("scenePreview.pinned", true); - } - - private unpin_preview() { - this.scenePreviewPinned = false; - set_context("scenePreview.pinned", false); - this.refresh(); - } - - private copy_node_path(item: SceneNode) { - if (item.unique) { - vscode.env.clipboard.writeText("%" + item.label); - return; - } - vscode.env.clipboard.writeText(item.relativePath); - } - - private copy_resource_path(item: SceneNode) { - vscode.env.clipboard.writeText(item.resourcePath); - } - - private async open_scene(item: SceneNode) { - const uri = await convert_resource_path_to_uri(item.resourcePath); - if (uri) { - vscode.window.showTextDocument(uri, { preview: true }); - } - } - - private async open_script(item: SceneNode) { - const id = this.externalResources[item.scriptId].path; - - const uri = await convert_resource_path_to_uri(id); - if (uri) { - vscode.window.showTextDocument(uri, { preview: true }); - } - } - - private async go_to_definition(item: SceneNode) { - const document = await vscode.workspace.openTextDocument(this.currentScene); - const start = document.positionAt(item.position); - const end = document.positionAt(item.position + item.text.length); - const range = new vscode.Range(start, end); - vscode.window.showTextDocument(document, { selection: range }); - } - - private tree_selection_changed(event: vscode.TreeViewSelectionChangeEvent) { - // const item = event.selection[0]; - // log(item.body); - - // const editor = vscode.window.activeTextEditor; - // const range = editor.document.getText() - // editor.revealRange(range) - } - - public async parse_scene(scene: string) { - this.currentScene = scene; - this.tree.message = path.basename(scene); - - const document = await vscode.workspace.openTextDocument(scene); - const text = document.getText(); - - this.externalResources = {}; - - const resourceRegex = /\[ext_resource.*/g; - for (const match of text.matchAll(resourceRegex)) { - const line = match[0]; - const type = line.match(/type="([\w]+)"/)?.[1]; - const path = line.match(/path="([\w.:/]+)"/)?.[1]; - const uid = line.match(/uid="([\w:/]+)"/)?.[1]; - const id = line.match(/id="([\w]+)"/)?.[1]; - - this.externalResources[id] = { - path: path, - type: type, - uid: uid, - id: id, - }; - } - - let root = ""; - let nodes = {}; - let lastNode = null; - - const nodeRegex = /\[node name="([\w]*)"(?: type="([\w]*)")?(?: parent="([\w\/.]*)")?(?: instance=ExtResource\(\s*"?([\w]+)"?\s*\))?\]/g; - for (const match of text.matchAll(nodeRegex)) { - let name = match[1]; - let type = match[2] ? match[2] : "PackedScene"; - let parent = match[3]; - let instance = match[4] ? match[4] : 0; - let _path = ""; - let relativePath = ""; - - if (parent == undefined) { - root = name; - _path = name; - } else if (parent == ".") { - parent = root; - relativePath = name; - _path = parent + "/" + name; - } else { - relativePath = parent + "/" + name; - parent = root + "/" + parent; - _path = parent + "/" + name; - } - if (lastNode) { - lastNode.body = text.slice(lastNode.position, match.index); - lastNode.parse_body(); - } - - let node = new SceneNode(name, type); - node.path = _path; - node.description = type; - node.relativePath = relativePath; - node.parent = parent; - node.text = match[0]; - node.position = match.index; - if (instance) { - if (instance in this.externalResources) { - node.tooltip = this.externalResources[instance].path; - node.resourcePath = this.externalResources[instance].path; - if (['.tscn'].includes(path.extname(node.resourcePath))) { - node.contextValue += "openable"; - } - } - node.contextValue += "hasResourcePath"; - } - if (_path == root) { - this.root = node; - } - if (parent in nodes) { - nodes[parent].children.push(node); - } - nodes[_path] = node; - - lastNode = node; - } - - lastNode.body = text.slice(lastNode.position, text.length); - lastNode.parse_body(); - } - - public getChildren(element?: SceneNode): ProviderResult { - if (!element) { - if (!this.root) { - return Promise.resolve([]); - } else { - return Promise.resolve([this.root]); - } - } else { - return Promise.resolve(element.children); - } - } - - public getTreeItem(element: SceneNode): TreeItem | Thenable { - if (element.children.length > 0) { - element.collapsibleState = TreeItemCollapsibleState.Expanded; - } else { - element.collapsibleState = TreeItemCollapsibleState.None; - } - - return element; - } -} - -export class SceneNode extends TreeItem { - public path: string; - public relativePath: string; - public resourcePath: string; - public parent: string; - public text: string; - public position: number; - public body: string; - public unique: boolean = false; - public hasScript: boolean = false; - public scriptId: string = ''; - public children: SceneNode[] = []; - - constructor( - public label: string, - public className: string, - public collapsibleState?: TreeItemCollapsibleState - ) { - super(label, collapsibleState); - - const iconDir = path.join(__filename, "..", "..", "resources", "godot_icons"); - const iconName = className + '.svg'; - - this.iconPath = { - light: path.join(iconDir, "light", iconName), - dark: path.join(iconDir, "dark", iconName), - }; - } - - public parse_body() { - const lines = this.body.split("\n"); - let newLines = []; - let tags = []; - for (let i = 0; i < lines.length; i++) { - let line = lines[i]; - if (line.startsWith("tile_data")) { - line = "tile_data = PoolIntArray(...)"; - } - if (line.startsWith("unique_name_in_owner = true")) { - tags.push("%"); - this.unique = true; - } - if (line.startsWith("script = ExtResource")) { - tags.push("S"); - this.hasScript = true; - this.scriptId = line.match(/script = ExtResource\(\s*"?([\w]+)"?\s*\)/)[1]; - this.contextValue += "hasScript"; - } - if (line != "") { - newLines.push(line); - } - } - this.body = newLines.join("\n"); - - let prefix = ""; - if (tags.length != 0) { - prefix = tags.join(" ") + " | "; - } - this.description = prefix + this.description; - const content = new vscode.MarkdownString(); - content.appendCodeblock(this.body, "gdresource"); - this.tooltip = content; - } -} diff --git a/src/scene_tools/index.ts b/src/scene_tools/index.ts new file mode 100644 index 0000000..4b1da46 --- /dev/null +++ b/src/scene_tools/index.ts @@ -0,0 +1,3 @@ +export * from "./preview"; +export * from "./parser"; +export * from "./types"; diff --git a/src/scene_tools/parser.ts b/src/scene_tools/parser.ts new file mode 100644 index 0000000..acb9705 --- /dev/null +++ b/src/scene_tools/parser.ts @@ -0,0 +1,164 @@ +import { TextDocument, Uri } from "vscode"; +import { basename, extname } from "path"; +import * as fs from "fs"; +import { SceneNode, Scene } from "./types"; +import { createLogger } from "../utils"; + +const log = createLogger("scenes.parser"); + +export class SceneParser { + private static instance: SceneParser; + public scenes: Map = new Map(); + + constructor() { + if (SceneParser.instance) { + return SceneParser.instance; + } + SceneParser.instance = this; + } + + public parse_scene(document: TextDocument) { + const path = document.uri.fsPath; + const stats = fs.statSync(path); + + if (this.scenes.has(path)) { + const scene = this.scenes.get(path); + + if (scene.mtime == stats.mtimeMs) { + return scene; + } + } + + const scene = new Scene(); + scene.path = path; + scene.mtime = stats.mtimeMs; + scene.title = basename(path); + + this.scenes.set(path, scene); + + const text = document.getText(); + + for (const match of text.matchAll(/\[ext_resource.*/g)) { + const line = match[0]; + const type = line.match(/type="([\w]+)"/)?.[1]; + const path = line.match(/path="([\w.:/]+)"/)?.[1]; + const uid = line.match(/uid="([\w:/]+)"/)?.[1]; + const id = line.match(/ id="?([\w]+)"?/)?.[1]; + + scene.externalResources[id] = { + body: line, + path: path, + type: type, + uid: uid, + id: id, + index: match.index, + line: document.lineAt(document.positionAt(match.index)).lineNumber + 1, + }; + } + + let lastResource = null; + for (const match of text.matchAll(/\[sub_resource.*/g)) { + const line = match[0]; + const type = line.match(/type="([\w]+)"/)?.[1]; + const path = line.match(/path="([\w.:/]+)"/)?.[1]; + const uid = line.match(/uid="([\w:/]+)"/)?.[1]; + const id = line.match(/ id="?([\w]+)"?/)?.[1]; + const resource = { + path: path, + type: type, + uid: uid, + id: id, + index: match.index, + line: document.lineAt(document.positionAt(match.index)).lineNumber + 1, + }; + if (lastResource) { + lastResource.body = text.slice(lastResource.index, match.index).trimEnd(); + } + + scene.subResources[id] = resource; + lastResource = resource; + } + + let root = ""; + const nodes = {}; + let lastNode = null; + + const nodeRegex = /\[node name="([\w]*)"(?: type="([\w]*)")?(?: parent="([\w\/.]*)")?(?: instance=ExtResource\(\s*"?([\w]+)"?\s*\))?\]/g; + for (const match of text.matchAll(nodeRegex)) { + const name = match[1]; + const type = match[2] ? match[2] : "PackedScene"; + let parent = match[3]; + const instance = match[4] ? match[4] : 0; + let _path = ""; + let relativePath = ""; + + if (parent == undefined) { + root = name; + _path = name; + } else if (parent == ".") { + parent = root; + relativePath = name; + _path = parent + "/" + name; + } else { + relativePath = parent + "/" + name; + parent = root + "/" + parent; + _path = parent + "/" + name; + } + if (lastNode) { + lastNode.body = text.slice(lastNode.position, match.index); + lastNode.parse_body(); + } + if (lastResource) { + lastResource.body = text.slice(lastResource.index, match.index).trimEnd(); + lastResource = null; + } + + const node = new SceneNode(name, type); + node.path = _path; + node.description = type; + node.relativePath = relativePath; + node.parent = parent; + node.text = match[0]; + node.position = match.index; + node.resourceUri = Uri.from({ + scheme: "godot", + path: _path, + }); + scene.nodes.set(_path, node); + + if (instance) { + if (instance in scene.externalResources) { + node.tooltip = scene.externalResources[instance].path; + node.resourcePath = scene.externalResources[instance].path; + if ([".tscn"].includes(extname(node.resourcePath))) { + node.contextValue += "openable"; + } + } + node.contextValue += "hasResourcePath"; + } + if (_path == root) { + scene.root = node; + } + if (parent in nodes) { + nodes[parent].children.push(node); + } + nodes[_path] = node; + + lastNode = node; + } + + if (lastNode) { + lastNode.body = text.slice(lastNode.position, text.length); + lastNode.parse_body(); + } + + const resourceRegex = /\[resource\]/g; + for (const match of text.matchAll(resourceRegex)) { + if (lastResource) { + lastResource.body = text.slice(lastResource.index, match.index).trimEnd(); + lastResource = null; + } + } + return scene; + } +} diff --git a/src/scene_tools/preview.ts b/src/scene_tools/preview.ts new file mode 100644 index 0000000..aab4a9c --- /dev/null +++ b/src/scene_tools/preview.ts @@ -0,0 +1,289 @@ +import * as vscode from "vscode"; +import { + TreeDataProvider, + TreeDragAndDropController, + ExtensionContext, + EventEmitter, + Event, + TreeView, + ProviderResult, + TreeItem, + TreeItemCollapsibleState, + window, + languages, + Uri, + CancellationToken, + FileDecoration, + DocumentDropEditProvider, + workspace, +} from "vscode"; +import * as fs from "fs"; +import { + get_configuration, + find_file, + set_context, + convert_resource_path_to_uri, + register_command, + createLogger, + make_docs_uri, +} from "../utils"; +import { SceneParser } from "./parser"; +import { SceneNode, Scene } from "./types"; + +const log = createLogger("scenes.preview"); + +export class ScenePreviewProvider implements TreeDataProvider, TreeDragAndDropController, DocumentDropEditProvider { + public dropMimeTypes = []; + public dragMimeTypes = []; + private tree: TreeView; + private scenePreviewPinned = false; + private currentScene = ""; + public parser = new SceneParser(); + public scene: Scene; + watcher = workspace.createFileSystemWatcher("**/*.tscn"); + uniqueDecorator = new UniqueDecorationProvider(this); + scriptDecorator = new ScriptDecorationProvider(this); + + private changeTreeEvent = new EventEmitter(); + public get onDidChangeTreeData(): Event { + return this.changeTreeEvent.event; + } + + constructor(private context: ExtensionContext) { + this.tree = vscode.window.createTreeView("scenePreview", { + treeDataProvider: this, + dragAndDropController: this + }); + + const selector = [ + { language: "csharp", scheme: "file" }, + { language: "gdscript", scheme: "file" }, + ]; + context.subscriptions.push( + register_command("scenePreview.pin", this.pin_preview.bind(this)), + register_command("scenePreview.unpin", this.unpin_preview.bind(this)), + register_command("scenePreview.copyNodePath", this.copy_node_path.bind(this)), + register_command("scenePreview.copyResourcePath", this.copy_resource_path.bind(this)), + register_command("scenePreview.openScene", this.open_scene.bind(this)), + register_command("scenePreview.openScript", this.open_script.bind(this)), + register_command("scenePreview.goToDefinition", this.go_to_definition.bind(this)), + register_command("scenePreview.openDocumentation", this.open_documentation.bind(this)), + register_command("scenePreview.refresh", this.refresh.bind(this)), + window.onDidChangeActiveTextEditor(this.refresh.bind(this)), + window.registerFileDecorationProvider(this.uniqueDecorator), + window.registerFileDecorationProvider(this.scriptDecorator), + languages.registerDocumentDropEditProvider(selector, this), + this.watcher.onDidChange(this.on_file_changed.bind(this)), + this.watcher, + this.tree.onDidChangeSelection(this.tree_selection_changed), + this.tree, + ); + + this.refresh(); + } + + public handleDrag(source: readonly SceneNode[], data: vscode.DataTransfer, token: vscode.CancellationToken): void | Thenable { + data.set("godot/path", new vscode.DataTransferItem(source[0].relativePath)); + data.set("godot/class", new vscode.DataTransferItem(source[0].className)); + } + + public provideDocumentDropEdits(document: vscode.TextDocument, position: vscode.Position, dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): vscode.ProviderResult { + const path = dataTransfer.get("godot/path").value; + const className = dataTransfer.get("godot/class").value; + + if (path && className) { + if (document.languageId === "gdscript") { + return new vscode.DocumentDropEdit(`$${path}`); + } + if (document.languageId === "csharp") { + return new vscode.DocumentDropEdit(`GetNode<${className}>("${path}")`); + } + } + } + + public async on_file_changed(uri: vscode.Uri) { + if (!uri.fsPath.endsWith(".tscn")) { + return; + } + setTimeout(async () => { + if (uri.fsPath == this.currentScene) { + this.refresh(); + } else { + const document = await vscode.workspace.openTextDocument(uri); + this.parser.parse_scene(document); + } + }, 20); + } + + public async refresh() { + if (this.scenePreviewPinned) { + return; + } + + const editor = vscode.window.activeTextEditor; + if (editor) { + let fileName = editor.document.uri.fsPath; + const mode = get_configuration("scenePreview.previewRelatedScenes"); + // attempt to find related scene + if (!fileName.endsWith(".tscn")) { + const searchName = fileName.replace(".gd", ".tscn").replace(".cs", ".tscn"); + + if (mode == "anyFolder") { + const relatedScene = await find_file(searchName); + if (!relatedScene) { + return; + } + fileName = relatedScene.fsPath; + } + + if (mode == "sameFolder") { + if (fs.existsSync(searchName)) { + fileName = searchName; + } else { + return; + } + } + if (mode == "off") { + return; + } + } + // don't attempt to parse non-scenes + if (!fileName.endsWith(".tscn")) { + return; + } + + const document = await vscode.workspace.openTextDocument(fileName); + this.scene = this.parser.parse_scene(document); + + this.tree.message = this.scene.title; + this.currentScene = fileName; + + this.changeTreeEvent.fire(); + } + } + + private pin_preview() { + this.scenePreviewPinned = true; + set_context("scenePreview.pinned", true); + } + + private unpin_preview() { + this.scenePreviewPinned = false; + set_context("scenePreview.pinned", false); + this.refresh(); + } + + private copy_node_path(item: SceneNode) { + if (item.unique) { + vscode.env.clipboard.writeText("%" + item.label); + return; + } + vscode.env.clipboard.writeText(item.relativePath); + } + + private copy_resource_path(item: SceneNode) { + vscode.env.clipboard.writeText(item.resourcePath); + } + + private async open_scene(item: SceneNode) { + const uri = await convert_resource_path_to_uri(item.resourcePath); + if (uri) { + vscode.window.showTextDocument(uri, { preview: true }); + } + } + + private async open_script(item: SceneNode) { + const path = this.scene.externalResources[item.scriptId].path; + + const uri = await convert_resource_path_to_uri(path); + if (uri) { + vscode.window.showTextDocument(uri, { preview: true }); + } + } + + private async go_to_definition(item: SceneNode) { + const document = await vscode.workspace.openTextDocument(this.currentScene); + const start = document.positionAt(item.position); + const end = document.positionAt(item.position + item.text.length); + const range = new vscode.Range(start, end); + vscode.window.showTextDocument(document, { selection: range }); + } + + private async open_documentation(item: SceneNode) { + vscode.commands.executeCommand("vscode.open", make_docs_uri(item.className)); + } + + private tree_selection_changed(event: vscode.TreeViewSelectionChangeEvent) { + // const item = event.selection[0]; + // log(item.body); + + // const editor = vscode.window.activeTextEditor; + // const range = editor.document.getText() + // editor.revealRange(range) + } + + public getChildren(element?: SceneNode): ProviderResult { + if (!element) { + if (!this.scene?.root) { + return Promise.resolve([]); + } else { + return Promise.resolve([this.scene?.root]); + } + } else { + return Promise.resolve(element.children); + } + } + + public getTreeItem(element: SceneNode): TreeItem | Thenable { + if (element.children.length > 0) { + element.collapsibleState = TreeItemCollapsibleState.Expanded; + } else { + element.collapsibleState = TreeItemCollapsibleState.None; + } + + this.uniqueDecorator.changeDecorationsEvent.fire(element.resourceUri); + this.scriptDecorator.changeDecorationsEvent.fire(element.resourceUri); + + return element; + } +} + +class UniqueDecorationProvider implements vscode.FileDecorationProvider { + public changeDecorationsEvent = new EventEmitter(); + get onDidChangeFileDecorations(): Event { + return this.changeDecorationsEvent.event; + } + + constructor(private previewer: ScenePreviewProvider) { } + + provideFileDecoration(uri: Uri, token: CancellationToken): FileDecoration | undefined { + if (uri.scheme !== "godot") return undefined; + + const node = this.previewer.scene?.nodes.get(uri.path); + if (node && node.unique) { + return { + badge: "%", + }; + } + } +} + +class ScriptDecorationProvider implements vscode.FileDecorationProvider { + public changeDecorationsEvent = new EventEmitter(); + get onDidChangeFileDecorations(): Event { + return this.changeDecorationsEvent.event; + } + + constructor(private previewer: ScenePreviewProvider) { } + + provideFileDecoration(uri: Uri, token: CancellationToken): FileDecoration | undefined { + if (uri.scheme !== "godot") return undefined; + + const node = this.previewer.scene?.nodes.get(uri.path); + if (node && node.hasScript) { + return { + badge: "S", + }; + } + } +} diff --git a/src/scene_tools/types.ts b/src/scene_tools/types.ts new file mode 100644 index 0000000..c43c415 --- /dev/null +++ b/src/scene_tools/types.ts @@ -0,0 +1,84 @@ +import { + TreeItem, + TreeItemCollapsibleState, + MarkdownString, +} from "vscode"; +import * as path from "path"; +import { get_extension_uri } from "../utils"; + +const iconDir = get_extension_uri("resources", "godot_icons").fsPath; + +export class SceneNode extends TreeItem { + public path: string; + public relativePath: string; + public resourcePath: string; + public parent: string; + public text: string; + public position: number; + public body: string; + public unique: boolean = false; + public hasScript: boolean = false; + public scriptId: string = ""; + public children: SceneNode[] = []; + + constructor( + public label: string, + public className: string, + public collapsibleState?: TreeItemCollapsibleState + ) { + super(label, collapsibleState); + + const iconName = className + ".svg"; + + this.iconPath = { + light: path.join(iconDir, "light", iconName), + dark: path.join(iconDir, "dark", iconName), + }; + } + + public parse_body() { + const lines = this.body.split("\n"); + const newLines = []; + for (let i = 0; i < lines.length; i++) { + let line = lines[i]; + if (line.startsWith("tile_data")) { + line = "tile_data = PoolIntArray(...)"; + } + if (line.startsWith("unique_name_in_owner = true")) { + this.unique = true; + } + if (line.startsWith("script = ExtResource")) { + this.hasScript = true; + this.scriptId = line.match(/script = ExtResource\(\s*"?([\w]+)"?\s*\)/)[1]; + this.contextValue += "hasScript"; + } + if (line != "") { + newLines.push(line); + } + } + this.body = newLines.join("\n"); + const content = new MarkdownString(); + content.appendCodeblock(this.body, "gdresource"); + this.tooltip = content; + } +} + +export interface GDResource { + path: string; + type: string; + id: string; + uid: string; + body?: string; + index: number; + line: number; +} + +export class Scene { + public path: string; + public title: string; + public mtime: number; + public root: SceneNode | undefined; + public externalResources: {[key: string]: GDResource} = {}; + public subResources: {[key: string]: GDResource} = {}; + public nodes: Map = new Map(); +} diff --git a/src/utils.ts b/src/utils/index.ts similarity index 70% rename from src/utils.ts rename to src/utils/index.ts index a8c8bc4..507127c 100644 --- a/src/utils.ts +++ b/src/utils/index.ts @@ -3,43 +3,14 @@ import * as path from "path"; import * as fs from "fs"; import { AddressInfo, createServer } from "net"; -const EXTENSION_PREFIX = "godotTools"; - -export function get_configuration(name: string, defaultValue?: any) { - const configValue = vscode.workspace.getConfiguration(EXTENSION_PREFIX).get(name, null); - if (defaultValue && configValue === null) { - return defaultValue; - } - return configValue; -} - -export function set_configuration(name: string, value: any) { - return vscode.workspace.getConfiguration(EXTENSION_PREFIX).update(name, value); -} +export * from "./logger"; +export * from "./settings_updater"; +export * from "./vscode_utils"; export function is_debug_mode(): boolean { return process.env.VSCODE_DEBUG_MODE === "true"; } -const CONTEXT_PREFIX = `${EXTENSION_PREFIX}.context.`; - -export function set_context(name: string, value: any) { - return vscode.commands.executeCommand("setContext", CONTEXT_PREFIX + name, value); -} - -export function register_command(command: string, callback: (...args: any[]) => any, thisArg?: any): vscode.Disposable { - return vscode.commands.registerCommand(`${EXTENSION_PREFIX}.${command}`, callback); -} - -export function get_word_under_cursor(): string { - const activeEditor = vscode.window.activeTextEditor; - const document = activeEditor.document; - const curPos = activeEditor.selection.active; - const wordRange = document.getWordRangeAtPosition(curPos); - const symbolName = document.getText(wordRange); - return symbolName; -} - export let projectVersion = undefined; export async function get_project_version(): Promise { @@ -75,7 +46,7 @@ export async function get_project_dir() { let projectFile = ""; if (vscode.workspace.workspaceFolders != undefined) { const files = await vscode.workspace.findFiles("**/project.godot"); - if (files) { + if (files[0]) { projectFile = files[0].fsPath; if (fs.existsSync(projectFile) && fs.statSync(projectFile).isFile()) { dir = path.dirname(projectFile); @@ -121,7 +92,7 @@ export async function find_file(file: string): Promise { export async function convert_resource_path_to_uri(resPath: string): Promise { const files = await vscode.workspace.findFiles("**/project.godot"); - if (!files) { + if (!files || files[0] === undefined) { return null; } const dir = files[0].fsPath.replace("project.godot", ""); @@ -137,3 +108,11 @@ export async function get_free_port(): Promise { }); }); } + +export function make_docs_uri(path: string, fragment?: string) { + return vscode.Uri.from({ + scheme: "gddoc", + path: path + ".gddoc", + fragment: fragment, + }); +} diff --git a/src/logger.ts b/src/utils/logger.ts similarity index 98% rename from src/logger.ts rename to src/utils/logger.ts index c70d55c..7edb237 100644 --- a/src/logger.ts +++ b/src/utils/logger.ts @@ -1,5 +1,5 @@ import { LogOutputChannel, window } from "vscode"; -import { is_debug_mode } from "./utils"; +import { is_debug_mode } from "."; export enum LOG_LEVEL { SILENT, diff --git a/src/utils/prompts.ts b/src/utils/prompts.ts index e4ed9f8..85ee656 100644 --- a/src/utils/prompts.ts +++ b/src/utils/prompts.ts @@ -1,5 +1,5 @@ import * as vscode from "vscode"; -import { set_configuration } from "../utils"; +import { set_configuration } from "."; export function prompt_for_reload() { const message = "Reload VSCode to apply settings"; diff --git a/src/settings_updater.ts b/src/utils/settings_updater.ts similarity index 73% rename from src/settings_updater.ts rename to src/utils/settings_updater.ts index 13d176e..60cbbc8 100644 --- a/src/settings_updater.ts +++ b/src/utils/settings_updater.ts @@ -2,23 +2,21 @@ import * as vscode from "vscode"; const OLD_SETTINGS_CONVERSIONS = [ ["godot_tools.editor_path", "godotTools.editorPath.godot3"], + ["godot_tools.editor_path", "godotTools.editorPath.godot4"], ["godot_tools.gdscript_lsp_server_protocol", "godotTools.lsp.serverProtocol"], ["godot_tools.gdscript_lsp_server_host", "godotTools.lsp.serverHost"], ["godot_tools.gdscript_lsp_server_port", "godotTools.lsp.serverPort"], ["godot_tools.reconnect_automatically", "godotTools.lsp.autoReconnect.enabled"], ["godot_tools.reconnect_cooldown", "godotTools.lsp.autoReconnect.cooldown"], ["godot_tools.reconnect_attempts", "godotTools.lsp.autoReconnect.attempts"], - ["godot_tools.force_visible_collision_shapes", "godotTools.debugger.forceVisibleCollisionShapes"], - ["godot_tools.force_visible_nav_mesh", "godotTools.debugger.forceVisibleNavMesh"], - ["godot_tools.native_symbol_placement", "godotTools.documentation.newTabPlacement"], ["godot_tools.scenePreview.previewRelatedScenes", "godotTools.scenePreview.previewRelatedScenes"] ]; export function updateOldStyleSettings() { - let configuration = vscode.workspace.getConfiguration(); + const configuration = vscode.workspace.getConfiguration(); let settings_changed = false; - for (let [old_style_key, new_style_key] of OLD_SETTINGS_CONVERSIONS) { - let value = configuration.get(old_style_key); + for (const [old_style_key, new_style_key] of OLD_SETTINGS_CONVERSIONS) { + const value = configuration.get(old_style_key); if (value === undefined) { continue; } @@ -29,9 +27,9 @@ export function updateOldStyleSettings() { // Only show this message if things have actually changed, to prevent users who // are just reinstalling the extension from receiveing it. vscode.window.showInformationMessage( - `Settings from godot-tools version <1.4.0 have been updated to the new format. - Please view the changelog for version 1.4.0 for more information.`, - 'Okay' + `Settings from godot-tools version <2.0.0 have been updated to the new format. + Please view the changelog for version 2.0.0 for more information.`, + "Okay" ); } } @@ -41,17 +39,17 @@ export function updateOldStyleSettings() { * which persists across restarts & updates. */ export function updateStoredVersion(context: vscode.ExtensionContext) { - const syncedVersion: string = vscode.extensions.getExtension(context.extension.id)! + const syncedVersion: string = vscode.extensions.getExtension(context.extension.id) .packageJSON.version; context.globalState.update("previousVersion", syncedVersion); } /** - * Checks if settings should try and be converted from the <1.4.0 style. + * Checks if settings should try and be converted from the <2.0.0 style. * * Returns `true` if the extension has no value saved for `localVersion` * in `context.globalState`, meaning it was either just installed, - * or updated from a version <1.4.0. Otherwise, returns `false`. + * or updated from a version <2.0.0. Otherwise, returns `false`. */ export function shouldUpdateSettings(context: vscode.ExtensionContext): boolean { const localVersion: string | undefined = context.globalState.get("previousVersion"); diff --git a/src/utils/subspawn.ts b/src/utils/subspawn.ts index ca48eab..4249f2e 100644 --- a/src/utils/subspawn.ts +++ b/src/utils/subspawn.ts @@ -6,7 +6,7 @@ I had to vendor this library to fix the API in a couple places. */ import { ChildProcess, execSync, spawn, SpawnOptions } from "child_process"; -import { createLogger } from "../logger"; +import { createLogger } from "."; const log = createLogger("subspawn"); diff --git a/src/utils/vscode_utils.ts b/src/utils/vscode_utils.ts new file mode 100644 index 0000000..92e0ee1 --- /dev/null +++ b/src/utils/vscode_utils.ts @@ -0,0 +1,30 @@ +import * as vscode from "vscode"; +import { globals } from "../extension"; + +const EXTENSION_PREFIX = "godotTools"; + +export function get_configuration(name: string, defaultValue?: any) { + const configValue = vscode.workspace.getConfiguration(EXTENSION_PREFIX).get(name, null); + if (defaultValue && configValue === null) { + return defaultValue; + } + return configValue; +} + +export function set_configuration(name: string, value: any) { + return vscode.workspace.getConfiguration(EXTENSION_PREFIX).update(name, value); +} + +const CONTEXT_PREFIX = `${EXTENSION_PREFIX}.context.`; + +export function set_context(name: string, value: any) { + return vscode.commands.executeCommand("setContext", CONTEXT_PREFIX + name, value); +} + +export function register_command(command: string, callback: (...args: any[]) => any, thisArg?: any): vscode.Disposable { + return vscode.commands.registerCommand(`${EXTENSION_PREFIX}.${command}`, callback); +} + +export function get_extension_uri(...paths: string[]) { + return vscode.Uri.joinPath(vscode.extensions.getExtension("geequlim.godot-tools").extensionUri, ...paths ?? ""); +} diff --git a/syntaxes/GDResource.tmLanguage.json b/syntaxes/GDResource.tmLanguage.json index c0062c4..9592980 100644 --- a/syntaxes/GDResource.tmLanguage.json +++ b/syntaxes/GDResource.tmLanguage.json @@ -1,325 +1,193 @@ { - "scopeName": "source.gdresource", - "uuid": "e076faa2-3c52-42fa-a8e6-9a7c453c1a5b", - "patterns": [ - { - "include": "#embedded_shader" - }, - { - "include": "#embedded_gdscript" - }, - { - "include": "#comment" - }, - { - "include": "#heading" - }, - { - "include": "#key_value" - } - ], - "repository": { - "comment": { - "captures": { - "1": { - "name": "punctuation.definition.comment.gdresource" - } - }, - "match": "(;).*$\\n?", - "name": "comment.line.gdresource" - }, - "embedded_shader": { - "name": "meta.embedded.block.gdshader", - "begin": "(code) = \"", - "end": "\"", - "beginCaptures": { - "1": { - "name": "variable.other.property.gdresource" - } - }, - "patterns": [ - { - "include": "source.gdshader" - } - ] - }, - "embedded_gdscript": { - "comment": "meta.embedded.block.gdscript", - "begin": "(script/source) = \"", - "end": "\"", - "beginCaptures": { - "1": { - "name": "variable.other.property.gdresource" - } - }, - "patterns": [ - { - "include": "source.gdscript" - } - ] - }, - "heading": { - "begin": "\\[([a-z_]*)\\s?", - "beginCaptures": { - "1": { - "name": "keyword.control.gdresource" - } - }, - "end": "\\]", - "patterns": [ - { - "include": "#heading_properties" - }, - { - "include": "#data" - } - ] - }, - "heading_properties": { - "patterns": [ - { - "name": "invalid.deprecated.noValue.gdresource", - "match": "(\\s*[A-Za-z_\\-][A-Za-z0-9_\\-]*\\s*=)(?=\\s*$)" - }, - { - "begin": "\\s*([A-Za-z_-][^\\s]*|\".+\"|'.+'|[0-9]+)\\s*(=)\\s*", - "beginCaptures": { - "1": { - "name": "variable.other.property.gdresource" - }, - "2": { - "name": "punctuation.definition.keyValue.gdresource" - } - }, - "end": "($|(?==)|\\,?|\\s*(?=\\}))", - "patterns": [ - { - "include": "#data" - } - ] - } - ] - }, - "key_value": { - "patterns": [ - { - "name": "invalid.deprecated.noValue.gdresource", - "match": "(\\s*[A-Za-z_\\-][A-Za-z0-9_\\-]*\\s*=)(?=\\s*$)" - }, - { - "begin": "\\s*([A-Za-z_-][^\\s]*|\".+\"|'.+'|[0-9]+)\\s*(=)\\s*", - "beginCaptures": { - "1": { - "name": "variable.other.property.gdresource" - }, - "2": { - "name": "punctuation.definition.keyValue.gdresource" - } - }, - "end": "($|(?==)|\\,|\\s*(?=\\}))", - "patterns": [ - { - "include": "#data" - } - ] - } - ] - }, - "data": { - "patterns": [ - { - "include": "#comment" - }, - { - "begin": "(?=|==|<|>|!=", - "name": "keyword.operator.comparison.gdscript" - }, - "arithmetic_op": { - "match": "\\+=|-=|\\*=|/=|%=|&=|\\|=|\\*|/|%|\\+|-|<<|>>|&|\\||\\^|~", - "name": "keyword.operator.arithmetic.gdscript" - }, - "assignment_op": { - "match": "=", - "name": "keyword.operator.assignment.gdscript" - }, - "control_flow": { - "match": "\\b(?:if|elif|else|for|while|break|continue|pass|return|match|yield|await)\\b", - "name": "keyword.control.gdscript" - }, - "keywords": { - "match": "\\b(?:class|class_name|extends|is|onready|tool|static|export|as|void|enum|preload|assert|breakpoint|rpc|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|trait|namespace)\\b", - "name": "keyword.language.gdscript" - }, - "letter": { - "match": "\\b(?:true|false|null)\\b", - "name": "constant.language.gdscript" - }, - "numbers": { - "patterns": [ - { - "match": "\\b(?:0b[01_]+)\\b", - "name": "constant.numeric.integer.binary.gdscript" - }, - { - "match": "\\b(?:0x[0-9A-Fa-f_]+)\\b", - "name": "constant.numeric.integer.hexadecimal.gdscript" - }, - { - "match": "\\b(?:([0-9_]+\\.[0-9_]*(e[\\-\\+]?[0-9_]+)?))\\b", - "name": "constant.numeric.float.gdscript" - }, - { - "match": "\\b(?:(\\.[0-9_]+(e[\\-\\+]?[0-9_]+)?))\\b", - "name": "constant.numeric.float.gdscript" - }, - { - "match": "\\b(?:([0-9_]+e[\\-\\+]?\\[0-9_]))\\b", - "name": "constant.numeric.float.gdscript" - }, - { - "match": "\\b[0-9_]+\\b", - "name": "constant.numeric.integer.gdscript" - } - ] - }, - "variable_definition": { - "begin": "\\b(?:(var)|(const))\\s+([a-zA-Z_]\\w*)\\s*", - "end": "$|;", - "beginCaptures": { - "1": { - "name": "storage.type.var.gdscript" - }, - "2": { - "name": "storage.type.const.gdscript" - }, - "3": { - "name": "variable.other.gdscript" - } - }, - "patterns": [ - { - "match": "(:)\\s*([a-zA-Z_]\\w*)?", - "captures": { - "1": { - "name": "punctuation.separator.annotation.gdscript" - }, - "2": { - "name": "entity.name.type.class.gdscript" - } - } - }, - { - "match": "=(?!=)", - "name": "keyword.operator.assignment.gdscript" - }, - { - "match": "(setget)\\s+([a-zA-Z_]\\w*)(?:[,]\\s*([a-zA-Z_]\\w*))?", - "captures": { - "1": { - "name": "storage.type.const.gdscript" - }, - "2": { - "name": "entity.name.function.gdscript" - }, - "3": { - "name": "entity.name.function.gdscript" - } - } - }, - { - "include": "#base_expression" - }, - { - "include": "#letter" - }, - { - "include": "#any_variable" - }, - { - "include": "#any_property" - }, - { - "include": "#keywords" - } - ] - }, - "getter_setter_godot4": { - "patterns": [ - { - "match": "\\b(get):", - "captures": { - "1": { - "name": "entity.name.function.gdscript" - } - } - }, - { - "name": "meta.function.gdscript", - "begin": "(?x) \\s+\n (set) \\s*\n (?=\\()", - "end": "(:|(?=[#'\"\\n]))", - "beginCaptures": { - "1": { - "name": "entity.name.function.gdscript" - } - }, - "patterns": [ - { - "include": "#parameters" - }, - { - "include": "#line_continuation" - }, - { - "match": "\\s*(\\-\\>)\\s*([a-zA-Z_]\\w*)\\s*\\:", - "captures": { - "1": {}, - "2": { - "name": "entity.name.type.class.gdscript" - } - } - } - ] - } - ] - }, - "class_definition": { - "captures": { - "1": { - "name": "entity.name.type.class.gdscript" - }, - "2": { - "name": "class.other.gdscript" - } - }, - "match": "(?<=^class)\\s+([a-zA-Z_]\\w*)\\s*(?=:)" - }, - "class_new": { - "captures": { - "1": { - "name": "entity.name.type.class.gdscript" - }, - "2": { - "name": "storage.type.new.gdscript" - } - }, - "match": "\\b([a-zA-Z_]\\w*).(new)\\(" - }, - "class_is": { - "captures": { - "1": { - "name": "storage.type.is.gdscript" - }, - "2": { - "name": "entity.name.type.class.gdscript" - } - }, - "match": "\\s+(is)\\s+([a-zA-Z_]\\w*)" - }, - "class_enum": { - "captures": { - "1": { - "name": "entity.name.type.class.gdscript" - }, - "2": { - "name": "constant.language.gdscript" - } - }, - "match": "\\b([A-Z][a-zA-Z_0-9]*)\\.([A-Z_0-9]+)" - }, - "class_name": { - "captures": { - "1": { - "name": "entity.name.type.class.gdscript" - }, - "2": { - "name": "class.other.gdscript" - } - }, - "match": "(?<=class_name)\\s+([a-zA-Z_]\\w*(\\.([a-zA-Z_]\\w*))?)" - }, - "extends": { - "match": "(?<=extends)\\s+[a-zA-Z_]\\w*(\\.([a-zA-Z_]\\w*))?", - "name": "entity.other.inherited-class.gdscript" - }, - "builtin_func": { - "match": "(?)\\s*([a-zA-Z_]\\w*)\\s*\\:", - "captures": { - "1": {}, - "2": { - "name": "entity.name.type.class.gdscript" - } - } - } - ] - }, - "lambda_declaration": { - "name": "meta.function.gdscript", - "begin": "(func)(?=\\()", - "end": "(:|(?=[#'\"\\n]))", - "beginCaptures": { - "1": { - "name": "storage.type.function.gdscript" - }, - "2": { - "name": "entity.name.function.gdscript" - } - }, - "patterns": [ - { - "include": "#parameters" - }, - { - "include": "#line_continuation" - } - ] - }, - "function_declaration": { - "name": "meta.function.gdscript", - "begin": "(?x) \\s*\n (func) \\s+\n ([a-zA-Z_]\\w*) \\s*\n (?=\\()", - "end": "((:)|(?=[#'\"\\n]))", - "beginCaptures": { - "1": { - "name": "storage.type.function.gdscript" - }, - "2": { - "name": "entity.name.function.gdscript" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.section.function.begin.gdscript" - } - }, - "patterns": [ - { - "include": "#parameters" - }, - { - "include": "#line_continuation" - }, - { - "match": "\\s*(?:\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:", - "captures": { - "1": { - "name": "keyword.language.void.gdscript" - }, - "2": { - "name": "entity.name.type.class.gdscript" - } - } - }, - { - "include": "#base_expression" - } - ] - }, - "function_keyword": { - "match": "func", - "name": "keyword.language.gdscript" - }, - "parameters": { - "name": "meta.function.parameters.gdscript", - "begin": "(\\()", - "end": "(\\))", - "beginCaptures": { - "1": { - "name": "punctuation.definition.parameters.begin.gdscript" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.definition.parameters.end.gdscript" - } - }, - "patterns": [ - { - "include": "#annotated_parameter" - }, - { - "match": "(?x)\n ([a-zA-Z_]\\w*)\n \\s* (?: (,) | (?=[)#\\n=]))\n", - "captures": { - "1": { - "name": "variable.parameter.function.language.gdscript" - }, - "2": { - "name": "punctuation.separator.parameters.gdscript" - } - } - }, - { - "include": "#comment" - }, - { - "include": "#loose_default" - } - ] - }, - "loose_default": { - "begin": "(=)", - "end": "(,)|(?=\\))", - "beginCaptures": { - "1": { - "name": "keyword.operator.gdscript" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.separator.parameters.gdscript" - } - }, - "patterns": [ - { - "include": "#base_expression" - } - ] - }, - "annotated_parameter": { - "begin": "(?x)\n \\b\n ([a-zA-Z_]\\w*) \\s* (:)\n", - "end": "(,)|(?=\\))", - "beginCaptures": { - "1": { - "name": "variable.parameter.function.language.gdscript" - }, - "2": { - "name": "punctuation.separator.annotation.gdscript" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.separator.parameters.gdscript" - } - }, - "patterns": [ - { - "include": "#base_expression" - }, - { - "name": "keyword.operator.assignment.gdscript", - "match": "=(?!=)" - } - ] - }, - "line_continuation": { - "patterns": [ - { - "match": "(\\\\)\\s*(\\S.*$\\n?)", - "captures": { - "1": { - "name": "punctuation.separator.continuation.line.gdscript" - }, - "2": { - "name": "invalid.illegal.line.continuation.gdscript" - } - } - }, - { - "begin": "(\\\\)\\s*$\\n?", - "end": "(?x)\n (?=^\\s*$)\n |\n (?! (\\s* [rR]? (\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))\n |\n (\\G $) (?# '\\G' is necessary for ST)\n )\n", - "beginCaptures": { - "1": { - "name": "punctuation.separator.continuation.line.gdscript" - } - }, - "patterns": [ - { - "include": "#base_expression" - } - ] - } - ] - }, - "any_method": { - "match": "\\b([A-Za-z_]\\w*)\\b(?=\\s*(?:[(]))", - "name": "support.function.any-method.gdscript" - }, - "any_variable": { - "match": "\\b(?=|==|<|>|!=", + "name": "keyword.operator.comparison.gdscript" + }, + "arithmetic_op": { + "match": "\\+=|-=|\\*=|/=|%=|&=|\\|=|\\*|/|%|\\+|-|<<|>>|&|\\||\\^|~|!", + "name": "keyword.operator.arithmetic.gdscript" + }, + "assignment_op": { + "match": "=", + "name": "keyword.operator.assignment.gdscript" + }, + "control_flow": { + "match": "\\b(?:if|elif|else|while|break|continue|pass|return|match|yield|await)\\b", + "name": "keyword.control.gdscript" + }, + "keywords": { + "match": "\\b(?:class|class_name|extends|is|onready|tool|static|export|as|void|enum|preload|assert|breakpoint|rpc|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|trait|namespace)\\b", + "name": "keyword.language.gdscript" + }, + "letter": { + "match": "\\b(?:true|false|null)\\b", + "name": "constant.language.gdscript" + }, + "numbers": { + "patterns": [ + { + "match": "0b[01_]+", + "name": "constant.numeric.integer.binary.gdscript" + }, + { + "match": "0x[0-9A-Fa-f_]+", + "name": "constant.numeric.integer.hexadecimal.gdscript" + }, + { + "match": "[-]?([0-9_]+\\.[0-9_]*(e[\\-\\+]?[0-9_]+)?)", + "name": "constant.numeric.float.gdscript" + }, + { + "match": "[-]?(\\.[0-9_]+(e[\\-\\+]?[0-9_]+)?)", + "name": "constant.numeric.float.gdscript" + }, + { + "match": "[-]?([0-9_]+e[\\-\\+]?\\[0-9_])", + "name": "constant.numeric.float.gdscript" + }, + { + "match": "[-]?[0-9_]+", + "name": "constant.numeric.integer.gdscript" + } + ] + }, + "variable_definition": { + "begin": "\\b(?:(var)|(const))\\s+([a-zA-Z_]\\w*)\\s*", + "end": "$|;", + "beginCaptures": { + "1": { "name": "keyword.language.gdscript storage.type.var.gdscript" }, + "2": { "name": "keyword.language.gdscript storage.type.const.gdscript" }, + "3": { "name": "variable.other.gdscript" } + }, + "patterns": [ + { + "match": "(:)\\s*([a-zA-Z_]\\w*)?", + "captures": { + "1": { "name": "punctuation.separator.annotation.gdscript" }, + "2": { "name": "entity.name.type.class.gdscript" } + } + }, + { + "match": "=(?!=)", + "name": "keyword.operator.assignment.gdscript" + }, + { + "match": "(setget)\\s+([a-zA-Z_]\\w*)(?:[,]\\s*([a-zA-Z_]\\w*))?", + "captures": { + "1": { "name": "keyword.language.gdscript storage.type.const.gdscript" }, + "2": { "name": "entity.name.function.gdscript" }, + "3": { "name": "entity.name.function.gdscript" } + } + }, + { "include": "#base_expression" }, + { "include": "#letter" }, + { "include": "#any_variable" }, + { "include": "#any_property" }, + { "include": "#keywords" } + ] + }, + "getter_setter_godot4": { + "patterns": [ + { + "match": "\\b(get):", + "captures": { "1": { "name": "entity.name.function.gdscript" } } + }, + { + "name": "meta.function.gdscript", + "begin": "(?x) \\s+\n (set) \\s*\n (?=\\()", + "end": "(:|(?=[#'\"\\n]))", + "beginCaptures": { "1": { "name": "entity.name.function.gdscript" } }, + "patterns": [ + { "include": "#parameters" }, + { "include": "#line_continuation" }, + { + "match": "\\s*(\\-\\>)\\s*([a-zA-Z_]\\w*)\\s*\\:", + "captures": { + "1": { }, + "2": { "name": "entity.name.type.class.gdscript" } + } + } + ] + } + ] + }, + "class_definition": { + "match": "(?<=^class)\\s+([a-zA-Z_]\\w*)\\s*(?=:)", + "captures": { + "1": { "name": "entity.name.type.class.gdscript" }, + "2": { "name": "class.other.gdscript" } + } + }, + "class_new": { + "match": "\\b([a-zA-Z_]\\w*).(new)\\(", + "captures": { + "1": { "name": "entity.name.type.class.gdscript" }, + "2": { "name": "storage.type.new.gdscript" }, + "3": { "name": "punctuation.parenthesis.begin.gdscript" } + } + }, + "class_is": { + "match": "\\s+(is)\\s+([a-zA-Z_]\\w*)", + "captures": { + "1": { "name": "storage.type.is.gdscript" }, + "2": { "name": "entity.name.type.class.gdscript" } + } + }, + "class_enum": { + "captures": { + "1": { "name": "entity.name.type.class.gdscript" }, + "2": { "name": "constant.language.gdscript" } + }, + "match": "\\b([A-Z][a-zA-Z_0-9]*)\\.([A-Z_0-9]+)" + }, + "class_name": { + "captures": { + "1": { "name": "entity.name.type.class.gdscript" }, + "2": { "name": "class.other.gdscript" } + }, + "match": "(?<=class_name)\\s+([a-zA-Z_]\\w*(\\.([a-zA-Z_]\\w*))?)" + }, + "extends": { + "match": "(?<=extends)\\s+[a-zA-Z_]\\w*(\\.([a-zA-Z_]\\w*))?", + "name": "entity.other.inherited-class.gdscript" + }, + "builtin_func": { + "match": "(?)\\s*([a-zA-Z_]\\w*)\\s*\\:", + "captures": { + "1": { }, + "2": { "name": "entity.name.type.class.gdscript" } + } + } + ] + }, + "lambda_declaration": { + "name": "meta.function.gdscript", + "begin": "(func)\\s?(?=\\()", + "end": "(:|(?=[#'\"\\n]))", + "beginCaptures": { + "1": { "name": "keyword.language.gdscript storage.type.function.gdscript" }, + "2": { "name": "entity.name.function.gdscript" } + }, + "patterns": [ + { "include": "#parameters" }, + { "include": "#line_continuation" }, + { + "match": "\\s*(?:\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:", + "captures": { + "1": { "name": "keyword.language.void.gdscript" }, + "2": { "name": "entity.name.type.class.gdscript" } + } + }, + { "include": "#base_expression" }, + { "include": "#any_variable" }, + { "include": "#any_property" } + ] + }, + "function_declaration": { + "name": "meta.function.gdscript", + "begin": "(?x) \\s*\n (func) \\s+\n ([a-zA-Z_]\\w*) \\s*\n (?=\\()", + "end": "((:)|(?=[#'\"\\n]))", + "beginCaptures": { + "1": { "name": "keyword.language.gdscript storage.type.function.gdscript" }, + "2": { "name": "entity.name.function.gdscript" } + }, + "endCaptures": { "1": { "name": "punctuation.section.function.begin.gdscript" } }, + "patterns": [ + { "include": "#parameters" }, + { "include": "#line_continuation" }, + { + "match": "\\s*(?:\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:", + "captures": { + "1": { "name": "keyword.language.void.gdscript" }, + "2": { "name": "entity.name.type.class.gdscript" } + } + }, + { "include": "#base_expression" } + ] + }, + "function_keyword": { + "match": "func", + "name": "keyword.language.gdscript" + }, + "parameters": { + "name": "meta.function.parameters.gdscript", + "begin": "(\\()", + "end": "(\\))", + "beginCaptures": { "1": { "name": "punctuation.definition.parameters.begin.gdscript" } }, + "endCaptures": { "1": { "name": "punctuation.definition.parameters.end.gdscript" } }, + "patterns": [ + { "include": "#annotated_parameter" }, + { + "match": "(?x)\n ([a-zA-Z_]\\w*)\n \\s* (?: (,) | (?=[)#\\n=]))\n", + "captures": { + "1": { "name": "variable.parameter.function.language.gdscript" }, + "2": { "name": "punctuation.separator.parameters.gdscript" } + } + }, + { "include": "#comment" }, + { "include": "#loose_default" } + ] + }, + "loose_default": { + "begin": "(=)", + "end": "(,)|(?=\\))", + "beginCaptures": { "1": { "name": "keyword.operator.gdscript" } }, + "endCaptures": { "1": { "name": "punctuation.separator.parameters.gdscript" } }, + "patterns": [ { "include": "#base_expression" } ] + }, + "annotated_parameter": { + "begin": "(?x)\n \\b\n ([a-zA-Z_]\\w*) \\s* (:)\n", + "end": "(,)|(?=\\))", + "beginCaptures": { + "1": { "name": "variable.parameter.function.language.gdscript" }, + "2": { "name": "punctuation.separator.annotation.gdscript" } + }, + "endCaptures": { "1": { "name": "punctuation.separator.parameters.gdscript" } }, + "patterns": [ + { "include": "#base_expression" }, + { + "name": "keyword.operator.assignment.gdscript", + "match": "=(?!=)" + } + ] + }, + "round_braces": { + "begin": "\\(", + "end": "\\)", + "beginCaptures": { "0": { "name": "punctuation.parenthesis.begin.gdscript" } }, + "endCaptures": { "0": { "name": "punctuation.parenthesis.end.gdscript" } }, + "patterns": [ + { "include": "#base_expression" }, + { "include": "#any_variable" } + ] + }, + "line_continuation": { + "patterns": [ + { + "match": "(\\\\)\\s*(\\S.*$\\n?)", + "captures": { + "1": { "name": "punctuation.separator.continuation.line.gdscript" }, + "2": { "name": "invalid.illegal.line.continuation.gdscript" } + } + }, + { + "begin": "(\\\\)\\s*$\\n?", + "end": "(?x)\n (?=^\\s*$)\n |\n (?! (\\s* [rR]? (\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))\n |\n (\\G $) (?# '\\G' is necessary for ST)\n )\n", + "beginCaptures": { "1": { "name": "punctuation.separator.continuation.line.gdscript" } }, + "patterns": [ { "include": "#base_expression" } ] + } + ] + }, + "any_method": { + "match": "\\b([A-Za-z_]\\w*)\\b(?=\\s*(?:[(]))", + "name": "support.function.any-method.gdscript" + }, + "any_variable": { + "match": "\\b(?\\>\\=?|[-+*/&|<>=!]\\=|\\&\\&|[|][|]|[-+~!*/%<>&^|=]" - } - } + "name": "GDShader", + "scopeName": "source.gdshader", + "uuid": "3a95d25d-688b-481f-a581-eee47f00e5ca", + "fileTypes": [ "gdshader" ], + "patterns": [ { "include": "#any" } ], + "repository": { + "any": { + "patterns": [ + { "include": "#comment" }, + { "include": "#enclosed" }, + { "include": "#classifier" }, + { "include": "#definition" }, + { "include": "#keyword" }, + { "include": "#element" }, + { "include": "#separator" }, + { "include": "#operator" } + ] + }, + "comment": { + "patterns": [ + { "include": "#commentLine" }, + { "include": "#commentBlock" } + ] + }, + "commentLine": { + "name": "comment.line.double-slash.gdshader", + "begin": "//", + "end": "$" + }, + "commentBlock": { + "name": "comment.block.gdshader", + "begin": "/\\*", + "end": "\\*/" + }, + "enclosed": { + "name": "meta.parenthesis.gdshader", + "begin": "\\(", + "end": "\\)", + "captures": { "0": { "name": "punctuation.parenthesis.gdshader" } }, + "patterns": [ { "include": "#any" } ] + }, + "classifier": { + "name": "meta.classifier.gdshader", + "begin": "(?=\\b(?:shader_type|render_mode)\\b)", + "patterns": [ + { "include": "#comment" }, + { "include": "#keyword" }, + { "include": "#identifierClassification" }, + { "include": "#separator" } + ], + "end": "(?<=;)" + }, + "classifierKeyword": { + "name": "keyword.language.classifier.gdshader", + "match": "\\b(?:shader_type|render_mode)\\b" + }, + "identifierClassification": { + "name": "entity.other.inherited-class.gdshader", + "match": "\\b[a-z_]+\\b" + }, + "definition": { + "patterns": [ { "include": "#structDefinition" } ] + }, + "arraySize": { + "name": "meta.array-size.gdshader", + "begin": "\\[", + "end": "\\]", + "captures": { "0": { "name": "punctuation.bracket.gdshader" } }, + "patterns": [ + { "include": "#comment" }, + { "include": "#keyword" }, + { "include": "#element" }, + { "include": "#separator" } + ] + }, + "structDefinition": { + "begin": "(?=\\b(?:struct)\\b)", + "patterns": [ + { "include": "#comment" }, + { "include": "#keyword" }, + { "include": "#structName" }, + { "include": "#structDefinitionBlock" }, + { "include": "#separator" } + ], + "end": "(?<=;)" + }, + "structKeyword": { + "name": "keyword.other.struct.gdshader", + "match": "\\b(?:struct)\\b" + }, + "structName": { + "name": "entity.name.type.struct.gdshader", + "match": "\\b[a-zA-Z_]\\w*\\b" + }, + "structDefinitionBlock": { + "name": "meta.definition.block.struct.gdshader", + "begin": "\\{", + "end": "\\}", + "captures": { "0": { "name": "punctuation.definition.block.struct.gdshader" } }, + "patterns": [ + { "include": "#comment" }, + { "include": "#precisionKeyword" }, + { "include": "#fieldDefinition" }, + { "include": "#keyword" }, + { "include": "#any" } + ] + }, + "fieldDefinition": { + "name": "meta.definition.field.gdshader", + "begin": "\\b[a-zA-Z_]\\w*\\b", + "beginCaptures": { + "0": { + "patterns": [ + { "include": "#typeKeyword" }, + { + "match": ".+", + "name": "entity.name.type.gdshader" + } + ] + } + }, + "patterns": [ + { "include": "#comment" }, + { "include": "#keyword" }, + { "include": "#arraySize" }, + { "include": "#fieldName" }, + { "include": "#any" } + ], + "end": "(?<=;)" + }, + "fieldName": { + "name": "entity.name.variable.field.gdshader", + "match": "\\b[a-zA-Z_]\\w*\\b" + }, + "keyword": { + "patterns": [ + { "include": "#classifierKeyword" }, + { "include": "#structKeyword" }, + { "include": "#controlKeyword" }, + { "include": "#modifierKeyword" }, + { "include": "#precisionKeyword" }, + { "include": "#typeKeyword" }, + { "include": "#hintKeyword" } + ] + }, + "controlKeyword": { + "name": "keyword.control.gdshader", + "match": "\\b(?:if|else|do|while|for|continue|break|switch|case|default|return|discard)\\b" + }, + "modifierKeyword": { + "name": "storage.modifier.gdshader", + "match": "\\b(?:const|global|instance|uniform|varying|in|out|inout|flat|smooth)\\b" + }, + "precisionKeyword": { + "name": "storage.type.built-in.primitive.precision.gdshader", + "match": "\\b(?:low|medium|high)p\\b" + }, + "typeKeyword": { + "name": "support.type.gdshader", + "match": "\\b(?:void|bool|[biu]?vec[234]|u?int|float|mat[234]|[iu]?sampler(?:3D|2D(?:Array)?)|samplerCube)\\b" + }, + "hintKeyword": { + "name": "support.type.annotation.gdshader", + "match": "\\b(?:source_color|hint_(?:color|range|(?:black_)?albedo|normal|(?:default_)?(?:white|black)|aniso|anisotropy|roughness_(?:[rgba]|normal|gray))|filter_(?:nearest|linear)(?:_mipmap(?:_anisotropic)?)?|repeat_(?:en|dis)able)\\b" + }, + "element": { + "patterns": [ + { "include": "#literalFloat" }, + { "include": "#literalInt" }, + { "include": "#literalBool" }, + { "include": "#identifierType" }, + { "include": "#constructor" }, + { "include": "#processorFunction" }, + { "include": "#identifierFunction" }, + { "include": "#swizzling" }, + { "include": "#identifierField" }, + { "include": "#constantFloat" }, + { "include": "#languageVariable" }, + { "include": "#identifierVariable" } + ] + }, + "literalFloat": { + "name": "constant.numeric.float.gdshader", + "match": "\\b(?:\\d+[eE][-+]?\\d+|(?:\\d*[.]\\d+|\\d+[.])(?:[eE][-+]?\\d+)?)[fF]?" + }, + "literalInt": { + "name": "constant.numeric.integer.gdshader", + "match": "\\b(?:0[xX][0-9A-Fa-f]+|\\d+[uU]?)\\b" + }, + "literalBool": { + "name": "constant.language.boolean.gdshader", + "match": "\\b(?:false|true)\\b" + }, + "identifierType": { + "name": "entity.name.type.gdshader", + "match": "\\b[a-zA-Z_]\\w*(?=(?:\\s*\\[\\s*\\w*\\s*\\])?\\s+[a-zA-Z_]\\w*\\b)" + }, + "constructor": { + "name": "entity.name.type.constructor.gdshader", + "match": "\\b[a-zA-Z_]\\w*(?=\\s*\\[\\s*\\w*\\s*\\]\\s*[(])|\\b[A-Z]\\w*(?=\\s*[(])" + }, + "processorFunction": { + "name": "support.function.gdshader", + "match": "\\b(?:vertex|fragment|light|start|process|sky|fog)(?=(?:\\s|/\\*(?:\\*(?!/)|[^*])*\\*/)*[(])" + }, + "identifierFunction": { + "name": "entity.name.function.gdshader", + "match": "\\b[a-zA-Z_]\\w*(?=(?:\\s|/\\*(?:\\*(?!/)|[^*])*\\*/)*[(])" + }, + "swizzling": { + "match": "([.])\\s*([xyzw]{2,4}|[rgba]{2,4}|[stpq]{2,4})\\b", + "captures": { + "1": { "name": "punctuation.accessor.gdshader" }, + "2": { "name": "variable.other.property.gdshader" } + } + }, + "identifierField": { + "match": "([.])\\s*([a-zA-Z_]\\w*)\\b(?!\\s*\\()", + "captures": { + "1": { "name": "punctuation.accessor.gdshader" }, + "2": { "name": "entity.name.variable.field.gdshader" } + } + }, + "constantFloat": { + "name": "constant.language.float.gdshader", + "match": "\\b(?:E|PI|TAU)\\b" + }, + "languageVariable": { + "name": "variable.language.gdshader", + "match": "\\b(?:[A-Z][A-Z_0-9]*)\\b" + }, + "identifierVariable": { + "name": "variable.name.gdshader", + "match": "\\b[a-zA-Z_]\\w*\\b" + }, + "separator": { + "patterns": [ + { + "match": "[.]", + "name": "punctuation.accessor.gdshader" + }, + { "include": "#separatorComma" }, + { + "match": "[;]", + "name": "punctuation.terminator.statement.gdshader" + }, + { + "match": "[:]", + "name": "keyword.operator.type.annotation.gdshader" + } + ] + }, + "separatorComma": { + "name": "punctuation.separator.comma.gdshader", + "match": "[,]" + }, + "operator": { + "name": "keyword.operator.gdshader", + "match": "\\<\\<\\=?|\\>\\>\\=?|[-+*/&|<>=!]\\=|\\&\\&|[|][|]|[-+~!*/%<>&^|=]" + } + } } diff --git a/syntaxes/examples/gdscript1.gd b/syntaxes/examples/gdscript1.gd index 7618bbb..6b80c54 100644 --- a/syntaxes/examples/gdscript1.gd +++ b/syntaxes/examples/gdscript1.gd @@ -144,7 +144,7 @@ var r = 'single quotes' var s = """ triple double quotes """ -var t = '''triple single quotes''' # this should be red because it's invalid +var t = '''triple single quotes''' # ------------------------------------------------------------------------------ diff --git a/tools/generate_icons.ts b/tools/generate_icons.ts index 62935c9..60eef42 100644 --- a/tools/generate_icons.ts +++ b/tools/generate_icons.ts @@ -1,50 +1,50 @@ -import { join, extname } from 'path'; -import fs = require('fs'); +import { join, extname } from "path"; +import * as fs from "fs"; +import util from "node:util"; +import * as child_process from "node:child_process"; +const _exec = util.promisify(child_process.exec); const dark_colors = { - '#fc7f7f': '#fc9c9c', - '#8da5f3': '#a5b7f3', - '#e0e0e0': '#e0e0e0', - '#c38ef1': '#cea4f1', - '#8eef97': '#a5efac', + "#fc7f7f": "#fc9c9c", + "#8da5f3": "#a5b7f3", + "#e0e0e0": "#e0e0e0", + "#c38ef1": "#cea4f1", + "#8eef97": "#a5efac", }; const light_colors = { - '#fc7f7f': '#ff5f5f', - '#8da5f3': '#6d90ff', - '#e0e0e0': '#4f4f4f', - '#c38ef1': '#bb6dff', - '#8eef97': '#29d739', + "#fc7f7f": "#ff5f5f", + "#8da5f3": "#6d90ff", + "#e0e0e0": "#4f4f4f", + "#c38ef1": "#bb6dff", + "#8eef97": "#29d739", }; -function replace_colors(colors: Object, data: String) { +function replace_colors(colors: object, data: string) { for (const [from, to] of Object.entries(colors)) { data = data.replace(from, to); } return data; } -const iconsPath = 'editor/icons'; -const modulesPath = 'modules'; -const outputPath = 'resources/godot_icons'; +const iconsPath = "editor/icons"; +const modulesPath = "modules"; +const outputPath = "resources/godot_icons"; const godotPath = process.argv[2]; -const util = require('node:util'); -const _exec = util.promisify(require('node:child_process').exec); - async function exec(command) { const { stdout, stderr } = await _exec(command); return stdout; } const git = { - diff: 'git diff HEAD', - check_branch: 'git rev-parse --abbrev-ref HEAD', - reset: 'git reset --hard', - stash_push: 'git stash push', - stash_pop: 'git stash pop', - checkout: 'git checkout ', - checkout_4: 'git checkout master', - checkout_3: 'git checkout 3.x', + diff: "git diff HEAD", + check_branch: "git rev-parse --abbrev-ref HEAD", + reset: "git reset --hard", + stash_push: "git stash push", + stash_pop: "git stash pop", + checkout: "git checkout ", + checkout_4: "git checkout master", + checkout_3: "git checkout 3.x", }; function to_title_case(str) { @@ -57,11 +57,56 @@ function to_title_case(str) { } function get_class_list(modules) { - const classes = []; + const classes: string[] = [ + "ArrowDown.svg", + "ArrowLeft.svg", + "ArrowRight.svg", + "ArrowUp.svg", + "GuiVisibilityHidden.svg", + "GuiVisibilityVisible.svg", + "GuiVisibilityXray.svg", + "Edit.svg", + "Help.svg", + "HelpSearch.svg", + "ImportCheck.svg", + "ImportFail.svg", + "Info.svg", + "Play.svg", + "PlayBackwards.svg", + "PlayCustom.svg", + "PlayRemote.svg", + "PlayScene.svg", + "PlayStart.svg", + "Progress1.svg", + "Progress2.svg", + "Progress3.svg", + "Progress4.svg", + "Progress5.svg", + "Progress6.svg", + "Progress7.svg", + "Progress8.svg", + "Progress9.svg", + "Reload.svg", + "ReloadSmall.svg", + "Script.svg", + "ScriptCreate.svg", + "ScriptRemove.svg", + "Search.svg", + "Signals.svg", + "SignalsAndGroups.svg", + "Slot.svg", + "Stop.svg", + "Lock.svg", + "Unlock.svg", + "Zoom.svg", + "ZoomLess.svg", + "ZoomMore.svg", + "ZoomReset.svg", + ]; - const files = ['scene/register_scene_types.cpp']; + const files = ["scene/register_scene_types.cpp"]; modules.forEach(mod => { - files.push(join(mod, 'register_types.cpp')); + files.push(join(mod, "register_types.cpp")); }); const patterns = [ @@ -70,12 +115,12 @@ function get_class_list(modules) { ]; files.forEach(fileName => { - const file = fs.readFileSync(fileName, 'utf8'); - file.split('\n').forEach(line => { + const file = fs.readFileSync(fileName, "utf8"); + file.split("\n").forEach(line => { patterns.forEach(pattern => { const match = line.match(pattern); if (match) { - classes.push(match[1] + '.svg'); + classes.push(match[1] + ".svg"); } }); }); @@ -86,13 +131,13 @@ function get_class_list(modules) { } function discover_modules() { - const modules = []; + const modules: string[] = []; // a valid module is a subdir of modulesPath, and contains a subdir 'icons' - fs.readdirSync(modulesPath, {withFileTypes:true}).forEach(mod => { + fs.readdirSync(modulesPath, { withFileTypes: true }).forEach(mod => { if (mod.isDirectory()) { - fs.readdirSync(join(modulesPath, mod.name), {withFileTypes:true}).forEach(child => { - if (child.isDirectory() && child.name == 'icons') { + fs.readdirSync(join(modulesPath, mod.name), { withFileTypes: true }).forEach(child => { + if (child.isDirectory() && child.name == "icons") { modules.push(join(modulesPath, mod.name)); } }); @@ -101,47 +146,52 @@ function discover_modules() { return modules; } +interface IconData { + name: string; + contents: string; +} -function get_icons() { + +function get_icons(): IconData[] { const modules = discover_modules(); const classes = get_class_list(modules); const searchPaths = [iconsPath]; modules.forEach(mod => { - searchPaths.push(join(mod, 'icons')); + searchPaths.push(join(mod, "icons")); }); - const icons = []; + const icons: IconData[] = []; searchPaths.forEach(searchPath => { fs.readdirSync(searchPath).forEach(file => { - if (extname(file) === '.svg') { + if (extname(file) === ".svg") { let name = file; - if (name.startsWith('icon_')) { - name = name.replace('icon_', ''); - let parts = name.split('_'); + if (name.startsWith("icon_")) { + name = name.replace("icon_", ""); + let parts = name.split("_"); parts = parts.map(to_title_case); - name = parts.join(''); + name = parts.join(""); } if (!classes.includes(name)) { return; } const f = { name: name, - contents: fs.readFileSync(join(searchPath, file), 'utf8') + contents: fs.readFileSync(join(searchPath, file), "utf8") }; icons.push(f); } }); }); - + return icons; } function ensure_paths() { const paths = [ outputPath, - join(outputPath, 'light'), - join(outputPath, 'dark'), + join(outputPath, "light"), + join(outputPath, "dark"), ]; paths.forEach(path => { @@ -153,7 +203,7 @@ function ensure_paths() { async function run() { if (godotPath == undefined) { - console.log('Please provide the absolute path to your godot repo'); + console.log("Please provide the absolute path to your godot repo"); return; } @@ -163,18 +213,18 @@ async function run() { const diff = (await exec(git.diff)).trim(); if (diff) { - console.log('There appear to be uncommitted changes in your godot repo'); - console.log('Revert or stash these changes and try again'); + console.log("There appear to be uncommitted changes in your godot repo"); + console.log("Revert or stash these changes and try again"); return; } const branch = (await exec(git.check_branch)).trim(); - console.log('Gathering Godot 3 icons...'); + console.log("Gathering Godot 3 icons..."); await exec(git.checkout_3); const g3 = get_icons(); - console.log('Gathering Godot 4 icons...'); + console.log("Gathering Godot 4 icons..."); await exec(git.checkout_4); const g4 = get_icons(); @@ -184,10 +234,10 @@ async function run() { console.log(`Found ${g3.length + g4.length} icons...`); - const light_icons = {}; - const dark_icons = {}; + const light_icons: Map = new Map(); + const dark_icons: Map = new Map(); - console.log('Generating themed icons...'); + console.log("Generating themed icons..."); g3.forEach(file => { light_icons[file.name] = replace_colors(light_colors, file.contents); }); @@ -201,15 +251,15 @@ async function run() { dark_icons[file.name] = replace_colors(dark_colors, file.contents); }); - console.log('Ensuring output directory...'); + console.log("Ensuring output directory..."); ensure_paths(); - console.log('Writing icons to output directory...'); + console.log("Writing icons to output directory..."); for (const [file, contents] of Object.entries(light_icons)) { - fs.writeFileSync(join(outputPath, 'light', file), contents); + fs.writeFileSync(join(outputPath, "light", file), contents); } for (const [file, contents] of Object.entries(dark_icons)) { - fs.writeFileSync(join(outputPath, 'dark', file), contents); + fs.writeFileSync(join(outputPath, "dark", file), contents); } } diff --git a/tsconfig.json b/tsconfig.json index 5f9b6af..97fb729 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,10 @@ { "compilerOptions": { - "module": "commonjs", - "target": "es2020", + "module": "NodeNext", + "target": "es2022", + "moduleResolution": "NodeNext", + "moduleDetection": "force", + "isolatedModules": true, "outDir": "out", "lib": [ "es2022", @@ -10,11 +13,13 @@ "sourceMap": true, "rootDir": "src", "strict": false, + "skipLibCheck": true, "allowJs": true }, "exclude": [ "node_modules", "out", - "tools" + "tools", + "media" ] }