feat: show flag for user on an other scene

feat: disable user drawing on other scene

Related to #40
This commit is contained in:
Swann Martinez
2020-03-05 17:20:04 +01:00
parent fe9a096ab2
commit 250cf91032
4 changed files with 25 additions and 6 deletions

View File

@ -98,6 +98,12 @@ class SessionProps(bpy.types.PropertyGroup):
default=True, default=True,
update=presence.update_overlay_settings update=presence.update_overlay_settings
) )
presence_show_far_user: bpy.props.BoolProperty(
name="Show different scenes",
description="Show user on different scenes",
default=False,
update=presence.update_overlay_settings
)
filter_owned: bpy.props.BoolProperty( filter_owned: bpy.props.BoolProperty(
name="filter_owned", name="filter_owned",
description='Show only owned datablocks', description='Show only owned datablocks',

View File

@ -204,15 +204,21 @@ class DrawClient(Draw):
for user in users.values(): for user in users.values():
metadata = user.get('metadata') metadata = user.get('metadata')
color = metadata.get('color')
if 'color' in metadata: scene_current = metadata.get('scene_current')
user_showable = scene_current == bpy.context.scene.name or settings.presence_show_far_user
if color and scene_current and user_showable:
if settings.presence_show_selected and 'selected_objects' in metadata.keys(): if settings.presence_show_selected and 'selected_objects' in metadata.keys():
renderer.draw_client_selection( renderer.draw_client_selection(
user['id'], metadata['color'], metadata['selected_objects']) user['id'], color, metadata['selected_objects'])
if settings.presence_show_user and 'view_corners' in metadata: if settings.presence_show_user and 'view_corners' in metadata:
renderer.draw_client_camera( renderer.draw_client_camera(
user['id'], metadata['view_corners'], metadata['color']) user['id'], metadata['view_corners'], color)
if not user_showable:
# TODO: remove this when user event drivent update will be
# ready
renderer.flush_selection()
renderer.flush_users()
class ClientUpdate(Timer): class ClientUpdate(Timer):
def __init__(self, timout=.5): def __init__(self, timout=.5):

View File

@ -219,6 +219,10 @@ class DrawFactory(object):
if ob.type == 'EMPTY': if ob.type == 'EMPTY':
# TODO: Child case # TODO: Child case
# Collection instance case # Collection instance case
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 ob.instance_collection: if ob.instance_collection:
for obj in ob.instance_collection.objects: for obj in ob.instance_collection.objects:
if obj.type == 'MESH': if obj.type == 'MESH':

View File

@ -341,7 +341,10 @@ class SESSION_PT_presence(bpy.types.Panel):
col = layout.column() col = layout.column()
col.prop(settings,"presence_show_selected") col.prop(settings,"presence_show_selected")
col.prop(settings,"presence_show_user") col.prop(settings,"presence_show_user")
row = layout.row() row = layout.column()
row.active = settings.presence_show_user
row.prop(settings,"presence_show_far_user")
class SESSION_PT_services(bpy.types.Panel): class SESSION_PT_services(bpy.types.Panel):
bl_idname = "MULTIUSER_SERVICE_PT_panel" bl_idname = "MULTIUSER_SERVICE_PT_panel"