TileMap: Set texture_filter and texture_repeat to generated CanvasItems and update when it changes

This commit is contained in:
Mateo Dev .59 2020-02-19 18:26:24 -03:00 committed by Mateo Kuruk Miccino
parent e49d25bac0
commit bb7db2138b
4 changed files with 33 additions and 2 deletions

View file

@ -412,6 +412,9 @@ void TileMap::update_dirty_quadrants() {
vs->canvas_item_set_light_mask(canvas_item, get_light_mask());
vs->canvas_item_set_z_index(canvas_item, z_index);
vs->canvas_item_set_default_texture_filter(canvas_item, RS::CanvasItemTextureFilter(CanvasItem::get_texture_filter()));
vs->canvas_item_set_default_texture_repeat(canvas_item, RS::CanvasItemTextureRepeat(CanvasItem::get_texture_repeat()));
q.canvas_items.push_back(canvas_item);
if (debug_shapes) {
@ -1687,6 +1690,28 @@ bool TileMap::get_clip_uv() const {
return clip_uv;
}
void TileMap::set_texture_filter(TextureFilter p_texture_filter) {
CanvasItem::set_texture_filter(p_texture_filter);
for (Map<PosKey, Quadrant>::Element *F = quadrant_map.front(); F; F = F->next()) {
Quadrant &q = F->get();
for (List<RID>::Element *E = q.canvas_items.front(); E; E = E->next()) {
RenderingServer::get_singleton()->canvas_item_set_default_texture_filter(E->get(), RS::CanvasItemTextureFilter(p_texture_filter));
_make_quadrant_dirty(F);
}
}
}
void TileMap::set_texture_repeat(CanvasItem::TextureRepeat p_texture_repeat) {
CanvasItem::set_texture_repeat(p_texture_repeat);
for (Map<PosKey, Quadrant>::Element *F = quadrant_map.front(); F; F = F->next()) {
Quadrant &q = F->get();
for (List<RID>::Element *E = q.canvas_items.front(); E; E = E->next()) {
RenderingServer::get_singleton()->canvas_item_set_default_texture_repeat(E->get(), RS::CanvasItemTextureRepeat(p_texture_repeat));
_make_quadrant_dirty(F);
}
}
}
String TileMap::get_configuration_warning() const {
String warning = Node2D::get_configuration_warning();

View file

@ -342,6 +342,10 @@ public:
String get_configuration_warning() const override;
virtual void set_texture_filter(CanvasItem::TextureFilter p_texture_filter) override;
virtual void set_texture_repeat(CanvasItem::TextureRepeat p_texture_repeat) override;
void fix_invalid_tiles();
void clear();

View file

@ -1369,6 +1369,7 @@ void CanvasItem::set_texture_filter(TextureFilter p_texture_filter) {
}
texture_filter = p_texture_filter;
_update_texture_filter_changed(true);
_change_notify();
}
CanvasItem::TextureFilter CanvasItem::get_texture_filter() const {
@ -1421,6 +1422,7 @@ void CanvasItem::set_texture_repeat(TextureRepeat p_texture_repeat) {
}
texture_repeat = p_texture_repeat;
_update_texture_repeat_changed(true);
_change_notify();
}
CanvasItem::TextureRepeat CanvasItem::get_texture_repeat() const {

View file

@ -405,10 +405,10 @@ public:
void force_update_transform();
void set_texture_filter(TextureFilter p_texture_filter);
virtual void set_texture_filter(TextureFilter p_texture_filter);
TextureFilter get_texture_filter() const;
void set_texture_repeat(TextureRepeat p_texture_repeat);
virtual void set_texture_repeat(TextureRepeat p_texture_repeat);
TextureRepeat get_texture_repeat() const;
// Used by control nodes to retrieve the parent's anchorable area