summaryrefslogtreecommitdiffstats
path: root/core/class_db.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Reorganized core/ directory, it was too fatty alreadyreduz2020-11-071-1571/+0
| | | | | | -Removed FuncRef, since Callable makes it obsolete -Removed int_types.h as its obsolete in c++11+ -Changed color names code
* Avoid reentrant OBJTYPE_RLOCK in ClassDBLyuma2020-11-011-9/+17
| | | | Fixes #43020 when a thread uses ClassDB while main thread calls is_parent_class().
* Refactor MethodBind to use variadic templatesreduz2020-10-181-1/+1
| | | | Removed make_binders and the old style generated binders.
* Add methods in ClassDB to get property/method/constant/enum infoGeorge Marques2020-07-061-21/+145
| | | | Without the need to iterate the whole list.
* Object: Add usage hint to instantiate Object properties in editorRémi Verschelde2020-06-121-1/+17
| | | | | | | | | | | | | | | | | | Fixes #36372 as Path2D/Path3D's `curve` property no longer uses a Curve instance as default value, but instead it gets a (unique) default Curve instance when created through the editor (CreateDialog). ClassDB gets a sanity check to ensure that we don't do the same mistake for other properties in the future, but instead use the dedicated property usage hint. Fixes #36372. Fixes #36650. Supersedes #36644 and #36656. Co-authored-by: Thakee Nathees <thakeenathees@gmail.com> Co-authored-by: simpuid <utkarsh.email@yahoo.com>
* Style: Enforce braces around if blocks and loopsRémi Verschelde2020-05-141-40/+80
| | | | | Using clang-tidy's `readability-braces-around-statements`. https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
* Style: Enforce separation line between function definitionsRémi Verschelde2020-05-141-0/+4
| | | | | | | | | | | | | | | | | | | | | | | I couldn't find a tool that enforces it, so I went the manual route: ``` find -name "thirdparty" -prune \ -o -name "*.cpp" -o -name "*.h" -o -name "*.m" -o -name "*.mm" \ -o -name "*.glsl" > files perl -0777 -pi -e 's/\n}\n([^#])/\n}\n\n\1/g' $(cat files) misc/scripts/fix_style.sh -c ``` This adds a newline after all `}` on the first column, unless they are followed by `#` (typically `#endif`). This leads to having lots of places with two lines between function/class definitions, but clang-format then fixes it as we enforce max one line of separation. This doesn't fix potential occurrences of function definitions which are indented (e.g. for a helper class defined in a .cpp), but it's better than nothing. Also can't be made to run easily on CI/hooks so we'll have to be careful with new code. Part of #33027.
* Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocksRémi Verschelde2020-05-141-119/+0
| | | | | | | | | | | | | | Which means that reduz' beloved style which we all became used to will now be changed automatically to remove the first empty line. This makes us lean closer to 1TBS (the one true brace style) instead of hybridating it with some Allman-inspired spacing. There's still the case of braces around single-statement blocks that needs to be addressed (but clang-format can't help with that, but clang-tidy may if we agree about it). Part of #33027.
* Port member initialization from constructor to declaration (C++11)Rémi Verschelde2020-05-141-13/+0
| | | | | | | | | | Using `clang-tidy`'s `modernize-use-default-member-init` check and manual review of the changes, and some extra manual changes that `clang-tidy` failed to do. Also went manually through all of `core` to find occurrences that `clang-tidy` couldn't handle, especially all initializations done in a constructor without using initializer lists.
* Style: clang-format: Disable AllowShortIfStatementsOnASingleLineRémi Verschelde2020-05-101-3/+6
| | | | | | | 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.
* Refactored shadowmapping.Juan Linietsky2020-04-081-0/+9
| | | | | | | | | - Made shadow bias size independent, so it will remain when changing light or camera size. - Implemented normal offset bias, which greatly enhances quality. - Added transmission to subsurface scattering - Reimplemented shadow filter modes Closes #17260
* Replace NULL with nullptrlupoDharkael2020-04-021-40/+40
|
* Fix out of bound array access caused by unassigned variableRafał Mikrut2020-04-011-0/+1
|
* Style: Set clang-format Standard to Cpp11Rémi Verschelde2020-03-171-1/+1
| | | | | | | | | | 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`.
* Reworked signal connection system, added support for Callable and Signal ↵Juan Linietsky2020-02-201-5/+15
| | | | objects and made them default.
* Revert "ClassDB: Workaround double-free for GDScript"George Marques2020-02-191-4/+1
| | | | This reverts commit 8312ead0d99cfc308f2f7635bae3da6bf0ff5489.
* ClassDB: Workaround double-free for GDScriptRémi Verschelde2020-02-171-1/+4
| | | | | | | | | This is a temporary hack until vnen and reduz can work on a proper fix. The changes in 867d073b98344b848c96012418912a7e72841a31 exposed a GDScript issue, which apparently triggers an automatic unreferencing. This hack only makes it possible to use the editor again, but GDScript is still broken.
* GIProbes working.Juan Linietsky2020-02-111-0/+13
|
* Remove duplicate ERR_PRINT macro.Marcel Admiraal2020-02-051-1/+1
|
* ClassDB: Exclude method binds starting with '_' from API hashIgnacio Etcheverry2020-01-071-0/+7
| | | | | These methods are not meant to be part of the scripting API. These are not the same as virtual methods starting with '_', e.g.: '_process'.
* 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.
* Added some obvious errors explanationsqarmin2019-09-251-21/+21
|
* Replace 'ERR_EXPLAIN' with 'ERR_FAIL_*_MSG' in 'core/' and 'editor/'Braden Bodily2019-08-171-38/+14
| | | | | | | | | Condensed some if and ERR statements. Added dots to end of error messages Couldn't figure out EXPLAINC. These files gave me trouble: core/error_macros.h, core/io/file_access_buffered_fa.h (where is it?), core/os/memory.cpp, drivers/png/png_driver_common.cpp, drivers/xaudio2/audio_driver_xaudio2.cpp (where is it?)
* Fix some code found by Coverity Scan and PVS Studioqarmin2019-07-231-0/+1
|
* Use reference to constant in functionsqarmin2019-07-101-2/+2
|
* Merge pull request #30126 from qarmin/remove_unnecessary_codeRémi Verschelde2019-07-011-2/+2
|\ | | | | Remove unnecessary code and add some error explanations
| * Remove unnecessary code and add some error explanationsqarmin2019-07-011-2/+2
| |
* | Remove bogus nulls from generated default valuesBojidar Marinov2019-06-291-1/+4
| | | | | | | | Also, fix crash in PluginScript destructor.
* | Add default values to the editor help, docs, and generated RSTBojidar Marinov2019-06-271-8/+45
|/ | | | | Also, make spacing of "=" in the editor help a bit more consistent. Closes #16086
* Some code changed with Clang-Tidyqarmin2019-06-261-1/+1
|
* Fix always true/false valuesqarmin2019-06-201-3/+1
|
* Add ability to edit editor feature profilesJuan Linietsky2019-04-081-0/+13
| | | | Allows enabling/disabling parts of the editor and storing/loading profiles for that.
* Fix wrong method binds and registered classIgnacio Etcheverry2019-04-061-0/+5
|
* Update copyright statements to 2019Rémi Verschelde2019-01-011-2/+2
| | | | Happy new year to the wonderful Godot community!
* Make add_property error more explicit on duplicatesRémi Verschelde2018-11-201-2/+1
| | | | Would have helped solve #23800 faster.
* -Moved EditorDefaultValue to ClassDB, made it coreJuan Linietsky2018-11-081-0/+36
| | | | -Removed one and zero hints for properties, replaced by default value
* Fix warnings on release builds (not DEBUG_ENABLED)Rémi Verschelde2018-10-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Fixes the following Clang 5 warnings: ``` modules/bmp/image_loader_bmp.cpp:46:60: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare] modules/bmp/image_loader_bmp.cpp:48:61: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare] drivers/png/image_loader_png.cpp:231:20: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare] scene/gui/graph_edit.cpp:1045:8: warning: comparison of constant 0 with expression of type 'bool' is always false [-Wtautological-constant-out-of-range-compare] core/class_db.cpp:812:13: warning: unused variable 'check' [-Wunused-variable] core/io/file_access_pack.cpp:172:11: warning: unused variable 'ver_rev' [-Wunused-variable] core/math/bsp_tree.cpp:195:13: warning: unused variable 'plane' [-Wunused-variable] core/math/bsp_tree.cpp:168:6: warning: unused variable 'plane_count' [-Wunused-variable] modules/gdscript/gdscript_function.cpp:685:10: warning: unused variable 'ok' [-Wunused-variable] modules/gdscript/gdscript_function.cpp:706:10: warning: unused variable 'ok' [-Wunused-variable] modules/gdscript/gdscript_function.cpp:755:19: warning: unused variable 'var_type' [-Wunused-variable] modules/gdscript/gdscript_function.cpp:1306:12: warning: unused variable 'err' [-Wunused-variable] modules/gdscript/gdscript_function.cpp:158:15: warning: unused function '_get_var_type' [-Wunused-function] modules/gdscript/gdscript_parser.cpp:750:20: warning: unused variable 'lv' [-Wunused-variable] modules/gdscript/gdscript_parser.cpp:59:15: warning: unused function '_find_function_name' [-Wunused-function] scene/main/node.cpp:2489:13: warning: unused function '_Node_debug_sn' [-Wunused-function] ```
* Make core/ includes absolute, remove subfolders from include pathRémi Verschelde2018-09-121-3/+3
| | | | | | This allows more consistency in the manner we include core headers, where previously there would be a mix of absolute, relative and include path-dependent includes.
* Print an error if you try to instantiate an editor class outside the editor, ↵Juan Linietsky2018-09-061-1/+7
| | | | fixes #17624
* Reduce unnecessary COW on Vector by make writing explicitHein-Pieter van Braam2018-07-261-91/+91
| | | | | | | | | | | | | | | | | | | | | | | This commit makes operator[] on Vector const and adds a write proxy to it. From now on writes to Vectors need to happen through the .write proxy. So for instance: Vector<int> vec; vec.push_back(10); std::cout << vec[0] << std::endl; vec.write[0] = 20; Failing to use the .write proxy will cause a compilation error. In addition COWable datatypes can now embed a CowData pointer to their data. This means that String, CharString, and VMap no longer use or derive from Vector. _ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug builds. This is a lot faster for Vector in the editor and while running tests. The reason why this difference used to exist is because force-inlined methods used to give a bad debugging experience. After extensive testing with modern compilers this is no longer the case.
* -Fixes to how hashing happened, now StringName and NodePath use default ↵Juan Linietsky2018-07-021-3/+3
| | | | | | hasher, this was leading to some severe slowdown in scenarios -Fixes to some duplication scenarios for instanced scenes
* Merge pull request #18514 from neikeq/api-hash-fixesRémi Verschelde2018-05-031-1/+1
|\ | | | | API hash fixes
| * ClassDB API hash now only includes exposed classesIgnacio Etcheverry2018-04-291-1/+1
| |
* | Fix Coverity reports of uninitialized scalar variableRémi Verschelde2018-04-191-0/+2
|/ | | | | | | | | | | Fixes most current reports on Coverity Scan of uninitialized scalar variable (CWE-457): https://cwe.mitre.org/data/definitions/457.html These happen most of the time (in our code) when instanciating structs without a constructor (or with an incomplete one), and later returning the instance. This is sometimes intended though, as some parameters are only used in some situations and should not be double-initialized for performance reasons (e.g. `constant` in ShaderLanguage::Token).
* Ctrl+Clicking a enum now scrolls down to it in the docs.Felix Yang2018-04-031-3/+1
|
* Add RWLockDummy for NO_THREADS buildsLeon Krause2018-03-201-21/+0
|
* Refactor version macros and fix related bugsRémi Verschelde2018-02-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous logic with VERSION_MKSTRING was a bit unwieldy, so there were several places hardcoding their own variant of the version string, potentially with bugs (e.g. forgetting the patch number when defined). The new logic defines: - VERSION_BRANCH, the main 'major.minor' version (e.g. 3.1) - VERSION_NUMBER, which can be 'major.minor' or 'major.minor.patch', depending on whether the latter is defined (e.g. 3.1.4) - VERSION_FULL_CONFIG, which contains the version status (e.g. stable) and the module-specific suffix (e.g. mono) - VERSION_FULL_BUILD, same as above but with build/reference name (e.g. official, custom_build, mageia, etc.) Note: Slight change here, as the previous format had the build name *before* the module-specific suffix; now it's after - VERSION_FULL_NAME, same as before, so VERSION_FULL_BUILD prefixed with "Godot v" for readability Bugs fixed thanks to that: - Export templates version matching now properly takes VERSION_PATCH into account by relying on VERSION_FULL_CONFIG. - ClassDB hash no longer takes the build name into account, but limits itself to VERSION_FULL_CONFIG (build name is cosmetic, not relevant for the API hash). - Docs XML no longer hardcode the VERSION_STATUS, this was annoying. - Small cleanup in Windows .rc file thanks to new macros.
* Added all missing VisualServer bindingsMarc Gilleron2018-01-201-0/+41
| | | | | | | - Added bindings for multimesh, immediate, skeleton, light, reflection probe, gi probe, lightmap, particles, camera, environment, scenario, instance - Removed draw and sync, were duplicates of force_* equivalents - Bumped binders max arguments from 11 to 13 - Wrote some wrappers as not all methods were variant-friendly
* Add missing copyright headers and fix formattingRémi Verschelde2018-01-051-0/+1
| | | | | | Using `misc/scripts/fix_headers.py` on all Godot files. Some missing header guards were added, and the header inclusion order was fixed in the Bullet module.
* Update copyright statements to 2018Rémi Verschelde2018-01-011-2/+2
| | | | Happy new year to the wonderful Godot community!