summaryrefslogtreecommitdiff
path: root/core/variant.cpp
AgeCommit message (Collapse)Author
2017-09-21Implement Linux-style likely()/unlikely() macrosHein-Pieter van Braam
This implement branch prediction macros likely() and unlikely() like in Linux. When using these macros please ensure that when you use them the condition in the branch really is very, very likely or unlikely. Think 90+% of the time. Primarily useful for error checking. (And I implement these macros for all our error checking macros now) See this article for more information: https://kernelnewbies.org/FAQ/LikelyUnlikely There are more places where these macros may make sense in renderer and physics engine. Placing them will come in another commit down the line.
2017-09-19Don't call Variant::reference() unnecessarilyHein-Pieter van Braam
operator= does not need to call reference() if the new value is of the same type as the old. This saves us zeroing the Variant, This speeds up reuse of a Variant in a loop by roughly 50%.
2017-09-14Construct Variants from Reference properly in GDNativeRuslan Mustakov
Previously godot_variant_new_object constructed Variant without accounting for the fact that the Object can be a Reference, so refcount was not increased and References were destructed prematurely. Also, Reference::init_ref did not propagate refcount increment to the script instance, which led to desync of refcount info on the script side and Godot side.
2017-08-27Use HTTPS URL for Godot's website in the headersRémi Verschelde
2017-08-24Convert Object::cast_to() to the static versionHein-Pieter van Braam
Currently we rely on some undefined behavior when Object->cast_to() gets called with a Null pointer. This used to work fine with GCC < 6 but newer versions of GCC remove all codepaths in which the this pointer is Null. However, the non-static cast_to() was supposed to be null safe. This patch makes cast_to() Null safe and removes the now redundant Null checks where they existed. It is explained in this article: https://www.viva64.com/en/b/0226/
2017-08-07Makes all Godot API's methods Lower CaseIndah Sylvia
2017-06-09renamed all Rect3.pos to Rect3.positionalexholly
2017-06-04renamed all Rect2.pos to Rect2.positionalexholly
2017-05-20Removal of InputEvent as built-in Variant type..Juan Linietsky
this might cause bugs I haven't found yet..
2017-05-17Removal of Image from Variant, converted to a Resource.Juan Linietsky
2017-04-14Correct Variant::hash_compare()Hein-Pieter van Braam
There was a logic error in #7815 which made Variant.hash_compare() == Variant.hash_compare() always true. In an attempt to short-circuit the NaN check I made an (in hindsight) obvious error: 10 == 12 || is_nan(10) == is_nan(12) This will be true for all inputs, except for the NaN, not-NaN case. The macro has been updated to now generate: (10 == 12) || (is_nan(10) && is_nan(10)) so: (10 == 12) || (is_nan(10) && is_nan(12)) = false False or (False and False) is False (10 == 10) || (is_nan(10) && is_nan(10)) = true True or (False and False) is True (Nan == 10) || (is_nan(NaN) && is_nan(10)) = false False or (True and False) is False (Nan == Nan) || (is_nan(NaN) && is_nan(NaN)) = true False or (True and True) is True Which is correct for all cases. This bug was triggered because the hash function for floating point numbers can very easily generate collisions for the tested Vector3(). I've also added an extra hashing step to the float hash function to make this less likely to occur. This fixes #8081 and probably many more random weirdness.
2017-04-08Add "Godot Engine contributors" copyright lineRémi Verschelde
2017-03-13fixed ClassDB inconsistenciesKarroffel
fixes #7960
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-03-05really fixed PTRCALL nowKarroffel
2017-03-05Added PowerState casting operator to VariantKarroffel
Without it Godot does not build with PTRCALL_ENABLED
2017-02-28 Various fixes detected using PVS-Studio static analyzer.Thaer Razeq
- Add FIXME tags comments to some unfixed potential bugs - Remove some checks (always false: unsigned never < 0) - Fix some if statements based on reviews. - Bunch of missing `else` statements
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-01-16Style: Fix statements ending with ';;'Rémi Verschelde
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).
2017-01-11Both Array and Dictionary are always in shared mode (removed copy on write).Juan Linietsky
2017-01-11Type renames:Juan Linietsky
Matrix32 -> Transform2D Matrix3 -> Basis AABB -> Rect3 RawArray -> PoolByteArray IntArray -> PoolIntArray FloatArray -> PoolFloatArray Vector2Array -> PoolVector2Array Vector3Array -> PoolVector3Array ColorArray -> PoolColorArray
2017-01-08Variant INT and REAL are now 64 bits (other types remain at 32)Juan Linietsky
2017-01-08Made Variant::NIL printable as "Null". Please everyone be on the lookout of ↵Juan Linietsky
bugs related to assigning an empty variant to a string, and expecting it to be not empty!
2017-01-07Memory pool vectors (DVector) have been enormously simplified in code, and ↵Juan Linietsky
renamed to PoolVector
2017-01-02ObjectTypeDB was renamed to ClassDB. Types are meant to be more generic to ↵Juan Linietsky
Variant. All usages of "type" to refer to classes were renamed to "class" ClassDB has been exposed to GDScript. OBJ_TYPE() macro is now GDCLASS()
2017-01-01Welcome in 2017, dear changelog reader!Rémi Verschelde
That year should bring the long-awaited OpenGL ES 3.0 compatible renderer with state-of-the-art rendering techniques tuned to work as low as middle end handheld devices - without compromising with the possibilities given for higher end desktop games of course. Great times ahead for the Godot community and the gamers that will play our games!
2016-10-04fixes #6331, Variant::can_convertRăzvan Cosmin Rădulescu
2016-08-06Reverted printable null object, seems to cause bugs around and not sure why.Juan Linietsky
Will have to check better, likely for 3.0
2016-08-06Likely with bugs and with some features are missing, as well as profiler ↵Juan Linietsky
support, but VisualScript should be more or less done!
2016-07-28Fix regression with str() improvements for math typesIgnacio Etcheverry
2016-07-02Prettier str() for arraysIgnacio Etcheverry
2016-06-19Remove CHARTYPE_16BITS unused checksJ08nY
fix #5263
2016-06-12Made error when signal calls a method with the wrong number of parameters ↵Juan Linietsky
more detailed, closes #4893
2016-05-17-Added configuration warning system for nodesJuan Linietsky
-Added a new "add" and "instance" buttons for scene tree -Added a vformat() function to ease translation work
2016-05-04Add missing Vector2Array case to Variant::operator String()Ignacio Etcheverry
- Correcly display Vector2Array default arguments in the documentation
2016-03-09remove trailing whitespaceHubert Jarosz
2016-03-01AnimationTreePlayer: blend value tracks (closes #2299)Josh Grams
Variant: - zero() sets a Variant to the appropriate type of zero value - blend() blends part of one Variant on top of another.
2016-01-04-make signals throw an error when target method is not found, fixes #2036Juan Linietsky
-removed 4 arguments limit for emit_signal() from script -remvoed 4 arguments limit for call_deferred() from script
2016-01-02-Ability to roll-back script-exported properties to their default value on ↵Juan Linietsky
the script, closes #2128
2016-01-01Update copyright to 2016 in headersGeorge Marques
2015-12-31-Changed var2str and str2var in GDScript to use VariantWriter and VariantParserJuan Linietsky
-It is now finally possible to parse back a variant from text!
2015-09-03merged some stuff for okamJuan Linietsky
2015-06-29Several performance improvements, mainly in loading and instancing scenes ↵Juan Linietsky
and resources. A general speedup should be apparent, with even more peformance increase when compiling optimized. WARNING: Tested and it seems to work, but if something breaks, please report.
2015-05-27added conversion from int, string to colorJuan Linietsky
fixes #1971
2015-05-05Made type-checking for arguments less trict between bool, int real. Fixes #1816Juan Linietsky
2015-05-04-More strict argument type-checking, will make many bugs visible, fixes #1809Juan Linietsky
-added NOTIFICATION_INSTANCED
2015-05-04-invalidated string -> int automatic conversion, fixes #1788Juan Linietsky
2015-05-04added return keyword, fixes #1797Juan Linietsky
2015-05-01Sort xml files, so order is constantest31
Makes xml format work better with version control systems.