Repository: godot
Issue: After hiding a node on GPUParticles2D finished signal and then showing again, without restarting, the particles always show again for a frame at the last position.
Labels: bug,needs testing,topic:2d,topic:particles

### Tested versions

4.3 + mono, 4.4 beta 1 (Forward+)

### System information

Win 11 - intel i5 - 13600KF - Nvidia RTX 4070

### Issue description

Video from the MRP: https://youtu.be/CINibauy7sU
Video from my project: https://youtu.be/TkcZ82gIO0E

I'll describe what to watch for in the video, please watch it after reading this.

Watch the blue arrows moving to the red tile, at the end they create a black circle. The black circle is a particle system with 1 particle emitted (through emitting = true, I also tried restart()). The particle system has a scale curve set to go from 0 -> 1.

Right now everything is correct and as expected.
I connect to the Finished signal of the particles and hide the projectile, structure is like this:

Then I redo the whole action and send new projectiles at the enemy, these are the same projectiles as the first one I just change their position and use show() to display them so I'm not creating another set of projectiles. And here's the issue, observe that when they spawn the black circle for a moment appears at the last know position.

I don't understand why.

If I await 0.1 second (timer) in the finish before hiding the projectile then this issue doesn't happen. This makes me wonder, are particles really finished on Finish? Why are the particles showing only for one frame and at a wrong position?

I tried removing the particles from the tree which naturally stops the issue. But if I remove them from the tree and immediatelly add them back the issue is the same.
I tried hiding them, repositioning the projectile and unhiding them but the same problem occurs.
The only definite way is to not hide the projectile on finish which is naturally a problem in itself or give it some extra time for the engine to finish handling the particles in some way.

### Steps to reproduce

Run the MRP, wait until couple arrows explode then wait couple seconds until they respawn and you should see at the moment of the respawn the black explosions at the last position they reached on the first run.

You can replace the gradient texture with the godot icon, it's not important I just tested it a moment ago.

### Minimal reproduction project (MRP)

[TestParticles2d - gd + csharp.zip](https://github.com/user-attachments/files/18547711/TestParticles2d.-.gd.%2B.csharp.zip)

**EDIT: Added MRP both gdscript and csharp and a video from the MRP.**

EDIT2: You can call `Hide()` on the particle node in the finished callback and `Show()` just before setting `Emitting = true;` this way the issue doesn't happen, it seems to only happen for a frame or so just after the projectile is displayed again and moved (though the issue is there on the frame you set the position so you need to show it sometime later as suggested above for example just before the particles need to emit.
Another option is as describbed earlier, don't kill the tween or set a timer inside Finished signal and hide the projectile after 0.1f or so of a delay that gives particles time to do what it needs to I guess - unless this is my code error obviously ;)?)