Hi there,
In UE5.6 I noticed relevant changes to the whole mover liaison component middleware.
Unfortunately I also noticed that when selecting the UMoverStandaloneLiaisonComponent in a mover component its syncstate collection will not be properly “cleaned” between activations and the movement mode’s start state will no longer be invalidated when re-entering the same state.
Concretely this means that movement modes that rely on this (such as the Epic’s provided example UZipliningMode) will not work if the mover component is set to use the UMoverStandaloneLiaisonComponent.
Specifically calls such as this
const FZipliningState* StartingZipState = Params.StartState.SyncState.SyncStateCollection.FindDataByType<FZipliningState>();
will always return a valid starting state except for the very first frame of the first time the mode is ticked within the session.
Previously it would return a null state on the first frame of each activation of the movement mode and this was used to initialize the movement mode.
My questions are:
- is this intentional?
- if so,
- are there any examples of complex (stateful) movement modes (like the ziplining mode) that work properly with the standalone liaison?
- how should the movement mode detect the first frame of simulation tick to initialize its sync state?
- is it then expected that movement modes will need to be written keeping in mind the choice of liaison component?
My current workaround is to rely on the “MoverNetworkPredictionLiasisonComponent” (which is the default for mover component).
However, if I understand properly, this solution is keeping me from experimenting with the async simulation introduced in 5.6 for standalone
Thanks for you help!