The rewrite removes most event handling and the use of the GetContainerItemEquipmentSetInfo API and instead relies on caching equipment set item data for all versions of WoW. The cache is updated on the first call to Matches on each frame, since relying on events introduced a race condition, where the main Baggins event handler would call the filter's matcher before the filter's event handler could update the cache. This new approach should not be any less efficient and might even avoid irrelevant updates.
Additionally, changing the filter's options - selected sets, any set - now refreshes the cache in all situations.
This should hopefully solve #119.
The rewrite removes most event handling and the use of the
GetContainerItemEquipmentSetInfo
API and instead relies on caching equipment set item data for all versions of WoW. The cache is updated on the first call toMatches
on each frame, since relying on events introduced a race condition, where the main Baggins event handler would call the filter's matcher before the filter's event handler could update the cache. This new approach should not be any less efficient and might even avoid irrelevant updates.Additionally, changing the filter's options - selected sets, any set - now refreshes the cache in all situations.