summaryrefslogtreecommitdiff
path: root/core
AgeCommit message (Collapse)Author
2021-08-22Replace BIND_VMETHOD by new GDVIRTUAL syntaxreduz
* New syntax is type safe. * New syntax allows for type safe virtuals in native extensions. * New syntax permits extremely fast calling. Note: Everything was replaced where possible except for `_gui_input` `_input` and `_unhandled_input`. These will require API rework on a separate PR as they work different than the rest of the functions. Added a new method flag METHOD_FLAG_OBJECT_CORE, used internally. Allows to not dump the core virtuals like `_notification` to the json API, since each language will implement those as it is best fits.
2021-08-21Merge pull request #51836 from akien-mga/string-remove-NO_USE_STDLIBRémi Verschelde
String: Remove old NO_USE_STDLIB code path
2021-08-20Fix winding of new convex hull implementation.Morris Tabor
2021-08-20Merge pull request #51902 from vnen/variant-internal-constructorRémi Verschelde
Fix initialization of objects in VariantInternal
2021-08-19Fix initialization of objects in VariantInternalGeorge Marques
2021-08-19Fix capsule height/radius setters with linked propertiesPouleyKetchoupp
Capsule height and radius setters can modify each other, rather than using clamping, to avoid cases where values are not set correctly when loading a scene (depending on the order of properties). Inspector undo/redo: Added the possibility to link properties together in the editor, so they can be undone together, for cases where a property can modify another one. Gizmo undo/redo: Capsule handles pass both radius and height values so they can be undone together.
2021-08-18Merge pull request #51627 from mhilbrunner/todo-for-neikeqRémi Verschelde
2021-08-18String: Remove old NO_USE_STDLIB code pathRémi Verschelde
We're using the standard library in many core classes by now so this code path no longer makes sense.
2021-08-18[Net] MultiplayerReplicator with initial state.Fabio Alessandrelli
Move the former "spawnables" functions to a dedicated MultiplayerReplicator class. Support custom overrides in replicator. Spawn/despawn messages can now contain a state. The state can be automatically encoded/decoded by passing the desired object properties to `spawnable_config`. You can use script properties to optimize the state representation. 2 Callables can be also specified to completely override the default implementation for sending and receiving the spawn/despawn event. (9 bytes overhead, and there's room for improvement here). When using a custom implementation `spawn` and `despawn` can be called with any Object, `send_spawn`/`send_despawn` can receive any Variant as a state, and the path is not required. Two new functions, `spawn` and `despawn`, convey the implementation independent method for requesting a spawn/despawn of an Object, while `send_spawn` and `send_despawn` represent the more low-level send event for a Variant to be used by the custom implementations.
2021-08-18Merge pull request #51787 from akien-mga/string-num-fix-default-decimalsRémi Verschelde
String: Fix default decimals truncation in num and num_real
2021-08-18Merge pull request #51807 from vnen/extension-fixesRémi Verschelde
Some fixes for the extension API
2021-08-17Properly set up virtual calls for extensionsGeorge Marques
2021-08-18String: Fix default decimals truncation in num and num_realRémi Verschelde
Fixes undefined behavior, and fixes the logic for negative powers of ten. Fixes #51764. Adds tests to validate the changes and prevent regressions. Adds docs for `String.num`.
2021-08-17Fixes to tests for Variant and Geometry3DAaron Franke
2021-08-17A few fixes in the extension C APIGeorge Marques
- Add MethodBind call (besides ptrcall), since vararg methods don't work with ptrcall. - Fix argument name in register constant function to the way it actually is used in the engine. - Change the integer constant type to GDNativeInt to keep it consistent.
2021-08-17Initialize call error struct when calling extensionsGeorge Marques
This allows users to not need to set it when the call is correct.
2021-08-17Merge pull request #51775 from timothyqiu/disable-undo-redoRémi Verschelde
Improve Undo/Redo menu items
2021-08-17Namespaces instead of underscore prefix for bindsMax Hilbrunner
Thanks to neikeq for the initial work. Co-authored-by: Ignacio Roldán Etcheverry <neikeq@users.noreply.github.com>
2021-08-17Merge pull request #51793 from KoBeWi/direnamRémi Verschelde
Fix renaming directories
2021-08-17Improve Undo/Redo menu itemsHaoyu Qiu
* Make Undo/Redo menu items disabled when clicking it does nothing. * Context menu of `TextEdit` * Context menu of `LineEdit` * Editor's Scene menu * Script editor's Edit menu and context menu (for Script and Text) * Make editor undo/redo log messages translatable. * Mark `UndoRedo`'s `has_{un,re}do()` methods as `const`. * Expose `TextEdit`'s `has_{un,re}do()` to scripts since `{un,re}do()` are already available.
2021-08-17Fix renaming directorieskobewi
2021-08-16Add partial support for Android scoped storage.ne0fhyk
This is done by providing API access to app specific directories which don't have any limitations and allows us to bump the target sdk version to 30. In addition, we're also bumping the min sdk version to 19 as version 18 is no longer supported by Google Play Services and only account of 0.3% of Android devices.
2021-08-16Merge pull request #51739 from neikeq/fix-csharp-instance-bindingsRémi Verschelde
Fix C# native instance bindings after recent re-write
2021-08-16Fix C# native instance bindings after recent re-writeIgnacio Roldán Etcheverry
This was needed after: 44691448911f1d29d4d79dbdd5553734761e57c4
2021-08-16Merge pull request #51368 from ↵Rémi Verschelde
TwistedTwigleg/GSOC_2020_Working_Branch_IK_SQUASHED New and improved IK system for Skeleton3D - Squashed!
2021-08-16Fix input methods returning zero strength when pressed status not requestedMai Lavelle
Fixes behavior of these methods: `InputMap::event_get_action_status` `InputEvent*::action_match` Previously when `p_pressed` was `nullptr`, `p_strength` would be set to `0.0f` regardless of event strength. This affected `InputEventAction` events processed by `Input.parse_input_event` for example. Regression found in afa89c9eea5c99
2021-08-15Add constant to vector function parameters that don't actually modify their ↵Ricard Rovira Cubeles
input. Add more overloads of vector multiplication, required by templates to compile with float=64.
2021-08-14New and improved IK system for Skeleton3DTwistedTwigleg
This PR and commit adds a new IK system for 3D with the Skeleton3D node that adds several new IK solvers, as well as additional changes and functionality for making bone manipulation in Godot easier. This work was sponsored by GSoC 2020 and TwistedTwigleg Full list of changes: * Adds a SkeletonModification3D resource * This resource is the base where all IK code is written and executed * Adds a SkeletonModificationStack3D resource * This node oversees the execution of the modifications and acts as a bridge of sorts for the modifications to the Skeleton3D node * Adds SkeletonModification3D resources for LookAt, CCDIK, FABRIK, Jiggle, and TwoBoneIK * Each modification is in it's own file * Several changes to Skeletons, listed below: * Added local_pose_override, which acts just like global_pose_override but keeps bone-child relationships intract * So if you move a bone using local_pose_override, all of the bones that are children will also be moved. This is different than global_pose_override, which only affects the individual bone * Internally bones keep track of their children. This removes the need of a processing list, makes it possible to update just a few select bones at a time, and makes it easier to traverse down the bone chain * Additional functions added for converting from world transform to global poses, global poses to local poses, and all the same changes but backwards (local to global, global to world). This makes it much easier to work with bone transforms without needing to think too much about how to convert them. * New signal added, bone_pose_changed, that can be used to tell if a specific bone changed its transform. Needed for BoneAttachment3D * Added functions for getting the forward position of a bone * BoneAttachment3D node refactored heavily * BoneAttachment3D node is now completely standalone in its functionality. * This makes the code easier and less interconnected, as well as allowing them to function properly without being direct children of Skeleton3D nodes * BoneAttachment3D now can be set either using the index or the bone name. * BoneAttachment3D nodes can now set the bone transform instead of just following it. This is disabled by default for compatibility * BoneAttachment3D now shows a warning when not configured correctly * Added rotate_to_align function in Basis * Added class reference documentation for all changes
2021-08-14Add the possibility to initialize the classes allocated with the PagedAllocatorAndreaCatania
It uses the (`const T &&... p_args`) forward reference, to avoid copying the memory in case it's an rvalue, or pass a reference in case it's an lvalue. This is an example: ```c++ PagedAllocator<btShapeBox> box_allocator; btShapeBox* box = box_allocator.alloc( btVector3(1.0, 1.0, 1.0) ); ```
2021-08-13Style: Cleanup code using `text_editor/completion/use_single_quotes`Rémi Verschelde
2021-08-13Merge pull request #51508 from AndreaCatania/mem-placementRémi Verschelde
Refactors the memnew_placement.
2021-08-13Merge pull request #51582 from AnilBK/ustring-macro-replacementsRémi Verschelde
ustring: Replace macros with inline functions.
2021-08-13Merge pull request #51607 from aaronfranke/includesRémi Verschelde
Fix some unnecessary includes
2021-08-13Add input buffering frameworkPedro J. Estébanez
Input buffering is implicitly used by event accumulation, but this commit makes it more generic so it can be enabled for other uses. For desktop OSs it's currently not feasible given main and UI threads are the same).
2021-08-13Improve input event accumulationPedro J. Estébanez
- API has been simplified: all events now go through `parse_input_event()`. Whether they are accumulated or not depends on the `use_accumulated_input` flag. - Event accumulation is now thread-safe (it was not needed so far, but it prepares the ground for the following changes). - Touch drag events now support accumulation.
2021-08-13Refactors the memnew_placement.AndreaCatania
With this commit the macro `memnew_placement` uses the standard memory placement syntax: `new (mem) TheClass()`, and removes the outdated and not used syntax: ``` _ALWAYS_INLINE_ void *operator new(size_t p_size, void *p_pointer, size_t check, const char *p_description) { ``` Thanks to this change, the function `memnew_placement` call is compatible with any class, and can also initialize classes with non-empty constructor: ``` // This is valid, like before. memnew_placement(mem, Variant); // This works too: memnew_placement(mem, Variant(123)); ```
2021-08-13Fix some unnecessary includesAaron Franke
2021-08-13Convert ustring macros to inline functions and use them wherever possible.Anilforextra
Add new inline functions to check if a character is lowercase or uppercase. Remove unused upper case macro.
2021-08-12Resource: Remove unused `_use_builtin_script()` virtual methodRémi Verschelde
And another piece of dead code found while searching for "use_builtin".
2021-08-11Merge pull request #38992 from Dragoncraft89/masterRémi Verschelde
Error handling functions for GdScript
2021-08-11Merge pull request #47378 from aaronfranke/use-input-enumsRémi Verschelde
Use key enum instead of plain integers for input code
2021-08-11Rename `iterations_per_second` to `physics_ticks_per_second`Hugo Locurcio
This makes it clearer that this property is only about physics FPS, not rendering FPS. The `physics_fps` project setting was also renamed to `physics_ticks_per_second` for consistency.
2021-08-10Use Key enum instead of plain integersAaron Franke
2021-08-10Merge pull request #49417 from Bhu1-V/gsoc-cmd-pltRémi Verschelde
Command Palette For Godot
2021-08-10Merge pull request #51017 from vnen/extension-fixesRémi Verschelde
2021-08-10Merge pull request #50682 from aaronfranke/basis-looking-atRémi Verschelde
Move code for looking_at to Basis
2021-08-09Rename GDNative call error enum values to use GDNATIVE prefixGeorge Marques
To make sure it does not clash with other libraries.
2021-08-09Use doubles for time in many other placesAaron Franke
2021-08-09[Net] Basic extensible MultiplayerAPI spawn/despawn.Fabio Alessandrelli
`PackedScene`s can be configured to be spawnable via a new `MultiplayerAPI.spawnable_config` method. They can be configured either to be spawned automatically when coming from the server or to always require verification. Another method, `MultiplayerAPI.send_spawn` lets you request a spawn on the remote peers. When a peer receive a spawn request: - If it comes from the server and the scene is configured as `SPAWN_MODE_SERVER`: - Spawn the scene (instantiate it, add it to tree). - Emit signal `network_spawn`. - Else: - Emit signal `network_spawn_request`. In a similar way, `despawn`s are handled automatically in `SPAWN_MODE_SERVER`. In `SPAWN_MODE_SERVER`, when a new client connects it will also receive, from the server all the spawned (and not yet despawned) instances.
2021-08-09[Core] Expose ResourceLoader.get_resource_uid.Fabio Alessandrelli