예제 #1
0
    def init(self, context):
        """
        this function is triggered upon node creation,
        - freezes the node
        - delegates further initialization information to sv_init
        - sets node color
        - unfreezes the node
        """
        CurrentEvents.new_event(BlenderEventsTypes.add_node, self)
        ng = self.id_data

        ng.freeze()
        ng.nodes_dict.load_node(self)
        if hasattr(self, "sv_init"):

            try:
                self.sv_init(context)
            except Exception as err:
                print('nodetree.node.sv_init failure - stare at the error message below')
                sys.stderr.write('ERROR: %s\n' % str(err))

        self.set_color()
        ng.unfreeze()
예제 #2
0
    def free(self):
        """
        This method is not supposed to be overriden in specific nodes.
        Override sv_free() instead
        """
        self.sv_free()

        for s in self.outputs:
            s.sv_forget()

        node_tree = self.id_data
        node_tree.nodes_dict.forget_node(self)

        CurrentEvents.new_event(BlenderEventsTypes.free_node, self)
        if hasattr(self, "has_3dview_props"):
            print("about to remove this node's props from Sv3DProps")
            try:
                bpy.ops.node.sv_remove_3dviewpropitem(
                    node_name=self.name, tree_name=self.id_data.name)
            except:
                print(
                    f'failed to remove {self.name} from tree={self.id_data.name}'
                )
예제 #3
0
파일: node_tree.py 프로젝트: vktcl/sverchok
 def insert_link(self, link):
     """It will be triggered only if one socket is connected with another by user"""
     CurrentEvents.new_event(BlenderEventsTypes.add_link_to_node, self)
예제 #4
0
 def update(self):
     CurrentEvents.new_event(BlenderEventsTypes.monad_tree_update, self)
     affected_trees = {instance.id_data for instance in self.instances}
     for tree in affected_trees:
         tree.update()
예제 #5
0
 def insert_link(self, link):
     CurrentEvents.new_event(BlenderEventsTypes.add_link_to_node, self)
예제 #6
0
 def update(self):
     CurrentEvents.new_event(BlenderEventsTypes.node_update, self)
     self.sv_update()