I agree with these changes. Here’s what they look like:
In MassReplicationProcessor.cpp:
// AMGI CHANGE BEGIN
// In response to user comment here: https://forums.unrealengine.com/t/error-with-incorporating-massai-in-a-multiplayer-network/779521/3
// "In the MassReplicationProcessor, I changed the access for the FMassReplicationViewerInforFragment on the CollectorViewerInfoQuery to ReadWrite (line 46 of MassReplicationProcessor.cpp). This is because the processor uses a function in this query context that requires a non const viewer fragment."
// CollectViewerInfoQuery.AddRequirement<FMassReplicationViewerInfoFragment>(EMassFragmentAccess::ReadOnly);
CollectViewerInfoQuery.AddRequirement<FMassReplicationViewerInfoFragment>(EMassFragmentAccess::ReadWrite);
// AMGI CHANGE END
In MassReplicationPathHandlers.h:
// AMGI CHANGE BEGIN
// Pursuant to user comment here: https://forums.unrealengine.com/t/error-with-incorporating-massai-in-a-multiplayer-network/779521/3
// "In MassReplicationPathHandlers, I made PathRequestList and LaneLocationList TConstArrayViews (lines 222 and 224 in MassReplicationPathHandlers.h)"
// TArrayView<FMassZoneGraphPathRequestFragment> PathRequestList;
// TArrayView<FMassMoveTargetFragment> MoveTargetList;
// TArrayView<FMassZoneGraphLaneLocationFragment> LaneLocationList;
TConstArrayView<FMassZoneGraphPathRequestFragment> PathRequestList;
TArrayView<FMassMoveTargetFragment> MoveTargetList;
TConstArrayView<FMassZoneGraphLaneLocationFragment> LaneLocationList;
// AMGI CHANGE END
In MassReplicationPathHandlers.cpp:
void FMassReplicationProcessorPathHandler::AddRequirements(FMassEntityQuery& InQuery)
{
InQuery.AddRequirement<FMassZoneGraphPathRequestFragment>(EMassFragmentAccess::ReadOnly);
// AMGI CHANGE BEGIN
// Pursuant to user comment here: https://forums.unrealengine.com/t/error-with-incorporating-massai-in-a-multiplayer-network/779521/3
// InQuery.AddRequirement<FMassMoveTargetFragment>(EMassFragmentAccess::ReadOnly);
InQuery.AddRequirement<FMassMoveTargetFragment>(EMassFragmentAccess::ReadWrite);
// AMGI CHANGE END
InQuery.AddRequirement<FMassZoneGraphLaneLocationFragment>(EMassFragmentAccess::ReadOnly);
}
void FMassReplicationProcessorPathHandler::CacheFragmentViews(FMassExecutionContext& ExecContext)
{
// AMGI CHANGE BEGIN
// Pursuant to user comment here: https://forums.unrealengine.com/t/error-with-incorporating-massai-in-a-multiplayer-network/779521/3
// " changed the GetMutableFragmentViews for PathRequesList and LaneLocationList to GetFragmentViews (lines 24 and 26 in MassReplicationPathHandlers.cpp)"
// PathRequestList = ExecContext.GetMutableFragmentView<FMassZoneGraphPathRequestFragment>();
// MoveTargetList = ExecContext.GetMutableFragmentView<FMassMoveTargetFragment>();
// LaneLocationList = ExecContext.GetMutableFragmentView<FMassZoneGraphLaneLocationFragment>();
PathRequestList = ExecContext.GetFragmentView<FMassZoneGraphPathRequestFragment>();
MoveTargetList = ExecContext.GetMutableFragmentView<FMassMoveTargetFragment>();
LaneLocationList = ExecContext.GetFragmentView<FMassZoneGraphLaneLocationFragment>();
// AMGI CHANGE END
}
Thank you @dtg_phoebe!