From 07df42d087ab32fa58c5aa002ac80d4d8ee78933 Mon Sep 17 00:00:00 2001 From: Swann Martinez Date: Mon, 20 Jan 2020 18:55:03 +0100 Subject: [PATCH] feat: progression on session mamnagment --- multi_user/bl_types/bl_user.py | 4 ++-- multi_user/delayable.py | 18 ++++++++++++++++++ multi_user/libs/replication | 2 +- multi_user/operators.py | 11 ++++++----- multi_user/ui.py | 2 +- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/multi_user/bl_types/bl_user.py b/multi_user/bl_types/bl_user.py index 5013fd3..1d0611d 100644 --- a/multi_user/bl_types/bl_user.py +++ b/multi_user/bl_types/bl_user.py @@ -18,7 +18,7 @@ class BlUser(BlDatablock): def construct(self, data): user = bpy.data.window_managers['WinMan'].online_users.add() - user.name = self.uuid + user.name = data['name'] user.username = data['name'] user.current_frame = data['current_frame'] @@ -55,7 +55,7 @@ class BlUser(BlDatablock): self.pointer.is_dirty = True def resolve(self): - self.pointer = bpy.data.window_managers['WinMan'].online_users.get(self.uuid) + self.pointer = bpy.data.window_managers['WinMan'].online_users.get(self.data['name']) def is_valid(self): return True diff --git a/multi_user/delayable.py b/multi_user/delayable.py index 041a59b..e2c94b3 100644 --- a/multi_user/delayable.py +++ b/multi_user/delayable.py @@ -211,3 +211,21 @@ class ClientUpdate(Timer): if client: client.pointer.update_location() + + # sync online users + session_users = operators.client.online_users + ui_users = bpy.context.window_manager.online_users + + for index, user in enumerate(ui_users): + if user.username not in session_users.keys(): + ui_users.remove(index) + bpy.context.window_manager.session.presence_show_user = False + bpy.context.window_manager.session.presence_show_user = True + presence.refresh_3d_view() + break + + for user in session_users: + if user not in ui_users: + new_key = ui_users.add() + new_key.name = user + new_key.username = user \ No newline at end of file diff --git a/multi_user/libs/replication b/multi_user/libs/replication index 3b6bfce..5dcd8e1 160000 --- a/multi_user/libs/replication +++ b/multi_user/libs/replication @@ -1 +1 @@ -Subproject commit 3b6bfce7fce0a90b32863f1830d00d6a31c67a5a +Subproject commit 5dcd8e14d71b645f7467ea910ddacc1975597b87 diff --git a/multi_user/operators.py b/multi_user/operators.py index 7b96301..c7dcfad 100644 --- a/multi_user/operators.py +++ b/multi_user/operators.py @@ -56,11 +56,12 @@ class SessionStartOperator(bpy.types.Operator): # TODO: Sync server clients users.clear() - #load our infos into the local user list - local_user = users.add() - local_user.name = 'localhost' - local_user.username = settings.username - local_user.current_frame = context.scene.frame_current + + # #load our infos into the local user list + # local_user = users.add() + # local_user.name = 'localhost' + # local_user.username = settings.username + # local_user.current_frame = context.scene.frame_current # save config settings.save(context) diff --git a/multi_user/ui.py b/multi_user/ui.py index 3a3178d..3ab637c 100644 --- a/multi_user/ui.py +++ b/multi_user/ui.py @@ -218,7 +218,7 @@ class SESSION_UL_users(bpy.types.UIList): if item.username in user: ping = str(user_stat['latency']) break - + split = layout.split(factor=0.3) split.label(text=item.username) split.label(text=str(item.current_frame))