-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GPUParticles2D: Oneshot Sub Emitter won't emit finished() signal #93546
Comments
Based on this comment by @patwork on a similar issue, I was able to resolve this: I've added However, things still don't look/feel right to me. Basically, a double Without the If all the above is fully expected behavior, including |
This case is different from the one described in #93991. I don't want to speak for the authors of the GPU Particles code, but in my opinion in that (not this) case is an oversight of a possible situation where the 💣 warning, below is just my current understanding, not confirmed by Godot devs This case refers to something else, namely I was looking at the GPU Particles code for the first time yesterday so my conclusions are not necessarily 100% correct, but as far as I can see, sub-emitters do not send signals because they are never emitted on their own. In fact, the effect from a sub-emitter is "attached" to the renderer queue of the emitter that triggers it. If you look in the scene's live-view debugger at the behavior of the emitters in your example, you'll see that the sub-emitter never changes its "Emitting" state, even when the results of its action start to appear on the screen. Therefore, if it is never emitted, it cannot return the This also confirms why you only received the These are the words from the documentation:
https://docs.godotengine.org/pl/4.x/tutorials/3d/particles/subemitters.html |
@Calinou: Could this issue be added to this tracker? |
Potentially related proposal (might be the solution?). |
Tested versions
System information
Godot v4.3.beta2 - Manjaro Linux #1 SMP PREEMPT_DYNAMIC Mon May 27 03:41:25 UTC 2024 - X11 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 Laptop GPU - AMD Ryzen 9 5900HX with Radeon Graphics (16 Threads)
Issue description
I've created a simple GPUParticles2D effect with a main+subemitter, both set to OneShot and I want to know when the whole effect is done. I want to know when it's done so I can then destroy the effect (cleaning up). This could be done by using the
finished()
signal of the subemitter, however, it's never emitted.Goal:
I need the
finished()
signal from the oneshot subemitter to know when the whole GPUParticles2D effect is done, so I can then callqueue_free()
to make it clean itself up.Steps to reproduce
print()
statement)Minimal reproduction project (MRP)
subemitter_no_finished.zip
This MRP has a button to
restart()
the main emitter, and 2 print statements connected to the 2 finished() signals of the main and sub emitter. Once the button is pressed, you can see the particles doing their thing. At the end of the main emitter, two things happen: "main done!" is printed, and the subemitter kicks in. Then at the end of the subemitter, nothing happens.I expected the finished() signal of the sub emitter to emit, which would then print "sub done!".
The text was updated successfully, but these errors were encountered: