Culling system design

I thought up this way to design the culling system for the static objects in my game. I want the best in speed so I have to avoid any array searches. I want all direct row/col lookups.

My tileMapClass dispatches events whenever tiles are removed/added as it manages the rendering of the base tile map as the scene camera moves. When the event is dispatched from the tileMapClass as it add/removes visible tiles the parent gameClass reacts to that event by passing the changed tile row/col array to the staticObjectsClass from the tileMapClass. Any other class that will need the info will also get it… Then those classes do any changes needed to the objects on those tiles. Edit: Note, the tile updated arrays are also sent in the proper update order and with a variable to sort the depths properly too.

What I am also unsure about is how to manage culling of moving npc’s/units. Maybe all moving objects should keep their row/col position registered on a multi-dimensional Vector. Distance based culling is very inefficient with large maps and very large numbers of npc’s.

I should probably have off screen npc’s/units just moving from cell to cell on their paths with a time calulation. Unless they come on screen… Then it shows the animation and switches to doing higher processor cost frame to frame movement.