From 3946b87f8325d583173309ed9111449a177d4e01 Mon Sep 17 00:00:00 2001 From: Swann Martinez Date: Mon, 1 Apr 2019 15:41:28 +0200 Subject: [PATCH] refactor(rcf): remove old code --- net_operators.py | 251 +---------------------------------------------- 1 file changed, 1 insertion(+), 250 deletions(-) diff --git a/net_operators.py b/net_operators.py index 95e69f0..99bd4ac 100644 --- a/net_operators.py +++ b/net_operators.py @@ -63,62 +63,6 @@ def clean_scene(elements=SUPPORTED_DATABLOCKS): datablock_ref.remove(item) -def view3d_find(): - for area in bpy.data.window_managers[0].windows[0].screen.areas: - if area.type == 'VIEW_3D': - v3d = area.spaces[0] - rv3d = v3d.region_3d - for region in area.regions: - if region.type == 'WINDOW': - return area, region, rv3d - - return None, None, None - - -def get_target(region, rv3d, coord): - target = [0, 0, 0] - - if coord and region and rv3d: - view_vector = view3d_utils.region_2d_to_vector_3d(region, rv3d, coord) - ray_origin = view3d_utils.region_2d_to_origin_3d(region, rv3d, coord) - target = ray_origin + view_vector - - return [target.x, target.y, target.z] - - -def get_client_view_rect(): - area, region, rv3d = view3d_find() - - v1 = [0, 0, 0] - v2 = [0, 0, 0] - v3 = [0, 0, 0] - v4 = [0, 0, 0] - - if area and region and rv3d: - width = region.width - height = region.height - - v1 = get_target(region, rv3d, (0, 0)) - v3 = get_target(region, rv3d, (0, height)) - v2 = get_target(region, rv3d, (width, height)) - v4 = get_target(region, rv3d, (width, 0)) - - coords = (v1, v2, v3, v4) - indices = ( - (1, 3), (2, 1), (3, 0), (2, 0) - ) - - return coords - - -def get_client_2d(coords): - area, region, rv3d = view3d_find() - if area and region and rv3d: - return view3d_utils.location_3d_to_region_2d(region, rv3d, coords) - else: - return None - - def randomStringDigits(stringLength=6): """Generate a random string of letters and digits """ lettersAndDigits = string.ascii_letters + string.digits @@ -243,6 +187,7 @@ def update_selected_object(context): key = "net/objects/{}".format(client.id.decode()) client.push_update(key, 'clientObject', data) + def init_scene(): for cam in bpy.data.cameras: dump_datablock(cam, 1) @@ -746,200 +691,6 @@ class session_settings(bpy.types.PropertyGroup): default=randomColor()) -class session_draw_clients(bpy.types.Operator): - bl_idname = "session.draw" - bl_label = "draw clients" - bl_description = "Description that shows in blender tooltips" - bl_options = {"REGISTER"} - - position = bpy.props.FloatVectorProperty(default=(0, 0, 0)) - - def __init__(self): - super().__init__() - - self.draw_items = [] - self.draw3d_handle = None - self.draw2d_handle = None - self.draw_event = None - self.coords = None - self.active_object = None - - @classmethod - def poll(cls, context): - return True - - def invoke(self, context, event): - # - self.coords = None - self.create_batch() - self.register_handlers(context) - context.window_manager.modal_handler_add(self) - return {"RUNNING_MODAL"} - - def register_handlers(self, context): - self.draw3d_handle = bpy.types.SpaceView3D.draw_handler_add( - self.draw3d_callback, (), 'WINDOW', 'POST_VIEW') - self.draw2d_handle = bpy.types.SpaceView3D.draw_handler_add( - self.draw2d_callback, (), 'WINDOW', 'POST_PIXEL') - - self.draw_event = context.window_manager.event_timer_add( - 0.008, window=context.window) - - def unregister_handlers(self, context): - if self.draw_event: - context.window_manager.event_timer_remove(self.draw_event) - self.draw_event = None - - if self.draw2d_handle: - bpy.types.SpaceView3D.draw_handler_remove( - self.draw2d_handle, "WINDOW") - self.draw2d_handle = None - - if self.draw3d_handle: - bpy.types.SpaceView3D.draw_handler_remove( - self.draw3d_handle, "WINDOW") - self.draw3d_handle = None - - self.draw_items.clear() - - # TODO: refactor this ugly things - - def create_batch(self): - global client - index = 0 - index_object = 0 - - self.draw_items.clear() - - for key, values in client.property_map.items(): - if 'net' in key and values.body is not None and values.id != client.id: - if values.mtype == "clientObject": - indices = ( - (0, 1), (1, 2), (2, 3), (0, 3), - (4, 5), (5, 6), (6, 7), (4, 7), - (0, 4), (1, 5), (2, 6), (3, 7) - ) - - if values.body['object'] in bpy.data.objects.keys(): - ob = bpy.data.objects[values.body['object']] - else: - return - bbox_corners = [ob.matrix_world @ mathutils.Vector(corner) for corner in ob.bound_box] - - coords = [(point.x, point.y, point.z) - for point in bbox_corners] - - shader = gpu.shader.from_builtin('3D_UNIFORM_COLOR') - - color = values.body['color'] - batch = batch_for_shader( - shader, 'LINES', {"pos": coords}, indices=indices) - - self.draw_items.append( - (shader, batch, (None, None), color)) - - # index_object += 1 - - if values.mtype == "client": - indices = ( - (1, 3), (2, 1), (3, 0), (2, 0) - ) - - shader = gpu.shader.from_builtin('3D_UNIFORM_COLOR') - position = values.body['location'] - color = values.body['color'] - batch = batch_for_shader( - shader, 'LINES', {"pos": position}, indices=indices) - - self.draw_items.append( - (shader, batch, (position[1], values.id.decode()), color)) - - index += 1 - - def draw3d_callback(self): - bgl.glLineWidth(3) - for shader, batch, font, color in self.draw_items: - shader.bind() - shader.uniform_float("color", color) - batch.draw(shader) - - def draw2d_callback(self): - for shader, batch, font, color in self.draw_items: - try: - coords = get_client_2d(font[0]) - - blf.position(0, coords[0], coords[1]+10, 0) - blf.size(0, 10, 72) - blf.color(0, color[0], color[1], color[2], color[3]) - blf.draw(0, font[1]) - - except: - pass - - def is_object_selected(self, obj): - # TODO: function to find occurence - global client - - for k, v in client.property_map.items(): - if v.mtype == 'clientObject': - if client.id != v.id: - if obj.name in v.body: - return True - - return False - - def modal(self, context, event): - if context.area: - context.area.tag_redraw() - - if not context.scene.session_settings.is_running: - self.finish(context) - return {"FINISHED"} - - if event.type in {"TIMER"}: - global client - session = context.scene.session_settings - - if client: - # Hide selected objects - # for object in context.scene.objects: - # if self.is_object_selected(object): - # object.hide_select = True - # else: - # object.hide_select = False - - # Active object bounding box - if len(context.selected_objects) > 0: - if session.active_object is not context.selected_objects[0] or session.active_object.is_evaluated: - session.active_object = context.selected_objects[0] - key = "net/objects/{}".format(client.id.decode()) - data = {} - data['color'] = [session.client_color.r, - session.client_color.g, session.client_color.b] - data['object'] = session.active_object.name - client.push_update( - key, 'clientObject', data) - - elif len(context.selected_objects) == 0 and session.active_object: - session.active_object = None - data = {} - data['object'] = None - key = "net/objects/{}".format(client.id.decode()) - client.push_update(key, 'clientObject', data) - - # Draw clients - if len(client.property_map) > 1: - # self.unregister_handlers(context) - self.create_batch() - - # self.register_handlers(context) - - return {"PASS_THROUGH"} - - def finish(self, context): - self.unregister_handlers(context) - - class session_snapview(bpy.types.Operator): bl_idname = "session.snapview" bl_label = "draw clients"