Create move edit Block and Keyframe inside Timeline
BlockMargin: Oil.Seconds(1)
layer: Oil.createObject("WeakPointer(Layer)")
t = script.parentElement.mainAnimation
layer = script.layer.get() #script.parentElement.layers["test"]
def getLastBlock(blocks): # helper function to find the last block
position = 0
for block in blocks:
if block.position.get() >= position:
lastBlock = block
position = block.position.get()
return lastBlock
for element, track in t.elementTracks.items(): #parsing of the timeline
elt = element.get()
if elt.isChildOf(layer): #finding the right element and
blocks = track.blocks
newBlock = blocks[0].clone()
lastOne = getLastBlock(blocks)
newBlock.position.set(lastOne.position.get()+lastOne.length.get() + script.BlockMargin.get())
blocks.append(newBlock)
BlockMargin: Oil.Seconds(1)
layer: Oil.createObject("WeakPointer(Layer)")
from random import random
t = script.parentElement.mainAnimation
layer = script.layer.get() #script.parentElement.layers["test"]
def getLastKey(keys): # helper function to find the last block
position = 0
for key in keys:
if key.position.get() >= position:
lastKey = key
position = key.position.get()
return lastKey
for object, track in t.parameterTracks.items():
parameter = object.get()
if parameter.isChildOf(layer): #finding the right element
print(f"Parameter {parameter.getFriendlyName()}")
f = track.function
newKey = f.keyframes[0].clone()
lastKey = getLastKey(f.keyframes)
newKey.position.set(lastKey.position.get() + script.BlockMargin.get())
newKey.key.set(random()) # setting the key value
f.keyframes.append(newKey)
layer: Oil.createObject("WeakPointer(Layer)")
t = script.parentElement.mainAnimation
layer = script.layer.get() #script.parentElement.layers["test"]
print(layer.label)
def isAlreadyaBlock(time):
for block in blocks:
if block.position.get() == time:
return 1
return 0
for element, track in t.elementTracks.items(): #parsing of the timeline
elt = element.get()
if elt.isChildOf(layer): #finding the right element
blocks = track.blocks
for marker in t.timeMarkers:
if isAlreadyaBlock(marker.position.get()):
continue
newBlock = blocks[0].clone()
newBlock.position.set(marker.position)
blocks.append(newBlock)
print("New Block Added")