Search Issue Tracker

Won't Fix

Votes

2

Found in [Package]

1.1.0, 1.3.0

Issue ID

1206536

Regression

No

Changing the Timeline instance's tracks using a script does not apply the change to other Timeline instance's tracks

Package: Timeline

-

How to reproduce:
1. Open the project "case_1206536-timeline"
2. Open the scene "SampleScene"
3. Press the Play button
4. Select the GameObject "Timeline1" (or other)
5. Observe the results in the Game and Timeline windows

Expected results: all the GameObjects are playing the same animations
Actual results: each GameObject is playing different animations even though some of the Animation Tracks are muted in the Timeline Asset

Reproducible with: 2017.4.35f1, 2018.4.14f1, 2019.2.16f1(1.1.0), 2019.3.0f4(1.3.0), 2020.1.0a12(1.3.0)

Notes:
1. Changing the Timeline instance's tracks (e.g. muting an Animation Track) using the Editor applies the change to other Timeline instance's tracks
2. When any Cube is selected in the Game mode it begins to play the unmuted Animation Tracks in the Timeline asset like supposed to in 2019.2 and above (you can see that in the attached video)

  1. Resolution Note:

    I resolved this bug as Won't fix because fixing this problem means that the data model and API would need to be completely overhauled.

    > The problem of using the same Timeline it seems when checking the Timeline Window it overwrites the other instances of the same Timeline.

    When playing a timeline, a PlayableGraph is built from the data in the Timeline Asset. Once the graph is built, it is not updated unless RebuildGraph() is called on the PlayableDirector.

    In your code, you first mute tracks on the first timeline. Then, you mute some other tracks in the same asset for the second timeline. The first timeline instance is now out of sync with its asset but its PlayableGraph is not rebuilt. This is why, in a player, all three timelines show different animations.

    The Timeline window sometimes automatically calls RebuildGraph when the data has changed, like when you mute a track, add/remove a track or when it detects that the asset and PlayableGraph are out of sync. This is why, when you open a timeline in the Timeline window, that you see the animation changing. The PlayableGraph is rebuilt because the window enforces a sync between the asset and the PlayableGraph.

    This is not something we can fix without changing the API and how the Timeline window operates. We would need a runtime API to mute a track in the PlayableGraph itself. We would also need to change the update behaviour of the Timeline window.

    I tried to find a workaround: could you use one timeline per ''group''? During setup, you could randomly assign a timeline to a gameobject, instead of muting tracks.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.