Fix #55: Add ProgressTrackingSpeedBoost#57
Conversation
KSP's stock ProgressTracking evaluates every progress node for every vessel in the universe. There are ~19 progress nodes per celestial body, and this can get extremely expensive for mods with a large number of bodies or saves with a large number of vessels. This tweak only evaluates the currently active vessel and removes the per-body checks which don't have any effect, at least in the stock game.
|
Evaluating only the active vessel would be a breaking change, not only for "world firsts", but also for contracts. The part about removing the per body update delegate feels alright. Not 100% safe, but I doubt anybody ever added custom tracking nodes. |
|
I’ll do a more diligent search…I’m pretty sure all the contract related stuff is not things that are handled by OnVesselIterate |
|
Confirmed: Every stock class that populates the OnIterateVessels callback only looks at the active vessel inside the callback. For example: CelestialBodyFlyby operates by handling the OnVesselSOIChange event, not by using OnIterateVessels. |
|
Ok, did a quick review of the ContractConfigurator codebase too, couldn't find anything that might be affected. Will merge for next release, thanks for the contribution. |
KSP's stock ProgressTracking evaluates every progress node for every vessel in the universe.
There are ~19 progress nodes per celestial body, and this can get extremely expensive for mods with a
large number of bodies or saves with a large number of vessels.
This tweak only evaluates the currently active vessel and removes the per-body checks which don't
have any effect, at least in the stock game.