private void UpdateParticipationWhenRequestReceived(ParticipationRequest request) { if (participationData.CurrentParticipationState == ParticipationState.Participating || participationData.CurrentParticipationState == ParticipationState.Retained) { return; } PriorityCompetition.Decide(); if (PriorityCompetition.LatestResults != null && PriorityCompetition.LatestResults.Winner != null) { participationData.ParticipatingGO = PriorityCompetition.LatestResults.Winner; if (request.RequestType == ParticipationRequest.Type.Prepare) { participationData.CurrentParticipationState = ParticipationState.Pending; } else if (request.RequestType == ParticipationRequest.Type.ForcedInteraction) { participationData.CurrentParticipationState = ParticipationState.Participating; } } else { ResetParticipation(); } }