Update frozen actors only when required. #20156
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, actors that were visible would refresh their frozen actor state every tick in preparation for the actor becoming hidden, and the frozen actor appearing as a placeholder instead.
By using
ICreatesFrozenActors.OnVisibilityChanged
when can avoid refreshing the state constantly, and instead just refresh it the moment the frozen actor needs to appear. This provides a nice performance improvement on the cost on managing frozen actors.On the RA shellmap, reduces CPU time spent in
UpdateFrozenActor
from 5.1% to <0.1%.I have also tested that when using the starting a game with Explored Map enabled, that pre-existing frozen structures are visible and targetable, e.g. engineers can be ordered to capture an oil derrick under the fog. We shouldn't have a repeat of the bug fixed in #16194 despite the similar code.