internal void RunSetMatchUpdates(ParallelGroupData groupData) { var time = MarsTime.Time; foreach (var i in groupData.UpdatingIndices) { var lastTime = groupData.LastUpdateCheckTime[i]; var interval = groupData.UpdateMatchInterval[i]; if (time - lastTime < interval) { continue; } SetPipelineMatchUpdate(i, groupData.QueryMatchIds, groupData.SetMatchData, groupData.Relations, groupData.QueryResults, groupData.ReAcquireOnLoss, groupData.LastUpdateCheckTime, groupData.SetMatchData, groupData.UpdateHandlers, groupData.LossHandlers); groupData.LastUpdateCheckTime[i] = time; } }
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(); }
public void MapGlobalToLocalMemberIndices() { var globalIndices = new [] { 2, 3, 4 }; var globalRelationPairs = new [] { new RelationDataPair(2, 3), new RelationDataPair(4, 2), new RelationDataPair(3, 4), }; var expectedLocalPairs = new [] { new RelationDataPair(0, 1), new RelationDataPair(2, 0), new RelationDataPair(1, 2), }; const int pairCount = 3; var actualLocalPairs = new RelationDataPair[pairCount]; ParallelGroupData.MapGlobalToLocalRelationPairs(globalIndices, globalRelationPairs, actualLocalPairs); for (var i = 0; i < pairCount; i++) { Assert.AreEqual(expectedLocalPairs[i], actualLocalPairs[i]); } }
public void Setup() { const int initialCapacity = 8; m_Data = new ParallelGroupData(initialCapacity); }