summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Style: clang-format: Disable AllowShortIfStatementsOnASingleLineRémi Verschelde2020-05-101-4/+8
| | | | | | | Part of #33027, also discussed in #29848. Enforcing the use of brackets even on single line statements would be preferred, but `clang-format` doesn't have this functionality yet.
* fixed: saving gdscript with cyclic inheritance crash the editorThakee Nathees2020-05-101-3/+26
| | | | Fix: #9609
* Fix object leaks caused by unfulfilled yieldsPedro J. Estébanez2020-05-051-2/+18
| | | | | | | | | | Now the stack saved in a `GDScriptFunctionState` is cleared as soon as the `yield()` operation is known not to be resumed because either the script, the instance or both are deleted. This clears problems like leaked objects by eliminating cases of circular references between `GDScriptFunctionState`s preventing them and the objects they refer to in their saved stacks from being released. As an example, this makes using `SceneTreeTimer` safer. Furthermore, with this change it's now possible to print early warnings about `yield()`s to released script/instances, as now we know they won't be successfully resumed as the condition for that happens. However, this PR doesn't add such messages, to keep the observed behavior the same for the time being. Also, now a backup of the function name in `GDScriptFunctionState` is used, since the script may not be valid by the time the function name is needed for the resume-after-yield error messages.
* Merge pull request #32534 from Xrayez/fix-dict2inst-initRémi Verschelde2020-05-031-7/+4
|\ | | | | Make `dict2inst` to work with arbitrary `_init` parameters
| * Make `dict2inst` to work with arbitrary `_init` parametersAndrii Doroshenko (Xrayez)2020-04-301-7/+4
| | | | | | | | | | | | | | | | This is achieved by skipping initializer call while creating an instance of a GDScript. This is implemented by passing -1 as an argument count to `_new` and interpreting any value below 0 to mean that the initializer should not be called during instantiation, because internal members of an instance are going to be overridden afterwards.
* | Merge pull request #38105 from AndreaCatania/AndreaCatania-patch-2Fabio Alessandrelli2020-05-011-4/+4
|\ \ | |/ |/| Removed noisy ERR check from Multiplayer API.
| * Removed noisy ERR check from Multiplayer API.Andrea Catania2020-04-221-4/+4
| |
* | Add ability to bind typed arrays to script APIJuan Linietsky2020-04-211-0/+18
| | | | | | | | | | | | | | Note: Only replaced 2 instances to test, Node.get_children and TileMap.get_used_cells Note: Will do a mass replace on later PRs of whathever I can find, but probably need a tool to grep through doc. Warning: Mono will break, needs to be fixed (and so do TypeScript and NativeScript, need to ask respective maintainers)
* | Exposed RenderingDevice to script APIJuan Linietsky2020-04-201-1/+1
|/ | | | | | | | | | | | | Also added an easier way to load native GLSL shaders. Extras: Had to fix no-cache for subresources in resource loader, it was not properly working, making shaders not properly reload. Note: The precommit hooks are broken because they don't seem to support enums from one class being used in another. Feel free to fix this after merging this PR.
* Replace NULL with nullptrlupoDharkael2020-04-021-30/+30
|
* Style: Set clang-format Standard to Cpp11Rémi Verschelde2020-03-171-23/+23
| | | | | | | | | | For us, it practically only changes the fact that `A<A<int>>` is now used instead of the C++03 compatible `A<A<int> >`. Note: clang-format 10+ changed the `Standard` arguments to fully specified `c++11`, `c++14`, etc. versions, but we can't use `c++17` now if we want to preserve compatibility with clang-format 8 and 9. `Cpp11` is still supported as deprecated alias for `Latest`.
* Merge pull request #36599 from AndreaCatania/gen_rpc_data_exportRémi Verschelde2020-03-131-46/+52
|\ | | | | Generates the rpc and rset info for exported GDScript.
| * Generates the rpc and rset info for exported GDScript.Andrea Catania2020-02-281-46/+52
| | | | | | | | | | | | Improved the send rpc log message when fail. This work has been kindly sponsored by IMVU.
* | Merge pull request #36723 from AndreaCatania/fix-rsetRémi Verschelde2020-03-131-2/+2
|\ \ | | | | | | Fixed rset method for gdscript and visual script
| * | Fixed rset method for gdscript and visual scriptAndrea Catania2020-03-021-2/+2
| | |
* | | Refactor ScriptDebugger.Fabio Alessandrelli2020-03-081-6/+6
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EngineDebugger is the new interface to access the debugger. It tries to be as agnostic as possible on the data that various subsystems can expose. It allows 2 types of interactions: - Profilers: A subsystem can register a profiler, assigning it a unique name. That name can be used to activate the profiler or add data to it. The registered profiler can be composed of up to 3 functions: - Toggle: called when the profiler is activated/deactivated. - Add: called whenever data is added to the debugger (via `EngineDebugger::profiler_add_frame_data`) - Tick: called every frame (during idle), receives frame times. - Captures: (Only relevant in remote debugger for now) A subsystem can register a capture, assigning it a unique name. When receiving a message, the remote debugger will check if it starts with `[prefix]:` and call the associated capture with name `prefix`. Port MultiplayerAPI, Servers, Scripts, Visual, Performance to the new profiler system. Port SceneDebugger and RemoteDebugger to the new capture system. The LocalDebugger also uses the new profiler system for scripts profiling.
* | Removed interactive loader, added proper thread loading.Juan Linietsky2020-02-281-1/+1
| |
* | Reimplement Mutex with C++'s <mutex>Pedro J. Estébanez2020-02-261-122/+45
|/ | | | | | | | | | | | | | | | Main: - It's now implemented thanks to `<mutex>`. No more platform-specific implementations. - `BinaryMutex` (non-recursive) is added, as an alternative for special cases. - Doesn't need allocation/deallocation anymore. It can live in the stack and be part of other classes. - Because of that, it's methods are now `const` and the inner mutex is `mutable` so it can be easily used in `const` contexts. - A no-op implementation is provided if `NO_THREADS` is defined. No more need to add `#ifdef NO_THREADS` just for this. - `MutexLock` now takes a reference. At this point the cases of null `Mutex`es are rare. If you ever need that, just don't use `MutexLock`. - Thread-safe utilities are therefore simpler now. Misc.: - `ScopedMutexLock` is dropped and replaced by `MutexLock`, because they were pretty much the same. - Every case of lock, do-something, unlock is replaced by `MutexLock` (complex cases where it's not straightfoward are kept as as explicit lock and unlock). - `ShaderRD` contained an `std::mutex`, which has been replaced by `Mutex`.
* Reworked signal connection system, added support for Callable and Signal ↵Juan Linietsky2020-02-201-28/+28
| | | | objects and made them default.
* GDScript: Remove self static reference and create one on callsGeorge Marques2020-02-191-1/+0
| | | | | | This is needed because of the new changes to Variant. The reference counter is increased by adding it to a Variant, which means no GDScript will be freed (or will be double freed if manually freed somewhere).
* PoolVector is gone, replaced by VectorJuan Linietsky2020-02-181-5/+5
| | | | | Typed `PoolTypeArray` types are now renamed `PackedTypeArray` and are sugar for `Vector<Type>`.
* Changed logic and optimized ObjectID in ObjectDB and Variant, removed RefPtr.Juan Linietsky2020-02-151-4/+5
|
* Remove deprecated sync and slave networking keywordsRémi Verschelde2020-02-131-2/+0
| | | | | | Those keywords were deprecated for 3.1 in #22087. Also fix token name for `TK_REMOTE`, should be "remote" like the keyword.
* Optmized data sent during RPC and RSet calls.Andrea Catania2020-02-121-24/+131
| | | | | | | | | | - Now is sent the method ID rather the full function name. - The passed IDs (Node and Method) are compressed so to use less possible space. - The variant (INT and BOOL) is now encoded and compressed so to use much less data. - Optimized RPCMode retrieval for GDScript functions. - Added checksum to assert the methods are the same across peers. This work has been kindly sponsored by IMVU.
* Merge pull request #35218 from bojidar-bg/26691-parse-error-errorsRémi Verschelde2020-01-161-1/+1
|\ | | | | Fix errors raised when showing parse errors in the editor
| * Fix errors raised when showing parse errors in the editorBojidar Marinov2020-01-161-1/+1
| | | | | | | | Fixes #26691
* | Keep a weak reference to orphan subclasses to reuse on class reloadChibiDenDen2020-01-151-3/+48
|/
* Add GDScript warning for standalone expressionGeorge Marques2020-01-091-0/+4
| | | | | This makes the error message clearer as it might be used to call functions with side effects.
* Update copyright statements to 2020Rémi Verschelde2020-01-011-2/+2
| | | | | | | | | | | Happy new year to the wonderful Godot community! We're starting a new decade with a well-established, non-profit, free and open source game engine, and tons of further improvements in the pipeline from hundreds of contributors. Godot will keep getting better, and we're looking forward to all the games that the community will keep developing and releasing with it.
* GDScript: Convert values when setting member variablesGeorge Marques2019-12-131-5/+16
| | | | This allows doing: self.x = 1 even if self.x is declared as float.
* Disable GDScript warning for unused class variable by defaultGeorge Marques2019-12-111-1/+2
|
* Document how to bypass the unused argument/variable warning in messageHugo Locurcio2019-11-271-5/+3
| | | | | | | Note that prefixing with an underscore only works with unused arguments and local variables, not class variables and signals. This closes #26056.
* Add setting to exclude addons from script warningsmashumafi2019-11-071-0/+1
|
* GDScript: Avoid editor crashes when there's cyclic inheritanceGeorge Marques2019-11-011-2/+2
| | | | Make sure the script is fully compiled before looking into the base.
* Merge pull request #32051 from qarmin/some_error_explanationRémi Verschelde2019-09-251-7/+4
|\ | | | | Added some obvious errors explanations
| * Added some obvious errors explanationsqarmin2019-09-251-7/+4
| |
* | Fix misc. source comment typosluz.paz2019-09-191-1/+1
|/ | | Found using `codespell -q 3 -S ./thirdparty,*.po -L ang,ba,cas,dof,doubleclick,fave,hist,leapyear,lod,nd,numer,ois,paket,seeked,sinc,switchs,te,uint -D ~/Projects/codespell/codespell_lib/data/dictionary.txt `
* Make VarArg methods return types show up as Variant in API jsontoasteater2019-08-261-1/+1
| | | | | | | | | | | | VarArg methods have the return type Object in the API json for GDNative. This can cause undefined behavior in some language bindings due to lack of documentation on VarArg methods' behavior. This changes the MethodInfo of: - CSharpScript::_new - GDScript::_new - PluginScript::_new
* Replace 'ERR_EXPLAIN' with 'ERR_FAIL_*_MSG' in "platform", ↵Robin Hübner2019-08-091-24/+9
| | | | "modules/gdnative", "modules/gdscript" directories.
* Remove unnecessary code and add some error explanationsqarmin2019-07-011-1/+1
|
* Some code changed with Clang-Tidyqarmin2019-06-261-1/+1
|
* Merge pull request #27886 from LeonardMeagher2/obj_to_stringRémi Verschelde2019-05-201-0/+22
|\ | | | | Allow overriding how scripted objects are converted to strings
| * Allow overriding how scripted objects are converted to stringsLeonard Meagher2019-05-031-0/+22
| | | | | | | | | | | | | | | | | | | | solves #26796 - ADD `String to_string()` method to Object which can be overriden by `String _to_string()` in scripts - ADD `String to_string(r_valid)` method to ScriptInstance to allow langauges to control how scripted objects are converted to strings - IMPLEMENT to_string for GDScriptInstance, VisualScriptInstance, and NativeScriptInstance - ADD Documentation about `Object.to_string` and `Object._to_string` - Changed `Variant::operator String` to use `obj->to_string()`
* | Fix typos with codespellRémi Verschelde2019-05-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using codespell 1.15.0. Method: ``` $ cat > ../godot-word-whitelist.txt << EOF ang curvelinear doubleclick leapyear lod merchantibility nd numer ois ony que seeked synching te uint unselect webp EOF $ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po" $ git diff // undo unwanted changes ```
* | Fix slight issues with autocompletion and member lists in GDScriptBojidar Marinov2019-05-021-1/+1
| | | | | | | | | | Fixes #27152 Fixes #28591
* | GDScript: add variable shadowing warninglupoDharkael2019-04-151-0/+5
|/
* Replace a few #if/#elif with #ifdef and "#elif defined"Ignacio Etcheverry2019-04-051-1/+1
|
* Fix typo in GDScript narrowing conversion warning messageHugo Locurcio2019-03-081-1/+1
| | | | This closes #26790.
* Close file handles after use of new get_as_utf8_strings, fixes #26578Juan Linietsky2019-03-041-3/+4
|
* Add a dependency search mode for GDScript parserGeorge Marques2019-03-031-49/+87
| | | | | | | | - This mode avoids loading any other resource. - Search for class_name now uses this mode, to avoid loading in the scan thread. - Implement get_dependencies() for GDScript loader, now exporting dependencies only should include the preloaded resources.