internal void RunMatchUpdates(ParallelQueryData data) { k_NeedsReAcquireSet.Clear(); var time = MarsTime.Time; foreach (var i in data.UpdatingIndices) { if (m_LastUpdateCheckTimes.TryGetValue(i, out var lastTime)) { var interval = data.UpdateMatchInterval[i]; if (time - lastTime < interval) { continue; } } PipelineMatchUpdate(i, data.QueryMatchIds, data.BestMatchDataIds, data.Conditions, data.TraitRequirements, data.QueryResults, data.UpdateHandlers, data.LossHandlers); m_LastUpdateCheckTimes[i] = time; } }
internal void SetupData() { configuration = QueryPipelineConfiguration.instance; Data = new ParallelQueryData(MARSMemoryOptions.instance.QueryDataCapacity); Data.OnResize += WireStages; CacheTraitReferencesStage = SetupTraitCacheStage(); ConditionRatingStage = SetupMatchRating(); FindMatchProposalsStage = SetupMatchIntersection(); DataAvailabilityStage = SetupAvailabilityCheckStage(); TraitFilterStage = SetupTraitFilterStage(); MatchReductionStage = SetupMatchReduction(); BestStandaloneMatchStage = SetupBestStandaloneMatchStage(); ResultFillStage = SetupQueryResultFill(); MarkUsedStage = SetupMarkUsedStage(); AcquireHandlingStage = SetupAcquireHandlingStage(); }
public void Setup() { const int initialCapacity = 8; m_Data = new ParallelQueryData(initialCapacity); }