Commit graph

492 commits

Author SHA1 Message Date
kobewi
8a47a12207 Add support for empty delimiter in String.split 2022-11-04 15:09:12 +01:00
Rémi Verschelde
3eaf49765b
Merge pull request #68192 from aaronfranke/unify-node3d-euler
Unify Node3D RotationOrder with global EulerOrder
2022-11-03 12:07:42 +01:00
Aaron Franke
9e952c8386
Allow getting Quaternion rotation in different Euler orders 2022-11-02 19:20:10 -05:00
Aaron Franke
9225eb461e
Unify Node3D RotationOrder with global EulerOrder 2022-11-02 17:46:03 -05:00
Aaron Franke
8556fdd4bc
Move EulerOrder enum to math_defs.h and global scope 2022-11-02 13:44:13 -05:00
Rémi Verschelde
d2e1b4b9f0
Merge pull request #68118 from aaronfranke/quat-from-euler
Replace Quaternion Euler constructor with `from_euler` method
2022-11-02 18:51:59 +01:00
Rémi Verschelde
62ed75df9c
Merge pull request #64830 from dalexeev/color-hide-internals
Remove internal functions of named colors from the public API
2022-11-02 18:51:27 +01:00
Rémi Verschelde
d3a6855dfc
Merge pull request #66361 from dalexeev/remove-int-plus-string
Unexpose confusing `String + int` and `int + String` operations
2022-11-02 18:51:16 +01:00
Rafał Mikrut
d7d130295e Support for checking that Projection is(not) null 2022-11-01 20:49:52 +01:00
Aaron Franke
83634119d4
Replace Quaternion Euler constructor with from_euler method 2022-11-01 09:28:12 -05:00
Clay John
682156e1f0
Merge pull request #66383 from aaronfranke/basis-from-euler
Clean up Basis from Euler code
2022-10-27 09:44:21 -07:00
Yuri Rubinsky
38691d5b1d
Merge pull request #67655 from MewPurPur/remove-dupe-registrations 2022-10-23 09:54:06 +03:00
Aaron Franke
7f9a8c99c9
Clean up Basis from Euler code 2022-10-21 17:54:49 -05:00
Max Hilbrunner
5cefc07d90
Merge pull request #67444 from nonunknown/array_pick_random
Add ability to pick random value from array
2022-10-21 16:25:52 +02:00
Danil Alexeev
653e8f5c86
Remove internal functions of named colors from the public API 2022-10-21 11:21:43 +03:00
Nonunknown
9f4dbf415d add ability to pick random value from array 2022-10-20 08:39:47 -03:00
VolTer
1fd59b98fb Remove duplicate operator registrations 2022-10-20 03:03:47 +02:00
Rémi Verschelde
00d44a9c73 Merge pull request #67118 from Mickeon/
Fix Typed Array of Objects not accepting `null`.
2022-10-17 17:30:38 +02:00
Rémi Verschelde
6d9d220d64 Merge pull request #67224 from Mickeon/jason
Use `JSON::stringify` where possible
2022-10-11 09:27:53 +02:00
Rémi Verschelde
4d5d33f7ff Merge pull request #67126 from Mickeon/i-was-very-bored
Strip unnecessary break on switches returning early in Variant
2022-10-11 09:27:17 +02:00
Rémi Verschelde
58eff50bf1 Merge pull request #64268 from timothyqiu/is-finite
Add `is_finite` method for checking built-in types
2022-10-11 09:25:46 +02:00
Micky
fe56c1ff75 Use JSON::stringify where possible 2022-10-11 00:27:23 +02:00
Micky
41dcc36643 Strip unnecessary break on switches returning early in Variant
Tweaks comments around the touched-up parts. Also tweaks spacing

Also adds some spacing in all cases of Variant::`reference()`. This is a special for consistency, because it ends up making the cases more readable.
2022-10-10 22:09:51 +02:00
Rémi Verschelde
2fe8ac085b Merge pull request #64692 from touilleMan/no-variant-destructor-for-struct-builtins
Remove Transform2/3D,AABB,Basis from Variant destructors given they are POD structs
2022-10-10 17:42:08 +02:00
Rémi Verschelde
51bb3c36dd Merge pull request #66584 from rune-scape/rune-validated-call-obj-bug
Fix unset `ObjectID` with validated `get_object()` call
2022-10-10 13:53:26 +02:00
Micky
bf64a068a4 Fix Array.slice() and filter() forgetting Typed Array 2022-10-09 12:34:19 +02:00
Micky
03bef1562b Fix Typed Array of Objects not accepting null. 2022-10-09 10:32:48 +02:00
Haoyu Qiu
5da515773d Add is_finite method for checking built-in types 2022-10-08 13:25:08 +08:00
Rémi Verschelde
62b066dbd6 Fix more MSVC C4702 (unreachable code) warnings 2022-10-07 14:43:59 +02:00
bruvzg
0103af1ddd
Fix MSVC warnings, rename shadowed variables, fix uninitialized values, change warnings=all to use /W4. 2022-10-07 11:32:33 +03:00
Rémi Verschelde
3a2b0ab73d Merge pull request #66898 from aaronfranke/proj-mat-columns
Rename Projection `matrix` to `columns`
2022-10-05 08:35:26 +02:00
Hugo Locurcio
6afbf0bd5a
Improve dictionary printing to avoid confusion with arrays
- Add leading and trailing spaces within dictionaries, as the `{}`
  characters are hard to distinguish from `[]` on some fonts.
  This is especially helpful with empty arrays and dictionaries.
2022-10-04 20:33:40 +02:00
Aaron Franke
2cea42cc7f
Rename Projection matrix to columns 2022-10-04 12:34:19 -05:00
Rémi Verschelde
6991e9b43d Merge pull request #66583 from bruvzg/constexpr
Use `constexpr` in the conditions with template parameters and `sizeof`s to suppress C4127 warnings.
2022-09-29 10:44:22 +02:00
bruvzg
ea1848ce0a
Use constexpr in the conditions with template parameters and sizeofs to suppress C4127 warnings. 2022-09-29 10:38:21 +03:00
rune-scape
51c411c7ad Fix unset ObjectID with validated get_object() call
Fixes unset `ObjectID` in variant when calling a validated builtin method returning an `Object *`.
2022-09-28 23:04:22 -07:00
bruvzg
8a9659b152
Change BitField to use 64-bit int. 2022-09-28 17:36:59 +03:00
kobewi
52b20ce909 Use 64bit integers in utility methods 2022-09-28 02:26:37 +02:00
kobewi
7499f41264 Fix wrong floori() behavior 2022-09-27 19:09:34 +02:00
Danil Alexeev
453c5ef682
Remove confusing String + int and int + String operations 2022-09-24 18:13:44 +03:00
Rémi Verschelde
006e345695
Merge pull request #65817 from bruvzg/typed_array 2022-09-23 10:24:46 +02:00
bruvzg
163257d51b
[GDExtension] Implement support for typed arrays. 2022-09-22 23:31:27 +03:00
Ricardo Buring
0c2055d15d Callable: add callv method
This method can be called from GDExtension.
2022-09-21 08:25:48 +02:00
kobewi
a43319b6c9 Restore numeric from String constructors 2022-09-19 14:31:16 +02:00
Emmanuel Leblond
529afd8fbb
Remove Transfor2/3D,AABB,Basis,RID from Variant destructors given Variant::clear() considers they don't need to be destroyed 2022-09-17 23:48:50 +02:00
Rémi Verschelde
a981a8061f Merge pull request #65325 from TokageItLab/refactor-variant-for-anim
Move some static methods to `Animation` from `Variant` for refactoring `Animation` and `Tween`
2022-09-16 09:20:50 +02:00
Micky
0715250ae4 Use variadic template in vformat()
Allows `vformat()` to take more than 5 arguments. as well as being a general optimisation that avoids redundant empty Variant checks.
2022-09-14 23:55:34 +02:00
Silc Renew
9d47e079b7 Move some methods to Animation from Variant for refactoring 2022-09-15 04:52:43 +09:00
Rémi Verschelde
5062aafc2d Merge pull request #64417 from aaronfranke/has-space
Replace AABB/Rect2/Rect2i has_no_* methods with has_* methods
2022-09-06 17:00:44 +02:00
Micky
b6daad8d4b Rename range_lerp to remap 2022-09-06 07:19:20 +02:00
Aaron Franke
995b9f94e8
Replace Rect2(i) has_no_area with has_area 2022-09-04 23:03:36 -05:00
Aaron Franke
817ae95667
Replace AABB has_no_volume with has_volume
Also replace has_no_surface with has_surface
2022-09-04 23:03:36 -05:00
Haoyu Qiu
3c0759608a Fix crash when encoding freed object in ConfigFile 2022-09-04 19:56:37 +08:00
Jonathan Nicholl
15d057c521 Add is_zero_approx methods to Vector2, 3, and 4 2022-09-02 00:29:50 -04:00
Rémi Verschelde
41156a1e83
Merge pull request #63968 from KoBeWi/finding_stuff_in_a_dictionary 2022-09-01 17:38:39 +02:00
Rémi Verschelde
10aec9057c
Merge pull request #63411 from Calinou/improve-null-object-dictionary-print
Improve null and object printing to avoid confusion with arrays
2022-08-31 17:37:08 +02:00
Hugo Locurcio
291d3aaabe
Improve null and object printing to avoid confusion with arrays
- Use different syntax for object printing to avoid confusion with arrays.
- Print null as `<null>` to avoid confusion with a string `"null"`.
- Display `<empty>` in editor resource pickers to avoid confusion
  with array-based properties.
2022-08-31 15:31:49 +02:00
Silc Renew
c139d9ef7d Discontinued spherical_interpolate_with in Transform3D 2022-08-31 16:35:38 +09:00
Danil Alexeev
d4555ef5fb
Add String.to_{camel,pascal,snake}_case methods 2022-08-30 12:36:24 +03:00
Aaron Franke
10a56981dc
Rename String plus_file to path_join 2022-08-29 19:38:13 -05:00
Silc Renew
931fb4dc11 Add linear/cubic angle interpolation to Animation interpolation type 2022-08-27 07:58:22 +09:00
Micky
59e11934d8 Rename str2var to str_to_var and similar
Affects the Math class, a good chunk of the audio code, and a lot of other miscellaneous classes, too.

- `var2str` -> `var_to_str`
- `str2var` -> `str_to_var`
- `bytes2var` -> `bytes_to_var`
- `bytes2var_with_objects` -> `bytes_to_var_with_objects`
- `var2bytes` -> `var_to_bytes`
- `var2bytes_with_objects` -> `var_to_bytes_with_objects`
- `linear2db` -> `linear_to_db`
- `db2linear` -> `db_to_linear`
- `deg2rad` -> `deg_to_rad`
- `rad2deg` -> `rad_to_deg`

- `dict2inst` -> `dict_to_inst`
- `inst2dict` -> `inst_to_dict`
2022-08-26 14:58:22 +02:00
Yuri Rubinsky
e97ece55aa Add constructor accepting four Vector4's to Projection 2022-08-24 08:30:40 +03:00
Rémi Verschelde
944bfc6d00
Merge pull request #63602 from TokageItLab/cubic-interp-time 2022-08-22 17:32:47 +02:00
rafallus
da7a5653f4 Expose Basis set_orthogonal_index method as a GridMap function 2022-08-20 21:42:20 -05:00
Silc Renew
dded7c72c1 Make cubic_interpolate() consider key time in animation 2022-08-19 14:48:37 +09:00
kobewi
cc424bcb18 Add Dictionary.find_key() 2022-08-16 13:48:59 +02:00
Haoyu Qiu
9c4ad8191b Expose clear method for packed arrays 2022-08-10 17:12:20 +08:00
antonWetzel
40a1d6d100 vector4 distance_squared_to and update csharp 2022-08-09 01:59:17 +02:00
Rémi Verschelde
446fdc5b71
Merge pull request #64027 from Geometror/add-vector4-tests 2022-08-07 16:07:36 +02:00
Hendrik Brucker
36061c5dca Vector4/Vector4i: Add missing methods, tests and fix change of sign operator 2022-08-07 12:25:05 +02:00
Rémi Verschelde
e6e13c8251
Merge pull request #63361 from KoBeWi/floorf_lol 2022-08-06 22:25:27 +02:00
kobewi
ae3d83b17b Restore old lerp() behavior and add lerpf() 2022-08-06 21:15:37 +02:00
Rémi Verschelde
dc04050cfd
Merge pull request #63698 from PrecisionRender/plane-operator-asterisk
Add operator `*` to `Plane`
2022-08-06 00:38:59 +02:00
Rémi Verschelde
c717d5c64b Arrays: Zero new items of trivial types on resize() (bindings only)
This is not enabled by default in the core version for performance reasons,
as Vector/CowData are used in critical code paths where not zero'ing memory
which is going to be set later on can be important.

But for bindings / the scripting API, we make zero the new items by default
(which already happened for built types like Vector3, etc., but not for
trivial types like int, float).

Fixes #43033.

Co-authored-by: David Hoppenbrouwers <david@salt-inc.org>
2022-08-04 13:35:37 +02:00
Rémi Verschelde
a49cf9fe90
Merge pull request #55923 from bluenote10/feature/consistent_transform_operations
Fix consistency of translated/scaled/rotated in Transform2D and Transform3D
2022-08-03 07:50:01 +02:00
Fabian Keller
f242f9c738 Fix consistency of translated/scaled/rotated in Transform2D and Transform3D 2022-08-02 23:38:14 +02:00
lawnjelly
bb273bc972 Variant large bucket memory pool - for Projection
Add a larger bucket size pool for the new Projection Matrix.
2022-08-02 16:27:57 +01:00
Rémi Verschelde
33258d850c
Merge pull request #61315 from lawnjelly/variant_bucket_pools
Variant memory pools
2022-08-02 15:54:18 +02:00
PrecisionRender
2adb67c3c5 Add operator* to Plane 2022-07-30 17:48:55 -05:00
Rémi Verschelde
7199314eb3
Merge pull request #63595 from reduz/remove-signal-connect-binds
Remove Signal connect binds
2022-07-29 18:10:39 +02:00
Juan Linietsky
d4433ae6d3 Remove Signal connect binds
Remove the optional argument p_binds from `Object::connect` since it was deprecated by Callable.bind().
Changed all uses of it to Callable.bind()
2022-07-29 16:26:13 +02:00
kobewi
ee6fd704b5 Fix Vector4 serialization 2022-07-29 12:09:03 +02:00
Rémi Verschelde
14d021287b
Merge pull request #63049 from Faless/mp/4.x_as_module 2022-07-28 20:46:31 +02:00
Rémi Verschelde
a5f12f9c21
Merge pull request #63532 from TokageItLab/rename-cubic-slerp 2022-07-28 10:39:33 +02:00
Rémi Verschelde
199ea349f5
Merge pull request #57698 from bluenote10/feature/rename_translated_to_translated_local 2022-07-28 10:03:07 +02:00
kobewi
fdf7441015 Split ceil(), floor() and round() method 2022-07-27 16:58:56 +02:00
Silc Renew
4211e68d80 rename and unify notation for spherical interpolation 2022-07-27 23:22:50 +09:00
Fabio Alessandrelli
ca7d572908 [Net] Modularize multiplayer, expose MultiplayerAPI to extensions.
- RPC configurations are now dictionaries.
- Script.get_rpc_methods renamed to Script.get_rpc_config.
- Node.rpc[_id] and Callable.rpc now return an Error.
- Refactor MultiplayerAPI to allow extension.
- New MultiplayerAPI.rpc method with Array argument (for scripts).
- Move the default MultiplayerAPI implementation to a module.
2022-07-26 09:31:12 +02:00
kobewi
7006f7d693 Add some missing Vector4 methods 2022-07-26 02:35:42 +02:00
Rémi Verschelde
3084a48ace
Merge pull request #63219 from reduz/implement-vector4-projection 2022-07-25 11:13:27 +02:00
Jcrespo
1a3d57f319 Solve discrepancy between code and class reference for Plane
On #43310, class reference was automatically updated from source,
causing xml documentation to disagree with parameter naming
description on Plane.intersects_segment().

Weirdly, it also changed the parameter for Plane.is_point_over()
from point to plane, when only the first has sense (and it is
defined on math.Plane as "const Vector3 &p_point"). Manual
mistake?

* Update begin/end to from/to on Plane.intersects_segment(...)
  docs description to match source
* Update Plane bindings to use points instread of plane for
  is_point_over(...)
* Change Plane.is_point_over(plane) to Plane.is_point_over(point)
  AND its description on docs

Fixes godotengine/godot-docs#5976
2022-07-24 18:21:25 +02:00
reduz
455c06ecd4 Implement Vector4, Vector4i, Projection
Implement built-in classes Vector4, Vector4i and Projection.

* Two versions of Vector4 (float and integer).
* A Projection class, which is a 4x4 matrix specialized in projection types.

These types have been requested for a long time, but given they were very corner case they were not added before.
Because in Godot 4, reimplementing parts of the rendering engine is now possible, access to these types (heavily used by the rendering code) becomes a necessity.

**Q**: Why Projection and not Matrix4?
**A**: Godot does not use Matrix2, Matrix3, Matrix4x3, etc. naming convention because, within the engine, these types always have a *purpose*. As such, Godot names them: Transform2D, Transform3D or Basis. In this case, this 4x4 matrix is _always_ used as a _Projection_, hence the naming.
2022-07-23 14:00:01 +02:00
Yuri Rubinsky
ccc56cc6d4 Rename epsilon to tolerance in the Plane::has_point method 2022-07-21 20:15:15 +03:00
cdemirer
dae5edf41c Fix the argcount when generating error message for CallableComparator 2022-07-18 00:57:20 +03:00
Fabian Keller
2bf9e6090c rename translate(d) to translate(d)_local in Transform 2D/3D 2022-07-16 11:47:54 +02:00
bruvzg
cbe3a2dcb7
Use BitField hint for the TextServer enums. Add missing parts for BitField support to the GDextension API. 2022-07-15 08:49:50 +03:00
reduz
5ac42cf576 Implement a BitField hint
Allows to specify the binder that an enum must be treated as a bitfield.
2022-07-05 22:13:37 +02:00
lawnjelly
b221eab426 Variant memory pools
Memory pools via PagedAllocator for Transform2D, Transform3D, Basis and AABB.
2022-07-04 12:01:46 +01:00
Rémi Verschelde
a2459c7d35
Merge pull request #61610 from TokageItLab/importer-retarget-registered-gdhumanoid 2022-07-02 00:17:21 +02:00