[Bf-extensions-cvs] [16299222] master: BlenderKit: switch update functions to independent timers. -seems to improve performance, and fixes assets not appending while asset bar is off.
Vilém Duha
noreply at git.blender.org
Tue Sep 10 16:56:17 CEST 2019
Commit: 16299222c41de0bd77335cd0e97656edeb2090c3
Author: Vilém Duha
Date: Wed Sep 4 14:39:22 2019 +0200
Branches: master
https://developer.blender.org/rBA16299222c41de0bd77335cd0e97656edeb2090c3
BlenderKit: switch update functions to independent timers.
-seems to improve performance, and fixes assets not appending while asset bar is off.
===================================================================
M blenderkit/append_link.py
M blenderkit/bg_blender.py
M blenderkit/download.py
M blenderkit/search.py
M blenderkit/ui.py
M blenderkit/utils.py
===================================================================
diff --git a/blenderkit/append_link.py b/blenderkit/append_link.py
index efbd1492..61808af7 100644
--- a/blenderkit/append_link.py
+++ b/blenderkit/append_link.py
@@ -87,13 +87,37 @@ def append_scene(file_name, scenename=None, link=False, fake_user=False):
def link_group(file_name, obnames=[], location=(0, 0, 0), link=False, **kwargs):
'''link an instanced group - model type asset'''
sel = utils.selection_get()
- bpy.ops.wm.link(directory=file_name + "/Collection/", filename=kwargs['name'], link=link, instance_collections=True,
- autoselect=True)
- main_object = bpy.context.active_object
+ with bpy.data.libraries.load(file_name, link=link, relative=True) as (data_from, data_to):
+ scols = []
+ for col in data_from.collections:
+ print('linking this ', col)
+ if col == kwargs['name']:
+ data_to.collections = [col]
+
+ rotation = (0,0,0)
if kwargs.get('rotation') is not None:
- main_object.rotation_euler = kwargs['rotation']
- main_object.location = location
+ rotation = kwargs['rotation']
+
+
+ bpy.ops.object.empty_add(type='PLAIN_AXES', location=location, rotation = rotation)
+ main_object = bpy.context.view_layer.objects.active
+ main_object.instance_type = 'COLLECTION'
+ for col in bpy.data.collections:
+ print(col.name, col.library, file_name)
+ if col.library is not None:
+ if col.library.filepath == file_name:
+ main_object.instance_collection = col
+ break;
+
+
+ # bpy.ops.wm.link(directory=file_name + "/Collection/", filename=kwargs['name'], link=link, instance_collections=True,
+ # autoselect=True)
+ # main_object = bpy.context.view_layer.objects.active
+ # if kwargs.get('rotation') is not None:
+ # main_object.rotation_euler = kwargs['rotation']
+ # main_object.location = location
+
utils.selection_set(sel)
return main_object, []
diff --git a/blenderkit/bg_blender.py b/blenderkit/bg_blender.py
index 9ed68128..c0982702 100644
--- a/blenderkit/bg_blender.py
+++ b/blenderkit/bg_blender.py
@@ -135,8 +135,9 @@ def bg_update():
p[0] = readthread
if len(bg_processes) == 0:
bpy.app.timers.unregister(bg_update)
-
- return .1
+ if len(bg_processes) > 0:
+ return .3
+ return 1.
process_types = (
@@ -225,17 +226,16 @@ def add_bg_process(location=None, name=None, eval_path_computing='', eval_path_s
readthread.start()
bg_processes.append([readthread, tcom])
- if not bpy.app.timers.is_registered(bg_update):
- bpy.app.timers.register(bg_update, persistent=True)
-
-
-def stert_bg_blender():
- pass;
+ # if not bpy.app.timers.is_registered(bg_update):
+ # bpy.app.timers.register(bg_update, persistent=True)
def register():
bpy.utils.register_class(KillBgProcess)
+ bpy.app.timers.register(bg_update, persistent=True)
def unregister():
bpy.utils.unregister_class(KillBgProcess)
+ bpy.app.timers.unregister(bg_update)
+
diff --git a/blenderkit/download.py b/blenderkit/download.py
index 9f5f0314..3131ad10 100644
--- a/blenderkit/download.py
+++ b/blenderkit/download.py
@@ -402,9 +402,9 @@ def append_asset(asset_data, **kwargs): # downloaders=[], location=None,
shutil.copy(thumbpath, asset_thumb_path)
brush.icon_filepath = asset_thumb_path
- if bpy.context.sculpt_object:
+ if bpy.context.view_layer.objects.active.mode == 'SCULPT':
bpy.context.tool_settings.sculpt.brush = brush
- elif bpy.context.image_paint_object: # could be just else, but for future possible more types...
+ elif bpy.context.view_layer.objects.active.mode == 'TEXTURE_PAINT': # could be just else, but for future possible more types...
bpy.context.tool_settings.image_paint.brush = brush
# TODO set brush by by asset data(user can be downloading while switching modes.)
@@ -510,7 +510,7 @@ def timer_update(): # TODO might get moved to handle all blenderkit stuff, not
sres['downloaded'] = 100
utils.p('finished download thread')
- return .2
+ return .5
class Downloader(threading.Thread):
@@ -886,7 +886,7 @@ def register_download():
bpy.utils.register_class(BlenderkitKillDownloadOperator)
bpy.app.handlers.load_post.append(scene_load)
bpy.app.handlers.save_pre.append(scene_save)
- # bpy.app.timers.register(timer_update, persistent = True)
+ bpy.app.timers.register(timer_update, persistent = True)
def unregister_download():
@@ -894,4 +894,4 @@ def unregister_download():
bpy.utils.unregister_class(BlenderkitKillDownloadOperator)
bpy.app.handlers.load_post.remove(scene_load)
bpy.app.handlers.save_pre.remove(scene_save)
- # bpy.app.timers.unregister(timer_update)
+ bpy.app.timers.unregister(timer_update)
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 96c50a0e..83bdb2ec 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -266,7 +266,7 @@ def timer_update(): # TODO might get moved to handle all blenderkit stuff.
# print('finished search thread')
mt('preview loading finished')
- return .2
+ return .3
def load_previews():
@@ -1152,7 +1152,7 @@ def register_search():
for c in classes:
bpy.utils.register_class(c)
- # bpy.app.timers.register(timer_update, persistent = True)
+ bpy.app.timers.register(timer_update, persistent = True)
categories.load_categories()
@@ -1163,5 +1163,5 @@ def unregister_search():
for c in classes:
bpy.utils.unregister_class(c)
- # bpy.app.timers.unregister(timer_update)
+ bpy.app.timers.unregister(timer_update)
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index 7d60ef8c..e35a9298 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -1229,9 +1229,9 @@ class AssetBarOperator(bpy.types.Operator):
update_ui_size(self.area, self.region)
- search.timer_update()
- download.timer_update()
- bg_blender.bg_update()
+ # search.timer_update()
+ # download.timer_update()
+ # bg_blender.bg_update()
if context.region != self.region:
print(time.time(), 'pass trough because of region')
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index a6bb407d..20dcaec8 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -38,8 +38,8 @@ def activate(ob):
def selection_get():
- aob = bpy.context.active_object
- selobs = bpy.context.selected_objects
+ aob = bpy.context.view_layer.objects.active
+ selobs = bpy.context.view_layer.objects.selected[:]
return (aob, selobs)
More information about the Bf-extensions-cvs
mailing list