Age | Commit message (Collapse) | Author |
|
Note: These are still not exposed to GDScript
|
|
Use script instance binding for objects constructed from C#
|
|
Fix many asan and ubsan reported issues
|
|
[Core] Rename Matrix3 file to Basis
|
|
Closes #25733.
|
|
The code already referred to "Basis", it's just the file name that was different for some reason.
|
|
Only possible if the object class is a "native type". If the object class is a user class (that derives a "native type") then a script is needed.
Since CSharpLanguage does cleanup of script instance bindings when finished, cases like #25621 will no longer cause problems.
Fixed ~Object() trying to free script instance bindings after the language has already been removed, which would result in a NULL dereference.
|
|
Thanks to @Rriik for finding the bug and its cause.
Fixes #25595.
|
|
Avoid CSharpInstance from accessing its state after self destructing (by deleting the Reference owner).
It's now safe to replace the script instance without leaking or crashing.
Also fixed godot_icall_Object_weakref return reference being freed before returning.
|
|
Mono: Fix MonoPosixHelper not being found
|
|
|
|
Let memory stat functions return uint64_t
|
|
Fixes #21601
|
|
|
|
This allows most demos to run without any ubsan or asan errors. There
are still some things in thirdpart/ and some things in AudioServer that
needs a look but this fixes a lot of issues. This should help debug less
obvious issues, hopefully.
This fixes #25217 and fixes #25218
|
|
Also expose Image MAX_WIDTH and MAX_HEIGHT.
Fixes #24455.
|
|
|
|
|
|
|
|
|
|
This reverts commit 6f704c338aa7448a65ced554804ae568063f35eb.
Sorry about this, this was a test and not meant to be pushed to master. :/
|
|
This reverts commit 64e584a97e0505cec592d3c98a2899ba8426f35a.
|
|
|
|
Change EditorFileSystem to not use directory modification times on FAT32, fixes #20946
|
|
|
|
A GDScript call to:
`multiplayer.network_peer.some_prop = true`
seems to transalte to:
```
var temp = multiplayer.network_peer
temp.some_prop = true
multiplayer.network_peer = temp
```
Which caused the MultiplayerAPI to be resetted.
The call to set_network_peer is now ignored if the peer that's beeing
set is the same as the currently set one.
|
|
rpc_sender_id is now correctly initialized to 0 so get_rpc_sender_id()
work reliably even if called before receiving any RPC.
root_node is initialized to NULL (fix crashes when incorrectly using the
MultiplayerAPI).
clear function now resets the packet cache size to free more memory when
not running.
|
|
GLES2: Make Nvidia flicker workaround opt-in
|
|
root, fixes #24412
|
|
It has a big impact on 2D and text rendering performance (cf. #24466)
so the solution seems worse than the bug it aims to work around.
It's now opt-in via "rendering/quality/2d/gles2_use_nvidia_rect_flicker_workaround"
for those who need it and have a simple enough game for the performance
drop not to be an issue.
Fixes #24466.
|
|
|
|
help track bugs in ProgressDialog in editor.
|
|
|
|
Plane::intersects_ray"
|
|
fixed invalid implementation of Plane::intersects_segment and Plane::intersects_ray
|
|
Plane::intersects_ray
|
|
|
|
Fix properties being lost when reloading placeholder GDScript instance
|
|
Some used 'is_valid()' checks, others not. Validity is already checked in 'unref()',
and 'remove_resource_format_*()' has an ERR_FAIL condition on 'is_null()' already
(which shouldn't happen since we're only unregistering things that we previously
registered.
Also add missing GDCLASS statement in ResourceFormatLoaderVideoStreamGDNative,
missed in #20552 which was last amended before #19501 was merged.
|
|
During reloading in `GDScriptLanguage::reload_all_scripts` a placeholder instance that must remain so is replaced with a new placeholder instance. The state is then restored by calling `ScriptInstance::set` for each property. This does not work if the script is missing the properties due to build/parse failing.
The fix for such cases is to call `placeholder_set_fallback` instead of `set` on the script instance.
I took this chance to move the `build_failed` flag from `PlaceHolderScriptInstance` to `Script`. That improves the code a lot. I also renamed it to `placeholder_fallback_enabled` which is a much better name (`build_failed` could lead to misunderstandings).
|
|
support.
|
|
little fix to function types
|
|
Background: lstrip and rstrip were broken by changes to String in:
0e29f7974b59e4440cf02e1388fb9d8ab2b5c5fd
which removed it's access to Vector::find(CharType).
Moved Vector's find up into CowData so it can be shared by Vector and String.
Added String::find_char using CowData::find.
Implemented rstrip and lstrip using find_char.
Added a few tests for String rstrip and lstrip.
|
|
String[size()] should return a default constructed CharType
|
|
As per the C++ standard 21.3.4.1 for std::string:
Returns: If pos < size(), returns data()[pos]. Otherwise, if pos ==
size(), the const version returns charT(). Otherwise, the behavior is
undefined.
Since the behavior is undefined Godot now does the same thing for const
and non-const versions of operator[].
This fixes #21242 and fixes #22221.
|
|
Fix crash when checking empty string for valid hex number
|
|
Optimizations for trivial types
|
|
|
|
Relying on various compiler primitives we can reduce the work done
in our memory allocators and CowData. For types with trivial ctors or
dtors we can skip looping over all elements when creating, resizing,
and destroying lists of objects.
These primitives are supported by clang, msvc, and GCC. However, once
we've moved to C++11 we can rely on several std:: primitives that do
the same thing and are standardized.
In my testing the extra conditionals introduced here get removed from
the generated program entirely as the results for these primitives is
known at compile time.
|
|
Happy new year to the wonderful Godot community!
|