feat(rcf): work on updates

This commit is contained in:
Swann Martinez
2019-04-03 17:52:45 +02:00
parent dc7e19c74a
commit 4123ffbb38
2 changed files with 62 additions and 61 deletions

View File

@ -260,10 +260,11 @@ class RCFClient():
if self.pull_sock in socks: if self.pull_sock in socks:
rcfmsg = RCFMessage.recv(self.pull_sock) rcfmsg = RCFMessage.recv(self.pull_sock)
rcfmsg.store(self.property_map) if rcfmsg.id != self.id:
rcfmsg.store(self.property_map)
for f in self.on_recv: for f in self.on_recv:
f(rcfmsg) f(rcfmsg)
else: else:
await asyncio.sleep(0.0001) await asyncio.sleep(0.0001)

View File

@ -437,63 +437,63 @@ def load_default(target=None, data=None, create=False, type=None):
def update_scene(msg): def update_scene(msg):
global client global client
if msg.id != client.id:
net_vars = bpy.context.scene.session_settings net_vars = bpy.context.scene.session_settings
# if net_vars.active_object: # if net_vars.active_object:
# if net_vars.active_object.name in msg.key: # if net_vars.active_object.name in msg.key:
# raise ValueError() # raise ValueError()
if 'net' not in msg.key: if 'net' not in msg.key:
target = resolve_bpy_path(msg.key) target = resolve_bpy_path(msg.key)
if target: if target:
target.is_updating = True target.is_updating = True
if msg.mtype == 'Object': if msg.mtype == 'Object':
load_object(target=target, data=msg.body, load_object(target=target, data=msg.body,
create=net_vars.load_data)
global drawer
drawer.draw()
elif msg.mtype == 'Mesh':
load_mesh(target=target, data=msg.body,
create=net_vars.load_data)
elif msg.mtype == 'Collection':
load_collection(target=target, data=msg.body,
create=net_vars.load_data) create=net_vars.load_data)
global drawer elif msg.mtype == 'Material':
drawer.draw() load_material(target=target, data=msg.body,
elif msg.mtype == 'Mesh': create=net_vars.load_data)
load_mesh(target=target, data=msg.body, elif msg.mtype == 'Grease Pencil':
create=net_vars.load_data) load_gpencil(target=target, data=msg.body,
elif msg.mtype == 'Collection': create=net_vars.load_data)
load_collection(target=target, data=msg.body, elif msg.mtype == 'Scene':
create=net_vars.load_data) load_scene(target=target, data=msg.body,
elif msg.mtype == 'Material': create=net_vars.load_data)
load_material(target=target, data=msg.body, elif 'Light' in msg.mtype:
create=net_vars.load_data) load_light(target=target, data=msg.body,
elif msg.mtype == 'Grease Pencil': create=net_vars.load_data)
load_gpencil(target=target, data=msg.body,
create=net_vars.load_data)
elif msg.mtype == 'Scene':
load_scene(target=target, data=msg.body,
create=net_vars.load_data)
elif 'Light' in msg.mtype:
load_light(target=target, data=msg.body,
create=net_vars.load_data)
else:
load_default(target=target, data=msg.body,
create=net_vars.load_data, type=msg.mtype)
else: else:
if msg.mtype == 'client': load_default(target=target, data=msg.body,
refresh_window() create=net_vars.load_data, type=msg.mtype)
elif msg.mtype == 'clientObject': else:
selected_objects = [] if msg.mtype == 'client':
refresh_window()
elif msg.mtype == 'clientObject':
selected_objects = []
for k, v in client.property_map.items(): for k, v in client.property_map.items():
if v.mtype == 'clientObject': if v.mtype == 'clientObject':
if client.id != v.id: if client.id != v.id:
selected_objects.append(v.body['object']) selected_objects.append(v.body['object'])
for obj in bpy.data.objects: for obj in bpy.data.objects:
if obj.name in selected_objects: if obj.name in selected_objects:
obj.hide_select = True obj.hide_select = True
else: else:
obj.hide_select = False obj.hide_select = False
refresh_window() refresh_window()
def push(data_type,id): def push(data_type,id):
if data_type == 'Material': if data_type == 'Material':
@ -520,7 +520,7 @@ post_init_callbacks = [refresh_window]
def default_tick(): def default_tick():
if not update_tasks.empty(): if not update_tasks.empty():
update = update_tasks.get() update = update_tasks.get()
print(update)
try: try:
push(update[0],update[1]) push(update[0],update[1])
except: except:
@ -834,17 +834,17 @@ def depsgraph_update(scene):
break break
if push: if push:
if len(updates) is 1: # if len(updates) is 1:
updated_data = updates[0] # updated_data = updates[0]
if scene.session_settings.active_object and updated_data.id.name == scene.session_settings.active_object.name: # if scene.session_settings.active_object and updated_data.id.name == scene.session_settings.active_object.name:
if updated_data.is_updated_transform: # if updated_data.is_updated_transform:
add_update(updated_data.id.bl_rna.name, updated_data.id.name) # add_update(updated_data.id.bl_rna.name, updated_data.id.name)
else: # else:
for update in ordered(updates): for update in ordered(updates):
if update[2] == "Master Collection": if update[2] == "Master Collection":
pass pass
elif update[1] in SUPPORTED_TYPES: elif update[1] in SUPPORTED_TYPES:
update_tasks.put((update[1], update[2])) update_tasks.put((update[1], update[2]))
# elif scene.session_settings.active_object and updated_data.id.name == scene.session_settings.active_object.name: # elif scene.session_settings.active_object and updated_data.id.name == scene.session_settings.active_object.name: