-Make tilemap able to change light mask, fixes #2557

This commit is contained in:
reduz 2015-12-29 14:47:13 -03:00
parent 77b5b4f4df
commit 5063cd7757
3 changed files with 14 additions and 1 deletions

View File

@ -197,7 +197,7 @@ public:
void set_blend_mode(BlendMode p_blend_mode);
BlendMode get_blend_mode() const;
void set_light_mask(int p_light_mask);
virtual void set_light_mask(int p_light_mask);
int get_light_mask() const;
void set_opacity(float p_opacity);

View File

@ -333,6 +333,8 @@ void TileMap::_update_dirty_quadrants() {
Matrix32 xform;
xform.set_origin( q.pos );
vs->canvas_item_set_transform( canvas_item, xform );
vs->canvas_item_set_light_mask(canvas_item,get_light_mask());
q.canvas_items.push_back(canvas_item);
if (debug_shapes) {
@ -1105,7 +1107,16 @@ int TileMap::get_occluder_light_mask() const{
return occluder_light_mask;
}
void TileMap::set_light_mask(int p_light_mask) {
CanvasItem::set_light_mask(p_light_mask);
for (Map<PosKey,Quadrant>::Element *E=quadrant_map.front();E;E=E->next()) {
for (List<RID>::Element *F=E->get().canvas_items.front();F;F=F->next()) {
VisualServer::get_singleton()->canvas_item_set_light_mask(F->get(),get_light_mask());
}
}
}
void TileMap::_bind_methods() {

View File

@ -253,6 +253,8 @@ public:
void set_occluder_light_mask(int p_mask);
int get_occluder_light_mask() const;
virtual void set_light_mask(int p_light_mask);
void clear();
TileMap();