فهرست منبع

Merge pull request #54435 from robfram/hidden-tile-map-light-occlusion

Rémi Verschelde 3 سال پیش
والد
کامیت
6c0afa470e
1فایلهای تغییر یافته به همراه10 افزوده شده و 0 حذف شده
  1. 10 0
      scene/2d/tile_map.cpp

+ 10 - 0
scene/2d/tile_map.cpp

@@ -111,6 +111,15 @@ void TileMap::_notification(int p_what) {
 			}
 
 		} break;
+
+		case NOTIFICATION_VISIBILITY_CHANGED: {
+			for (Map<PosKey, Quadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
+				for (Map<PosKey, Quadrant::Occluder>::Element *F = E->get().occluder_instances.front(); F; F = F->next()) {
+					VS::get_singleton()->canvas_light_occluder_set_enabled(F->get().id, is_visible());
+				}
+			}
+
+		} break;
 	}
 }
 
@@ -675,6 +684,7 @@ void TileMap::update_dirty_quadrants() {
 				VS::get_singleton()->canvas_light_occluder_set_polygon(orid, occluder->get_rid());
 				VS::get_singleton()->canvas_light_occluder_attach_to_canvas(orid, get_canvas());
 				VS::get_singleton()->canvas_light_occluder_set_light_mask(orid, occluder_light_mask);
+				VS::get_singleton()->canvas_light_occluder_set_enabled(orid, is_visible());
 				Quadrant::Occluder oc;
 				oc.xform = xform;
 				oc.id = orid;