コード例 #1
0
        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);
        }