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()
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}' )
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)
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()
def insert_link(self, link): CurrentEvents.new_event(BlenderEventsTypes.add_link_to_node, self)
def update(self): CurrentEvents.new_event(BlenderEventsTypes.node_update, self) self.sv_update()