+namespace {
+
+// propagate light from a's edge to b
+void edge_light(
+ Chunk &a, const Chunk::Pos &a_pos,
+ Chunk &b, const Chunk::Pos &b_pos
+) noexcept {
+ if (a.GetLight(a_pos) > 1) {
+ const BlockType &b_type = b.Type(Chunk::ToIndex(b_pos));
+ if (!b_type.block_light) {
+ light_queue.emplace(&a, a_pos);
+ }
+ if (b_type.visible) {
+ b.Invalidate();
+ }
+ }
+}
+
+}
+