summaryrefslogtreecommitdiff
path: root/core
AgeCommit message (Collapse)Author
2021-07-30[Net] Implement RPC channels in MultiplayerAPI.Fabio Alessandrelli
2021-07-30[Net] Fix Marshalls infinite recursion crash.Fabio Alessandrelli
Variants like dictionaries and arrays can have cyclic references, which caused `encode_variant` to run an infinite recursion. Instead of keeping a stack and looking for cyclic references which would make serialization slower, this commit adds a `MAX_RECURSION_DEPTH` constant to Variant, and have `encode_variant` keep track of the current recursion depth, bailing when it's too high since this likely means a cyclic reference has been encountered.
2021-07-29[Net] Add generate_unique_id to MultiplayerPeer.Fabio Alessandrelli
Used by ENetMultiplayerPeer and WebSocketServer to generate network IDs, and exposed to the user for p2p networks (e.g. WebRTCMultiplayerPeer) and custom MultiplayerPeer implementations.
2021-07-29[Net] Fix RPC ID encoding/decoding for Node methods.Fabio Alessandrelli
2021-07-27Merge pull request #50939 from vnen/fix-variant-bool-conversionRémi Verschelde
Change Variant bool conversion to uint8_t
2021-07-27Change Variant bool conversion to uint8_tGeorge Marques
This ensures more portable conversion since not every path assume bool is 32-bits and there's no loss converting to 8-bits anyway.
2021-07-27[Core] Make enum variant cast and encoding 64 bitsFabio Alessandrelli
This should fix various issues where retrieving enum values from scripting languages would result in corrupted values (where 32 bits were valid, and the other 32 random data).
2021-07-27Fix Set range iterator implementationRaul Santos
2021-07-26Merge pull request #50899 from akien-mga/refrefRémi Verschelde
Use Ref<T> references as iterators where relevant
2021-07-26Merge pull request #38880 from aaronfranke/timerHugo Locurcio
Use doubles for time everywhere in Timer/SceneTree
2021-07-26Use Ref<T> references as iterators where relevantRémi Verschelde
And const when possible.
2021-07-26Merge pull request #50854 from SirQuartz/patch-31Rémi Verschelde
Fix dead code in `gdnative_interface.cpp`
2021-07-26Use doubles for time everywhere in Timer/SceneTreeAaron Franke
2021-07-25Fix dead code in `gdnative_interface.cpp`Nicholas Huelin
This pull request fixes dead code found in `gdnative_interface.cpp`
2021-07-25Fix various typosluz paz
Follow-up typos found via `codespell -q 3 -S ./thirdparty,*.po,./DONORS.md -L ackward,ang,ans,ba,beng,cas,childs,childrens,dof,doubleclick,fave,findn,hist,inout,leapyear,lod,nd,numer,ois,ony,paket,seeked,sinc,switchs,te,uint`
2021-07-25Merge pull request #50809 from akien-mga/iterators-const-referencesRémi Verschelde
2021-07-25Merge pull request #50250 from luzpaz/typosRémi Verschelde
Fix various typos
2021-07-25Use const references where possible for List range iteratorsRémi Verschelde
2021-07-25ResourceUID: Fix `remove_id` bindingRémi Verschelde
Fixes #50833.
2021-07-25Fix various typos with codespellluz paz
Found via `codespell -q 3 -S ./thirdparty,*.po,./DONORS.md -L ackward,ang,ans,ba,beng,cas,childs,childrens,dof,doubleclick,fave,findn,hist,inout,leapyear,lod,nd,numer,ois,ony,paket,seeked,sinc,switchs,te,uint`
2021-07-24Fix check for the first key in JSON stringify from Dictionary codeAaron Franke
2021-07-24Merge pull request #50535 from ChristopheClaustre/packedbytearray_decode_apiRémi Verschelde
Change in PackedByteArray decode api and docs
2021-07-24New to_***_array method to decode PackedByteArray to Packed***ArrayChristopheClaustre
Documentation for new PackedByteArray::to_***_array methods Documentation for to_byte_array method for PackedInt32/Int64/Float32/Float64Array
2021-07-24Merge pull request #50786 from reduz/implement-resource-uidsRémi Verschelde
Implement Resource UIDs
2021-07-24Implement Resource UIDsreduz
* Most resource types now have unique identifiers. * Applies to text, binary and imported resources. * File formats reference both by text and UID (when available). UID always has priority. * Resource UIDs are 64 bits for better compatibility with the engine. * Can be represented and used textually, example `uuid://dapwmgsmnl28u`. * A special binary cache file is used and exported, containing the mappings. Example of how it looks: ```GDScript [gd_scene load_steps=2 format=3 uid="uid://dw86wq31afig2"] [ext_resource type="PackedScene" uid="uid://bt36ojelx8q6c" path="res://subscene.scn" id="1_t56hs"] ``` GDScript, shaders and other special resource files can't currently provide UIDs, but this should be doable with special keywords on the files. This will be reserved for future PRs.
2021-07-23Use C++ iterators for Lists in many situationsAaron Franke
2021-07-23Merge pull request #50789 from aaronfranke/fix-input-action-raw-strRémi Verschelde
Fix Input get_action_raw_strength binding
2021-07-23Merge pull request #50748 from JFonS/gizmo_reworkRémi Verschelde
Node3D gizmo improvements
2021-07-23Node3D gizmo improvementsjfons
* Clean-up of node_3d_editor_plugin.{h,cpp}: removed unused code, fixed some bugs. * Moved node_3d_editor_gizmos.{h,cpp} to editor/plugins. * Added support for multiple gizmos per node. This means custom gizmos will no longer override the built-in ones and that multiple gizmos can be used in more complex nodes. * Added support for handle IDs. When adding handles to a gizmo, an ID can be specified for each one, making it easier to work with gizmos that have a variable number of handles. * Added support for subgizmos, selectable elements that can be transformed without needing a node of their own. By overriding _subgizmo_intersect_frustum() and/or _subgizmo_intersect_ray() gizmos can define which subgizmos should be selected on a region or click selection. Subgizmo transformations are applied using get/set/commit virtual methods, similar to how handles work.
2021-07-23Merge pull request #50765 from Calinou/resource-importer-expose-order-enumRémi Verschelde
Expose an ImportOrder enum in ResourceImporter
2021-07-23Merge pull request #50782 from timothyqiu/undoredo-refRémi Verschelde
Fix UndoRedo crash when clearing history
2021-07-23Merge pull request #50747 from bruvzg/move_alert_to_osRémi Verschelde
Move `alert` function from `DisplayServer` to `OS`.
2021-07-24Fix UndoRedo crash when clearing historyHaoyu Qiu
2021-07-23Expose an ImportOrder enum in ResourceImporterHugo Locurcio
This avoids using magic numbers in code.
2021-07-22Fix Input get_action_raw_strengthAaron Franke
2021-07-22Make Object "meta" functions take StringName.Fabio Alessandrelli
The various get_meta, set_meta, has_meta, get_meta_list, remove_meta functions now uses StringName, allowing further optimizations via the SNAME macro when used from C++ (this PR does not change the various usage though).
2021-07-22Move `alert` function from `DisplayServer` to `OS`.bruvzg
2021-07-22Implement textual ext/subresource IDs.reduz
* Friendlier with version control. * Generates pseudo unique IDs, to minimize conflicts when merging, but still user readable (so, not UUID). * Eventually will also allow to have more precisely named sub-resources in imported files. * This will allow better reloading on changes (including resources already loaded) as well as better keeping track of changes on the DCC. * Keeps backward compatibility with the old formats. * Binary and text format version incremented to mark breakage in forward compatibility.
2021-07-22Merge pull request #50319 from nekomatata/optimize-node-path-checkRémi Verschelde
Optimize NodePath update when renaming or deleting nodes in the editor
2021-07-21Add min_axis and max_axis to Vector2iGilles Roudière
2021-07-21Use the standard C `INFINITY` and `NAN` constants directlyHugo Locurcio
The `Math_INF` and `Math_NAN` defines were just aliases for those constants, so we might as well use them directly. Some portions of the code were already using `INFINITY` directly.
2021-07-20Adds ability to debug stringnamesreduz
* References (which include hash tables) can be profiled with --debug-stringnames
2021-07-20Merge pull request #50655 from JFonS/sname_optRémi Verschelde
Editor StringName and Viewport optimizations
2021-07-20Editor StringName and Viewport optimizationsJoan Fons
* Added explicit return type to the SNAME macro. * Add some extra SNAME usages. * Change some ClassDB methods to use const StringName & arguments. * Cache the Window parent in Control because it's used in is_layout_rtl(), which is called often. * Only enable internal processing for viewports that need it. * Change CanvasItem::group to be a StringName because it's only used as that.
2021-07-20Merge pull request #49882 from Faless/mp/4.x_rpc_gdFabio Alessandrelli
[Net] New `@rpc` annotation, "sync" is no longer part of mode.
2021-07-20Sync controller mappings DB with SDL2 community repoRémi Verschelde
Synced with gabomdq/SDL_GameControllerDB@241fed0a4425d1b7679e3d3d7abdd2a2cd7fa57c.
2021-07-20[Net] Single `rpc` annotation. "sync" no longer part of mode.Fabio Alessandrelli
- Move the "sync" property for RPCs to RPCConfig. - Unify GDScript annotations into a single one: - `@rpc(master)` # default - `@rpc(puppet)` - `@rpc(any)` # former `@remote` - Implement three additional `@rpc` options: - The second parameter is the "sync" option (which also calls the function locally when RPCing). One of "sync", "nosync". - The third parameter is the transfer mode (reliable, unreliable, ordered). - The third parameter is the channel (unused for now).
2021-07-20Merge pull request #50518 from timothyqiu/locale-azRémi Verschelde
Fix missing locale names
2021-07-20Merge pull request #50206 from groud/undoredo_increase_args_countRémi Verschelde
Increase the number of arguments accepted by UndoRedo methods
2021-07-18Optimize StringName usagereduz
* Added a new macro SNAME() that constructs and caches a local stringname. * Subsequent usages use the cached version. * Since these use a global static variable, a second refcounter of static usages need to be kept for cleanup time. * Replaced all theme usages by this new macro. * Replace all signal emission usages by this new macro. * Replace all call_deferred usages by this new macro. This is part of ongoing work to optimize GUI and the editor.