feat: multiple right strategy handling
This commit is contained in:
11
__init__.py
11
__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 ',
|
||||
|
@ -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]
|
||||
|
||||
|
Submodule libs/replication updated: ba50a9c379...57c5256a4d
@ -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:
|
||||
|
24
ui.py
24
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
|
||||
|
Reference in New Issue
Block a user