1
0
Fork 0
Commit Graph

16192 Commits

Author SHA1 Message Date
Thaddeus Crews a9b6b3d932
Merge pull request #100776 from AThousandShips/improve_null_checks
Improve use of `Ref.is_null/valid`
2024-12-29 09:35:04 -06:00
Rémi Verschelde ff83fdcdd7
Pre-commit: Fix applying ruff to SCsub files
Also ignore iOS template dummy.h file for header guards check.

Update ruff to 0.8.4 while at it.
2024-12-28 10:19:46 +01:00
A Thousand Ships a1846b27ea
Improve use of `Ref.is_null/valid`
Use `is_null` over `!is_valid` and vice versa.
2024-12-23 16:35:02 -05:00
Thaddeus Crews 98c3138804
Merge pull request #92717 from KoBeWi/twisted_frying_pan
Add warped panning to every ViewPanner instance
2024-12-23 11:15:16 -06:00
Thaddeus Crews a7fb67b827
Merge pull request #100746 from syntaxerror247/size-regression
Android: Fix `Window` size changes ignored when node is not in tree
2024-12-23 11:15:09 -06:00
Thaddeus Crews e109ac21fb
Merge pull request #100708 from smix8/navobstacle2d_debug
Improve NavigationObstacle2D debug visuals and performance
2024-12-23 11:15:06 -06:00
Thaddeus Crews 0c80b47ef0
Merge pull request #97687 from YYF233333/animation
Convert Vector to LocalVector in animation system
2024-12-23 11:14:56 -06:00
Yyf2333 2f9a6636bd Convert Vector to LocalVector in animation system.
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-12-24 00:50:48 +08:00
Yufeng Ying 73d85f46c9 Remove unused headers in scene.
Co-authored-by: Thaddeus Crews <repiteo@outlook.com>

Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-12-24 00:40:09 +08:00
Anish Mishra 9f3067ef21 Fix Window size changes ignored on Android 2024-12-22 23:12:54 +05:30
Rémi Verschelde 9f42d1c3cb
Merge pull request #100678 from clayjohn/label3d-msdf
Fix shader compilation errors when using MSDF fonts with Label3D nodes
2024-12-22 00:10:16 +01:00
Rémi Verschelde 88e6997917
Merge pull request #97745 from scgm0/Fix-blurred-content-of-embedded-windows
Improve blurred content of embedded windows
2024-12-22 00:09:55 +01:00
smix8 23ea3ab8d1 Improve NavigationObstacle2D debug visuals
Improves NavigationObstacle2D debug visuals by aligning them closer to their aleady improved 3D counterpart.
2024-12-21 19:53:17 +01:00
clayjohn ed83e5ee4b Fix shader compilation errors when using MSDF fonts with Label3D nodes 2024-12-20 17:30:55 -07:00
Rémi Verschelde a7a2a12bfd
Merge pull request #100671 from bruvzg/get_menu
[MenuBar] Use PopupMenu title property as a menu name.
2024-12-20 23:57:47 +01:00
Rémi Verschelde fd5548a8b7
Merge pull request #100634 from YYF233333/iwyu2
Remove unused headers in servers
2024-12-20 23:57:09 +01:00
Rémi Verschelde 024b6bc1ce
Merge pull request #100632 from Namey5/decal-duplication-crash
Fix crash when duplicating `Decal` or `Light3D` nodes
2024-12-20 23:57:05 +01:00
Rémi Verschelde a11364d1e6
Merge pull request #99010 from Hilderin/embedding-game-process
Embed game process in editor
2024-12-20 23:56:43 +01:00
Rémi Verschelde 8a743f23e6
Merge pull request #98385 from RandomShaper/thread_yield
Rationalize busy waits
2024-12-20 23:56:39 +01:00
Rémi Verschelde 7d5b23c5b0
Merge pull request #96626 from hakro/steady_as_she_goes
Allow Timer nodes to ignore engine time scale
2024-12-20 23:56:33 +01:00
Alex Threlfo 90a0c06631
Fix crash when duplicating Decal or Light3D nodes
Co-authored-by: Jayden Sipe <jayden.sipe@gmail.com>
2024-12-20 23:51:47 +01:00
Pāvels Nadtočajevs 9604e98a52 [MenuBar] Use PopupMenu title property as a menu name. 2024-12-20 23:35:07 +02:00
kobewi 9a96393f46 Add warped panning to every ViewPanner instance 2024-12-20 17:40:27 +01:00
scgm0 0bc2c269cb Fix blurred content of embedded windows 2024-12-20 22:44:36 +08:00
Yufeng Ying e88e30c273 Remove unused headers in servers.
Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2024-12-20 18:51:01 +08:00
Thaddeus Crews a6e89ba2ba
Merge pull request #80121 from Sauermann/fix-embedded-window-stretch
Fix display of embedded `Window`
2024-12-19 20:00:17 -06:00
Thaddeus Crews ddf6e9e3eb
Merge pull request #100595 from bruvzg/win_drv_letter
[Windows, FileDialog] Prepend drive letter to the absolute paths without drive letter.
2024-12-19 20:00:15 -06:00
Thaddeus Crews 075567a5b3
Merge pull request #100456 from Sauermann/proposal-hovered-connection-highlight
Highlight hovered `GraphEdit` connection by widening the line
2024-12-19 20:00:08 -06:00
Thaddeus Crews cbfc34d279
Merge pull request #100444 from Sauermann/fix-view-panner-mouse-warp
Fix `ViewPanner` panning-mouse-warp
2024-12-19 20:00:01 -06:00
Thaddeus Crews b715fabd70
Merge pull request #76371 from ze2j/array_mesh_surface_remove
Add `ArrayMesh::surface_remove`
2024-12-19 19:59:56 -06:00
Thaddeus Crews 2fcd8223e8
Merge pull request #99538 from Geometror/lightmap-gi-transparent-surface
Add transparency support for LightmapGI
2024-12-19 19:59:52 -06:00
Thaddeus Crews 3d523ee86d
Merge pull request #92997 from Calinou/styleboxflat-antialiasing-adjust-for-stretch-scale
Adjust StyleBoxFlat antialiasing to account for 2D stretch scale
2024-12-19 19:59:48 -06:00
Thaddeus Crews 37d1e7fc89
Merge pull request #99268 from Meorge/add-volume-linear
Add `volume_linear` property and getter/setter methods for audio-related classes
2024-12-19 19:59:47 -06:00
Thaddeus Crews d3e5b62ea2
Merge pull request #99230 from paddy-exe/instance_uniforms_compatability_renderer
Implement 2D instance uniforms
2024-12-19 19:59:37 -06:00
Markus Sauermann 0a875ab3bb Highlight hovered `GraphEdit` connection by widening the line
This change causes the connections to be additionally highlighted by
widening the line with a configurable factor.
2024-12-20 00:55:35 +01:00
Markus Sauermann 4887172a59 Fix `ViewPanner` panning mouse warp
Currently the mouse cursor jumps in unexpected ways, when a `ViewPanner`
is used in SubViewports or embedded Windows.

This is caused by providing wrong coordinate systems to
Input::warp_mouse_motion.

This PR replaces the use of `Input::warp_mouse_motion` with
`Viewport::wrap_mouse_in_rect` and makes sure, that the correct
coordinate systems are used.

This change makes it necessary, that all classes, that currently
use ViewPanner, need to provide the correct Viewport to ViewPanner.
2024-12-20 00:28:49 +01:00
Hakim 483c1348d0 Allow Timer nodes to ignore engine time scale 2024-12-19 18:40:24 +01:00
bruvzg b9a00feb66 [Windows, FileDialog] Prepend drive letter to the absolute paths without drive letter. 2024-12-19 09:47:46 +02:00
Hilderin 9d2a4c03be Embedding game process in editor 2024-12-18 17:52:42 -05:00
Malcolm Anderson 2f5b97c7f9 Add `volume_linear` property and methods for audio-related classes
Remove default value from `volume_linear` property documentation

Remove `volume_linear` internal property from `AudioBusLayout`

Update doc/classes/AudioEffectAmplify.xml [no ci]

Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>

Make documentation more concise [no ci]
2024-12-18 12:41:57 -08:00
Hendrik Brucker a3525bc015 Add transparency support for LightmapGI
Co-authored-by: Guerro323 <kaltobattle@gmail.com>
2024-12-18 19:36:16 +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 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 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
kobewi ceefc0d38a Implement 2D instance shader parameters
Co-authored-by: kobewi <kobewi4e@gmail.com>
Co-authored-by: yesfish <huwpascoe@users.noreply.github.com>
Co-authored-by: Álex Román Núñez <eirexe123@gmail.com>
2024-12-17 23:59:16 +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 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 f1eb2f928d
Merge pull request #100039 from TokageItLab/ping-pong-param
Make `backward` be parameter of the `AnimationTree` in the `AnimationNodeAnimation`
2024-12-17 22:59:47 +01:00
Hugo Locurcio 7a04d85ec3
Only allow valid types in Decal, Light3D projector, PointLight2D texture and CSGMesh3D mesh
If an invalid type is supplied (which can still be done from a script),
a warning is printed (along with a workaround for ViewportTexture).

This also adds support for "negative" resource hints such as
"Texture2D,-ViewportTexture" to exclude one or more subclasses
from a class hint.

Co-authored-by: Tomasz Chabora <kobewi4e@gmail.com>
2024-12-17 20:41:12 +01:00