def poll(cls, context): room_index = get_mixer_props().room_index return (is_client_connected() and room_index < len(get_mixer_props().rooms) and (get_mixer_props().rooms[room_index].users_count == 0))
def poll(cls, context): mixer_props = get_mixer_props() return (is_client_connected() and os.path.exists(mixer_props.upload_room_filepath) and mixer_props.upload_room_name not in share_data.client.rooms_attributes)
def poll(cls, context): return is_client_connected()
import os import sys import socket import subprocess import bpy from mixer.share_data import share_data from mixer.bl_utils import get_mixer_props, get_mixer_prefs from mixer.stats import save_statistics from mixer.broadcaster.common import RoomAttributes, ClientAttributes from mixer.connection import is_client_connected, connect, join_room, leave_current_room, disconnect logger = logging.getLogger(__name__) poll_is_client_connected = (lambda: is_client_connected(), "Client not connected") poll_already_in_a_room = (lambda: not share_data.client.current_room, "Already in a room") def generic_poll(cls, context): for func, _reason in cls.poll_functors(context): if not func(): return False return True def generic_description(cls, context, properties): result = cls.__doc__ for func, reason in cls.poll_functors(context):
def poll(cls, context): return is_client_connected( ) and share_data.client.current_room is not None
def execute(self, context): bpy.data.window_managers["WinMan"].mixer.send_bake_meshes = True mixer_prefs = get_mixer_prefs() if not share_data.client or not share_data.client.current_room: timeout = 10 try: connect() except Exception as e: self.report({"ERROR"}, f"vrtist.launch connect error : {e!r}") return {"CANCELLED"} # Wait for local server creation while timeout > 0 and not is_client_connected(): time.sleep(0.5) timeout -= 0.5 if timeout <= 0: self.report({"ERROR"}, "vrtist.launch connect error : unable to connect") return {"CANCELLED"} logger.warning("LaunchVRtistOperator.execute({mixer_prefs.room})") shared_folders = [] for item in mixer_prefs.shared_folders: shared_folders.append(item.shared_folder) mixer_prefs.ignore_version_check = True join_room(mixer_prefs.room, True, shared_folders, mixer_prefs.ignore_version_check) # Wait for room creation/join timeout = 10 while timeout > 0 and share_data.client.current_room is None: time.sleep(0.5) timeout -= 0.5 if timeout <= 0: self.report( {"ERROR"}, "vrtist.launch connect error : unable to join room") return {"CANCELLED"} # Wait for client id timeout = 10 while timeout > 0 and share_data.client.client_id is None: network_consumer_timer() time.sleep(0.1) timeout -= 0.1 if timeout <= 0: self.report({ "ERROR" }, "vrtist.launch connect error : unable to retrieve client id" ) return {"CANCELLED"} color = share_data.client.clients_attributes[ share_data.client.client_id].get(ClientAttributes.USERCOLOR, (0.0, 0.0, 0.0)) color = (int(c * 255) for c in color) color = "#" + "".join(f"{c:02x}" for c in color) name = "VR " + share_data.client.clients_attributes[ share_data.client.client_id].get(ClientAttributes.USERNAME, "client") args = [ mixer_prefs.VRtist, "--room", share_data.client.current_room, "--hostname", mixer_prefs.host, "--port", str(mixer_prefs.port), "--master", str(share_data.client.client_id), "--usercolor", color, "--username", name, ] LaunchVRtistOperator.vrtist_process = subprocess.Popen( args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False) return {"FINISHED"}
from mixer.share_data import share_data from mixer.bl_utils import get_mixer_props, get_mixer_prefs from mixer.broadcaster.common import RoomAttributes, ClientAttributes from mixer.connection import ( is_client_connected, connect, create_room, join_room, leave_current_room, disconnect, network_consumer_timer, ) logger = logging.getLogger(__name__) poll_is_client_connected = (lambda: is_client_connected(), "Client not connected") poll_already_in_a_room = ( lambda: not is_client_connected() or not share_data.client.current_room, "Already in a room") class SharedFoldersAddFolderOperator(bpy.types.Operator, ImportHelper): bl_idname = "mixer.add_shared_folder" bl_label = "Add Shared Folder" filepath: bpy.props.StringProperty(subtype="DIR_PATH") def execute(self, context): path = self.filepath if not Path(path).is_dir():
from mixer.bl_utils import get_mixer_props, get_mixer_prefs from mixer.broadcaster.common import RoomAttributes, ClientAttributes from mixer.connection import ( is_client_connected, connect, create_room, join_room, leave_current_room, disconnect, network_consumer_timer, ) logger = logging.getLogger(__name__) poll_is_client_connected = (lambda: is_client_connected(), "Client not connected") poll_already_in_a_room = (lambda: not is_client_connected() or not share_data.client.current_room, "Already in a room") class SharedFoldersAddFolderOperator(bpy.types.Operator, ImportHelper): bl_idname = "mixer.add_shared_folder" bl_label = "Add Shared Folder" filepath: bpy.props.StringProperty(subtype="DIR_PATH") def execute(self, context): path = self.filepath if not Path(path).is_dir(): path = str(Path(path).parent) for item in get_mixer_prefs().shared_folders:
import sys import socket import subprocess import bpy from mixer.share_data import share_data from mixer.bl_utils import get_mixer_props, get_mixer_prefs from mixer.stats import save_statistics from mixer.broadcaster.common import RoomAttributes, ClientAttributes from mixer.connection import is_client_connected, connect, join_room, leave_current_room, disconnect logger = logging.getLogger(__name__) poll_is_client_connected = (lambda: is_client_connected(), "Client not connected") poll_already_in_a_room = (lambda: not share_data.client.current_room, "Already in a room") def generic_poll(cls, context): for func, _reason in cls.poll_functors(context): if not func(): return False return True def generic_description(cls, context, properties): result = cls.__doc__ for func, reason in cls.poll_functors(context): if not func(): result += f" (Error: {reason})"