node_base.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:Sverchok 作者: Sverchok 项目源码 文件源码
def class_factory(func):
    """create a node class based on a function that has been preprocessed
    with get signature or from @stateful"""

    if hasattr(func, "cls_bases"):
        bases = func.cls_bases + (bpy.types.Node,)
    else:
        bases = (NodeBase, bpy.types.Node)

    cls_dict = {}
    cls_name = func.bl_idname
    cls_dict['bl_idname'] = func.bl_idname
    cls_dict['bl_label'] = func.label

    for name, prop in func.properties.items():
        #print(name, prop)
        cls_dict[name] = prop

    if hasattr(func, 'id'):
        func_dict, func_list = NodeDynSignature.get_multi(func)
        default = func_list[0][0]
        cls_dict['mode'] = EnumProperty(items=func_list,
                                        default=default,
                                        update=NodeDynSignature.update_mode)
        cls_dict['bl_label'] = func.multi_label

    for name in {"draw_buttons", "draw_buttons_ext", "update", "draw_label"}:
        attr = getattr(func, name, None)
        if callable(attr):
            cls_dict[name] = attr

    cls = type(cls_name, bases, cls_dict)
    func.cls = cls
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号