def dup(self):
        current_scene = S.obs_scene_from_source(
            S.obs_frontend_get_current_scene())
        scene_item = S.obs_scene_find_source(current_scene, self.source_name)
        info = S.obs_transform_info()
        crop = S.obs_sceneitem_crop()
        S.obs_sceneitem_get_info(scene_item, info)
        S.obs_sceneitem_get_crop(scene_item, crop)
        duplicate = S.obs_sceneitem_get_source(scene_item)
        duplicated = S.obs_source_duplicate(duplicate,
                                            "duplicate" + self.source_name,
                                            False)

        scenes = S.obs_frontend_get_scenes()
        for scene in scenes:
            name = S.obs_source_get_name(scene)
            if name == self.scene_name:
                scene = S.obs_scene_from_source(scene)
                scene_item2 = S.obs_scene_add(scene, duplicated)
                S.obs_sceneitem_set_info(scene_item2, info)
                S.obs_sceneitem_set_crop(scene_item2, crop)
                S.obs_scene_release(scene)

        S.obs_source_release(duplicated)
        S.source_list_release(scenes)
        S.obs_scene_release(current_scene)
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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
def playsound(filename, volume, speed):
    obs.script_log(obs.LOG_DEBUG,
                   "Trying to play " + filename + " to source " + sourcename)

    scenesource = obs.obs_frontend_get_current_scene()
    scene = obs.obs_scene_from_source(scenesource)
    #obs.script_log(obs.LOG_DEBUG,"Scene "+str(scene))

    sceneitem = obs.obs_scene_find_source(scene, sourcename)
    #obs.script_log(obs.LOG_DEBUG,"Scene item "+str(sceneitem))

    source = obs.obs_sceneitem_get_source(sceneitem)

    obs.obs_source_set_volume(source, volume)
    set_source_speed(source, speed)

    obs.obs_sceneitem_set_visible(sceneitem, False)

    settings = obs.obs_source_get_settings(source)
    #obs.script_log(obs.LOG_DEBUG,str(obs.obs_data_get_json(settings)))
    obs.obs_data_set_string(settings, "local_file", audiofolder + filename)
    #obs.script_log(obs.LOG_DEBUG,str(obs.obs_data_get_json(settings)))

    obs.obs_source_update(source, settings)

    obs.obs_sceneitem_set_visible(sceneitem, True)

    obs.obs_data_release(settings)
    obs.obs_source_release(scenesource)
def run_import(props, prop):
    global template_scene_name
    global video_directory

    template_source = obs.obs_get_source_by_name(template_scene_name)
    template_scene = obs.obs_scene_from_source(template_source)

    files = glob.glob(video_directory + "/*")
    files.sort()
    transition_number = 0
    for filename in files:
        transition_number += 1

        bare_name = "Transition " + str(transition_number)

        new_scene = obs.obs_scene_duplicate(template_scene, bare_name,
                                            obs.OBS_SCENE_DUP_REFS)

        source_data = obs.obs_data_create()
        obs.obs_data_set_string(source_data, 'local_file', filename)
        source = obs.obs_source_create('ffmpeg_source', 'Video - ' + bare_name,
                                       source_data, None)

        scene_item = obs.obs_scene_add(new_scene, source)
        obs.obs_sceneitem_set_order(scene_item, obs.OBS_ORDER_MOVE_BOTTOM)
        import_utils.fit_to_screen(scene_item)

        obs.obs_source_release(source)
        obs.obs_scene_release(new_scene)

        obs.script_log(obs.LOG_INFO,
                       "created scene '" + bare_name + "' from " + filename)

    obs.obs_source_release(template_source)
Ejemplo n.º 6
0
def get_audio_sources_from_scene(scene, source_dict=None):
    if source_dict is None:
        source_dict = OrderedDict()

    for sceneitem in obspython.obs_scene_enum_items(
            obspython.obs_scene_from_source(scene)):
        item_source = obspython.obs_sceneitem_get_source(sceneitem)
        name = obspython.obs_source_get_name(item_source)

        if obspython.obs_source_get_output_flags(
                item_source) & obspython.OBS_SOURCE_COMPOSITE:
            source_dict = get_audio_sources_from_scene(item_source,
                                                       source_dict)

        if obspython.obs_source_get_output_flags(
                item_source) & obspython.OBS_SOURCE_AUDIO:
            source_active = obspython.obs_source_active(item_source)
            audio_active = obspython.obs_source_audio_active(item_source)
            priv_settings = obspython.obs_source_get_private_settings(
                item_source)
            hidden = obspython.obs_data_get_bool(priv_settings, "mixer_hidden")
            if not source_active or not audio_active or hidden:
                continue

            source_dict[name] = item_source

    return source_dict
Ejemplo n.º 7
0
 def getCurrentSceneItem(self, itemName):
     source = obs.obs_frontend_get_current_scene()
     item = ''
     scene = obs.obs_scene_from_source(source)
     item = obs.obs_scene_find_source(scene, itemName)
     obs.obs_source_release(source)
     return item
Ejemplo n.º 8
0
    def iterSceneItemsByName(self, sourceName):
        """
        Iterator over scene items with a given source name, in the
        scene currently displayed in the frontend
        """
        # This took me a while to figure out, so I'll comment it
        # enough to be understandable.

        # First, we get the source we need to find items of
        with getSourceByName(sourceName) as s:
            if s is None: return []

            # Now we get the entire scene that's currently streaming
            with frontendGetCurrentScene() as currentSceneSource:
                if currentSceneSource is None: return []

                # (and convert it to a scene)
                currentScene = obs.obs_scene_from_source(currentSceneSource)
                if currentScene is None: return []

                # Now we iterate over all the items in that scene
                with sceneEnumItems(currentScene) as items:
                    for item in items:
                        if item is None: continue

                        # Now we find what source this item is using
                        itemSource = obs.obs_sceneitem_get_source(item)
                        # And the name of that source
                        itemSourceName = obs.obs_source_get_name(itemSource)
                        # And if it's what we want, we yield it!
                        if itemSourceName == sourceName:
                            yield item
    def update_cursor(self):
        source = obs.obs_get_source_by_name(self.source_name)
        settings = obs.obs_data_create()
        if source is not None:
            scene_source = obs.obs_frontend_get_current_scene()
            scene_width = obs.obs_source_get_width(source)
            scene_height = obs.obs_source_get_height(source)
            scene = obs.obs_scene_from_source(scene_source)
            scene_item = obs.obs_scene_find_source(scene, self.source_name)
            if scene_item:
                scale = obs.vec2()
                obs.obs_sceneitem_get_scale(scene_item, scale)
                scene_width, scene_height = apply_scale(
                    scale.x, scale.y, scene_width, scene_height
                )
                next_pos = obs.vec2()
                next_pos.x, next_pos.y = get_position()
                next_pos.x -= scene_width / 2
                next_pos.y -= scene_height / 2
                # set position to center of source where cursor is
                obs.obs_sceneitem_set_pos(scene_item, next_pos)

            obs.obs_data_release(settings)
            obs.obs_scene_release(scene)
            obs.obs_source_release(source)
Ejemplo n.º 10
0
def run_import(props, prop):
  global template_scene_name
  global image_directory

  template_source = obs.obs_get_source_by_name(template_scene_name)
  template_scene = obs.obs_scene_from_source(template_source)

  # expecting filenames like '01 - test.jpg'
  files = glob.glob(image_directory + "/*")
  files.sort()
  for filename in files:
    # try to remove the initial ordinal, but don't error if it isn't present.
    # '01 - test.jpg' -> 'test'
    #      'test.jpg' -> 'test'
    parts = Path(filename).stem.split('-')
    bare_name = parts[len(parts) - 1].strip()

    new_scene = obs.obs_scene_duplicate(template_scene, bare_name, obs.OBS_SCENE_DUP_REFS)

    source_data = obs.obs_data_create()
    obs.obs_data_set_string(source_data, 'file', filename)
    source = obs.obs_source_create('image_source', 'Image - ' + bare_name, source_data, None)
    scene_item = obs.obs_scene_add(new_scene, source)
    obs.obs_sceneitem_set_order(scene_item, obs.OBS_ORDER_MOVE_BOTTOM)
    import_utils.fit_to_screen(scene_item)

    obs.obs_source_release(source)
    obs.obs_scene_release(new_scene)

    obs.script_log(obs.LOG_INFO, "created scene '" + bare_name + "' from " + filename)

  obs.obs_source_release(template_source)
Ejemplo n.º 11
0
def get_sceneitem_from_source_name_in_current_scene(name):
  result_sceneitem = None
  current_scene_as_source = obs.obs_frontend_get_current_scene()
  if current_scene_as_source:
    current_scene = obs.obs_scene_from_source(current_scene_as_source)
    result_sceneitem = obs.obs_scene_find_source_recursive(current_scene, name)
    obs.obs_source_release(current_scene_as_source)
  return result_sceneitem
Ejemplo n.º 12
0
def scene_name_to_scene(scene):
    source = obs.obs_get_source_by_name(scene)
    if source is not None:
        scene = obs.obs_scene_from_source(source)
        obs.obs_source_release(source)
        return scene
    else:
        return None
Ejemplo n.º 13
0
def toggle(source):
    scene = obs.obs_frontend_get_current_scene()
    sceneitem = obs.obs_scene_find_source(obs.obs_scene_from_source(scene),
                                          source)
    obs.obs_sceneitem_set_visible(sceneitem,
                                  not obs.obs_sceneitem_visible(sceneitem))

    obs.obs_source_release(scene)
    obs.obs_source_release(sceneitem)
Ejemplo n.º 14
0
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")
Ejemplo n.º 15
0
 def _sceneitem_by_name(self, scene_name, name):
     with self._source_by_name(scene_name) as source:
         scene = _obs.obs_scene_from_source(source)
         if not scene:
             raise LookupError("no scene named {}".format(scene_name))
         i = _obs.obs_scene_find_source_recursive(scene, name)
         if i is None:
             raise LookupError("no sceneitem named {}".format(name))
         _obs.obs_sceneitem_addref(i)
         return _SourceReleaser(i, is_sceneitem=True)
Ejemplo n.º 16
0
def set_logo(blue_config, orange_config): #reused for logo later
    default_logo = os.path.join(files_path, 'logo.png')

    blue_config_bun = get_bot_config_bundle(blue_config)

    orange_config_bun = get_bot_config_bundle(orange_config)

    blue_logo = blue_config_bun.get_logo_file()
    if blue_logo is None:
        blue_logo = default_logo
    orange_logo = orange_config_bun.get_logo_file()
    if orange_logo is None:
        orange_logo = default_logo

    default_logo_scale = 0.25
    default_logo_size = [400*default_logo_scale, 300*default_logo_scale]

    blue_logo_size = list(Image.open(blue_logo).size)
    blue_scale = default_logo_size[0]/blue_logo_size[0]
    orange_logo_size = list(Image.open(orange_logo).size)
    orange_scale = default_logo_size[0]/orange_logo_size[0]

    scenes = obs.obs_frontend_get_scenes()
    if scenes is not None:
        for scene in scenes:
            if obs.obs_source_get_name(scene) == 'RLBot - AutoLeague':
                scene = obs.obs_scene_from_source(scene)
                items = obs.obs_scene_enum_items(scene)
                for item in items:
                    if item is not None:
                        source_t = obs.obs_sceneitem_get_source(item)
                        if obs.obs_source_get_name(source_t) == "Logo-0":
                            source = source_t
                            settings = obs.obs_data_create()
                            obs.obs_data_set_string(settings, "file", blue_logo)
                            obs.obs_source_update(source, settings)
                            obs.obs_data_release(settings)

                            vec = obs.vec2()
                            obs.vec2_set(vec, blue_scale, blue_scale)
                            obs.obs_sceneitem_set_scale(item, vec)

                        if obs.obs_source_get_name(source_t) == "Logo-1":
                            source = source_t
                            settings = obs.obs_data_create()
                            obs.obs_data_set_string(settings, "file", orange_logo)
                            obs.obs_source_update(source, settings)
                            obs.obs_data_release(settings)

                            vec = obs.vec2()
                            obs.vec2_set(vec, orange_scale, orange_scale)
                            obs.obs_sceneitem_set_scale(item, vec)

                obs.source_list_release(scenes)
                obs.sceneitem_list_release(items)
Ejemplo n.º 17
0
def on_visibility_toggle(calldata):
    scenes_as_sources = obs.obs_frontend_get_scenes()
    sceneitem = obs.calldata_sceneitem(calldata, "item")
    visibility = obs.calldata_bool(calldata, "visible")
    name = obs.obs_source_get_name(obs.obs_sceneitem_get_source(sceneitem))
    for scene_as_source in scenes_as_sources:
        scene = obs.obs_scene_from_source(scene_as_source)
        match = obs.obs_scene_find_source(scene, name)
        if match:
            obs.obs_sceneitem_set_visible(match, visibility)
    obs.source_list_release(scenes_as_sources)
Ejemplo n.º 18
0
    def set_visible_all(self, visible):
        """Cycle through all scenes, manually toggling visibility of the source

        Idea from GitHub user LukyLurks
        """
        scenes = obs.obs_frontend_get_scenes()
        for scene in scenes:
            scene_test = obs.obs_scene_from_source(scene)
            in_scene = obs.obs_scene_find_source(scene_test, self.source_name)
            if in_scene:
                obs.obs_sceneitem_set_visible(in_scene, visible)
        obs.source_list_release(scenes)
Ejemplo n.º 19
0
def findSceneItem(source_name):
    scene_item = None
    currentSceneName = findCurrentSceneName()
    if currentSceneName:
        src = obs.obs_get_source_by_name(currentSceneName)
        if src:
            scene = obs.obs_scene_from_source(src)
            if scene:
                scene_item = obs.obs_scene_find_source(scene, source_name)
        obs.obs_scene_release(scene)
        obs.obs_source_release(src)
        return scene_item
    def crete_text_source(self):
        current_scene = obs.obs_frontend_get_current_scene()
        scene = obs.obs_scene_from_source(current_scene)
        settings = obs.obs_data_create()

        obs.obs_data_set_string(settings, "text",
                                "The quick brown fox jumps over the lazy dog")
        source = obs.obs_source_create_private("text_gdiplus", "test_py",
                                               settings)
        obs.obs_scene_add(scene, source)

        obs.obs_scene_release(scene)
        obs.obs_data_release(settings)
        obs.obs_source_release(source)
Ejemplo n.º 21
0
def get_item_names_by_scene(source):
    item_names = []
    scene = obs.obs_scene_from_source(source)
    scene_name = obs.obs_source_get_name(source)
    scene_items = obs.obs_scene_enum_items(scene)
    if scene_items is not None:
        for item in scene_items:
            item_source = obs.obs_sceneitem_get_source(item)
            item_name = obs.obs_source_get_name(item_source)
            if item_name in light_mapping:
                item_names.append(item_name)
        obs.sceneitem_list_release(scene_items)

    return item_names
Ejemplo n.º 22
0
def save(*args):
    currentScene = obs.obs_frontend_get_current_scene()
    sceneName = obs.obs_source_get_name(currentScene)
    sceneObject = obs.obs_scene_from_source(currentScene)
    items = obs.obs_scene_enum_items(sceneObject)
    transformations = getTransformationList(items)
    loc = filedialog.asksaveasfilename(filetypes=[("JSON", "*.json")],
                                       title="Save Template File",
                                       initialfile=sceneName + ".json")
    f = open(loc, 'w')
    f.write(json.dumps(transformations))
    f.close()
    #obs.obs_scene_release(sceneObject)
    obs.obs_source_release(currentScene)
    return True
Ejemplo n.º 23
0
 def refresh_screen(self):
     source = obs.obs_frontend_get_current_scene()
     scene = obs.obs_scene_from_source(source)
     sceneitem = obs.obs_scene_find_source_recursive(scene, self.source_name)
     if sceneitem is not None:
         obs.obs_sceneitem_set_visible(sceneitem, False)
         if self.debug:
             print("off")
         time.sleep(self.blink_speed)
         obs.obs_sceneitem_set_visible(sceneitem, True)
         if self.debug:
             print("on")
     obs.obs_sceneitem_release(sceneitem)
     obs.obs_scene_release(scene)
     obs.obs_source_release(source)
Ejemplo n.º 24
0
def setup_source(source_name, height, width):
    # Get the current scene
    current_scene = obs.obs_frontend_get_current_scene()
    scene = obs.obs_scene_from_source(current_scene)
    obs.obs_source_release(current_scene)

    # Grab the source
    source = obs.obs_scene_find_source(scene, source_name)

    # This makes sure that the scaling is done right
    obs.obs_sceneitem_set_bounds_type(source, obs.OBS_BOUNDS_SCALE_INNER)

    # Set the bounding box size
    new_scale = obs.vec2()
    new_scale.x = height
    new_scale.y = width
    obs.obs_sceneitem_set_bounds(source, new_scale)
Ejemplo n.º 25
0
def update_position():
    global source_name
    global counter
    source = obs.obs_frontend_get_current_scene()
    if source is not None:
        scene_object = obs.obs_scene_from_source(source)
        scene_item = obs.obs_scene_find_source(scene_object, source_name)
        pos = obs.vec2()
        obs.obs_sceneitem_get_pos(scene_item, pos)
        next_pos = obs.vec2()
        next_pos.x = pos.x
        y_adjust = math.sin(math.radians(counter))
        next_pos.y = pos.y + y_adjust / 4
        counter += 0.5
        if counter == 360:
            counter = 0
        obs.obs_sceneitem_set_pos(scene_item, next_pos)
        obs.obs_source_release(source)
Ejemplo n.º 26
0
def get_scene_item(name):
    scenes = obs.obs_frontend_get_scenes()
    if scenes is not None:
        for scene in scenes:
            if obs.obs_source_get_name(scene) == 'RLBot - AutoLeague':
                scene = obs.obs_scene_from_source(scene)
                items = obs.obs_scene_enum_items(scene)
                for item in items:
                    if item is not None:
                        scene_source = obs.obs_sceneitem_get_source(item)
                        if obs.obs_source_get_name(scene_source) == name:
                            sceneItem = obs.obs_scene_find_sceneitem_by_id(scene, obs.obs_sceneitem_get_id(item))
                            obs.source_list_release(scenes)
                            obs.obs_sceneitem_addref(sceneItem)
                            obs.sceneitem_list_release(items)
                            return sceneItem
                obs.sceneitem_list_release(items)
    obs.source_list_release(scenes)
Ejemplo n.º 27
0
def set_names(source_name, string):
    scenes = obs.obs_frontend_get_scenes()
    if scenes is not None:
        for scene in scenes:
            if obs.obs_source_get_name(scene) == 'RLBot - AutoLeague':
                scene = obs.obs_scene_from_source(scene)
                items = obs.obs_scene_enum_items(scene)
                for item in items:
                    if item is not None:
                        source_t = obs.obs_sceneitem_get_source(item)
                        if obs.obs_source_get_name(source_t) == source_name:
                            source = source_t
                            settings = obs.obs_data_create()
                            obs.obs_data_set_string(settings, "text", str(string))
                            obs.obs_source_update(source, settings)
                            obs.obs_data_release(settings)
                            obs.source_list_release(scenes)
                obs.sceneitem_list_release(items)
    def move_text_source(self):
        current_scene = obs.obs_frontend_get_current_scene()
        source = obs.obs_get_source_by_name("test_py")
        scene = obs.obs_scene_from_source(current_scene)
        scene_item = obs.obs_scene_find_source(scene, "test_py")
        if scene_item:
            dx, dy = 10, 10
            print("old values", self.location.x)
            obs.obs_sceneitem_get_pos(
                scene_item, self.location
            )  # update to last position if its changed from OBS
            self.location.x += dx
            self.location.y += dy
            print("new values", self.location.x)
            obs.obs_sceneitem_set_pos(scene_item, self.location)

        obs.obs_scene_release(scene)
        obs.obs_source_release(source)
Ejemplo n.º 29
0
def hidesource():
    #obs.script_log(obs.LOG_DEBUG,"Trying to hide source "+sourcename)

    frontendscenes = obs.obs_frontend_get_scenes()
    #obs.script_log(obs.LOG_DEBUG,str(frontendscenes))

    for scenesource in frontendscenes:
        #obs.script_log(obs.LOG_DEBUG,str(scenesource))

        #scenesource = obs.obs_frontend_get_current_scene()
        scene = obs.obs_scene_from_source(scenesource)
        #obs.script_log(obs.LOG_DEBUG,"Scene "+str(scene))

        sceneitem = obs.obs_scene_find_source(scene, sourcename)
        if sceneitem:
            #obs.script_log(obs.LOG_DEBUG,"Scene item "+str(sceneitem))

            obs.obs_sceneitem_set_visible(sceneitem, False)

        #obs.obs_source_release(scenesource)
    obs.source_list_release(frontendscenes)
Ejemplo n.º 30
0
def start_animation(info):
    global animationInfo
    global globSettings
    global animationRunning

    animationInfo["animTime"] = 0
    animationInfo["stopTime"] = obs.obs_data_get_int(globSettings,
                                                     "duration") / 1000

    f = open(info, 'r')
    animationInfo["destination"] = json.loads(f.read())
    f.close()

    animationInfo["animScene"] = obs.obs_get_source_by_name(
        obs.obs_data_get_string(globSettings, "scene"))

    sceneObject = obs.obs_scene_from_source(animationInfo["animScene"])
    items = obs.obs_scene_enum_items(sceneObject)
    animationInfo["initial"] = getTransformationList(items)

    animationRunning = True