How to set the current time of all timelines to 0?


#1

Hi,

I have a fairly complex scene with hundreds of assets having a local timeline / status. When adding more complexity to my interactions the timelines sometimes fall out of sync if I forget to add a timelinejumpto. Is there a way to set the current time on all layers to 0?

Thanks!


#2

What do you mean by “fall out of sync”?

When you have a local timelime it has its own time by definition, all the local timelines move at exactly the same rate - there shouldn’t be any drift at all. But as soon as you modify the time speed or jump in the timeline then time will be different from other timelines.

In general you should not rely on local timelines having exactly the same time - since they are precisely there for the purpose of having their own time. If you need time to be synchronized you should set a local timeline on the parent of the entities that need to be synchronized.

You can enable local time on any entity, including layers, so if you want to do that with layers you can create a parent layer with local time and any number of children layers in there that will be using the parent layer’s timeline and thus will always be synched.

Currently the only way to set the time on a set of timeline is to have one TimelineJumpTo action for each of them.


#3

Long story short, the layers have a shared introduction animation and are synced with one another but after 5 seconds they can be individually be played to show various part of the UI. By out of sync I mean that when I want to replay everything from the beginning I need to select all of them individually and set the current time to 0.

Was wondering if there was a feature to set all timelines to 0 with one click.


#4

Ah ok, so you mean as a UI feature in the Valkyrie Editor? (as opposed to a Vlk Action)


#5

What you can do is add a PlaybackStop event, and in there add the TimelineJumpTo you need to reset your scene. Then you can just press “Stop” to reset the scene. Another thing I’ve seen others do is to add a “KeyboardEvent” on a key and use that to reset your scene. That has the drawback that its easy to forget to disable that before exporting.

Doing it this way has the added benefit that you can do anything in your “reset event”, as opposed to what a special “reset timeline” keyboard shortcut might do.


#6

Without seeing the timeline it is hard to give an exact answer. For me, I’d just make sure that when I want to display the animation that I would use a TimelineJumpTo=0 then Enable Action. If you set the time before you enable the animation there wont be any popping.

If you want to play all of those animations at the same time then put them under a Dummy Entity ( or as Pierre mentioned, a Layer) and have that with a LocalTimeline. Make the children, the animations, have a normal timeline. They will inherit the parent’s LocalTimeline. Then I’d just use a single TimelineJumpTo=0 action to get all the animations to be in sync.

If that isn’t an option you can use a MessageSend action (maybe string) and use the MessageRecieved Event. When the event is triggered you can then use a TimelineJumpTo=0 action with your target. In the event you can broadcast the message to the entire level or a specific entity and it will trigger as expected.

So, one of the cool things about Vlk, and I am sure a lot of people are starting to realize this, is that there is a lot of flexability in how you can tackle a problem.