/// <inheritdoc /> public override void FrameUpdate(float frameTime) { // So we could calculate the correct size of the entities based on the contents of their sprite... // Or we can just assume that no entity is larger than 10x10 and get a stupid easy check. var pvsBounds = _eyeManager.GetWorldViewport().Enlarged(5); var currentMap = _eyeManager.CurrentMap; if (currentMap == MapId.Nullspace) { return; } foreach (var gridId in _mapManager.FindGridIdsIntersecting(currentMap, pvsBounds, true)) { var gridBounds = gridId == GridId.Invalid ? pvsBounds : pvsBounds.Translated(-_mapManager.GetGrid(gridId).WorldPosition); var mapTree = _treeSystem.GetSpriteTreeForMap(currentMap, gridId); mapTree.QueryAabb(ref frameTime, (ref float state, in SpriteComponent value) => { if (value.IsInert) { return(true); } value.FrameUpdate(state); return(true); }, gridBounds, approx: true); } }