def register():
	from bpy.utils import register_class
	for cls in _classes:
		register_class(cls)
	
	from . import translations
	bpy.app.translations.register(__name__,translations.translations)
	
	bpy.types.TOPBAR_MT_file_import.append(menu_func_import)
	bpy.types.TOPBAR_MT_file_export.append(menu_func_export)
	bpy.types.MESH_MT_shape_key_context_menu.append(menu_func_shapekeys)
	bpy.types.TEXT_MT_edit.append(menu_func_textedit)
	hook_scene_update()
	bpy.app.handlers.load_post.append(scene_load_post)
	depsgraph_update_post.append(scene_load_post) # handles enabling the add-on after the scene is loaded
		
	try: bpy.ops.wm.addon_disable('EXEC_SCREEN',module="io_smd_tools")
	except: pass
	
	def make_pointer(prop_type):
		return PointerProperty(name=get_id("settings_prop"),type=prop_type)
		
	bpy.types.Scene.vs = make_pointer(ValveSource_SceneProps)
	bpy.types.Object.vs = make_pointer(ValveSource_ObjectProps)
	bpy.types.Armature.vs = make_pointer(ValveSource_ArmatureProps)
	bpy.types.Collection.vs = make_pointer(ValveSource_CollectionProps)
	bpy.types.Mesh.vs = make_pointer(ValveSource_MeshProps)
	bpy.types.SurfaceCurve.vs = make_pointer(ValveSource_SurfaceProps)
	bpy.types.Curve.vs = make_pointer(ValveSource_CurveProps)
	bpy.types.Text.vs = make_pointer(ValveSource_TextProps)
Esempio n. 2
0
    def start(self):
        """Start trying to connect to Unity"""
        if self.is_running():
            return

        log('Starting the DCC')

        # TODO: Pull connection name from scene's coherence.connection_name
        self.connection_name = create_string_buffer("Coherence".encode())
        self.blender_version = create_string_buffer(
            bpy.app.version_string.encode())
        self.running = True

        # Register active viewports
        for render_engine in self.viewports.values():
            self.add_viewport(render_engine)

        # Register listeners for Blender events
        depsgraph_update_post.append(self.on_depsgraph_update)
        load_pre.append(self.on_load_pre)

        # Register timers for frequent updates
        bpy.app.timers.register(self.on_tick)
        bpy.app.timers.register(self.check_texture_sync)

        # Monitor updates in SpaceImageEditor for texture syncing
        self.image_editor_handle = bpy.types.SpaceImageEditor.draw_handler_add(
            self.on_image_editor_update, (bpy.context, ), 'WINDOW',
            'POST_PIXEL')

        # Sync the current scene state into the bridge
        self.sync_tracked_objects(bpy.context.scene,
                                  bpy.context.evaluated_depsgraph_get())

        self.tag_redraw_viewports()
Esempio n. 3
0
def register():
    """!
    Load the Python classes and functions to Blender.
    """
    log.debug(f"Registering handlers")
    load_post.append(_load_post)
    save_pre.append(_save_pre)
    depsgraph_update_post.append(_depsgraph_update_post)
Esempio n. 4
0
def hook_scene_update():
    if not scene_update in depsgraph_update_post:
        depsgraph_update_post.append(scene_update)
Esempio n. 5
0
def register():
    depsgraph_update_pre.append(pre.depsgraph)
    depsgraph_update_post.append(post.depsgraph)
    load_pre.append(pre.load)
    load_post.append(post.load)
    save_pre.append(pre.save)
 def start(cls):
     # start monitor changes
     if cls.on_depsgraph_update not in depsgraph_update_post:
         depsgraph_update_post.append(cls.on_depsgraph_update)
Esempio n. 7
0
def AddHandler():
    RemoveHandler()
    #load the scene update handler
    depsgraph_update_post.append(frame_handler)
    frame_change_post.append(frame_handler)
    driver_namespace[handler_key] = frame_handler