Commit Graph

70160 Commits

Author SHA1 Message Date
demolke
e649e7e3c5 GLTF: Don't duplicate textures when importing blend files
Blender imports will always start within `.godot/imported`  folder because we first convert the .blend file to .gltf, store it in `.godot/imported` and run the import from there, so on-disk resources linked from .blend files end up with duplicate textures.
2024-12-18 21:24:18 +01:00
demolke
143d8c87bb Move reimport check to EditorImportPlugin
reimport_append is used by gltf_document, fbx_document and editor_import_plugin. The first two will never call it when importing == false. It's only the editor_import_plugin that should guard against that.
https://docs.godotengine.org/en/stable/classes/class_editorimportplugin.html#class-editorimportplugin-method-append-import-external-resource

The motivation of removing the check from gltf_document call path is to be able to test nested imports (texture embedded in gltf).
2024-12-18 21:24:18 +01:00
Rémi Verschelde
fafc07335b
Merge pull request #100577 from bruvzg/win_llvm_fix
[Windows, LLVM] Fix `colorize` flag.
2024-12-18 21:12:09 +01:00
Pāvels Nadtočajevs
a0300532b5 [Windows, LLVM] Fix colorize flag. 2024-12-18 21:00:32 +02:00
Rémi Verschelde
024efda0b4
Merge pull request #100568 from Repiteo/dotnet/warning-as-error
C#: Add option to treat warnings as errors
2024-12-18 19:50:20 +01:00
Rémi Verschelde
46c8f8c5c5
Merge pull request #100093 from dalexeev/fix-collision-shape-2d-3d-debug-color
Fix `CollisionShape{2D,3D}.debug_color` inconsistencies
2024-12-18 18:23:54 +01:00
Rémi Verschelde
4cc471dbed
Merge pull request #100553 from tygyh/snyk-fix-450c49dd4b2c073502654af4e06e6ec6
Web: Security upgrade eslint from 9.12.0 to 9.15.0
2024-12-18 17:23:46 +01:00
Rémi Verschelde
56d11c1062
Merge pull request #100552 from mdelorme/mdelorme/issue_100514
Fix initialization order in `AudioStreamInteractive` to allow `initial_clip` to be properly played
2024-12-18 17:23:42 +01:00
Thaddeus Crews
8642e970c5
C#: Add option to treat warnings as errors 2024-12-18 10:23:41 -06:00
Rémi Verschelde
48167ff06e
Merge pull request #100540 from j20001970/cameraserver-check-feed-type
Camera: Skip non platform-specifc `CameraFeed` types in Linux/macOS driver
2024-12-18 17:23:39 +01:00
Rémi Verschelde
e69a5618c0
Merge pull request #100494 from havi05/bbcode-rainbow-effect
Fix `RichTextLabel` bbcode rainbow play reversed and paused
2024-12-18 17:23:36 +01:00
Rémi Verschelde
851d8e49e8
Merge pull request #100386 from hpvb/core-ubsan
Core: Fix UBSAN reports
2024-12-18 17:23:32 +01:00
Rémi Verschelde
d45825347d
Merge pull request #100300 from edwin0cheng/improve_emoji
Improve emoji SVG parsing by caching
2024-12-18 17:23:28 +01:00
Rémi Verschelde
62e026632f
Merge pull request #99492 from m4gr3d/improve_java_class_wrapper
Additional fixes and improvements to JavaClassWrapper
2024-12-18 17:23:25 +01:00
Maxime Delorme
ea97d4457f Fix order initialization to allow initial_clip to be properly played 2024-12-18 15:24:20 +01:00
HP van Braam
240f510fa7 Core ubsan fixes
This fixes UBSAN errors reported by running our testsuite, importing the
TPS demo, and running the TPS demo. I have tried, wherever possible, to
fix issues related to reported issues but not directly reported by UBSAN
because thse code paths just happened to not have been exercised in
these cases.

These fixes apply only to errors reported, and caused by, core/

The following things have been changed:

* Make sure there are no implicit sign changing casts in core.
* Explicitly type enums that are part of a public API such that users of
  the API cannot pass in wrongly-sized values leading to potential stack
  corruption.
* Ensure that memcpy is never called with invalid or null pointers as
  this is undefined behavior, and when the engine is built with
  optimizations turned on leads to memory corruption and hard to debug
  crashes.
* Replace enum values only used as static values with constexpr static
  const values instead. This has no runtime overhead. This makes it so
  that the size of the enums is explicit.
* Make sure that nan and inf is handled consistently in String.
* Implement a _to_int template to ensure that all of the paths use the
  same algorhithm, and correct the negative integer case.
* Changed the way the json serializer precision work, and added tests to
  verify the new behavior. The behavior doesn't quite match master in
  particulary for negative doubles as the original code tried to cast -inf
  to an int. This then led to negative doubles losing all but one of
  their decimal points when serializing. Behavior in GDScript remains
  unchanged.
2024-12-18 14:31:12 +01:00
Edwin Cheng
61d387135f Improve emoji SVG parsing by caching
Basically, when we first encounter the document, we parse it as before, but we also note the offsets of other glyphs and store the remaining XML. The next time we see another glyph, we can simply parse that glyph node and insert it back into the stored XML.
2024-12-18 19:02:03 +08:00
snyk-bot
97ecf7830a
fix: platform/web/package.json & platform/web/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-CROSSSPAWN-8303230
- https://snyk.io/vuln/SNYK-JS-ESLINTPLUGINKIT-8340627
2024-12-18 10:28:34 +00:00
Rémi Verschelde
6395450b10
Merge pull request #100535 from DeeJayLSP/patch-1
Fix `taa_resolve.glsl` path in COPYRIGHT.txt
2024-12-18 09:53:14 +01:00
Rémi Verschelde
6cba6299f9
Merge pull request #100195 from raulsntos/dotnet/upgrade-tfm
[.NET] Upgrade user project's TargetFramework to `net8.0`
2024-12-18 09:53:10 +01:00
Rémi Verschelde
d328c00ad3
Merge pull request #99667 from RandomShaper/res_load_verb
ResourceLoader: Print load message only when actually loading
2024-12-18 09:53:06 +01:00
Rémi Verschelde
7d30972f7c
Merge pull request #99539 from RandomShaper/fix_dotnet_rl_deadlock
Avoid deadlocks in multi-threaded management of the C# script map
2024-12-18 09:53:01 +01:00
Rémi Verschelde
e255f60634
Merge pull request #99158 from timothyqiu/shortshortcutcut
Make editor's shortcut names translated on-site
2024-12-18 09:52:56 +01:00
Rémi Verschelde
29d53a5281
Merge pull request #97371 from kitbdev/test-splitcontainer
Add tests for SplitContainer
2024-12-18 09:52:52 +01:00
Rémi Verschelde
167edb385b
Merge pull request #97288 from timothyqiu/packed-scene-check
Fix crash when using non-`PackedScene` resource for POT generation
2024-12-18 09:52:46 +01:00
Pedro J. Estébanez
6740823e40 ResourceLoader: Print load message only when actually loading 2024-12-18 09:36:16 +01:00
Haoyu Qiu
bf4e5cca3f Make editor's shortcut names translated on-site 2024-12-18 13:00:30 +08:00
Fredia Huya-Kouadio
23cea1b9d2 Additional fixes and improvements to JavaClassWrapper
- Fix crashing bug when invoking class constructor with parameters
- Add support for accessing class constants
- Add support for Godot Callable arguments. A Godot Callable can be wrapped by a Java Runnable to allow Java logic to run arbitrary Godot lambdas
- Automatically convert java.lang.CharSequence to Godot String as needed
- Code cleanup
2024-12-17 18:46:34 -08:00
Jason Kuo
9655d7d948 Check CameraFeed type 2024-12-18 10:37:06 +08:00
Haoyu Qiu
48db6669f6 Fix crash when using non-PackedScene resource for POT generation 2024-12-18 10:15:46 +08:00
Raul Santos
8d41b5a582
[.NET] Upgrade user project's TargetFramework to net8.0
- Upgrades the TFM for new created  projects to `net8.0`.
- Implements system to upgrade TFM for existing projects to `net8.0`.
2024-12-18 02:44:32 +01:00
Rémi Verschelde
6e2cf2aa7b
Merge pull request #100533 from mihe/jolt/sleeping-contacts
Stop reporting contacts for sleeping bodies when using Jolt Physics
2024-12-18 00:39:59 +01:00
Rémi Verschelde
4e46e8beb7
Merge pull request #100464 from bruvzg/start_drag_port
Implement `window_start_drag` on Windows and Linux.
2024-12-18 00:39:56 +01:00
Rémi Verschelde
7b90590e85
Merge pull request #100422 from hpvb/from-the-depth-of-despair
Fix a crash trying to save an empty AudioStream
2024-12-18 00:39:53 +01:00
Rémi Verschelde
90555e6b4d
Merge pull request #100378 from clayjohn/particles-preprocess
Reduce slider range for Particles preprocess to discourage setting a preprocess time of 10 minutes
2024-12-18 00:39:49 +01:00
Rémi Verschelde
cb5b1ecc25
Merge pull request #100200 from syntaxerror247/android-base-color
Android: Support for `base color` retrieval
2024-12-18 00:39:45 +01:00
Rémi Verschelde
d0a0f5834e
Merge pull request #97571 from j20001970/camerafeed-virtual
Add `activate_feed` and `deactivate_feed` virtual bind to CameraFeed
2024-12-18 00:39:38 +01:00
kit
63a90b3dd8 Add tests for SplitContainer 2024-12-17 18:16:52 -05:00
Douglas Leão
3dfa7bb286
Fix taa_resolve.glsl path 2024-12-17 19:44:05 -03:00
Mikael Hermansson
5bbdb4a770 Stop reporting contacts for sleeping bodies when using Jolt Physics 2024-12-17 23:20:00 +01:00
HP van Braam
eb948bc5a8 Fix a crash trying to save an empty AudioStream
My friends, gather around as I learned something about the C standard
that is horrifying and may keep you, dear reader, up at night.

My journey began trying to fix something entirely unrelated and not
wanting to wait for ubsan builds when changing a testcase. So me, in my
infinite naivete just built the engine with tests=yes, but
optimizations turned on.

This resulted in a segfault on "[Audio][AudioStreamWAV] Save empty file".

Well, then, I thought. Lets built with asan then and find out where this
happens! Would it surprise you, my fellow traveler, that the results
were that no such crash occurred?

Thus, to the debugger I go! Fearless, with great optimism. Where I find
that through many an indirection the crash came because, somehow,
CowData::_unref() was getting called with a _ptr set to 0x1.

This can of course only end in tears. Or segmentation faults as we try
to read an atomic variable at the somewhat inconveniently situated
address at 0xfffffffffffffff0.

So I went and looked at the likely culprit, blaming many an innocent
recent change along the way. I shall spare you the falsly accused. But
if for some reason you slept poorly last night, I can assure you that
the voodoo dolls have been put away and will not be harmed further.

So in AudioStreamWAV::get_data() we go, where we find a perfectly
reasonable function! It checks to see whether or not its data is empty,
and if it is not it will resize a temporary Vector to have data_bytes of
space, after which it will do a perfectly pedestrian memcpy() and all is
well in the world.

Or so it seems! After many an hour of despair and disassembly I, at
last, decided to look at where the data gets set! A breakthrough!
Because of the padding data is never empty! So the code always runs!

Eureka! One would think. But then, foolishly, I looked into the
get_data() function one more. My mortal enemy was staring me in the
face, laughing. Because it did not care about this. Sure, the check was
worthless but still... What are we left with.

At this point I could feel the method mocking me.

"I resize the vector to 0, I then memcpy zero bytes into it." It said,
DARING me to object to this state of affairs.

And yet, if I changed the function to check for "data_bytes" rather
than data.is_empty() no crashes.

Was this a compiler bug? Am I losing my mind? But then... I remembered
the mantra of the wise compiler druids... "It Is Not A Compiler Bug".

But what then! The bug does not happen when memory is being watched!
Valgrind agreed that while accessing the SafeRefCount at
0xfffffffffffffff0 was incredibly rude, it did not inform me of anything
else untoward happening. So I read the memcpy() manpage... nothing... I
read the the memcpy() posix spec... nothing.

Finally, in despair and because I had nothing left to lose... The ISO C
language specification. As I was reading, I could hear
AudioStreamWAV::get_data() cackling, knowing that its time was up, but
proud of the madness it caused in my soul. Knowing I would never be the
same.

The behavior is undefined if either dest or src is an invalid or null pointer.

So... Here I stand before you, a broken person. But one richer in
knowledge.

I write you this from the depths of madness in the hopes that you, dear
reader, can be spared this ordeal.

May god have mercy on our souls.

We trigger the following sequence of events:

* memcpy(null, null, 0) is UB, thus dest and src cannot be null
* we inline the calls to the ctor and dtor
* now we have a function that does something that "proves"
  dest cannot be null
* we inline cowdata::_unref() which does a null check, on something
  that the compiler just convinced itself cannot be null
* the compiler removes the dead code branch where _ptr == nullptr
* we start to do pointer arithmetic on a nullptr and get send to
  uninitialized memory.

Co-Authored-By: Jason Beckmann <jasonabeckmann@gmail.com>
2024-12-17 23:14:39 +01:00
Rémi Verschelde
abf47965fc
Merge pull request #100530 from KoBeWi/fix_hack…_with_a_hack😎
Fix Timer error on startup
2024-12-17 23:00:20 +01:00
Rémi Verschelde
32c634a381
Merge pull request #100526 from fire/vsk-csg-warnings-update
Update the warnings for CSGShape3D.
2024-12-17 23:00:17 +01:00
Rémi Verschelde
f1cf8ebfd6
Merge pull request #100506 from akien-mga/dotnet-8.0-fix-GodotSharp-build
.NET: Downgrade Microsoft.CodeAnalysis.CSharp to 4.8.0 for compat with SDK 8.0.1xy
2024-12-17 23:00:13 +01:00
Rémi Verschelde
7170a4176e
Merge pull request #100500 from MajorMcDoom/collision-gen-undo-fix
Fix errors when undoing collision generation for multiple meshes with different parents
2024-12-17 23:00:10 +01:00
Rémi Verschelde
3dd60ba82f
Merge pull request #100406 from smix8/gridmap_edge_debug
Fix GridMap freeing edge connection debug mesh too early
2024-12-17 23:00:07 +01:00
Rémi Verschelde
382b0dfad1
Merge pull request #100373 from TokageItLab/fix-blendspace-discrete-sync
Fix Sync in BlendSpace1D/2D with BlendModeDiscrete
2024-12-17 23:00:02 +01:00
Rémi Verschelde
cb0d731daf
Merge pull request #100351 from raulsntos/dotnet/android-gradle-fix
[.NET] Fix gradle builds for multiple ABIs
2024-12-17 22:59:58 +01:00
Rémi Verschelde
190ae9f9dc
Merge pull request #100302 from clayjohn/light2d-optimize
Optimize PointLight2D shadow rendering by reducing draw calls and RD state changes
2024-12-17 22:59:54 +01:00
Rémi Verschelde
7a70efc2a8
Merge pull request #100151 from alessand10/fix-dx12-command-buffer-leak
Fix a command buffer leak that occurs in D3D12
2024-12-17 22:59:50 +01:00