Декоратор для отложенного обновления нодового дерева

Если в панелях интерфейса аддона присутствует поле, значение которого меняет что-то в нодовом дереве, при изменении значения в этом поле нодовое дерево каждый раз перекомпилируется. Если пользователь меняет значение в таком поле зажав и двигая мышкой, слишком частая перекомпиляция нодового дерева приведет к заметным подвисаниям Blender.

Проблему лагов можно решить, используя декораторы для отложенного обновления нодового дерева.

Автор кода: Skarn

Определение декораторов:

В коде используется сторонняя библиотека «Boltons», которую нужно включить в проект аддона для корректной работы.

Здесь определяются два декоратора: delay_execution для задержки выполнения по времени и on_release — для задержки до момента, когда пользователь отпустит зажатую кнопку мышки.

Далее эти декораторы могут использоваться в коде например так:

Здесь обновление положения источника света в свойстве sun_direction нода произойдет только когда пользователь отпустит зажатую кнопку мышки.