feat: multiple right strategy handling
This commit is contained in:
11
__init__.py
11
__init__.py
@ -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',
|
||||||
@ -154,7 +161,7 @@ class SessionProps(bpy.types.PropertyGroup):
|
|||||||
description='Enable selection overlay ',
|
description='Enable selection overlay ',
|
||||||
default=True,
|
default=True,
|
||||||
update=presence.update_overlay_settings
|
update=presence.update_overlay_settings
|
||||||
)
|
)
|
||||||
presence_show_user: bpy.props.BoolProperty(
|
presence_show_user: bpy.props.BoolProperty(
|
||||||
name="Show users",
|
name="Show users",
|
||||||
description='Enable user overlay ',
|
description='Enable user overlay ',
|
||||||
|
@ -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]
|
||||||
|
|
||||||
|
Submodule libs/replication updated: ba50a9c379...57c5256a4d
@ -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:
|
||||||
@ -154,7 +155,7 @@ class SessionStartOperator(bpy.types.Operator):
|
|||||||
# Register blender main thread tools
|
# Register blender main thread tools
|
||||||
for d in delayables:
|
for d in delayables:
|
||||||
d.register()
|
d.register()
|
||||||
|
|
||||||
self.report(
|
self.report(
|
||||||
{'INFO'},
|
{'INFO'},
|
||||||
"connexion on tcp://{}:{}".format(settings.ip, settings.port))
|
"connexion on tcp://{}:{}".format(settings.ip, settings.port))
|
||||||
|
24
ui.py
24
ui.py
@ -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
|
||||||
|
Reference in New Issue
Block a user