summaryrefslogtreecommitdiff
path: root/core/class_db.cpp
AgeCommit message (Collapse)Author
2018-07-26Reduce unnecessary COW on Vector by make writing explicitHein-Pieter van Braam
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.
2018-07-02-Fixes to how hashing happened, now StringName and NodePath use default ↵Juan Linietsky
hasher, this was leading to some severe slowdown in scenarios -Fixes to some duplication scenarios for instanced scenes
2018-05-03Merge pull request #18514 from neikeq/api-hash-fixesRémi Verschelde
API hash fixes
2018-04-29ClassDB API hash now only includes exposed classesIgnacio Etcheverry
2018-04-19Fix Coverity reports of uninitialized scalar variableRémi Verschelde
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).
2018-04-03Ctrl+Clicking a enum now scrolls down to it in the docs.Felix Yang
2018-03-20Add RWLockDummy for NO_THREADS buildsLeon Krause
2018-02-23Refactor version macros and fix related bugsRémi Verschelde
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.
2018-01-20Added all missing VisualServer bindingsMarc Gilleron
- 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
2018-01-05Add missing copyright headers and fix formattingRémi Verschelde
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.
2018-01-01Update copyright statements to 2018Rémi Verschelde
Happy new year to the wonderful Godot community!
2017-12-16Faster ClassDB::get_api_hash()Bernhard Liebl
2017-12-09PropertyEditor: Fix display of property doc in tooltipRémi Verschelde
2017-10-20Bind some VisualServer functionsLeon Krause
2017-10-09Adds 'exposed' field to ClassInfoIgnacio Etcheverry
This field represents if the class is exposed to the scripting API. The value is 'true' if the class was registered manually ('ClassDB::register_*class()'), otherwise it's false (registered on '_post_initialize'). - Added missing registration of classes that are meant to be exposed.
2017-09-02Fixes order of default arguments in MethodInfoIgnacio Etcheverry
This time for real
2017-09-01Fixes reversed order of default arguments in MethodInfoIgnacio Etcheverry
2017-08-29Merge pull request #10745 from neikeq/fix-docdata-and-stuffJuan Linietsky
DocData and virtual method type hints fixes
2017-08-29Fixes missing default arguments in MethodInfoIgnacio Etcheverry
2017-08-29Removed ParamDef and ParamHint structsWilson E. Alvarez
2017-08-28-Some fixes to code completion.Juan Linietsky
-Fix getter in code completion being displayed when it shouldn't -Clean up preview generation for editors and exposed it as editor plugin
2017-08-27Use HTTPS URL for Godot's website in the headersRémi Verschelde
2017-08-27Re-apply clang-format to all filesRémi Verschelde
Some badly formatted code has managed to pass through our CI...
2017-08-24-Code completion for enumerationsJuan Linietsky
-Disabled GDNative and GDNativeScript so build compiles again
2017-08-23Changed MethodBind API to request information from methods. It's much claner ↵Juan Linietsky
now. Also changed PropertyInfo to include informatino about class names.
2017-08-20ClassDB: Provide the enum name of integer constantsIgnacio Etcheverry
2017-08-11Merge pull request #9987 from Rubonnek/move-members-to-initilization-listRémi Verschelde
Moved member variables from constructor to initialization list
2017-08-10Improves method bind detection of signature typesIgnacio Etcheverry
2017-08-08Moved member variables from constructor to initialization listWilson E. Alvarez
2017-08-06ClassDB: Adds get_property_index methodIgnacio Etcheverry
2017-06-23Remove methods from code completion which are already exposed by properties, ↵Juan Linietsky
makes completion cleaner and more close to the documentation.
2017-04-26Fix recognition of resource extensions.Andreas Haas
Also removes a related debug print.
2017-04-20Move VERSION_MKSTRING logic to version.hRémi Verschelde
Fixes a bug where the VERSION_PATCH define is not yet in scope if typedefs.h is included before version.h at compilation time. (cherry picked from commit 3b687c5474113b64f186388883ca85cdfe6523d4)
2017-04-08Add "Godot Engine contributors" copyright lineRémi Verschelde
2017-03-05A Whole New World (clang-format edition)Rémi Verschelde
I can show you the code Pretty, with proper whitespace Tell me, coder, now when did You last write readable code? I can open your eyes Make you see your bad indent Force you to respect the style The core devs agreed upon A whole new world A new fantastic code format A de facto standard With some sugar Enforced with clang-format A whole new world A dazzling style we all dreamed of And when we read it through It's crystal clear That now we're in a whole new world of code
2017-02-16Correct hash behavior for floating point numbersHein-Pieter van Braam
This fixes HashMap where a key or part of a key is a floating point number. To fix this the following has been done: * HashMap now takes an extra template argument Comparator. This class gets used to compare keys. The default Comperator now works correctly for common types and floating point numbets. * Variant implements ::hash_compare() now. This function implements nan-safe comparison for all types with components that contain floating point numbers. * Variant now has a VariantComparator which uses Variant::hash_compare() safely compare floating point components of variant's types. * The hash functions for floating point numbers will now normalize NaN values so that all floating point numbers that are NaN hash to the same value. C++ module writers that want to use HashMap internally in their modules can now also safeguard against this crash by defining their on Comperator class that safely compares their types. GDScript users, or writers of modules that don't use HashMap internally in their modules don't need to do anything. This fixes #7354 and fixes #6947.
2017-02-15Many fixes to make exported scenes work better, still buggy.Juan Linietsky
2017-02-13Rename the _MD macro to D_METHODHein-Pieter van Braam
This new name also makes its purpose a little clearer This is a step towards fixing #56
2017-02-01Enable WebGL2 in web export, start fixing buildeska
Will not yet compile
2017-01-16Style: Cleanups, added headers, renamed filesRémi Verschelde
Made sure files in core/ and tools/ have a proper Godot license header when written by us. Also renamed aabb.{cpp,h} and object_type_db.{cpp,h} to rect3.{cpp,h} and class_db.{cpp,h} respectively. Also added a proper header to core/io/base64.{c,h} after clarifying the licensing with the original author (public domain).