예제 #1
0
파일: handlers.py 프로젝트: OpenWRLD/mixer
    def _set_handlers(cls, connect: bool):
        try:
            if connect:
                bpy.app.handlers.frame_change_post.append(
                    handler_send_frame_changed)
                bpy.app.handlers.depsgraph_update_post.append(
                    handler_send_scene_data_to_server)
                bpy.app.handlers.undo_pre.append(handler_on_undo_redo_pre)
                bpy.app.handlers.redo_pre.append(handler_on_undo_redo_pre)
                bpy.app.handlers.undo_post.append(handler_on_undo_redo_post)
                bpy.app.handlers.redo_post.append(handler_on_undo_redo_post)
                bpy.app.handlers.load_post.append(handler_on_load)
            else:
                bpy.app.handlers.load_post.remove(handler_on_load)
                bpy.app.handlers.frame_change_post.remove(
                    handler_send_frame_changed)
                bpy.app.handlers.depsgraph_update_post.remove(
                    handler_send_scene_data_to_server)
                bpy.app.handlers.undo_pre.remove(handler_on_undo_redo_pre)
                bpy.app.handlers.redo_pre.remove(handler_on_undo_redo_pre)
                bpy.app.handlers.undo_post.remove(handler_on_undo_redo_post)
                bpy.app.handlers.redo_post.remove(handler_on_undo_redo_post)

                remove_draw_handlers()
        except Exception as e:
            logger.error("Exception during set_handlers(%s) : %s", connect, e)
예제 #2
0
def disconnect():
    from mixer.bl_panels import update_ui_lists

    logger.info("disconnect")

    leave_current_room()

    remove_draw_handlers()

    if bpy.app.timers.is_registered(network_consumer_timer):
        bpy.app.timers.unregister(network_consumer_timer)

    # the socket has already been disconnected
    if share_data.client is not None:
        if share_data.client.is_connected():
            share_data.client.disconnect()
        share_data.client = None

    update_ui_lists()