def on_frontend_event(event): global TALLY_STATUS if event in (obs.OBS_FRONTEND_EVENT_SCENE_CHANGED, obs.OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED): # Check the status of the tally sources program_source = obs.obs_frontend_get_current_scene() preview_source = obs.obs_frontend_get_current_preview_scene() program_scene = obs.obs_scene_from_source(program_source) preview_scene = obs.obs_scene_from_source(preview_source) try: for source_name in TALLY_STATUS.keys(): color = "000000" source = obs.obs_scene_find_source(preview_scene, source_name) if source: color = "00ff00" source = obs.obs_scene_find_source(program_scene, source_name) if source: color = "ff0000" if TALLY_STATUS[source_name] != color: CLIENT.publish("cmnd/%s/COLOR" % source_name, color) TALLY_STATUS[source_name] = color finally: obs.obs_source_release(program_source) obs.obs_source_release(preview_source)
def startCountClick(props, prop): global itemSource global xCoord global yCoord global Debug_Mode global jsonItemData global imagePath global imageName global widthCount global heightCount if (obs.obs_frontend_preview_program_mode_active()): sceneSource = obs.obs_frontend_get_current_preview_scene() else: sceneSource = obs.obs_frontend_get_current_scene() sceneWidth = obs.obs_source_get_width(sceneSource) sceneHeight = obs.obs_source_get_height(sceneSource) xWidth = math.ceil(sceneWidth / widthCount) yHeight = math.ceil(sceneHeight / heightCount) blankImage = np.zeros(shape=[yHeight, xWidth, 4], dtype=np.uint8) cv2.rectangle(blankImage, (0, 0), (xWidth, yHeight), (169, 169, 169, 255), 2) if (os.path.isfile(imagePath + imageName)): os.remove(imagePath + imageName) cv2.imwrite(imagePath + imageName, blankImage) if Debug_Mode: print("startCount") print(imagePath + imageName) gridWidth = 0 gridHeight = 0 scene = obs.obs_scene_from_source(sceneSource) itemData = obs.obs_data_create_from_json(jsonItemData) itemSource = obs.obs_load_source(itemData) vec2 = obs.vec2() position = 0 if itemSource != None: item = obs.obs_scene_find_source(scene, "OBSWindowGridItem") while item != None: obs.obs_sceneitem_remove(item) item = obs.obs_scene_find_source(scene, "OBSWindowGridItem") vec2.y = 0 while gridHeight < sceneHeight: gridWidth = 0 vec2.x = 0 while gridWidth < sceneWidth: newItem = obs.obs_scene_add(scene, itemSource) obs.obs_sceneitem_set_pos(newItem, vec2) obs.obs_sceneitem_set_locked(newItem, True) obs.obs_sceneitem_set_order_position(newItem, position) position += 1 vec2.x += xWidth gridWidth += xWidth vec2.y += yHeight gridHeight += yHeight
def nextScene(): scenes = obs.obs_frontend_get_scenes() if len(scenes) > 1: c_scene = obs.obs_frontend_get_current_preview_scene() if c_scene != None: i = scenes.index(c_scene) + 1 if i < len(scenes): return scenes[i] return scenes[0]
def transition(idx=-1): trans = None if idx >= 0: set_transition(idx) trans = obs.obs_frontend_get_current_transition() mode = obs.OBS_TRANSITION_MODE_AUTO duration = 0 p_scene = obs.obs_frontend_get_current_preview_scene() obs.obs_transition_start(trans, mode, duration, p_scene) obs.obs_frontend_set_current_scene(p_scene)
def deleteGridClick(props, prop): if (obs.obs_frontend_preview_program_mode_active()): sceneSource = obs.obs_frontend_get_current_preview_scene() else: sceneSource = obs.obs_frontend_get_current_scene() scene = obs.obs_scene_from_source(sceneSource) item = obs.obs_scene_find_source(scene, "OBSWindowGridItem") while item: obs.obs_sceneitem_remove(item) item = obs.obs_scene_find_source(scene, "OBSWindowGridItem")
def transition(num=-1): trans = None if num >= 0: setTransition(num) trans = obs.obs_frontend_get_current_transition() act = obs.obs_frontend_get_current_scene() mode = obs.OBS_TRANSITION_MODE_AUTO duration = 0 dest = obs.obs_frontend_get_current_preview_scene() obs.obs_transition_start(trans, mode, duration, dest) obs.obs_frontend_set_current_scene(dest) obs.obs_frontend_set_current_preview_scene(act)
def _on_press(pressed): if pressed: return global last_switched_scene scene = obs.obs_frontend_get_current_preview_scene() scene_id = obs.obs_source_get_name(scene) if scene_id == toggle_scene_id: obs.obs_source_release(scene) if last_switched_scene: set_current_scene(last_switched_scene) else: if last_switched_scene: obs.obs_source_release(last_switched_scene) last_switched_scene = scene set_current_scene(toggle_scene)
def handle_preview_change(): global preview_items program_source = obs.obs_frontend_get_current_scene() program_name = obs.obs_source_get_name(program_source) obs.obs_source_release(program_source) preview_source = obs.obs_frontend_get_current_preview_scene() preview_name = obs.obs_source_get_name(preview_source) preview_items = get_item_names_by_scene(preview_source) if program_name != preview_name: set_lights_by_items(preview_items, preview_color, preview_brightness) obs.obs_source_release(preview_source) set_idle_lights()