feat: multiple right strategy handling

This commit is contained in:
Swann
2019-09-24 18:37:36 +02:00
parent 1e371a2e60
commit 41f3e047cf
5 changed files with 27 additions and 17 deletions

View File

@ -17,7 +17,7 @@ import sys
import bpy import bpy
from bpy.app.handlers import persistent from bpy.app.handlers import persistent
from . import environment, utils from . import environment, utils, presence
from .libs.replication.replication.constants import RP_COMMON from .libs.replication.replication.constants import RP_COMMON
@ -135,6 +135,13 @@ class SessionProps(bpy.types.PropertyGroup):
('HOST', 'hosting', 'host a session'), ('HOST', 'hosting', 'host a session'),
('CONNECT', 'connexion', 'connect to a session')}, ('CONNECT', 'connexion', 'connect to a session')},
default='HOST') 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( client_color: bpy.props.FloatVectorProperty(
name="client_instance_color", name="client_instance_color",
subtype='COLOR', subtype='COLOR',

View File

@ -87,7 +87,7 @@ class DynamicRightSelectTimer(Timer):
if current_selection != self.last_selection: if current_selection != self.last_selection:
user_ref.pointer.update_selected_objects(bpy.context) 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_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] obj_ours = [o for o in current_selection if o not in self.last_selection]

View File

@ -100,7 +100,8 @@ class SessionStartOperator(bpy.types.Operator):
client.host( client.host(
id=settings.username, id=settings.username,
address=settings.ip, address=settings.ip,
port=settings.port port=settings.port,
right_strategy=settings.right_strategy
) )
settings.is_admin = True settings.is_admin = True
else: else:

24
ui.py
View File

@ -66,14 +66,7 @@ class SESSION_PT_settings_network(bpy.types.Panel):
settings = context.window_manager.session settings = context.window_manager.session
row = layout.row()
# USER SETTINGS # 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 = layout.row()
row.prop(settings, "session_mode", expand=True) row.prop(settings, "session_mode", expand=True)
row = layout.row() row = layout.row()
@ -121,7 +114,7 @@ class SESSION_PT_settings_user(bpy.types.Panel):
row = layout.row() row = layout.row()
# USER SETTINGS # USER SETTINGS
row.prop(settings, "username", text="id") row.prop(settings, "username", text="name")
row = layout.row() row = layout.row()
row.prop(settings, "client_color", text="color") row.prop(settings, "client_color", text="color")
@ -146,8 +139,17 @@ class SESSION_PT_settings_replication(bpy.types.Panel):
layout = self.layout layout = self.layout
settings = context.window_manager.session 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) row_major=True, columns=0, even_columns=True, even_rows=False, align=True)
line = flow.row(align=True) line = flow.row(align=True)
line.label(text=" ") line.label(text=" ")
@ -157,7 +159,6 @@ class SESSION_PT_settings_replication(bpy.types.Panel):
for item in settings.supported_datablock: for item in settings.supported_datablock:
line = flow.row(align=True) line = flow.row(align=True)
# line.label(text="", icon=item.icon)
line.prop(item, "auto_push", text="", icon=item.icon) line.prop(item, "auto_push", text="", icon=item.icon)
line.separator() line.separator()
line.prop(item, "bl_delay_refresh", text="") line.prop(item, "bl_delay_refresh", text="")
@ -224,6 +225,7 @@ class SESSION_PT_presence(bpy.types.Panel):
bl_region_type = 'UI' bl_region_type = 'UI'
bl_category = "Multiuser" bl_category = "Multiuser"
bl_parent_id = 'MULTIUSER_SETTINGS_PT_panel' bl_parent_id = 'MULTIUSER_SETTINGS_PT_panel'
bl_options = {'DEFAULT_CLOSED'}
@classmethod @classmethod
def poll(cls, context): def poll(cls, context):
@ -362,8 +364,8 @@ class SESSION_PT_outliner(bpy.types.Panel):
classes = ( classes = (
SESSION_PT_settings, SESSION_PT_settings,
SESSION_PT_settings_user, SESSION_PT_settings_user,
SESSION_PT_presence,
SESSION_PT_settings_network, SESSION_PT_settings_network,
SESSION_PT_presence,
SESSION_PT_settings_replication, SESSION_PT_settings_replication,
SESSION_PT_user, SESSION_PT_user,
SESSION_PT_outliner SESSION_PT_outliner