Commit Graph

483 Commits

Author SHA1 Message Date
Pedro J. Estébanez
3ed8e24dca Reimplement Mutex with C++'s <mutex>
Main:
- It's now implemented thanks to `<mutex>`. No more platform-specific implementations.
- `BinaryMutex` (non-recursive) is added, as an alternative for special cases.
- Doesn't need allocation/deallocation anymore. It can live in the stack and be part of other classes.
- Because of that, it's methods are now `const` and the inner mutex is `mutable` so it can be easily used in `const` contexts.
- A no-op implementation is provided if `NO_THREADS` is defined. No more need to add `#ifdef NO_THREADS` just for this.
- `MutexLock` now takes a reference. At this point the cases of null `Mutex`es are rare. If you ever need that, just don't use `MutexLock`.
- Thread-safe utilities are therefore simpler now.

Misc.:
- `ScopedMutexLock` is dropped and replaced by `MutexLock`, because they were pretty much the same.
- Every case of lock, do-something, unlock is replaced by `MutexLock` (complex cases where it's not straightfoward are kept as as explicit lock and unlock).
- `ShaderRD` contained an `std::mutex`, which has been replaced by `Mutex`.
2020-02-26 20:40:10 +01:00
Juan Linietsky
73ec47dbd7 Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.
- Renames PackedIntArray to PackedInt32Array.
- Renames PackedFloatArray to PackedFloat32Array.
- Adds PackedInt64Array and PackedFloat64Array.
- Renames Variant::REAL to Variant::FLOAT for consistency.

Packed arrays are for storing large amount of data and creating stuff like
meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of
memory. That said, many users requested the ability to have 64 bits packed
arrays for their games, so this is just an optional added type.

For Variant, the float datatype is always 64 bits, and exposed as `float`.

We still have `real_t` which is the datatype that can change from 32 to 64
bits depending on a compile flag (not entirely working right now, but that's
the idea). It affects math related datatypes and code only.

Neither Variant nor PackedArray make use of real_t, which is only intended
for math precision, so the term is removed from there to keep only float.
2020-02-25 12:55:53 +01:00
Rémi Verschelde
e92dda8bb7 Merge pull request #36478 from qarmin/supsicious_operators_everywhere
Fix suspicious | and + operators
2020-02-23 10:30:06 +01:00
Rafał Mikrut
bedc513a9b Fix suspicious | and + operators 2020-02-23 09:28:54 +01:00
Rémi Verschelde
9537b971e1 Replace FALLTHROUGH macro by C++17 [[fallthrough]]
This attribute is now part of the standard we target so we no longer
need compiler-specific hacks.

Also enables -Wimplicit-fallthrough for Clang now that we can properly
support it. It's already on by default for GCC's -Wextra.

Fixes new warnings raised by Clang's -Wimplicit-fallthrough.
2020-02-23 00:52:50 +01:00
Rémi Verschelde
e2e76facc3 doc: Sync classref with StringName/Callable changes 2020-02-22 14:59:09 +01:00
Rémi Verschelde
5c96c2a209 Merge pull request #36368 from reduz/variant-rework
Reworked signal system, added support for Callable and Signal
2020-02-20 11:30:56 +01:00
Juan Linietsky
6070e25d17 Reworked signal connection system, added support for Callable and Signal objects and made them default. 2020-02-20 08:24:50 +01:00
Rémi Verschelde
f8cabf372b doc: Sync classref with current source
Handle removal of Pool*Array types and other recent changes.
2020-02-18 14:02:02 +01:00
Juan Linietsky
88818b6a37 PoolVector is gone, replaced by Vector
Typed `PoolTypeArray` types are now renamed `PackedTypeArray` and are
sugar for `Vector<Type>`.
2020-02-18 10:10:36 +01:00
Rémi Verschelde
e58ca1bda1 Merge pull request #36189 from reduz/object-id-refactor
Changed logic and optimized ObjectID in ObjectDB and Variant, removed…
2020-02-15 15:30:46 +01:00
Juan Linietsky
a30f71f3c2 Changed logic and optimized ObjectID in ObjectDB and Variant, removed RefPtr. 2020-02-15 08:36:04 -03:00
Rémi Verschelde
b52c2fa32e Remove more deprecated methods and code 2020-02-13 12:37:45 +01:00
Rémi Verschelde
6a062eccdc Merge pull request #36142 from akien-mga/remove-deprecated-decimals
Remove deprecated decimals builtin
2020-02-12 21:48:33 +01:00
Juan Linietsky
2e92ac1a6c ObjectID converted to a structure, fixes many bugs where used incorrectly as 32 bits. 2020-02-12 14:24:54 -03:00
Rémi Verschelde
25cdea3653 Remove deprecated decimals builtin
Replaced by 'step_decimals' in 3.2 via #21425.
2020-02-12 13:39:39 +01:00
Andrea Catania
b8119d9905 Optmized data sent during RPC and RSet calls.
- Now is sent the method ID rather the full function name.
- The passed IDs (Node and Method) are compressed so to use less possible space.
- The variant (INT and BOOL) is now encoded and compressed so to use much less data.
- Optimized RPCMode retrieval for GDScript functions.
- Added checksum to assert the methods are the same across peers.

This work has been kindly sponsored by IMVU.
2020-02-12 13:36:47 +01:00
Rémi Verschelde
726cb1fcdc Merge pull request #36098 from godotengine/vulkan
Add initial Vulkan support, master branch goes UNSTABLE
2020-02-11 16:01:55 +01:00
Juan Linietsky
e860c0a7b4 Texture refactor
-Texture renamed to Texture2D
-TextureLayered as base now inherits 2Darray, cubemap and cubemap array
-Removed all references to flags in textures (they will go in the shader)
-Texture3D gone for now (will come back later done properly)
-Create base rasterizer for RenderDevice, RasterizerRD
2020-02-11 11:53:26 +01:00
Yuri Roubinsky
f6b4db15df Fix VisualScriptClassConstant to be updated properly 2020-02-10 10:55:27 +03:00
Rémi Verschelde
81def170ec Merge pull request #35749 from Chaosus/vst_fix_constants
Fix GlobalConstant/BasicTypeConstant return type in visual scripts
2020-02-06 11:19:08 +01:00
clayjohn
7e07e45db6 Update docs to version 4.0 2020-01-31 17:15:41 -08:00
Yuri Roubinsky
cdeac8b307 Fix GlobalConstant/BasicTypeConstant return type in visual scripts 2020-01-30 20:20:33 +03:00
Rémi Verschelde
87d6172967 doc: Drop unused 'category' property from header
We already removed it from the online docs with #35132.

Currently it can only be "Built-In Types" (Variant types) or "Core"
(everything else), which is of limited use.

We might also want to consider dropping it from `ClassDB` altogether
in Godot 4.0.
2020-01-26 16:02:39 +01:00
Rémi Verschelde
4128510769 doc: Misc updates for AnimationNode* and others
- Add some missing descriptions.
- Add links to tutorials for ARVR and AnimationTree.
- Style fixes.
- Engine changes:
  * Make `AnimationNodeTransition.input_<number>` properties internal
    so that they don't appear in the docs. They still appear in the
    inspector based on the actual number of inputs requested.
  * Drop unimplemented `CPUParticles.flatness`. It's only used for 3D
    particles in `ParticlesMaterial`, and thus only relevant for
    `CPUParticles3D`.
2020-01-23 12:37:33 +01:00
Ignacio Etcheverry
bdf2a26d45 Fix ClassDB API portability with some android and editor classes
- `EditorNavigationMeshGenerator` was being registered as part of the Core API,
even after d3f48f88bb84d22b7805ce971ac86cf1953a29fd. We must make sure to
set Editor as the current ClassDB API type before creating an instance.

- The `VisualScriptEngineSingleton.constant` property has a property hint string
that's different between tools and non-tools builds. This commit makes the
hint string to no longer be set in `_bind_methods`, and to instead set it in
`_validate_property`. This way it's ignored when calculating the API hash.

- `JavaClassWrapper` is now registered in ClassDB on all platforms,
using a dummy implementation on platforms other than Android.
This fixes API portability between Android and other platforms.

- Updated `--class-db-json` command to ignore non-virtual methods that start
with an underscore (see: 4be87c6016a5893cbde897924e540df4c988cee5).
2020-01-19 20:15:13 +01:00
Rémi Verschelde
3d40a35f0b Merge pull request #35117 from timothyqiu/deferred
Makes adding port in Visual Script nodes deferred
2020-01-14 14:41:53 +01:00
Haoyu Qiu
ae45f7df23 Makes adding port in Visual Script nodes deferred 2020-01-14 21:03:09 +08:00
Rémi Verschelde
be5dd6ce1f Update copyright statements to 2020
Happy new year to the wonderful Godot community!

We're starting a new decade with a well-established, non-profit, free
and open source game engine, and tons of further improvements in the
pipeline from hundreds of contributors.

Godot will keep getting better, and we're looking forward to all the
games that the community will keep developing and releasing with it.
2020-01-01 11:16:22 +01:00
Haoyu Qiu
dabb079de6 Cleans up headers included in editor_node.h 2019-12-24 21:46:05 +08:00
Haoyu Qiu
b97dc6a6e9 Makes more editor strings translatable
* "Add" button text in Groups Editor
* "Receiver Method" in Connect Signal Dialog
* "Play Mode" in Animation State Machine Editor
* "Mesh Library" button text in Mesh Library editor plugin
* Compose Array node button texts in Visual Script
* Various button texts in TileSet Editor
* Various Run Script errors
2019-12-21 20:58:17 +08:00
Haoyu Qiu
5d738c7dd7 Fixes size of create function dialog 2019-12-17 09:04:30 +08:00
Haoyu Qiu
d2fce601b8 Makes more strings in editor translatable
* File type names in file dialogs
* Layout option names
* Visual shader editor UI
2019-12-16 16:41:07 +08:00
Rémi Verschelde
ddad6afa92 Merge pull request #34040 from qarmin/unused_variable_more_precise_numbers
Removed unused variables, add some constants numbers
2019-12-10 08:25:31 +01:00
Rafał Mikrut
42a7ed894a Removed unused variables, add some constants numbers 2019-12-10 05:13:02 +01:00
Rémi Verschelde
fa4c6b8f82 doc: Markup fixes for enums and constants 2019-12-06 23:09:20 +01:00
codecustard
cce26ada16 Fixes wrong position when adding node in VS editor
When adding a node in the visual script editor while zoomed in, the position of the newly added node would be wrong.
2019-12-04 17:12:01 -08:00
Rémi Verschelde
8c6fa62520 Merge pull request #33810 from akien-mga/codespell
Fix typos with codespell
2019-11-22 08:58:50 +01:00
Rémi Verschelde
930f051a8b Fix typos with codespell
Using codespell 1.16.0.

Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
curvelinear
dof
doubleclick
leapyear
lod
merchantibility
nd
numer
ois
ony
que
seeked
synching
te
uint
unselect
webp
EOF

$ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"
$ git diff // undo unwanted changes
```
2019-11-22 08:35:03 +01:00
Hugo Locurcio
6938d98f36 Use the Unicode "multiply" sign for the "A x B" visual script node 2019-11-15 19:06:53 +01:00
Rémi Verschelde
410850ac19 Merge pull request #32853 from OsamaElHariri/visual_script_setter_props_fix
Set the properties of a Set node after add_node
2019-11-07 13:13:33 +01:00
Rémi Verschelde
a27aa8b30f Merge pull request #33238 from qarmin/other_fixes
Fix some crashes, overflows and using variables without  values
2019-11-01 22:12:47 +01:00
Rafał Mikrut
74c0424e26 Fix some crashes, overflows and using variables without values 2019-11-01 16:16:31 +01:00
Omicron
26adf635c4 Fix: typo atleast -> at least
Typo found in source string, reported by linux-man on weblate
2019-11-01 16:10:21 +01:00
Rémi Verschelde
43d9afb3af i18n: Sync translation template with current source 2019-10-29 13:57:45 +01:00
Osama El Hariri
7b1bb68586 Set the properties of a Set node after add_node 2019-10-28 21:03:12 +02:00
Rémi Verschelde
ea3d494e0a Merge pull request #32830 from timoschwarzer/remove-redundant-compiler-directives
Remove redundant compiler directives
2019-10-15 09:57:46 +02:00
Timo Schwarzer
c9f2101028 Remove redundant compiler directives
Closes #32817
2019-10-14 16:23:13 +02:00
qarmin
b674b6d163 Small fixes to redundand code, copy paste bugs 2019-10-14 11:40:55 +02:00
Rémi Verschelde
632baf571b Merge pull request #32697 from madmiraal/remove-editor-dependency
Remove editor dependency
2019-10-10 09:21:54 +02:00