ObjectPaging::blacklistObject is inefficient
The function performs a linear search over the cached objects to filter in those which intersect with a 2D square. Depending on the settings the number of objects to iterate over goes up to 10k-30k over time. The number of objects filtered in is usually less than 5. Most of the time it's 0 or 1. This significantly impacts the CPU time on changing cell grid by the main thread which directly impacts frame time.
This could be optimized by using a spatial index like R-tree.