feat(rcf): work on updates
This commit is contained in:
@ -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)
|
||||||
|
|
||||||
|
116
net_operators.py
116
net_operators.py
@ -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:
|
||||||
|
Reference in New Issue
Block a user