Commit graph

4443 commits

Author SHA1 Message Date
Hugo Locurcio
2560070c0a
Remove Engine.editor_hint in favor of Engine.is_editor_hint()
The `Engine.set_editor_hint()` setter method is no longer exposed
to scripting, which makes the property effectively read-only from
an user perspective.
2021-09-20 14:24:39 +02:00
Rémi Verschelde
0068247ab6
Merge pull request #52513 from Ev1lbl0w/fix_path_double_slash
Fix path with multiple slashes not being corrected on templates
2021-09-20 13:00:29 +02:00
Rémi Verschelde
89417ba75b
Merge pull request #52398 from deakcor/dev-transform 2021-09-20 08:46:51 +02:00
Vincent D
aa82cb6f35 Expose get_skew for transform2d and add new constructor
Expose set_scale and set_skew for transform2d

Replacing float by real_t

Adding const parameters

Updated transform2d doc
2021-09-19 17:10:05 +02:00
George Marques
262d9397fb
Allow indexing of String values in scripting languages 2021-09-17 16:24:56 -03:00
Rémi Verschelde
220b69ab56
Merge pull request #52450 from aaronfranke/they-came-from-scale
Replace Vector3.to_diagonal_matrix with Basis.from_scale
2021-09-17 19:38:36 +02:00
George Marques
455e142d37
Allow comparing equality between builtin types and null 2021-09-17 12:33:52 -03:00
Aaron Franke
bf0213470c
Replace Vector3.to_diagonal_matrix with Basis.from_scale 2021-09-17 10:30:30 -05:00
Rémi Verschelde
191c34eb0d
Merge pull request #52734 from lucypero/thread_override_master 2021-09-16 21:45:04 +02:00
Lucy
e9723efd34 Allow for platform Thread implementation override 2021-09-16 11:23:29 -03:00
Rémi Verschelde
104a6191fd
Merge pull request #52739 from BastiaanOlij/gdextension_array_index 2021-09-16 15:15:02 +02:00
Rémi Verschelde
46e37545b8
Merge pull request #52740 from akien-mga/os-get_locale-language
Implement `OS::get_locale_language()` helper method
2021-09-16 14:23:06 +02:00
Bastiaan Olij
25d0e4bb5b Add GD extensions operator functions for arrays 2021-09-16 22:00:51 +10:00
Rémi Verschelde
ca5c28fed4
Merge pull request #52358 from kleonc/astar_error_messages
`AStar` Add error messages
2021-09-16 13:36:13 +02:00
Rémi Verschelde
910c7dbdb7
Merge pull request #52735 from BastiaanOlij/gdextension_property_group
Add property group and subgroup registration to extensions
2021-09-16 11:02:59 +02:00
Rémi Verschelde
def99c7baf
Implement OS::get_locale_language() helper method
This method extracts the 2 or 3-letter language code from `OS::get_locale()`,
making it easier for users to identify the "main" language code for users
that might have different OS locales due to different OS or region, but
should be matched to the same translation (e.g. "generic" Spanish).

Fixes #40703.
2021-09-16 09:34:58 +02:00
Juan Linietsky
e2bd0a0a73
Merge pull request #52571 from timothyqiu/expose-enum
Expose enum related methods in ClassDB
2021-09-15 23:43:35 -03:00
Bastiaan Olij
12868791f2 Add property group and subgroup registration to extensions 2021-09-16 12:37:43 +10:00
ne0fhyk
69f890ff11 Provide a getter for the project data directory. 2021-09-15 12:52:03 -07:00
Aaron Franke
5d03c0e0b6
Fix String::num_real and String test cases when compiling with doubles 2021-09-15 13:41:12 -05:00
Rémi Verschelde
fbef32ab46
Merge pull request #52693 from akien-mga/fixup-inputmap-macos-override
InputMap: Fixup `macos` feature tag overrides after #52291
2021-09-15 13:20:40 +02:00
Rémi Verschelde
07a58230ea
InputMap: Fixup macos feature tag overrides after #52291
Fixes #52691.
2021-09-15 11:48:54 +02:00
Jacob Edie
2b292a1a2a
--single-window is passed through project manager.
This means you can start godot with --single-window
2021-09-15 10:20:50 +02:00
Rémi Verschelde
3705ad7d8f
Merge pull request #52123 from lightspot21/fix-placement-new-warning
Silence false-positive warning for malformed placement new on GCC 11.1
2021-09-15 09:31:42 +02:00
Rémi Verschelde
0e7beb183a
Merge pull request #52562 from BastiaanOlij/gd_extensions_register_drivers
Add driver types to GD extension initialisation levels
2021-09-15 08:46:43 +02:00
Rémi Verschelde
1201ba6649
Merge pull request #52291 from Calinou/inputmap-rename-osx-macos
Rename `osx` to `macos` in input map feature tag handling
2021-09-15 08:45:46 +02:00
Hugo Locurcio
9b1986fb9c
Rename osx to macos in input map feature tag handling
This follows the general feature tag rename for 4.0.
2021-09-15 03:12:18 +02:00
PouleyKetchoupp
2ca94e51e4 Clean convex hull decomposition code
Remove unnecessary conversion between triangle data and vertex data
whenever possible.
2021-09-14 17:14:06 -07:00
Grigoris Pavlakis
abef2b7194 Fix placement new on zero-sized region warning on GCC 11.1
On latest (11.1 as of this commit) GCC, the following warning is
continuously issued during build:
warning: placement new constructing an object of type
'SafeNumeric<unsigned int>' and size '4' in a region of type
'uint32_t*' {aka 'unsigned int*'} and size '0' [-Wplacement-new=]

This happens because on 98ceb60eb4 the new operator override used
was dropped and replaced with standard placement new. GCC sees the
subtraction from the pointer and complains as it thinks that the
SafeNumeric is placed outside an allocation, not knowing that the
address requested is already inside one.

After suggestions, the false positive is silenced, with no other
changes.
2021-09-15 00:07:21 +03:00
Fabio Alessandrelli
c5a979eba5
Merge pull request #52613 from V-Sekai/fix_custom_sync_commands
Fix custom multiplayer sync commands
2021-09-14 21:27:12 +02:00
Rémi Verschelde
1cec7057bf
Merge pull request #52535 from e8newallm/52490-type_conversion
Added explicit type conversion to uint32_t
2021-09-14 15:36:52 +02:00
Aaron Franke
3a902c66c4
Revert some URLs from the "Replace HTTP URLs with HTTPS" PR 2021-09-13 15:18:35 -05:00
Rémi Verschelde
70ba366743
Merge pull request #50375 from Paulb23/code_edit_unit_tests 2021-09-13 21:51:20 +02:00
Rémi Verschelde
41562b9198
Merge pull request #52049 from theraot/master 2021-09-13 16:49:24 +02:00
Matthew Newall
f048a9ad4e Added explicit type conversions 2021-09-13 14:26:47 +00:00
Bastiaan Olij
f9849a2717 Add driver types to GD extension initialisation levels 2021-09-13 18:50:00 +10:00
SaracenOne
dace12082b Fix custom multiplayer sync commands 2021-09-12 21:20:10 +01:00
Haoyu Qiu
d2aef4c439 Expose enum related methods in ClassDB 2021-09-11 20:33:05 +08:00
Juan Linietsky
6679790fac
Merge pull request #52406 from ellenhp/libvorbis
Replace stb_vorbis with libvorbis
2021-09-10 16:24:59 -03:00
Max Hilbrunner
744d5829b7
Merge pull request #52229 from lawnjelly/basis_quat_warning
Improve Basis::get_quaternion error message
2021-09-10 13:21:00 +02:00
Ricardo Subtil
eef0327d1e Fix path with multiple slashes not being corrected on templates 2021-09-10 11:14:40 +01:00
Ellen Poe
f5d9c7b487 Replace stb_vorbis with libogg+libvorbis 2021-09-09 19:39:04 -07:00
Fabio Alessandrelli
e6106edd16
Merge pull request #52408 from GiantBlargg/fix-string-cast
Fix invalid string cast
2021-09-08 15:31:25 +02:00
Max Hilbrunner
5b25457794 Multiplayer networking renames/simplification
Removes _networking_ prefix from some methods and members, now that multiplayer has been largely moved out of Node and SceneTree and is seperated into its own set of classes.
2021-09-08 12:05:54 +02:00
Max Hilbrunner
f8fb2bc0b4
Merge pull request #52097 from mortarroad/master-fix-convex-hull-double-edges
Fix emitting duplicate edges for convex hulls
2021-09-07 21:50:16 +02:00
Juan Linietsky
58388f8cec
Merge pull request #47391 from Calinou/platform-feature-tags-lowercase
Make platform feature tag names lowercase
2021-09-07 16:30:50 -03:00
Max Hilbrunner
9ada29e918
Merge pull request #52289 from Calinou/remove-old-msvc-support-ifdef
Remove `#ifdefs` for handling compilation with Visual Studio < 2015
2021-09-07 21:01:44 +02:00
Max Hilbrunner
acc776f7b6
Merge pull request #52442 from Faless/mp/4.x_rpc_manager
[Net] Move multiplayer classes to own subfolder. Split RPC from MultiplayerAPI.
2021-09-07 18:44:39 +02:00
Fabio Alessandrelli
bf9aae09ba [Net] Move multiplayer to core subdir, split RPCManager.
Move multiplayer classes to "core/multiplayer" subdir.

Move the RPCConfig and enums (TransferMode, RPCMode) to a separate
file (multiplayer.h), and bind them to the global namespace.

Move the RPC handling code to its own class (RPCManager).

Renames "get_rpc_sender_id" to "get_remote_sender_id".
2021-09-07 11:14:30 +02:00
Gilles Roudière
4bd7700e89 Implement properties arrays in the Inspector. 2021-09-07 09:51:28 +02:00
Anilforextra
a1f616dcfc Use builtin Vector2 functions for calculation of angles.
.
2021-09-07 08:30:26 +05:45
Gilles Roudière
c6f6c05a52
Merge pull request #51722 from TokageItLab/implement-set-read-only-in-extended-class
Apply `set_read_only()` to child classes of `EditorProperty` elements
2021-09-05 18:58:02 +02:00
Silc 'Tokage' Renew
facf8f1883 Apply set_read_only() to child classes of EditorProperty elements 2021-09-05 18:22:17 +09:00
Daniel Doran
3264ba296e fix invalid string cast 2021-09-04 21:38:07 -06:00
Bastiaan Olij
f3ab094133
Merge pull request #52309 from BastiaanOlij/add_extension_index_functions
Add functions for access members by index on packed array objects
2021-09-05 11:52:43 +10:00
kleonc
71255bc2a9 AStar Add error messages 2021-09-03 00:06:23 +02:00
SaracenOne
f09f12ce55 Fix _send_default_spawn_default function sending zero length
PackedByteArray when deriving from a single PackedByteArray
state variant.
2021-09-02 21:36:54 +01:00
Bastiaan Olij
23f27fbffc Add functions for access members by index on packed array objects 2021-09-02 09:41:35 +10:00
Paulb23
d186862338 Fix InputMap and display server not nulling singleton on free 2021-09-01 16:46:04 +01:00
George Marques
25ae279317
Merge pull request #52270 from KoBeWi/goodbye_polar
Remove cartesian2polar and polar2cartesian
2021-09-01 09:33:13 -03:00
George Marques
cf59028972
Merge pull request #48237 from KoBeWi/they_came_from_angle
Add Vector2.from_angle() method
2021-09-01 09:32:42 -03:00
Hugo Locurcio
ac7541c1b1
Merge pull request #52026 from Calinou/constiterator-fix-const
Fix ConstIterator to allow `for` range loops on Packed*Array
2021-09-01 14:25:01 +02:00
Ignacio Roldán Etcheverry
cca26cc83f Fix ClassDB API type mismatch bug between --editor and player
There are two ways a class can be added to ClassDB:

- `A`: When an instance of the class is created for the first time. When
  this happends the class is not registered/exposed to scripts.
- `B`: When calling `GDREGISTER_CLASS(ClassName)` or similar. When this
  happens the class is registered/exposed to scripts.

ClassDB has an API type property to differentiate between the core
and editor APIs. Up until now the API type was determined whenever
the class is added to ClassDB (either `A` or `B`).

The problem comes when a class is instantiated (`A`) before
being registered (`B`).
If at this point the current defined API is not the same as when the
class is later registered, this will result in a mismatch between
`--editor` and non-editor apps.
This is specially bad for C# as it makes the editor player abort.

This was happening with `EditorPaths` which, while being registered
during the editor API classes registrations, it was also being
instantiated earlier when running the editor or the project manager,
via a call to `EditorPaths::create()`. This regression was introduced
in 1074017f04.

This commit fixes this simply by re-assigning the class API type when
the class is registered (`B`).
This is correct because API type describes registered/exposed classes.
It shouldn't cause any regressions as the API type should not be
accessed of classes that are not (or not yet) registered/exposed.

Code locations for reference:
- Method to add a class to ClassDB: `ClassDB::_add_class2`
- Code that adds classes to ClassDB post first initialization (`A`):
  `memnew` macros -> `Object::_postinitialize` ->
  `Object::initialize_class` -> `ClassDB::_add_class2`.
- Code adds class to ClassDB and registers/exposes it to scripts:
  `GDREGISTER_CLASS` macros -> `ClassDB::register_class<T>` ->
  `Object::initialize_class` -> `ClassDB::_add_class2`.
2021-08-31 22:35:32 +02:00
Hugo Locurcio
2daaf0fdc3
Make platform feature tag names lowercase
Feature tag names are still case-sensitive, but this makes built-in
feature tags more consistent.

- `Windows` -> `windows`
- `OSX` -> `osx`
- `LinuxBSD` -> `linuxbsd`
- `Android` -> `android`
- `iOS` -> `ios`
- `HTML5` -> `html5`
- `JavaScript` -> `javascript`
- `UWP` -> `uwp`
2021-08-31 20:34:44 +02:00
Hugo Locurcio
fc0bfbb33b
Remove #ifdefs for handling compilation with Visual Studio < 2015
Godot 3.3 and later require Visual Studio 2017 to be compiled.
2021-08-31 20:04:17 +02:00
kobewi
3f3739ccb5 Add Vector2.from_angle() method 2021-08-31 01:53:58 +02:00
Juan Linietsky
bcd73fc00a
Merge pull request #52240 from Rubonnek/rename-rel-path
Rename `String::is_rel_path` to `String::is_relative_path`
2021-08-30 20:45:45 -03:00
kobewi
017c94222e Remove cartesian2polar and polar2cartesian 2021-08-31 01:41:41 +02:00
Juan Linietsky
6dab6e4136
Revert " Improve collision generation usability in the new 3D scene import workflow." 2021-08-30 11:30:36 -03:00
Camille Mohr-Daurat
b60a51f023
Merge pull request #51985 from AndreaCatania/coll
Improve collision generation usability in the new 3D scene import workflow.
2021-08-30 07:25:51 -07:00
lawnjelly
d3a3b3aff3 Improve Basis::get_quaternion error message
The previous error message incorrectly suggested that any Basis could be fixed by calling get_rotation_quation() or orthonormalize(). This PR points out that only a valid rotation Basis can be fixed in this way.
2021-08-30 07:26:25 +01:00
Haoyu Qiu
fd52e18d19 Try other resolved IPs if one fails to connect 2021-08-30 13:00:48 +08:00
Wilson E. Alvarez
d11c1afc04
Rename String::is_rel_path to String::is_relative_path 2021-08-29 20:41:29 -04:00
Fabio Alessandrelli
64b9f30b92 [Net] Rename RPC "puppet" to "auth" (authority). Drop "master".
This commit completely removes the RPC_MODE_MASTER ("master" keyword),
and renames the RPC_MODE_PUPPET to RPC_MODE_AUTHORITY ("auth" keyword).

This commit also renames the "Node.[get|set]_network_master" methods to
"Node.[get|set]_network_authority".

This commit also renames the RPC_MODE_REMOTE constant to RPC_MODE_ANY.

RPC_MODE_MASTER in Godot 3.x meant that a given RPC would be callable by
any puppet peer on the master, while RPC_MODE_PUPPET meant that it would
be callable by the master on any puppet.

Beside proving to be very confusing to the user (referring to where it
could be called instead of who can call it) the RPC_MODE_MASTER is quite
useless. It is almost the same as RPC_MODE_REMOTE (anyone can call) with
the exception that the network master cannot. While this could be useful
to check in some case, in such a function you would anyway need to check
in code who is the caller via get_rpc_sender_id(), so adding the check
there for those rare cases does not warrants a dedicated mode.
2021-08-30 00:54:38 +02:00
Fabio Alessandrelli
838a449d64
Merge pull request #51788 from Faless/mp/4.x_replicator_sync
[Net] MultiplayerReplicator state sync.
2021-08-30 00:48:10 +02:00
Hugo Locurcio
4d08a737fb
Merge pull request #52180 from timothyqiu/config-file-prop
Quote and escape ConfigFile keys when necessary
2021-08-28 23:49:00 +02:00
Max Hilbrunner
04c64b59a1
Merge pull request #47406 from mashumafi/master-Array-insert-rc
Array::insert consistent with Pool*Array::insert
2021-08-28 21:18:39 +02:00
Max Hilbrunner
99c2329b73
Merge pull request #43522 from qarmin/divide_by_zero_in_vectori
Fix crash when dividing by 0 in Vector2/3i
2021-08-28 19:53:28 +02:00
Haoyu Qiu
597d489a20 Quote and escape ConfigFile keys when necessary 2021-08-28 18:48:45 +08:00
K. S. Ernest (iFire) Lee
d04aa9a114
Merge pull request #52122 from V-Sekai/autoload_list
Use sorted map for autoloads in ProjectSettings to preserve order.
2021-08-27 14:41:40 -07:00
Max Hilbrunner
4e67e9bca6
Merge pull request #52090 from balloonpopper/bug52060
Correct null and boolean values being capitalised by the str command
2021-08-27 21:05:47 +02:00
Ellen Poe
460e0ce314 Add a SafeList data structure for future audio server usage. 2021-08-27 10:26:18 -07:00
Camille Mohr-Daurat
9206f561f5
Merge pull request #52110 from nekomatata/fix-segment-intersection
Fix segment intersection consistency in Geometry2D
2021-08-27 08:48:29 -07:00
Lyuma
31f790299c Use OrderedHashMap for autoloads to preserve order 2021-08-26 21:55:26 -07:00
Hugo Locurcio
60116b17b5
Add an Array.pop_at() method to pop an element at an arbitrary index
Negative indices are supported to pop an element relative from the end.
2021-08-27 00:51:17 +02:00
Juan Linietsky
22cae39c1e
Merge pull request #52121 from groud/fix_localvector_insert
Fix LocalVector crash on insert.
2021-08-26 13:31:35 -03:00
Juan Linietsky
d19b12dbd2
Merge pull request #52107 from timothyqiu/overriden
Fix misspelled "overriden"
2021-08-26 13:07:52 -03:00
Juan Linietsky
eb940ca2a0
Merge pull request #51928 from reduz/extension-loader
Implement Extension Loader
2021-08-26 10:24:25 -03:00
Fabio Alessandrelli
2d2855cd53 Data structure optimizations as per review. 2021-08-26 13:35:33 +01:00
Juan Linietsky
34e286d6a3
Merge pull request #52077 from reduz/error-ret-doc
Implement error return documentation
2021-08-26 08:42:06 -03:00
Gilles Roudière
de0765b94a Fix LocalVector crash on insert. 2021-08-26 11:54:56 +02:00
Balloonpopper
4fae7ae9dc Correct null and boolean values being capitalised by the str command 2021-08-26 17:11:34 +10:00
PouleyKetchoupp
511c80b2ec Fix segment intersection consistency in Geometry2D
Segment collision results could be different depending on the direction
when they exactly touch (order of the points in segments). This was due
to the way parallelism was checked, using different logic based on
positive or negative sign of cross products.

Now the results are the same whatever the direction, without changing
the current design, which is that parallel or colinear segments are
not considered colinear.

Fixes inconsistencies with raycasts exactly on edges of convex shapes
depending on the direction.
2021-08-25 18:17:52 -07:00
Haoyu Qiu
eba7265a1c Fix misspelled "overriden"
In recent GDVIRTUAL PR and SkeletonModification3DJiggle doc.
2021-08-26 01:44:01 +08:00
Morris Tabor
75dd294732 Fix emitting duplicate edges for convex hulls
Identical to https://github.com/godotengine/godot/pull/52059
2021-08-25 14:18:45 +02:00
reduz
e2f8df8c5b Add ability to register singletons from engine API
* Exposed functions in Engine to register and unregister singletons.
* Added the concept of user singletons, which can be removed (the system ones can't).
2021-08-25 08:32:25 -03:00
reduz
96f8254b24 Implement error return documetation
Adds ability to add error return documetation to the binder and class reference.
Usage example:

```C++
void MyClass::_bind_method() {
	[..]
	BIND_METHOD_ERR_RETURN_DOC("load", ERR_FILE_CANT_OPEN, ERR_FILE_UNRECOGNIZED);
}
```

One function of ConfigFile was changed as example.
2021-08-24 15:28:29 -03:00
Max Hilbrunner
7e0f1fa2ec
Merge pull request #52041 from Rubonnek/expose-simplify-path
Expose `String.simplify_path`
2021-08-24 17:06:16 +02:00
Theraot
ef54d35395 Fix get_base_dir windows top level directory logic
This is a fix for https://github.com/godotengine/godot/issues/52048
2021-08-24 04:16:59 -05:00
Wilson E. Alvarez
17821603b4
Expose String.simplify_path 2021-08-24 00:48:45 -04:00
reduz
65ca132a80 Expose RID creation utilities.
* Exposed as utility functions.
* Not very useful for script, but vital for creating servers using native extensions.
2021-08-23 21:55:45 -03:00
Juan Linietsky
aa3c3a9ebb
Merge pull request #52036 from reduz/native-extension-argument-pointers
Implement NativeExtension pointer arguments
2021-08-23 20:36:48 -03:00
reduz
44d62a9f4b Implement NativeExtension pointer arguments
* Allows calling into native extensions directly with a pointer
* Makes it easier to implement some APIs more efficiently
* Appears with a "*" in the documentation for the argument.
* Implementing the pointer handling is entirely up to the implementation, although the extension API provides some hint.
* AudioStream has been implemented as an example, allowing to create NativeExtension based AudioStreams.
2021-08-23 19:58:40 -03:00
Max Hilbrunner
0df9895eb7
Merge pull request #51791 from mhilbrunner/better-error-names
Improve error descriptions
2021-08-23 20:13:32 +02:00
Hugo Locurcio
87b985a6aa
Fix ConstIterator to allow for range loops on Packed*Array 2021-08-23 19:00:33 +02:00
Max Hilbrunner
6dae9f5c36 Improve error descriptions 2021-08-23 17:58:24 +02:00
Max Hilbrunner
583b6a594a
Merge pull request #51971 from aaronfranke/https
Replace HTTP URLs with HTTPS for sites with HTTPS versions
2021-08-23 15:58:54 +02:00
Max Hilbrunner
ae306665d3
Merge pull request #51750 from jmb462/inputmap_action_suggestions
Adding InputMap action error suggestions for Input singleton (Fix #51634)
2021-08-23 15:19:20 +02:00
reduz
5cecdfa8af Entirely removes BIND_VMETHOD in favor of GDVIRTUAL
* `_gui_input`, `_input`, `_unhandled_input` and `_unhandled_key_input` are now regular C++ virutal functions.
* Everything else converted to GDVIRTUAL
* BIND_VMETHOD is gone, always use the new syntax from now on.

Creating `_gui_input` method and using the binder to register events will no longer work, simply override the virtual function now.
2021-08-23 08:10:13 -03:00
Aaron Franke
ae1702bee5
Replace HTTP links with HTTPS for sites with HTTPS versions 2021-08-22 20:13:11 -05:00
AndreaCatania
de0991d801 Fix Vector ConstIterator constructor.
The  constructor was expecting a mutable pointer, while the passed pointer was immutable ( returns a const pointer), so the compilation was failing when iterating a constant .
2021-08-22 18:19:04 +02:00
reduz
3682978aee Replace BIND_VMETHOD by new GDVIRTUAL syntax
* 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-22 08:23:58 -03:00
Rémi Verschelde
0a001afec5
Merge pull request #51836 from akien-mga/string-remove-NO_USE_STDLIB
String: Remove old NO_USE_STDLIB code path
2021-08-21 09:18:47 +02:00
reduz
542e6e8ca6 Implement Extension Loader
* Extensions are now scanned and loaded on demand.
* Extensions found are cached into a file that is used to load them (which is also exported).
* Editor will ask to restart when an extension requires core functionality.
* Editor will attempt to load extensions always before importing or loading scenes. This ensures extensions can register the relevant types.
2021-08-20 16:02:24 -03:00
Morris Tabor
054c7a125f Fix winding of new convex hull implementation. 2021-08-20 14:44:56 +02:00
Rémi Verschelde
603502c11c
Merge pull request #51902 from vnen/variant-internal-constructor
Fix initialization of objects in VariantInternal
2021-08-20 08:10:38 +02:00
George Marques
a685535ad5
Fix initialization of objects in VariantInternal 2021-08-19 20:19:47 -03:00
PouleyKetchoupp
645bc94bfc Fix capsule height/radius setters with linked properties
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-19 10:31:19 -07:00
Rémi Verschelde
de7b6d13eb
Merge pull request #51627 from mhilbrunner/todo-for-neikeq 2021-08-18 20:13:50 +02:00
Rémi Verschelde
b033dff983
String: Remove old NO_USE_STDLIB code path
We're using the standard library in many core classes by now so
this code path no longer makes sense.
2021-08-18 14:38:04 +02:00
Fabio Alessandrelli
b05cb0fd7d [Net] Add state sync to replicator.
Like the spawn/despawn feature, it can be completely overridden with 2
custom callables.
The callables will be called with the list of tracked objects.
In SERVER mode, objects are automatically tracked, while in CUSTOM mode
you can manually track them via `track`/`untrack` (but that's optional).
The default sync only happens from server to client, with batch updates,
over unreliable channel (but with custom ordering).
The default sync will warn you, if your state representation gets too
big.
2021-08-18 12:37:45 +01:00
Fabio Alessandrelli
d4dd859991 [Net] MultiplayerReplicator with initial state.
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-18 10:21:29 +01:00
Rémi Verschelde
d7b843a060
Merge pull request #51787 from akien-mga/string-num-fix-default-decimals
String: Fix default decimals truncation in num and num_real
2021-08-18 09:31:34 +02:00
Rémi Verschelde
17ce4846ff
Merge pull request #51807 from vnen/extension-fixes
Some fixes for the extension API
2021-08-18 08:05:02 +02:00
George Marques
3b593b596e
Properly set up virtual calls for extensions 2021-08-17 22:11:11 -03:00
Rémi Verschelde
066dbc2f0c
String: Fix default decimals truncation in num and num_real
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-18 00:48:03 +02:00
Aaron Franke
e5d85ac751
Fixes to tests for Variant and Geometry3D 2021-08-17 16:46:08 -05:00
George Marques
fcfea84d5e
A few fixes in the extension C API
- 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-17 18:10:58 -03:00
George Marques
ecc5921143
Initialize call error struct when calling extensions
This allows users to not need to set it when the call is correct.
2021-08-17 18:09:36 -03:00
Rémi Verschelde
273d1ca932
Merge pull request #51775 from timothyqiu/disable-undo-redo
Improve Undo/Redo menu items
2021-08-17 19:09:56 +02:00
Max Hilbrunner
81f7d1890b Namespaces instead of underscore prefix for binds
Thanks to neikeq for the initial work.

Co-authored-by: Ignacio Roldán Etcheverry <neikeq@users.noreply.github.com>
2021-08-17 16:10:09 +02:00
Rémi Verschelde
913a7a63d5
Merge pull request #51793 from KoBeWi/direnam
Fix renaming directories
2021-08-17 16:06:30 +02:00
Haoyu Qiu
16c2d4ef22 Improve Undo/Redo menu items
* 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-17 21:11:10 +08:00
kobewi
0dde3e5b59 Fix renaming directories 2021-08-17 14:38:48 +02:00
ne0fhyk
3a00ff1cce Add partial support for Android scoped storage.
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-16 23:11:56 -07:00
jmb462
a3b9842616 Adding InputMap action error suggestion for Input singleton 2021-08-16 20:54:37 +02:00
Rémi Verschelde
2735f829c9
Merge pull request #51739 from neikeq/fix-csharp-instance-bindings
Fix C# native instance bindings after recent re-write
2021-08-16 18:32:16 +02:00
Ignacio Roldán Etcheverry
5ea500e599 Fix C# native instance bindings after recent re-write
This was needed after: 4469144891
2021-08-16 17:16:36 +02:00
Rémi Verschelde
fff9a451a1
Merge pull request #51368 from TwistedTwigleg/GSOC_2020_Working_Branch_IK_SQUASHED
New and improved IK system for Skeleton3D - Squashed!
2021-08-16 15:37:17 +02:00
Mai Lavelle
ce43781cb3 Fix input methods returning zero strength when pressed status not requested
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 afa89c9eea
2021-08-16 00:53:01 -04:00
Rafał Mikrut
221f5da857 Fix crash when dividing by 0 in Vector2/3i 2021-08-15 22:18:17 +02:00
Ricard Rovira Cubeles
a8d12b5a61 Add constant to vector function parameters that don't actually modify their input.
Add more overloads of vector multiplication, required by templates to compile with float=64.
2021-08-15 16:45:37 +02:00
TwistedTwigleg
5ffed49907 New and improved IK system for Skeleton3D
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-14 15:57:00 -04:00
AndreaCatania
c81cb64416 Add the possibility to initialize the classes allocated with the PagedAllocator
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-14 09:04:31 +02:00
Rémi Verschelde
81512a3732
Style: Cleanup code using text_editor/completion/use_single_quotes 2021-08-13 21:27:57 +02:00
Rémi Verschelde
9e37336124
Merge pull request #51508 from AndreaCatania/mem-placement
Refactors the memnew_placement.
2021-08-13 14:58:02 +02:00
Rémi Verschelde
87b80a84f0
Merge pull request #51582 from AnilBK/ustring-macro-replacements
ustring: Replace macros with inline functions.
2021-08-13 14:42:09 +02:00
Rémi Verschelde
85e315d6e8
Merge pull request #51607 from aaronfranke/includes
Fix some unnecessary includes
2021-08-13 14:38:56 +02:00
Pedro J. Estébanez
dc187324be Add input buffering framework
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-13 11:19:19 +02:00
Pedro J. Estébanez
7c864d41c9 Improve input event accumulation
- 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-13 11:19:19 +02:00