Commit Graph

236 Commits

Author SHA1 Message Date
9d9271b518 Removed the SNAME macro, I'll probably keep static counting support for StringNames though. 2022-08-11 20:22:51 +02:00
22ce231a4e Backported from Godot 4: 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
- TwistedTwigleg
5ffed49907
Note: It still needs some work.
2022-08-10 01:01:38 +02:00
5cd0ea7e60 Fix serializing variants into binary files. 2022-08-09 15:50:30 +02:00
6decccc54f Now Color::clamp() actually has an implementation. 2022-08-08 18:00:42 +02:00
0517f3e462 Fix _scs_create's implementation. 2022-08-08 17:58:43 +02:00
a23d917937 use the proper _NO_DISCARD_ macro. 2022-08-08 17:36:15 +02:00
0b1ae86963 Backported the improvements to StringName from Godot4. 2022-08-08 17:26:23 +02:00
89b1ed9263 Ported contains for String from Godot4. 2022-08-08 16:06:34 +02:00
ffd29397f8 Added clamp() to color from Godot4. 2022-08-08 02:52:30 +02:00
eff5153375 Backported convert_rg_to_ra_rgba8 and convert_ra_rgba8_to_rg from Godot4's Image. 2022-08-08 02:39:21 +02:00
2e30e9f2d6 Ported uri_encode and uri_decode to String from Godot4. 2022-08-08 01:28:25 +02:00
ba00b5bf91 Added char utils header from godot4. 2022-08-08 01:27:57 +02:00
ae7d514cf3 Added set_column to Basis. 2022-08-08 01:18:58 +02:00
4090cb34d7 Backported helper classes to pair.h from Godot4. 2022-08-08 00:05:12 +02:00
37eb131c50 Uncommented hashing methods for the new types. 2022-08-07 23:31:58 +02:00
31603bec29 Added Vector4, Vector4i, and projection classes from Godot4. They are not yet handled via Variants. 2022-08-07 23:30:31 +02:00
705643310e Ported the improvements to the hash funcs from Godot4. 2022-08-07 23:22:21 +02:00
ef5f5f6da4 Fix more includes. 2022-08-07 22:45:50 +02:00
b31e09f884 Added RBMap and EBSet from godot4. 2022-08-07 21:38:22 +02:00
e15630d7f2 Added more helper methods to DirAccessRef and FileAccessRef. Also smaller cleanups. 2022-08-07 21:16:11 +02:00
10e87baee9 Added hash_set from godot4. 2022-08-07 21:08:37 +02:00
9e4ac41f4a Added a new templated WeakRef (WRef) class. 2022-08-04 14:31:00 +02:00
Rémi Verschelde
2ca1470010 File: Re-add support to skip CR (\r) in File::get_as_text
This was removed in #63481, and we confirmed that it's better like this,
but we add back the possibility to strip CR as an option, to optionally
restore the previous behavior.

For performance this is done directly in `String::parse_utf8`.

Also fixes Android `FileAccess::get_line()` as this one _should_ strip CR.

Supersedes #63717.

(cherry picked from commit 1418f97c70a5551bdbfeea853cbc479b32ea9e08)
2022-08-02 17:58:32 +02:00
0095078e25 Fixed an another warning on the pi. 2022-08-02 00:22:41 +02:00
c4e7bc1c45 Reused the old unused PROPERTY_HINT_SPRITE_FRAMES as PROPERTY_HINT_BUTTON. It allows you to add buttons to the inspectors. 2022-07-31 00:01:58 +02:00
9f5fb428ab Ported: Add error messages and docs to explain restrictions when calling NetworkedMultiplayerCustom.initialize()
- dsnopek
5eaf83f2d7
2022-07-30 00:49:12 +02:00
641c15f906 Ported: [3.x] HTML5: Add support for Input.vibrate_handheld() - pattlebass
fb7ecc748f
2022-07-30 00:29:14 +02:00
a917d1bed4 Ported: Address remaining scoped storage regressions
- Accelerate common path used to check the storage scope for a given path
- Update the logic for the `get_as_text()` method - previous logic loads the content of a text file one byte at a time
- m4gr3d
fc2c202312
2022-07-29 23:48:31 +02:00
Ricardo Buring
899a41e0d7 Fixup BVH debugging statements 2022-07-29 23:20:04 +02:00
Fredia Huya-Kouadio
361b5b23f7 Address slow copy performance when using the FileAccessFilesystemJAndroid implementation.
Read/write ops for this implementation are done through the java layer via jni, and so for good performance, it's key to avoid numerous repeated small read/write ops due the jni overhead.

The alternative is to allocate a (conversatively-sized) large buffer to reduce the number of read/write ops over the jni boundary.
2022-07-29 22:35:08 +02:00
7161d7bc29 Ported: Add NetworkedMultiplayerCustom so high-level multiplayer backends can be added from GDScript. - dsnopek
8ad5889c1a
2022-07-29 22:19:12 +02:00
fabriceci
dfd8e09953 Fix the calculation of the angular velocity when the rotation speed is not high.
(cherry picked from commit db7c91e0ada0c91ba48269cf3cc217631ca33bba)
2022-07-29 22:00:03 +02:00
Pedro J. Estébanez
a58186c82a Use the right memory ordering in SafeNumeric operations
(cherry picked from commit 02a584d8e68fad988fbbe43e05f8437284c00733)
2022-07-29 21:58:53 +02:00
9af3a7a709 Ported sort() for poolVectors from 7b8b91f505 . 2022-07-29 21:18:44 +02:00
88fe196e79 Ported: [3.x, macOS, Windows, X11] Add stylus inverted/eraser support to InputEventMouseMotion event.
- hansemro
193d5c11f3
2022-07-29 20:31:16 +02:00
Wilson E. Alvarez
756795a486 Add error messages to String::bin_to_int64, and accept capital B in prefix
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2022-07-29 19:56:15 +02:00
Wilson E. Alvarez
71fe78538f Add error messages String::hex_to_int functions, and accept capital X in prefix
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2022-07-29 19:55:58 +02:00
9d76074b58 Ported: Add full support for Android scoped storage.
This was done by refactoring directory and file access handling for the Android platform so that any general filesystem access type go through the Android layer.
This allows us to validate whether the access is unrestricted, or whether it falls under scoped storage and thus act appropriately.
- m4gr3d
24e3b3b88d
2022-07-29 19:24:07 +02:00
Haoyu Qiu
1d2b59b941 Check thread func in base scripts for argument info 2022-07-29 17:59:32 +02:00
Estelle Linkpy Reid
6c65c86669 Corrected InputEventKey::as_text to return a non-empty string for physical keys. 2022-07-29 16:42:10 +02:00
Rémi Verschelde
c2d36b2c34 Errors: Fallback to fprintf if OS singleton doesn't exist
Otherwise we would crash if something prints an error before init or
after destruction of the `OS` singleton which handles printing/logging.

(cherry picked from commit c83084fccb4cdc42d2ca324c974ace0cf974630d)
2022-07-29 16:31:28 +02:00
Marcel Admiraal
24d15ae3f7 Ensure AudioFrame variables l and r are always initialised
(cherry picked from commit d3f099457226ab833127ca66f5876855a9f2da0f)
2022-07-29 11:02:34 +02:00
8ca3043a28 Ported: ProjectSettings: Ensure 'editor/' settings aren't nested
Having a mix of settings with and without subcategory makes the 'Editor'
section stand out with a weird UX, as instead of simply being a foldable
section like the others, it also holds its own top-level settings and is
therefore selectable.
This wasn't the case in 3.4, and is fixed in 4.0 by refactoring, so for
3.5 we should preserve the 3.4 UX, even if it's not the best.
- akien-mga
acd4a01b8c
2022-07-29 10:45:12 +02:00
Theraot
375670222d Added missing p_bidirectional to AStar2D methods
The methods disconnect_points and are_points_connected  now have an optional p_bidirectional parameter matching AStar.

(cherry picked from commit 3590cdfd34eea8dda746d7db1c7e5a79af389026)
2022-07-29 09:13:46 +02:00
Yuri Rubinsky
1a68039fcf Fix wrapf to correct wrap values with 0.1 stepping
(cherry picked from commit 09418afbc0b5a5642448786751b590352ee6cf97)
2022-07-29 09:08:06 +02:00
bb5acfd745 Ported: [3.5] Update NavigationServer backport
Backports features and bugfixes from current Godot 4.0 to 3.5 and brings functions and codebase of both version largely in sync to make tutorials more compatible and future backports easier.
- smix8
8bd7c6188b
2022-07-28 22:34:28 +02:00
802779db24 Ported: Use ThreadWorkPool instead of thread_process_array in NavMap - adamscott
7749346f48
2022-07-28 22:33:00 +02:00
152f9728b0 Ported: [Windows, 3.x] Add support for handling network share paths. - bruvzg
11a7997a67
2022-07-28 19:33:43 +02:00
942b6d9938 Ported: Make Input mouse_mode and use_accumulated_input properties - fire-forge, timothyqiu
53c01540d9
2022-07-28 18:54:48 +02:00
kobewi
202fb33685 Add Dictionary.merge()
(cherry picked from commit a0915e6dee4e54563a98ca6adb8968dbdcea1af1)
2022-07-28 14:59:15 +02:00
sps1112
8e229841be Bind vararg method flag in core constants
(cherry picked from commit 1f361b03678893cd6328702383fce6dc062e7e57)
2022-07-28 14:56:33 +02:00
lawnjelly
693c503213 Optimized Mesh Merging
Changes from PoolVector to LocalVector and pre-reserving vectors rather than push_back.
2022-07-28 13:46:56 +02:00
lawnjelly
c0c72eed7b Force unsigned behaviour for bitfield enums
Some compilers (notably MSVC) were using signed values for bitfield enums. This was causing problems where 2 bits were used to store 4 or less enum values, where they were being treated as negative numbers.

This PR explicitly requests these enums to be treated as unsigned values.
2022-07-28 13:45:51 +02:00
Aaron Franke
9a35bce6cb Improve architectures in OS::has_feature and make it work on MSVC 2022-07-28 13:43:46 +02:00
Haoyu Qiu
98eb7db8b1 Fix String.http_escape on Windows 2022-07-28 13:36:49 +02:00
Univeous
e943c7c81c fix get_meta() with defalt value 2022-07-28 10:19:20 +02:00
Hugo Locurcio
0b8e21cf74 Tweak 64-bit integer overflow message to mention that it's a signed type
(cherry picked from commit 7b5bf3af192be83afab19bbfcd029d97af0da8cd)
2022-07-27 23:11:15 +02:00
e060783202 Fix mistake. 2022-07-27 19:35:50 +02:00
Hugo Locurcio
3395a3a727 Improve error messages when creating Images from code
The rationale behind the expected number of bytes is now displayed
in clear (width, height, format, number of mipmaps expected if any).

(cherry picked from commit 18e9e6a81a0aef27bbb78d3e52d52a4b009457bf)
2022-07-27 19:11:16 +02:00
kobewi
e4133904a2 Move Display settings higher in the list
(cherry picked from commit 739242dd04d16f85d542bcf9a29aa44402410481)
2022-07-27 18:44:38 +02:00
Haoyu Qiu
3886161d4e Fix invalid memory usage when using Image.convert
(cherry picked from commit 34c1a2beaa8ae92a445b85458d3681f60cd5216f)
2022-07-27 18:42:27 +02:00
24eccc4281 Ported: Fix warnings found by Emscripten 3.1.10
Fix `-Wunused-but-set-variable`, `-Wunqualified-std-cast-call`, and
`-Wliteral-range` warnings.
- akien-mga
5e693b6d84
2022-07-27 18:39:35 +02:00
Nicholas Huelin
c1010f7d1b Fix inconsistent naming in Time
(cherry picked from commit 8409d92282e71f8ad479f48d6b1f6d52eb73ae39)
2022-07-27 18:28:47 +02:00
Mario Liebisch
e1be17e581 Increase line counter when parsing comments
(cherry picked from commit bf708e72dc5b6de7f2b0e8f433f17ba2e3064179)
2022-07-27 18:27:16 +02:00
a8fae729d2 Fix typos in binds. 2022-07-27 15:46:41 +02:00
48eee02c1d Ported: Add search methods for pool arrays
* has()
* count()
* find()
* rfind()
- timothyqiu
3d1644f7c3
2022-07-27 15:44:10 +02:00
Hugo Locurcio
f7585bea99 Rename profiler "Idle Time" to "Process Time"
References to "idle time" are progressively being replaced by
"process time" throughout the engine to avoid confusion.

This also changes some debug prints to be printed only when verbose
mode is enabled (like in `master`).
2022-07-27 15:08:06 +02:00
smix8
62518e9a95 Allow AStar/AStar2D zero point weight
Allow AStar/AStar2D zero point weight.

Limit was set to 1 which seemed like an arbitrary value as lower values down to zero can be useful for common gameplay navigation elements like teleports.
2022-07-27 15:01:51 +02:00
850a84584d ported: Add OS::is_process_running function.
Adds the is_process_running function to the native OS class and exposes it to script.
This is implemented on Windows and Unix platforms. A stub is provided for other platforms that do not support this function.
Documentation is updated to reflect new API function. - mdavisprog
53fb0440d3
I did change it a bit.
2022-07-27 14:46:53 +02:00
lawnjelly
da628411d2 Physics Interpolation - Flush transforms after physics tick
Leftover transforms from the physics tick were being flushed during idle, which was causing problems for physics interpolation.

This PR flushes the transforms at the end of the physics tick when physics interpolation is active.
2022-07-27 14:14:36 +02:00
Haoyu Qiu
b33251a6f5 Fix left aligned integer sign in string formatting 2022-07-27 13:57:44 +02:00
b26a1cd3b4 Ported: [3.x] Improve embedded PCK loading and exporting. - bruvzg
bea7c9be5d
2022-07-27 09:33:39 +02:00
kobewi
15a58cabc0 Expose move_to_trash()
(cherry picked from commit b80e52f04899d28ea191ce3eaad9fdb76bc11b52)
2022-07-27 09:04:19 +02:00
kleonc
78aff244f1 Fix Image.blit_rect/blend_rect() for negative p_dest point
(cherry picked from commit 4038bc0c369578c7483a5b1eae31e1ab4f35db34)
2022-07-27 09:03:55 +02:00
laws65
1ec045e2f1 Proper validation of negative values in datetime strings and datetime dicts
(cherry picked from commit cf9fc0b93609abd52e0f9fe8cd425fef012b6b46)
2022-07-27 01:25:11 +02:00
Oğuzhan Eroğlu
49a98d13a0 Quick fix: Crash when parsing invalid datetime string #60189
(cherry picked from commit 2b8eb126b4dfaa6b3217adef96dca5ed03708de1)
2022-07-27 01:24:52 +02:00
d1108dc8bc Ported: Implement Scene Unique Nodes - KoBeWi
e1c74ae83f
2022-07-27 00:45:48 +02:00
f3ec84fa78 Ported: Add a method for obtaining display cutouts on Android - madmiraal
ec2270b88f
2022-07-27 00:21:20 +02:00
Haoyu Qiu
aed26cc13b Bind Semaphore.try_wait() 2022-07-26 15:55:06 +02:00
50ed908929 Ported: Add fill method to Array and PoolArrays - timothyqiu, DarknessCatt
77b6f7595a
2022-07-26 15:49:30 +02:00
a2cb12fd07 Ported: Improve locking safety for RID handles builds. Additional locks are added. This is primarily to cover a potential race condition where the pool is resized from another thread during a get operation. - lawnjelly
130cc36a88
2022-07-26 15:34:36 +02:00
309055ce7f Renamed OAHashMap's const lookup_ptr method to lookup_ptr_const. Also added back const qualifier to the other one. 2022-07-26 15:33:36 +02:00
1e0353e179 Alos add a const version of lookup_ptr for OAHashMap, similar to 62e9044837 . 2022-07-26 15:09:11 +02:00
AndreaCatania
dacb9e650f Backported the Vector function to_byte_array and slice 2022-07-26 15:05:54 +02:00
RedHeadphone
fe77fedbbf validate input in Time.get_datetime_string_from_dict()
format fix

better fix to handle ERR_FAIL_COND_V_MSG return data type

(cherry picked from commit 7e35af3dc32870dcbbba95c13ccf6273ed7357ea)
2022-07-26 15:00:13 +02:00
kobewi
5467eddae8 Add optional 'default' argument to get_meta()
(cherry picked from commit 3eb7fc4bfd376bc27ea3313ccd1da4679c48f4cb)
2022-07-26 11:50:20 +02:00
Bartłomiej T. Listwon
ac5e352088 Remove get_data() from CowData 2022-07-25 18:49:24 +02:00
keptsecret
9ddf25e7ba fix unable to change directory in user access mode 2022-07-25 18:10:57 +02:00
Haoyu Qiu
10eba686fb Fix crash when exporting projects with shared libraries
(cherry picked from commit 680bcef82546fa0f50b431f20423b62621d1c5ac)
2022-07-25 17:43:42 +02:00
Hugo Locurcio
26dedeab0b Increase the maximum number of concurrent DNS queries from 32 to 256
This makes the following error message less likely to be printed
when performing many concurrent HTTP requests:

    Condition ' resolving == IP::RESOLVER_INVALID_ID ' is true. returned: ERR_BUG
2022-07-25 17:36:02 +02:00
fba03491ea Ported get_datetime_from_unix_time, and get_unix_time_from_datetime to OS from OS's binder class. 2022-07-16 00:22:17 +02:00
d618980dc9 Added 2 new helper methods to Color. 2022-07-15 17:08:48 +02:00
b8d602f847 Added a new helper method to DirAccess. 2022-07-03 17:29:52 +02:00
fa2ac74a7c Added 2 helper methods to Math. 2022-07-02 21:55:46 +02:00
02af86d362 Fix the logic of String::path_clean_end_slash(). 2022-07-02 19:55:18 +02:00
2a9b32847f Ported a few helper methods from my String implementation in rcpp_framework. 2022-06-26 03:38:28 +02:00
aa5a29444a Added find() and clear() methods to PoolVector. Also made sure they are callable by scripts (alongside contains). 2022-06-21 00:34:02 +02:00
667f466b9c Fix typo. 2022-06-11 23:01:00 +02:00
f0f41218df Cleaned up the log macros. 2022-06-11 18:07:21 +02:00
f911a9b363 Implement all the logging methods. 2022-06-11 18:01:27 +02:00
f3373e0fa4 Removed unnecessary methods from PLogger's bind class, and added properties. 2022-06-11 17:51:49 +02:00
b0ebe103f7 Added the new logging stuff to the build, and made everything compile. 2022-06-11 17:46:12 +02:00
fb125bac9d Binder class for the logger. 2022-06-11 17:15:51 +02:00
7d60706249 Logger API cleanup. 2022-06-11 16:55:09 +02:00
b52dd560ce Implemented the LoggerBackend. 2022-06-11 16:54:55 +02:00
26f0c17732 Initial cleanup for the logger. 2022-06-11 15:27:52 +02:00
9ceba2ce3b Added a logger backend skeleton class. 2022-06-11 15:27:33 +02:00
08efdb72ec Added my logger from rcpp_framework. It's not in the build yet. 2022-06-11 14:20:20 +02:00
dee3f6b05b Fix typo in CowData's fill(). This fixes the issues with WaveFormCollapse. 2022-04-23 21:32:33 +02:00
b0a042fb24 Added fill method to Vector and CowData. 2022-04-21 16:30:21 +02:00
93370e9c1d Move the definition of contains() from PoolVector class to the bottom of the file. I'm hoping to avoid a new potential divide by 0 warning on windows. 2022-04-19 00:33:35 +02:00
d252ecd131 Added contains method to PoolVector. 2022-04-18 12:58:39 +02:00
accd8458c8 Backported: Rename iterations_per_second to physics_ticks_per_second - Calinou - 937c1a716c 2022-03-24 11:10:56 +01:00
c054c4db58 Cleaned up more remnants of the mono module. 2022-03-23 23:10:27 +01:00
32f148ac0c Mass replaced godot to pandemonium. 2022-03-23 20:46:05 +01:00
174326d6c3 Fix an another warning. 2022-03-23 15:51:34 +01:00
efddf93a8e Added lookup_ptr method to OAHashMap. 2022-03-23 15:06:29 +01:00
53066a4a82 Added const qualifier to PoolVector's subarray(). 2022-03-23 15:05:33 +01:00
94d4abe77d Added is_null() helper method to variant. 2022-03-22 09:38:10 +01:00
fd20cdfb0f Fix regression with dictionaries because of the variant srtingname support. 2022-03-21 23:22:19 +01:00
8273710235 Implement stringname specific logic for variant::set, and Variant::get. 2022-03-21 22:38:25 +01:00
c9b612f012 Added StringName as a variant type, with eventually the help of 3c0059650d . 2022-03-21 21:29:06 +01:00
71f66e0622 Added the new variabt types to ResourceFormatBinary. 2022-03-21 18:20:41 +01:00
23a106b50c Implemented missing cases for the new variant types to marshalls. 2022-03-21 18:18:57 +01:00
527cfb88aa Added Vector2i, Vector3i, Rect2i, PoolVector2i, PoolVector3i, Vector<Vector2i>, Vector<Vector3i> classes as core variant binds. GDScript still need to be updated to be able to use them. 2022-03-21 14:01:31 +01:00
34547120dd Added Vector3i from godot4. 2022-03-21 02:13:08 +01:00
05d5f1b181 Now Rect2i is in it's own header and cpp file. 2022-03-21 02:08:38 +01:00
987f77442a Now Vector2i is in it's own header and cpp file. 2022-03-21 01:50:02 +01:00
185cfb3291 Backported: RID: Change comparison operators to use RID_Data id instead of address. This should helps making sorting more deterministic in physics and rendering. The same change was done for 4.0 in 4f16397. - akien-mga - 797321fec4 2022-03-20 20:22:15 +01:00
9867b18f49 Backported by hand: Ensure minimum modifiers are pressed when matching actions - madmiraal (88c723c33c) 2022-03-20 14:45:57 +01:00
bad39216b9 Reworked the entries in the help menu. Also added pandemonium specific entries to the about window. Also fixed a crash when opening the about popup. 2022-03-20 13:30:49 +01:00
4d7df62b8e Clang format all files. 2022-03-18 19:00:13 +01:00
7d8a93324e Used the include guard script on core classes. 2022-03-17 21:58:11 +01:00
5767e12b56 Removed editor feature profiles. 2022-03-16 01:17:27 +01:00
00285e8b24 Removed the gles3 driver. There are still mentions of it in a few places, I did not removed all of those. 2022-03-15 17:01:21 +01:00
49f8e8c398 Added godot with all my currently used engine modules. 2022-03-15 13:29:32 +01:00