public void Modify(QueryMatchID id, int index, SetChildArgs args) { Assert.IsTrue(MatchIdToIndex.ContainsKey(id) && QueryMatchIds[index].Equals(id) && ValidIndices.Contains(index), $"Invalid query match id {id} or invalid index {index}"); Exclusivities[index] = args.tryBestMatchArgs.exclusivity; Required[index] = args.required; BestMatchDataIds[index] = (int)ReservedDataIDs.Invalid; CachedTraits[index] = new CachedTraitCollection(args.tryBestMatchArgs.conditions); Conditions[index] = args.tryBestMatchArgs.conditions; TraitRequirements[index] = args.TraitRequirements; RelationMemberships[index] = null; ConditionRatings[index].Recycle(); ConditionRatings[index] = Pools.ConditionRatings.Get().Initialize(args.tryBestMatchArgs.conditions); ReducedConditionRatings[index].Clear(); ConditionMatchSets[index].Clear(); QueryResults[index] = new QueryResult { queryMatchId = id }; AcquiringIndices.Add(index); UpdatingIndices.Remove(index); }
public void Modify(int index, int[] members, RelationDataPair[] pairs, SetQueryArgs args) { Assert.IsTrue(ValidIndices.Contains(index), $"{index} is not valid to modify!"); SetQueryArgs[index] = args; MemberIndices[index] = members; CachedTraits[index] = new RelationTraitCache(args.relations); Relations[index] = args.relations; RelationRatings[index].Clear(); RelationRatings[index].Initialize(args.relations); RelationIndexPairs[index] = pairs; var localPairs = new RelationDataPair[pairs.Length]; MapGlobalToLocalRelationPairs(members, pairs, localPairs); LocalRelationIndexPairs[index] = localPairs; TimeOuts[index] = args.commonQueryData.timeOut; ReAcquireOnLoss[index] = args.commonQueryData.reacquireOnLoss; Priorities[index] = args.commonQueryData.priority; UpdateMatchInterval[index] = args.commonQueryData.updateMatchInterval; LastUpdateCheckTime[index] = 0f; AcquireHandlers[index] = args.onAcquire; UpdateHandlers[index] = args.onMatchUpdate; LossHandlers[index] = args.onLoss; TimeoutHandlers[index] = args.onTimeout; if (UpdatingIndices.Contains(index)) { UpdatingIndices.Remove(index); } if (!AcquiringIndices.Contains(index)) { AcquiringIndices.Add(index); } }