Skip to content

💨 Made particles freeze when actor physics are paused (hidden mode '2') - #3416

Open
ohlidalp wants to merge 1 commit into
RigsOfRods:masterfrom
ohlidalp:3412_DannyW_pauseable-particles
Open

💨 Made particles freeze when actor physics are paused (hidden mode '2')#3416
ohlidalp wants to merge 1 commit into
RigsOfRods:masterfrom
ohlidalp:3412_DannyW_pauseable-particles

Conversation

@ohlidalp

@ohlidalp ohlidalp commented Apr 14, 2026

Copy link
Copy Markdown
Member

I've added a hidden option gfx_particles_mode = 2 which gives every actor it's own particle pools that freeze when the actor physics are paused.

This option isn't shown in the Settings UI yet since it's experimental. It might negatively impact FPS and terrain loading times (for example Auriga because of the traffic cones).

The best way to use it is to open ingame console and type set gfx_particles_mode 2. Any actor (re)spawned afterwards will have it's own particle pools that pause when it's paused. To just view the current value, type vars gfx_particles.

Note that custom particles and legacy systems (like x/y exhausts or turbojets) will pause regardless because these were always per-actor.

Codechanges:

  • Application.h: added enum GfxParticlesMode
  • DustPool.h/cpp: added function AdjustDustPoolSpeedFactor() because doing it inside update() isn't reliable.
  • GfxActor.cpp: Added creating/updating/deleting the per-actor particle pools.
  • GfxScene.h/cpp: Extended helper AdjustParticleSystemTimeFactor() to respect paused actors.
  • the rest is minor adjustments to fit the new feature

Fixes #3412

I've added a hidden option `gfx_particles_mode = 2` which gives every actor it's own particle pools.
This option isn't shown in the Settings UI yet since it's experimental. It might negatively impact FPS and terrain loading times (for example Auriga because of the traffic cones).
The best way to use it is to open ingame console and type `set gfx_particles_mode 2`. Any actor (re)spawned afterwards will have it's own particle pool that pause when it's paused.
Note that custom particles and legacy systems (like x/y exhausts or turbojets) will pause regardless because these were always per-actor.

Codechanges:
* Application.h: added `enum GfxParticlesMode`
* DustPool.h/cpp: added function `AdjustDustPoolSpeedFactor()` because doing it inside `update()` isn't reliable.
* GfxActor.cpp: Added creating/updating/deleting the per-actor particle pools.
* GfxScene.h/cpp: Extended helper `AdjustParticleSystemTimeFactor()` to respect paused actors.
* the rest is minor adjustments to fit the new feature

Fixes RigsOfRods#3412
@ohlidalp
ohlidalp requested a review from CuriousMike56 April 16, 2026 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ability/Option To Let "End" Key Also Freeze Particle Physics On That Vehicle.

1 participant