fix updating tileset list when assign texture and set autotile true

This commit is contained in:
damarindra 2018-01-11 05:45:14 +07:00
parent 554e95747c
commit bea40343ab
3 changed files with 12 additions and 1 deletions

View file

@ -583,6 +583,14 @@ void AutotileEditor::_notification(int p_what) {
} }
} }
void AutotileEditor::_changed_callback(Object *p_changed, const char *p_prop) {
if (p_prop == StringName("texture") || p_prop == StringName("is_autotile")) {
edit(tile_set.ptr());
autotile_list->update();
workspace->update();
}
}
void AutotileEditor::_on_autotile_selected(int p_index) { void AutotileEditor::_on_autotile_selected(int p_index) {
if (get_current_tile() >= 0) { if (get_current_tile() >= 0) {
@ -1581,6 +1589,7 @@ Vector2 AutotileEditor::snap_point(const Vector2 &point) {
void AutotileEditor::edit(Object *p_node) { void AutotileEditor::edit(Object *p_node) {
tile_set = Ref<TileSet>(Object::cast_to<TileSet>(p_node)); tile_set = Ref<TileSet>(Object::cast_to<TileSet>(p_node));
tile_set->add_change_receptor(this);
helper->set_tileset(tile_set); helper->set_tileset(tile_set);
autotile_list->clear(); autotile_list->clear();

View file

@ -124,6 +124,7 @@ class AutotileEditor : public Control {
protected: protected:
static void _bind_methods(); static void _bind_methods();
void _notification(int p_what); void _notification(int p_what);
virtual void _changed_callback(Object *p_changed, const char *p_prop);
private: private:
void _on_autotile_selected(int p_index); void _on_autotile_selected(int p_index);

View file

@ -309,6 +309,7 @@ void TileSet::tile_set_texture(int p_id, const Ref<Texture> &p_texture) {
ERR_FAIL_COND(!tile_map.has(p_id)); ERR_FAIL_COND(!tile_map.has(p_id));
tile_map[p_id].texture = p_texture; tile_map[p_id].texture = p_texture;
emit_changed(); emit_changed();
_change_notify("texture");
} }
Ref<Texture> TileSet::tile_get_texture(int p_id) const { Ref<Texture> TileSet::tile_get_texture(int p_id) const {
@ -386,8 +387,8 @@ void TileSet::tile_set_is_autotile(int p_id, bool p_is_autotile) {
ERR_FAIL_COND(!tile_map.has(p_id)); ERR_FAIL_COND(!tile_map.has(p_id));
tile_map[p_id].is_autotile = p_is_autotile; tile_map[p_id].is_autotile = p_is_autotile;
_change_notify("");
emit_changed(); emit_changed();
_change_notify("is_autotile");
} }
bool TileSet::tile_get_is_autotile(int p_id) const { bool TileSet::tile_get_is_autotile(int p_id) const {