GroupAcquireHandlingStage SetupAcquireHandlingStage() { var dataTransform = new GroupAcquireHandlingTransform() { Pipeline = this, QueryBackend = ModuleLoaderCore.instance.GetModule <MARSQueryBackend>(), WorkingIndices = Data.DefiniteMatchAcquireIndices }; var indicesTransform = new ManageIndicesTransform() { WorkingIndices = Data.DefiniteMatchAcquireIndices, Input1 = Data.UpdatingIndices, Output = Data.AcquiringIndices }; var memberIndicesTransform = new ManageGroupIndicesTransform() { WorkingIndices = Data.DefiniteMatchAcquireIndices, Input2 = MemberData.UpdatingIndices, Output = MemberData.AcquiringIndices }; var stage = new GroupAcquireHandlingStage(dataTransform, indicesTransform, memberIndicesTransform); WireAcquireHandlingStage(stage); Stages.Add(stage); return(stage); }
internal void SetupData() { Configuration = QueryPipelineConfiguration.instance; var memoryOptions = MARSMemoryOptions.instance; Data = new ParallelGroupData(memoryOptions.QueryDataCapacity); // make sure that we refresh references to arrays when they have been resized behind the scenes Data.OnResize += WireStages; var memberCapacityMultiplier = memoryOptions.SetMemberCapacityMultiplier; MemberData = new ParallelGroupMemberData(memoryOptions.QueryDataCapacity * memberCapacityMultiplier); MemberData.OnResize += WireStages; // insert a blank stage to represent the idle part of the cycle Stages.Add(null); MemberTraitCacheStage = SetupMemberTraitCacheStage(); RelationTraitCacheStage = SetupRelationTraitCacheStage(); MemberConditionRatingStage = SetupMemberMatchRating(); IncompleteGroupFilterStage = SetupIncompleteGroupFilter(); MemberMatchIntersectionStage = SetupMatchIntersection(); MemberTraitRequirementStage = SetupTraitFilterStage(); MemberDataAvailabilityStage = SetupAvailabilityCheckStage(); MemberMatchReductionStage = SetupMatchReduction(); GroupRelationRatingStage = SetupRelationRatingStage(); FilterRelationMembersStage = SetupFilterRelationMembersStage(); MatchSearchStage = SetupMatchSearchStage(); MarkDataUsedStage = SetupMarkUsedStage(); MemberResultFillStage = SetupQueryResultFill(); GroupResultFillStage = SetupSetQueryResultFill(); AcquireHandlingStage = SetupAcquireHandlingStage(); }
void WireAcquireHandlingStage(GroupAcquireHandlingStage stage) { stage.Transformation1.Input1 = Data.QueryResults; stage.Transformation1.Output = Data.AcquireHandlers; stage.Transformation3.Input1 = Data.MemberIndices; }