remove(rcf): cleanup

This commit is contained in:
Swann Martinez
2019-04-01 11:45:16 +02:00
parent 2e931585ff
commit 8a6cd5fc11
7 changed files with 119 additions and 1647 deletions

Binary file not shown.

View File

@ -1,184 +0,0 @@
{
"active_material": "Material",
"active_material_index": 0,
"active_shape_key_index": 0,
"data": "Cube",
"delta_location": [
0.0,
0.0,
0.0
],
"delta_scale": [
1.0,
1.0,
1.0
],
"dimensions": [
2.615931749343872,
2.0,
2.615931749343872
],
"display_bounds_type": "BOX",
"display_type": "TEXTURED",
"empty_display_size": 1.0,
"empty_display_type": "ARROWS",
"empty_image_depth": "DEFAULT",
"empty_image_side": "DOUBLE_SIDED",
"hide_render": false,
"hide_select": false,
"hide_viewport": false,
"instance_faces_scale": 1.0,
"instance_type": "NONE",
"is_evaluated": false,
"is_from_instancer": false,
"is_from_set": false,
"is_instancer": false,
"is_library_indirect": false,
"location": [
-3.7747275829315186,
0.3205798268318176,
0.3536362648010254
],
"lock_rotation_w": false,
"lock_rotations_4d": false,
"matrix_basis": [
[
1.0,
0.0,
0.0,
-3.7747275829315186
],
[
0.0,
1.0,
0.0,
0.3205798268318176
],
[
0.0,
0.0,
1.0,
0.3536362648010254
],
[
0.0,
0.0,
0.0,
1.0
]
],
"matrix_local": [
[
1.0,
0.0,
0.0,
-3.7747275829315186
],
[
0.0,
1.0,
0.0,
0.3205798268318176
],
[
0.0,
0.0,
1.0,
0.3536362648010254
],
[
0.0,
0.0,
0.0,
1.0
]
],
"matrix_parent_inverse": [
[
1.0,
0.0,
0.0,
0.0
],
[
0.0,
1.0,
0.0,
0.0
],
[
0.0,
0.0,
1.0,
0.0
],
[
0.0,
0.0,
0.0,
1.0
]
],
"matrix_world": [
[
1.0,
0.0,
0.0,
-3.7747275829315186
],
[
0.0,
1.0,
0.0,
0.3205798268318176
],
[
0.0,
0.0,
1.0,
0.3536362648010254
],
[
0.0,
0.0,
0.0,
1.0
]
],
"mode": "OBJECT",
"name": "Cube",
"name_full": "Cube",
"original": "Cube",
"parent_bone": "",
"parent_type": "OBJECT",
"pass_index": 0,
"rotation_mode": "XYZ",
"scale": [
1.0,
1.0,
1.0
],
"show_all_edges": false,
"show_axis": false,
"show_bounds": false,
"show_empty_image_orthographic": true,
"show_empty_image_perspective": true,
"show_in_front": false,
"show_instancer_for_render": true,
"show_instancer_for_viewport": true,
"show_name": false,
"show_only_shape_key": false,
"show_texture_space": false,
"show_transparent": false,
"show_wire": false,
"tag": true,
"track_axis": "POS_Y",
"type": "MESH",
"up_axis": "Z",
"use_dynamic_topology_sculpting": false,
"use_fake_user": false,
"use_instance_faces_scale": false,
"use_instance_vertices_rotation": false,
"use_shape_key_edit_mode": false,
"users": 1
}

View File

@ -24,6 +24,7 @@ context = None
update_list = {} update_list = {}
def add_update(type, item): def add_update(type, item):
try: try:
if item not in update_list[type]: if item not in update_list[type]:
@ -31,6 +32,7 @@ def add_update(type,item):
except KeyError: except KeyError:
update_list[type] = [] update_list[type] = []
def get_update(type): def get_update(type):
try: try:
update = None update = None
@ -41,8 +43,8 @@ def get_update(type):
update_list[type] = [] update_list[type] = []
return update return update
COLOR_TABLE = [(1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1),
(0, 0.5, 1, 1), (0.5, 0, 1, 1)]
SUPPORTED_DATABLOCKS = ['collections', 'meshes', 'objects', SUPPORTED_DATABLOCKS = ['collections', 'meshes', 'objects',
'materials', 'textures', 'lights', 'cameras', 'actions', 'armatures', 'grease_pencils'] 'materials', 'textures', 'lights', 'cameras', 'actions', 'armatures', 'grease_pencils']
SUPPORTED_TYPES = ['Collection', 'Mesh', 'Object', 'Material', SUPPORTED_TYPES = ['Collection', 'Mesh', 'Object', 'Material',
@ -121,6 +123,7 @@ def randomStringDigits(stringLength=6):
lettersAndDigits = string.ascii_letters + string.digits lettersAndDigits = string.ascii_letters + string.digits
return ''.join(random.choice(lettersAndDigits) for i in range(stringLength)) return ''.join(random.choice(lettersAndDigits) for i in range(stringLength))
def randomColor(): def randomColor():
r = random.random() r = random.random()
v = random.random() v = random.random()
@ -148,6 +151,7 @@ def refresh_window():
import bpy import bpy
bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1) bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1)
def dump_datablock(datablock, depth): def dump_datablock(datablock, depth):
if datablock: if datablock:
print("sending {}".format(datablock.name)) print("sending {}".format(datablock.name))
@ -162,6 +166,7 @@ def dump_datablock(datablock,depth):
client.push_update(key, datablock_type, data) client.push_update(key, datablock_type, data)
def dump_datablock_attibute(datablock, attributes, depth=1): def dump_datablock_attibute(datablock, attributes, depth=1):
if datablock: if datablock:
dumper = dump_anything.Dumper() dumper = dump_anything.Dumper()
@ -180,14 +185,18 @@ def dump_datablock_attibute(datablock,attributes,depth=1):
client.push_update(key, datablock_type, data) client.push_update(key, datablock_type, data)
def upload_mesh(mesh): def upload_mesh(mesh):
if mesh.bl_rna.name == 'Mesh': if mesh.bl_rna.name == 'Mesh':
dump_datablock_attibute(mesh,['name','polygons','edges','vertices'],6) dump_datablock_attibute(
mesh, ['name', 'polygons', 'edges', 'vertices'], 6)
def upload_material(mesh): def upload_material(mesh):
if mesh.bl_rna.name == 'Material': if mesh.bl_rna.name == 'Material':
dump_datablock_attibute(mesh, ['name', 'node_tree'], 7) dump_datablock_attibute(mesh, ['name', 'node_tree'], 7)
def upload_client_position(): def upload_client_position():
global client global client
@ -209,6 +218,7 @@ def upload_client_position():
except: except:
pass pass
def init_scene(): def init_scene():
for cam in bpy.data.cameras: for cam in bpy.data.cameras:
dump_datablock(cam, 1) dump_datablock(cam, 1)
@ -320,7 +330,8 @@ def load_scene(target=None, data=None, create=False):
# TODO: Recursive link # TODO: Recursive link
for collection in data["collection"]["children"]: for collection in data["collection"]["children"]:
if collection not in target.collection.children.keys(): if collection not in target.collection.children.keys():
target.collection.children.link(bpy.data.collections[collection]) target.collection.children.link(
bpy.data.collections[collection])
except: except:
print("Collection loading error") print("Collection loading error")
@ -508,10 +519,7 @@ class session_join(bpy.types.Operator):
net_settings.is_running = True net_settings.is_running = True
# REGISTER Updaters register_ticks()
bpy.app.timers.register(tick)
bpy.app.timers.register(mesh_tick)
bpy.app.timers.register(object_tick)
bpy.ops.session.draw('INVOKE_DEFAULT') bpy.ops.session.draw('INVOKE_DEFAULT')
return {"FINISHED"} return {"FINISHED"}
@ -626,9 +634,8 @@ class session_stop(bpy.types.Operator):
client = None client = None
bpy.ops.asyncio.stop() bpy.ops.asyncio.stop()
net_settings.is_running = False net_settings.is_running = False
bpy.app.timers.unregister(tick)
bpy.app.timers.unregister(mesh_tick) unregister_ticks()
bpy.app.timers.unregister(object_tick)
else: else:
logger.debug("No server/client running.") logger.debug("No server/client running.")
@ -663,6 +670,7 @@ class session_settings(bpy.types.PropertyGroup):
subtype='COLOR', subtype='COLOR',
default=randomColor()) default=randomColor())
class session_draw_clients(bpy.types.Operator): class session_draw_clients(bpy.types.Operator):
bl_idname = "session.draw" bl_idname = "session.draw"
bl_label = "draw clients" bl_label = "draw clients"
@ -719,10 +727,8 @@ class session_draw_clients(bpy.types.Operator):
self.draw_items.clear() self.draw_items.clear()
# TODO: refactor this ugly things # TODO: refactor this ugly things
def create_batch(self): def create_batch(self):
global client global client
index = 0 index = 0
@ -833,7 +839,8 @@ class session_draw_clients(bpy.types.Operator):
session.active_object = context.selected_objects[0] session.active_object = context.selected_objects[0]
key = "net/objects/{}".format(client.id.decode()) key = "net/objects/{}".format(client.id.decode())
data = {} data = {}
data['color'] = [session.client_color.r,session.client_color.g,session.client_color.b] data['color'] = [session.client_color.r,
session.client_color.g, session.client_color.b]
data['object'] = session.active_object.name data['object'] = session.active_object.name
client.push_update( client.push_update(
key, 'clientObject', data) key, 'clientObject', data)
@ -858,7 +865,6 @@ class session_draw_clients(bpy.types.Operator):
self.unregister_handlers(context) self.unregister_handlers(context)
class session_snapview(bpy.types.Operator): class session_snapview(bpy.types.Operator):
bl_idname = "session.snapview" bl_idname = "session.snapview"
bl_label = "draw clients" bl_label = "draw clients"
@ -899,6 +905,7 @@ classes = (
session_snapview, session_snapview,
) )
def mesh_tick(): def mesh_tick():
mesh = get_update("Mesh") mesh = get_update("Mesh")
@ -907,6 +914,7 @@ def mesh_tick():
return 2 return 2
def object_tick(): def object_tick():
obj = get_update("Object") obj = get_update("Object")
@ -916,17 +924,18 @@ def object_tick():
return 0.1 return 0.1
def material_tick(): def material_tick():
return 2 return 2
def tick(): def draw_tick():
upload_client_position() upload_client_position()
return 0.1 return 0.1
# TODO: Enqueu tqsks
def depsgraph_update(scene): def depsgraph_update(scene):
for c in bpy.context.depsgraph.updates.items(): for c in bpy.context.depsgraph.updates.items():
@ -953,7 +962,8 @@ def depsgraph_update(scene):
break break
if not found: if not found:
client.property_map["Object/{}".format(data_name)] = net_components.RCFMessage("Object/{}".format(data_name), "Object", None) client.property_map["Object/{}".format(data_name)] = net_components.RCFMessage(
"Object/{}".format(data_name), "Object", None)
upload_mesh(bpy.data.objects[data_name].data) upload_mesh(bpy.data.objects[data_name].data)
dump_datablock(bpy.data.objects[data_name], 1) dump_datablock(bpy.data.objects[data_name], 1)
dump_datablock(bpy.data.scenes[0], 4) dump_datablock(bpy.data.scenes[0], 4)
@ -961,6 +971,20 @@ def depsgraph_update(scene):
# dump_datablock(bpy.data.scenes[0],4) # dump_datablock(bpy.data.scenes[0],4)
def register_ticks():
# REGISTER Updaters
bpy.app.timers.register(draw_tick)
bpy.app.timers.register(mesh_tick)
bpy.app.timers.register(object_tick)
def unregister_ticks():
# REGISTER Updaters
bpy.app.timers.unregister(draw_tick)
bpy.app.timers.unregister(mesh_tick)
bpy.app.timers.unregister(object_tick)
def register(): def register():
from bpy.utils import register_class from bpy.utils import register_class
for cls in classes: for cls in classes:
@ -970,6 +994,7 @@ def register():
type=session_settings) type=session_settings)
bpy.app.handlers.depsgraph_update_post.append(depsgraph_update) bpy.app.handlers.depsgraph_update_post.append(depsgraph_update)
def unregister(): def unregister():
global server global server
global client global client
@ -993,7 +1018,6 @@ def unregister():
for cls in reversed(classes): for cls in reversed(classes):
unregister_class(cls) unregister_class(cls)
del bpy.types.Scene.session_settings del bpy.types.Scene.session_settings

View File

@ -102,7 +102,7 @@ class SessionUsersPanel(bpy.types.Panel):
info = "(self)" info = "(self)"
# detail_item_box = item_box.row() # detail_item_box = item_box.row()
detail_item_box.label( detail_item_box.label(
text="{} - {} -{}".format(values.id.decode(),values.body, info)) text="{} - {}".format(values.id.decode(), info))
if net_operators.client.id.decode() not in key: if net_operators.client.id.decode() not in key:
detail_item_box.operator( detail_item_box.operator(

View File

@ -1,29 +0,0 @@
from . import net_components
import bpy
import mathutils
def set_vector(value):
return [value.x, value.y, value.z]
def get_vector(value):
return mathutils.Vector(
(value[0], value[1], value[2]))
class RNAFactory(net_components.RCFFactory):
def load_getter(self, data):
print("load RNA getter")
getter = None
if isinstance(data.body, mathutils.Vector):
print("Vector")
getter = get_vector
return getter
def load_setter(self,data):
print("load RNA setter")
setter = None
if isinstance(data.body, mathutils.Vector):
print("Vector")
setter = set_vector
return setter

View File

@ -1,184 +0,0 @@
{
"active_material": "Material",
"active_material_index": 0,
"active_shape_key_index": 0,
"data": "Cube",
"delta_location": [
0.0,
0.0,
0.0
],
"delta_scale": [
1.0,
1.0,
1.0
],
"dimensions": [
2.0,
2.0,
2.0
],
"display_bounds_type": "BOX",
"display_type": "TEXTURED",
"empty_display_size": 1.0,
"empty_display_type": "ARROWS",
"empty_image_depth": "DEFAULT",
"empty_image_side": "DOUBLE_SIDED",
"hide_render": false,
"hide_select": false,
"hide_viewport": false,
"instance_faces_scale": 1.0,
"instance_type": "NONE",
"is_evaluated": false,
"is_from_instancer": false,
"is_from_set": false,
"is_instancer": false,
"is_library_indirect": false,
"location": [
0.0,
0.0,
0.0
],
"lock_rotation_w": false,
"lock_rotations_4d": false,
"matrix_basis": [
[
1.0,
0.0,
0.0,
0.0
],
[
0.0,
1.0,
0.0,
0.0
],
[
0.0,
0.0,
1.0,
0.0
],
[
0.0,
0.0,
0.0,
1.0
]
],
"matrix_local": [
[
1.0,
0.0,
0.0,
0.0
],
[
0.0,
1.0,
0.0,
0.0
],
[
0.0,
0.0,
1.0,
0.0
],
[
0.0,
0.0,
0.0,
1.0
]
],
"matrix_parent_inverse": [
[
1.0,
0.0,
0.0,
0.0
],
[
0.0,
1.0,
0.0,
0.0
],
[
0.0,
0.0,
1.0,
0.0
],
[
0.0,
0.0,
0.0,
1.0
]
],
"matrix_world": [
[
1.0,
0.0,
0.0,
0.0
],
[
0.0,
1.0,
0.0,
0.0
],
[
0.0,
0.0,
1.0,
0.0
],
[
0.0,
0.0,
0.0,
1.0
]
],
"mode": "OBJECT",
"name": "Cube",
"name_full": "Cube",
"original": "Cube",
"parent_bone": "",
"parent_type": "OBJECT",
"pass_index": 0,
"rotation_mode": "XYZ",
"scale": [
1.0,
1.0,
1.0
],
"show_all_edges": false,
"show_axis": false,
"show_bounds": false,
"show_empty_image_orthographic": true,
"show_empty_image_perspective": true,
"show_in_front": false,
"show_instancer_for_render": true,
"show_instancer_for_viewport": true,
"show_name": false,
"show_only_shape_key": false,
"show_texture_space": false,
"show_transparent": false,
"show_wire": false,
"tag": false,
"track_axis": "POS_Y",
"type": "MESH",
"up_axis": "Z",
"use_dynamic_topology_sculpting": false,
"use_fake_user": false,
"use_instance_faces_scale": false,
"use_instance_vertices_rotation": false,
"use_shape_key_edit_mode": false,
"users": 1
}

1155
test.json

File diff suppressed because it is too large Load Diff