internal bool ForceEvaluation() { m_ForceEvaluationMarker.Begin(); CycleStart(); AcquireHandlingStage.OnCycleStart(); BestStandaloneMatchStage.CycleStart(); CacheTraitReferencesStage.Complete(); ConditionRatingStage.Complete(); FindMatchProposalsStage.Complete(); DataAvailabilityStage.Complete(); TraitFilterStage.Complete(); MatchReductionStage.Complete(); BestStandaloneMatchStage.Complete(); ResultFillStage.Transformation.applyOffsetToPose = m_Database.ApplyOffsetToPose; ResultFillStage.Complete(); MarkUsedStage.Complete(); m_ForceEvaluationMarker.End(); // acquire handling usually takes longer than any other stage by far and we already have the answers AcquireHandlingStage.Complete(); if (onStageGroupCompletion != null) { onStageGroupCompletion(); } CurrentlyActive = false; // Return whether we had any matches this iteration return(Data.DefiniteMatchAcquireIndices.Count > 0); }