void Node2D::_update_transform() { _mat.set_rotation_and_scale(angle, _scale); _mat.elements[2] = pos; VisualServer::get_singleton()->canvas_item_set_transform(get_canvas_item(), _mat); if (!is_inside_tree()) return; _notify_transform(); }
void Node2D::set_transform(const Matrix32& p_transform) { _mat=p_transform; _xform_dirty=true; VisualServer::get_singleton()->canvas_item_set_transform(get_canvas_item(),_mat); if (!is_inside_tree()) return; _notify_transform(); }
void CanvasItem::_notify_transform(CanvasItem *p_node) { if (p_node->xform_change.in_list() && p_node->global_invalid) return; //nothing to do p_node->global_invalid=true; if (!p_node->xform_change.in_list()) { if (!p_node->block_transform_notify) { if (p_node->is_inside_tree()) get_tree()->xform_change_list.add(&p_node->xform_change); } } for(List<CanvasItem*>::Element *E=p_node->children_items.front();E;E=E->next()) { CanvasItem* ci=E->get(); if (ci->toplevel) continue; _notify_transform(ci); } }