Serialize dictionaries adding newlines between key-value pairs
Serialize group lists also with newlines in between
Serialize string properties escaping only " and \ (needed for a good diff experience with built-in scripts and shaders)
Bonus:
Make AnimationPlayer serialize its blend times always sorted so their order is predictable in the .tscn file.
This PR is back-compat; won't break the load of existing files.
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).
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!
Was a regression from ddbf2ff.
This commit also introduce a "#define snprintf _snprintf", so the rest of the file was simplified to make use of this
instead of distinguishing between snprintf and _snprintf in the various functions.
Documentation for HTTPClient.
Added a query_string_from_dict method to HTTPClient to create a x-www-form-urlencoded valid query string for GET and POST messages.
String now has http_escape() and http_unescape() methods to help facilitate the above query_string_from_dict method.
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.
-=-=-=-=-=-=-=-=-=-=-=-=-=
-Begin work on Navigation Meshes (simple pathfinding for now, will improve soon)
-More doc on theme overriding
-Upgraded OpenSSL to version without bugs
-Misc bugfixes
-fix some menus
-fixed bug in out transition curves
-detect and remove file:/// in collada
-remove multiscript for now
-remove dependencies on mouse in OS, moved to Input
-avoid fscache from screwing up (fix might make it slower, but it works)
-funcref was missing, it's there now
Entering a somethign in the 'Path field' triggers the
`_path_changed` signal being triggered.
This in turn calls Globals::localize_path(const String& p_path) with the
currently entered string.
localize_path then is replacing backslashes with slashes and calls
afterwards `String::simplify_path`
String::simplify_path is checking wheter a string starts with:
- res://
- local://
- user://
If any of those is true it removes this section.
However, if any of the first letters of those are matching begins_with
returns true, which is wrong. It should only return true if the whole
string is matched at the beginning.
This caused the whole desaster and lead localize_path into an endless loop
because out of `u` suddenly became user:// which it then tried again to
localize and so on.
This fix, fixes the root of the problem which is begins_with which should
not return true if not the whole search string was matched.
Signed-off-by: Vinzenz Feenstra <evilissimo@gmail.com>