Push clientside transform GridUids to children #5588
Closed
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.
When an entity is parented to another entity that does not currently exist on the client (such as when the new parent is outside of the client's PVS), the child entity does not have its GridUid set properly. This can cause issues with other systems that rely on the GridUid.
For example, when using the Follow button from the ghost roles panel, if the target entity is outside of PVS, the camera will be left at a strange rotation until the user moves:
This will also happen when parenting to a newly-created entity (see space-wizards/space-station-14#33878 (comment))
To fix this, a handler for
ComponentStartup
is added to the clientside TransformSystem, which callsSetGridId
on any children of the parent.SetGridId
handles recursing through children-of-children and aborting in the case of uninitialized transforms.