diff --git a/__init__.py b/__init__.py index 7e8f744..72ee322 100644 --- a/__init__.py +++ b/__init__.py @@ -17,7 +17,7 @@ import sys import bpy from bpy.app.handlers import persistent -from . import environment, utils +from . import environment, utils, presence from .libs.replication.replication.constants import RP_COMMON @@ -135,6 +135,13 @@ class SessionProps(bpy.types.PropertyGroup): ('HOST', 'hosting', 'host a session'), ('CONNECT', 'connexion', 'connect to a session')}, default='HOST') + right_strategy: bpy.props.EnumProperty( + name='right_strategy', + description='right strategy', + items={ + ('STRICT', 'strict', 'strict right repartition'), + ('COMMON', 'common', 'relaxed right repartition')}, + default='COMMON') client_color: bpy.props.FloatVectorProperty( name="client_instance_color", subtype='COLOR', @@ -154,7 +161,7 @@ class SessionProps(bpy.types.PropertyGroup): description='Enable selection overlay ', default=True, update=presence.update_overlay_settings - ) + ) presence_show_user: bpy.props.BoolProperty( name="Show users", description='Enable user overlay ', diff --git a/delayable.py b/delayable.py index b7b5e64..92eac94 100644 --- a/delayable.py +++ b/delayable.py @@ -87,7 +87,7 @@ class DynamicRightSelectTimer(Timer): if current_selection != self.last_selection: user_ref.pointer.update_selected_objects(bpy.context) - if settings.use_select_right: + if operators.client.get_config()['right_strategy'] == 'COMMON': obj_common = [o for o in self.last_selection if o not in current_selection] obj_ours = [o for o in current_selection if o not in self.last_selection] diff --git a/libs/replication b/libs/replication index ba50a9c..57c5256 160000 --- a/libs/replication +++ b/libs/replication @@ -1 +1 @@ -Subproject commit ba50a9c379f615dcc5bb112af337105d71d8a434 +Subproject commit 57c5256a4d93243a18ce1f574e8deed07c1a0b99 diff --git a/operators.py b/operators.py index 6158a8d..62ed611 100644 --- a/operators.py +++ b/operators.py @@ -100,7 +100,8 @@ class SessionStartOperator(bpy.types.Operator): client.host( id=settings.username, address=settings.ip, - port=settings.port + port=settings.port, + right_strategy=settings.right_strategy ) settings.is_admin = True else: @@ -154,7 +155,7 @@ class SessionStartOperator(bpy.types.Operator): # Register blender main thread tools for d in delayables: d.register() - + self.report( {'INFO'}, "connexion on tcp://{}:{}".format(settings.ip, settings.port)) diff --git a/ui.py b/ui.py index 8cdabf7..4c7bb63 100644 --- a/ui.py +++ b/ui.py @@ -66,14 +66,7 @@ class SESSION_PT_settings_network(bpy.types.Panel): settings = context.window_manager.session - row = layout.row() # USER SETTINGS - # row.label(text="Presence overlay:") - # row.prop(settings, "enable_presence", text="") - # row = layout.row() - row.label(text="Own selection:") - row.prop(settings, "use_select_right", text="") - row = layout.row() row = layout.row() row.prop(settings, "session_mode", expand=True) row = layout.row() @@ -121,7 +114,7 @@ class SESSION_PT_settings_user(bpy.types.Panel): row = layout.row() # USER SETTINGS - row.prop(settings, "username", text="id") + row.prop(settings, "username", text="name") row = layout.row() row.prop(settings, "client_color", text="color") @@ -146,8 +139,17 @@ class SESSION_PT_settings_replication(bpy.types.Panel): layout = self.layout settings = context.window_manager.session + # Right managment + if settings.session_mode == 'HOST': + row = layout.row(align=True) + row.label(text="Right strategy:") + row.prop(settings,"right_strategy",text="") - flow = layout.grid_flow( + row = layout.row() + + row = layout.row() + # Replication frequencies + flow = row .grid_flow( row_major=True, columns=0, even_columns=True, even_rows=False, align=True) line = flow.row(align=True) line.label(text=" ") @@ -157,7 +159,6 @@ class SESSION_PT_settings_replication(bpy.types.Panel): for item in settings.supported_datablock: line = flow.row(align=True) - # line.label(text="", icon=item.icon) line.prop(item, "auto_push", text="", icon=item.icon) line.separator() line.prop(item, "bl_delay_refresh", text="") @@ -224,6 +225,7 @@ class SESSION_PT_presence(bpy.types.Panel): bl_region_type = 'UI' bl_category = "Multiuser" bl_parent_id = 'MULTIUSER_SETTINGS_PT_panel' + bl_options = {'DEFAULT_CLOSED'} @classmethod def poll(cls, context): @@ -362,8 +364,8 @@ class SESSION_PT_outliner(bpy.types.Panel): classes = ( SESSION_PT_settings, SESSION_PT_settings_user, - SESSION_PT_presence, SESSION_PT_settings_network, + SESSION_PT_presence, SESSION_PT_settings_replication, SESSION_PT_user, SESSION_PT_outliner