Initial commit

This commit is contained in:
lethanhsonvsp
2025-11-17 15:02:30 +07:00
commit 0a84b9d75e
15481 changed files with 2009655 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
system: jira
server: jira.unity3d.com
issuetype: Bug
package: Timeline
project: TB

View File

@@ -0,0 +1,5 @@
{
"timestamp": 1716827088,
"signature": "KCj9ZraD/htFNdVzUTVOM2A2n91Ts+Nx3KTZ29SwMZEjcLUEW9RD+AkT935/G4JWxrnuCaVwipx2fFLdSArD1IdGttp2QUeYiMhwCObEgXa9g45HPO2RbUYxLgtw4C32YsL+Eo/eVkymxO5/7EUxXtasfJXzq5FpPkesZH1xcheJX7Mivp7+/uJMdu4j3MGIbqlGWRhIyp0j7KlCfXrmRbbGoCpN5YMvvdjQXNOxt03U0DT+Yh4AAoM5pEjrM1CEKc5tarXUJS7L4OrhyMet6UlrcQcze4WZ52KncogcD9Vw01F+ADcMrDmOK15r3xzzCG67RQ6VWtcrZSOFigqVQx4Ga7QlNs1D064mZVb1Wc+fD2LG56jzZuniSma00etA7dWrd6Y1gqWFQWacqH3+/EL69gUfq1loW/Yp/szjrsPqmYzF/Z/4slMotUpGV0k3z2BRGfboD6WHMolibWuIUypkZfhAtdk34L4WckE3EEej37K7PlYBNXyVx69CnlB0",
"publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUFzdUhXYUhsZ0I1cVF4ZEJjTlJKSAordHR4SmoxcVY1NTdvMlZaRE1XaXhYRVBkRTBEMVFkT1JIRXNSS1RscmplUXlERU83ZlNQS0ZwZ1A3MU5TTnJCCkFHM2NFSU45aHNQVDhOVmllZmdWem5QTkVMenFkVmdEbFhpb2VpUnV6OERKWFgvblpmU1JWKytwbk9ySTRibG4KS0twelJlNW14OTc1SjhxZ1FvRktKT0NNRlpHdkJMR2MxSzZZaEIzOHJFODZCZzgzbUovWjBEYkVmQjBxZm13cgo2ZDVFUXFsd0E5Y3JZT1YyV1VpWXprSnBLNmJZNzRZNmM1TmpBcEFKeGNiaTFOaDlRVEhUcU44N0ZtMDF0R1ZwCjVNd1pXSWZuYVRUemEvTGZLelR5U0pka0tldEZMVGdkYXpMYlpzUEE2aHBSK0FJRTJhc0tLTi84UUk1N3UzU2cKL2xyMnZKS1IvU2l5eEN1Q20vQWJkYnJMbXk0WjlSdm1jMGdpclA4T0lLQWxBRWZ2TzV5Z2hSKy8vd1RpTFlzUQp1SllDM0V2UE16ZGdKUzdGR2FscnFLZzlPTCsxVzROY05yNWdveVdSUUJ0cktKaWlTZEJVWmVxb0RvSUY5NHpCCndGbzJJT1JFdXFqcU51M3diMWZIM3p1dGdtalFra3IxVjJhd3hmcExLWlROQWdNQkFBRT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg"
}

View File

@@ -0,0 +1,696 @@
# Changelog
All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
## [1.8.7] - 2024-05-24
### Added
- Released ronl-workflow-custom-marker.md Added a new workflow to the Timeline Workflows documentation:
- Released ronl-workflow-custom-marker.md The `Create a custom Notes marker` workflow demonstrates how to create a custom marker for adding notes to Timeline instances. This workflow also demonstrates how to change the default appearance of a custom marker with scripting and a Unity Style Sheet (USS).
### Fixed
- Fixed bug where using , and . (<>) to step frames in the Animation Window while the Timeline Window was linked would sometimes not work. [IN-56667](https://unity3d.atlassian.net/servicedesk/customer/portal/2/IN-56667)
- When the Timeline and Animation windows are linked and the Timeline Window is active, moving the playhead in the Timeline Window will cause the animation window to repaint immediately.
## [1.8.6] - 2023-10-05
### Changed
- In the `Create Asset` menu, the `Signal` and `Timeline` items have been moved to the `Timeline` submenu.
### Fixed
- Fixed issue where changing the name of a group track was not undoable ([TB-218](https://issuetracker.unity3d.com/issues/timeline-track-group-renaming-doesnt-go-into-the-undo-history)).
- Fixed issue where a warning would be logged in the console for `TrackAsset` ([TB-229](https://issuetracker.unity3d.com/product/unity/issues/guid/TB-229)).
- Fixed performance regression when rebuilding the playable graph.
- Fixed a `MissingReferenceException` when editing a Timeline that is an instance of a prefab and a bound `Animator` is destroyed ([TB-222](https://issuetracker.unity3d.com/issues/timeline-missingreferenceexceptions-when-undoing-add-animator-from-timeline))
- Removed warnings due to obsolete analytics API.
## [1.8.5] - 2023-08-24
### Added
- Added two new workflows to the Timeline Workflows documentation:
- The `Use markers and signals for footsteps` workflow demonstrates how to use Timeline markers, Signal assets, and Signal Receiver components to play audio sources for footsteps.
- The `Create a Sub-Timeline instance` workflow demonstrates how to create a single cut-scene by nesting a Timeline instance within another Timeline instance.
### Fixed
- Fixed playback and recording when Timeline is linked with the Animation Window.
## [1.8.4] - 2023-06-13
### Fixed
- Fixed issue where exceptions were thrown when different `ControlTrack`s are referencing the same `TimelineAsset` ([IN-21163](https://issuetracker.unity3d.com/product/unity/issues/guid/TB-165)).
## [1.8.3] - 2023-06-01
### Changed
- Updated the Timeline package documentation to include previously undocumented features and new screen images.
### Fixed
- Enable Timeline Action menu entry for Delete when PlayableDirector component is disabled. (TB-177)
- The `Text Track` sample has been updated to use the `com.unity.ugui` package.
- Removed usage of deprecated API: `UnityEditor.MemoryProfiler`
## [1.8.2] - 2023-03-02
### Fixed
- Fixed issue where previewing the Timeline would create prefab property modifications
- Fixed issue where `ClipEditor.OnClipChanged` was not invoked when changing the object assigned to a `ExposedReference<UnityEngine.Object>`.
## [1.8.1] - 2023-02-07
### Changed
- Reduced the number of playable graph rebuilds when editing playable assets through the clip inspector.
### Fixed
- Fixed an issue where the clip inspector was not able to display custom playable asset inspectors rendered with UIToolkit.
- Fixed issue where modifying curves on an animation clip did not trigger an evaluation of the graph when the Timeline Window is hidden. (TB-117)
- Fixed an issue where the empty marker track that's automatically created when showing the markers in the Timeline Window would remain in the Timeline Asset when the markers are hidden. ([TB-120])
## [1.8.0] - 2022-10-31
### Added
- Added field on DirectorControlPlayable: pauseAction. This property controls whether the director is paused or stopped when the playable is paused.
- Added field on ControlPlayableAsset: directorOnClipEnd. This asset property is passed to DirectorControlPlayable.pauseAction when the DirectorControlPlayable is created.
### Fixed
- Fixed an issue where menu items related to track, marker and clip types in contextual menus would be in arbitrary order in some versions of Unity. Menu items related to types will now be sorted based on their full names, including the assembly name.
## [1.7.2] - 2022-09-12
### Fixed
- Fix post-extrapolation mode change not recalculating previous clip pre-extrapolation time. ([ATL-1291])
- Fixed an issue where prefab overrides would be created when keyframing a prefab instance in Timeline. ([TB-108])
- Fixed an issue where a warning would be raised when using the undo history to undo multiple timeline interactions([TB-119])
- Fixed an issue where in some cases a NullReferenceException would be thrown in the PlayableDirector inspector after a TimelineAsset would be unloaded in the Editor([TB-129])
- Fixed an issue with the NoFoldOut attribute drawer, which was behaving incorrectly when used outside of the sample context. ([TB-132])
## [1.7.1] - 2022-03-07
### Fixed
- Fixed warnings related to meta files related to missing folders.
## [1.7.0] - 2022-02-21
### Added
- Added TimelinePlaybackControls Editor API:
- The Playback controls API lets you drive the Timeline Window playback controls from code. From this API, you can
- Change the current Time/Frame
- Query the current Time/Frame
- Start/Stop playback of the currently shown Timeline
- Go to First or Last frame
- Go to previous or next frame.
- Use it to accelerate your workflow, or build your own workflows on top of Timeline.
### Changed
- [Requires Unity 2021.2] Fixed an issue where the last frame of a Timeline was not guaranteed to be executed when the Playable Director had Wrap Mode `None`.
- License file header changed from "Timeline copyright © 2021 Unity Technologies ApS" to "Timeline copyright © 2021 Unity Technologies"
### Fixed
- Fixed an issue where unused `TrackAsset`s would be saved in the `TimelineAsset` file after removing tracks.
- Fixed an issue where grouped markers at time zero would sometimes disappear after clicking on them (https://issuetracker.unity3d.com/issues/timeline-markers-disappear-when-double-clicking-on-stacked-markers-at-0-frames)
- Fixed an issue where selecting a prefab in the project view could trigger an exception when parenting the prefab to a prefab sub-object. (1386125)
- Fixed an issue where duplicated or pasted tracks that were part of group tracks would lose their associated bindings (https://issuetracker.unity3d.com/issues/duplicated-track-groups-lose-their-nester-tracks-game-object-assignments)
- Fixed an issue where pasting a track after changing scenes would lose PlayableAsset references in clips (https://issuetracker.unity3d.com/issues/animation-tracks-copy-loses-its-properties-when-its-pasted-from-another-scene)
- Fixed an issue where the Timeline Window play range would not be serialized and persisted.
- Fixed an issue where clicking on a clip during Play Mode would evaluate the Timeline unnecessarily. (https://issuetracker.unity3d.com/issues/timeline-rebuilds-playable-graph-when-selecting-a-timeline-clip-during-play-mode)
- Fixed an issue where control clips would behave inconsistently if the clip was set to hold, but the PlayableDirector was set to not extrapolate. (https://issuetracker.unity3d.com/product/unity/issues/guid/1375771)
- Fixed issue where a warning would appear in 2022.1 regarding `AnimationWindowState.SnapMode`.
- [Requires Unity 2021.2] Fixed an issue where the last frame of a Timeline was not guaranteed to be executed when the Playable Director had Wrap Mode `None`.
- Fixed an issue where the Timeline Window's UI would not update until the user clicked in the window if the TimelineAsset's file contents were changed on disk, such as during a version control operation [1357110](https://issuetracker.unity3d.com/product/unity/issues/guid/1357110/)
## [1.6.3] - 2021-10-20
### Fixed
- Fixed an issue where the Timeline Window would not work correctly with read-only source controlled files.
- Fixed an issue where the a MissingReferenceException would be thrown when an IAnimationWindowPreview component previewed by Timeline would be destroyed. (https://issuetracker.unity3d.com/issues/missingreferenceexception-is-thrown-when-using-rigbuilder-inside-a-prefab)
- Fixed an issue where the "Match Content" action would not apply on all selected clips. (1368028)
## [1.6.2] - 2021-08-05
### Fixed
- Fixed an issue where copy-pasting Timeline Clips that contain Generic Lists of ExposedReferences would cause a NullReferenceException (1332377)
## [1.6.1] - 2021-06-22
### Added
- `ClipDrawOptions.hideScaleIndicator` can now be used to disable the clip scale indicator.
- Added an asterisk to the Timeline Window when the currently edited Timeline Asset is dirty (has unsaved changes). (1024230)
- Added the `IInspectorChangeHandler` interface to change what happens when a UI component in the inspector is modified. (1283486)
- (_Unity 2020.2+ only_) The Timeline window title displays an asterisk when there are unsaved changes.
- Double click now toggles the collapsed state of group tracks.
- A keyboard shortcut can now be mapped to expand or collapse group tracks.
- Added `displayClipName` property to ClipDrawOption. Use `displayClipName` to display (true) or hide (false) the clip name.
- New API added to `TimelineEditorWindow`: `TimelineNavigator`.
- Enables navigation between timelines and nested timelines through code for automation purposes.
- Gives access to Timeline window breadcrumbs.
- _(Unity 2021.2+ only)_ Added `Framelocked preview` option in Timeline preferences.
- Added framerate display with standard framerates.
- `TimelineAsset` framerate can be set with a `StandardFramerate` value. (`TimelineAsset.SetStandardFramerate`)
### Changed
- Removed non-working PlayRange options (Loop/Hold) as both were actually mapping to Loop behaviour and always have been.
- Timeline settings menu has been modified to use standard framerates in framerate submenu.
- `TimelineAsset.fps` is obsolete and is replaced by `TimelineAsset.frameRate`.
- `TimelineProjectSettings.assetDefaultFramerate` is obsolete and is replaced by `TimelineProjectSettings.defaultFramerate`.
### Fixed
- Removed GC allocations in `PlayableDirector.duration` when a timeline asset is assigned. ([1298818](https://issuetracker.unity3d.com/product/unity/issues/guid/1298818))
- Removed warnings with AnimationWindowState snap mode. (1306205)
- Fixed issue where the "Navigate Right" (default key: `Right Arrow` ▶) would not behave consistently. The correct order of operations should now always be, in order: expand group, select first track of group, then select first item of the track.
- Fixed frame display not rounding up correctly. (1333009)
- Fixed an issue where `TimelinePlayable` duration would not be initialized if the playable is not created from the PlayableDirector. ([1329151](https://issuetracker.unity3d.com/product/unity/issues/guid/1329151))
- Fixed memory leak in custom playable inspectors. (1332377)
- Fixed exception when using the Key All Animated shortcut with no Timeline selected. (1334339)
- Fixed issue where a warning would appear regarding obsolete `AnimationWindowState.SnapMode` values.
## [1.5.5] - 2021-04-30
### Fixed
- Fixed an issue in the Curves view where the color indicator was sized incorrectly on high-res displays. ([1318782](https://issuetracker.unity3d.com/product/unity/issues/guid/1318782))
- Fixed a rare issue where keyframes were created for Playable Curves when switching to play mode. ([1319124](https://issuetracker.unity3d.com/product/unity/issues/guid/1319124))
- Fixed an issue where clearing the Unity selection did not refresh the Timeline window. (1320260)
- Fixed an issue with `IAnimationWindowPreview.StartPreview` not getting called for sub timelines. ([1322571](https://issuetracker.unity3d.com/product/unity/issues/guid/1322571))
- Fixed an issue where the curve color identifiers would overlap property names when the Timeline window was resized. ([1323591](https://issuetracker.unity3d.com/product/unity/issues/guid/1323591))
- Fixed a regression where changes made to clip curves would not be processed until another modification caused a graph rebuild.
- Fixed compilation issue on 2020.1 due to incorrect version checks.
- Fixed issue where text labels were incorrectly displayed when the mouse pointer was located above a clip.
## [1.5.4] - 2021-03-10
### Fixed
- Fixed issue where the horizontal scrollbar could not be moved or resized.
## [1.5.3] - 2021-03-05
### Changed
- Disabled edition of Track Asset Inspector Script field as it could break Timeline Assets.
### Fixed
- Fixed issue where the timeline header track would automatically open during a drag and drop operation. ([1305436](https://issuetracker.unity3d.com/product/unity/issues/guid/1305436))
- Fixed a rare issue where some broken tracks could not be removed. ([1305388](https://issuetracker.unity3d.com/product/unity/issues/guid/1305388))
- Fixed rare issue where the time field could not be edited after opening a timeline. ([1312198](https://issuetracker.unity3d.com/product/unity/issues/guid/1312198))
- Fixed cosmetic issue where the duration marker was drawn over the scroll bar.
- Fixed issue where times without a decimal separator (. or , depending on locale) would not be interpreted correctly by the time field. (1315605)
- Fixed issue where a selection rectangle could not be made when started inside a track. ([1315840](https://issuetracker.unity3d.com/product/unity/issues/guid/1315840))
- Performing Undo/Redo will not affect Timeline window selection when the window is locked. (Selecting sub-timelines can still be undone). ([1313515](https://issuetracker.unity3d.com/product/unity/issues/guid/1313515))
- Fixed an issue where text would be clipped in the track header binding. ([1302401](https://issuetracker.unity3d.com/product/unity/issues/guid/1302401))
- Fixed issue where clicking in the Timeline window while there is no active timeline would throw an exception.
## [1.5.2] - 2021-01-08
### Added
- During recording, there are new ways to key animated properties:
- A new Inspector context menu has been added (`Key All Animated`) that sets a key to all currently animated properties.
- It is possible to make a multi-selection of tracks to set a keyframe to all currently animated properties. If no track is selected, all recording tracks are keyed.
- If properties are selected in the curve editor, only those properties are keyed.
- `TimelineEditor.GetWindow` and `TimelineEditor.GetOrCreateWindow` to get the current Timeline window or create a Timeline window.
- `TimelineEditorWindow.SetCurrentTimeline` to change which timeline asset is opened in the Timeline window.
- `TimelineEditorWindow.lock` to lock or unlock the Timeline window.
- `TrackExtensions.GetCollapsed`, `TrackExtensions.SetCollapsed`, `TrackExtensions.IsVisibleRecursive` to get and change the visibility state of a track.
- `AnimationTrackExtensions.IsRecording`, `AnimationTrackExtensions.SetRecording`, `AnimationTrackExtensions.SupportsRecording` to get or change the recording state of an Animation track.
- Added two methods in `TrackEditor` to control how an object is bound to a track: `IsBindingAssignableFrom` and `GetBindingFrom`.
- Added Japanese translation.
- The Timeline window will automatically rebuild the graph when a notifications's properties are changed.
- The Timeline window will be automatically refreshed when a marker's properties are changed.
- Added `TimelineEditor.GetInspectedTimeFromMasterTime` and `TimelineEditor.GetMasterTimeFromInspectedTime` to convert time from master to inspected timeline and vice versa when using sub-timelines.
- Added API to improve how to get/set a `TimelineClip`'s parent track:
- `TimelineClip.GetParentTrack` (replaces obsolete property getter)
- `ItemsUtils.SetParentTrack` (extension method thar replaces obsolete property setter)
- Added a new `Seconds` time display mode and renamed previous Seconds mode to Timecode.
- `TimelinePreferences.timeFormat` field,
- `UnityEditor.Timeline.TimeFormat` enum.
- Added API for the user to clip to the track area:
- API: Relevant member to `MarkerOverlayRegion`,
- API: `MarkerOverlayRegion.trackRegion`,
- API: `MarkerOverlayRegion` constructor.
- Added _Gameplay sequence_ sample.
- This sample demonstrates how Timeline can be used to create a small in-game moment, using built-in tracks.
- Added _Customization_ sample.
- This sample demonstrates how to create custom tracks, clips, markers and actions.
### Changed
- The binding field on a track header will change its background color when dragging a valid object on it.
- Timeline marker track is now selectable.
- `TimelineClip` property `parentTrack` is now obsolete.
- `TimelinePreferences.timeUnitInFrames` is now obsolete.
### Fixed
- Fixed a bug affecting the conversion between seconds and frames in the inspector.
- Fixed issue where `KeyAllAnimated` was available when right-clicking on markers and tracks that were not in record mode. (1270304)
- Fixed issue where the mouse cursor would stay stuck to a resize icon when resizing the track header. ([1076031](https://issuetracker.unity3d.com/product/unity/issues/guid/1076031/))
- Fixed case where an animation event at time 0 would not fire on a timeline loop. ([1184106](https://issuetracker.unity3d.com/product/unity/issues/guid/1184106))
- Fixed issue where Timeline objects (ie. `TrackAsset`, `ControlTrack`, `SignalAsset`, etc.) would have incorrect links to the documentation pages. *Available starting from Unity 2021.1*. ([1082941](https://issuetracker.unity3d.com/product/unity/issues/guid/1082941))
- Fixed multiple issues related to blends
- Fix display of blends when clips have ease-in/ease-out ([1178066](https://issuetracker.unity3d.com/product/unity/issues/guid/1178066))
- Fix clip disappearing when dragging it from left to right completely inside another clip.
- Fix select and drag clip discarding foreground display rule of selected clip after releasing the drag.
- Fix fully blended clips selection not available. ([1289912](https://issuetracker.unity3d.com/product/unity/issues/guid/1289912))
- Fixed issue where the clip display would flicker when moving two clips that are completely overlapped. ([1085679](https://issuetracker.unity3d.com/product/unity/issues/guid/1085679))
- The Timeline window will no longer revert to editing only the asset if the user uses the Timeline selector to pick a game object and switches focus. ([1291455](https://issuetracker.unity3d.com/product/unity/issues/guid/1291455))
- Create button on timeline panel no longer defaults to an invalid path. ([1289923](https://issuetracker.unity3d.com/product/unity/issues/guid/1289923))
- Fixed issue where Timeline's bindings field would loses names and bindings when selecting clips. ([1293941](https://issuetracker.unity3d.com/product/unity/issues/guid/1293941))
- Make Timeline's duration result displayed in the Inspector, when switching from duration mode: Based On Clips to Fixed Length, closer to the actual duration. ([1156920](https://issuetracker.unity3d.com/product/unity/issues/guid/1156920))
- Copy/Paste of clips in the Timeline Window will no longer paste clips at an invalid time in mix-mode. ([1289925](https://issuetracker.unity3d.com/product/unity/issues/guid/1289925))
## [1.4.5] - 2020-11-19
### Fixed
- Fixed issue where changing a clip's extrapolation values would clear the current clip selection. ([936046](https://issuetracker.unity3d.com/product/unity/issues/guid/936046))
- Fixed multiple issues related to the curves view:
- Fixed curve removal not functioning with `PlayableAsset`s (clips & tracks curves). ([1231002](https://issuetracker.unity3d.com/product/unity/issues/guid/1231002))
- Fixed inconsistent icon display on curves.
- Fixed incorrect ordering of properties. Properties now have a object/type/property ordering.
- Fixed unnecessary grouping of fields.
- Changed context menu from `Remove Properties` to `Remove Curves` to better reflect the change in functionality between curves for GameObjects and curves for `PlayableAssets`.
- Fixed behaviour where removing a single field in a `Position`, `Rotation` or `Scale` group would remove the entire group.
- Fixed case where pausing in Playmode and switching the active director in editor could pause the director. ([1263707](https://issuetracker.unity3d.com/product/unity/issues/guid/1263707))
- Material properties are now displayed by their shader name in the curves view when possible. ([1115961](https://issuetracker.unity3d.com/product/unity/issues/guid/1115961))
- Fixed issue where a signal could be pasted on a track that doesn't support notifications. ([1283763](https://issuetracker.unity3d.com/product/unity/issues/guid/1283763))
- Fixed issue where a clip could be paseted on an incompatible track. ([1283763](https://issuetracker.unity3d.com/product/unity/issues/guid/1283763))
- Fixed errors when leaving prefab mode when a timeline is opened. ([1280331](https://issuetracker.unity3d.com/product/unity/issues/guid/1280331))
- No preview will be shown when the PlayableDirector is disabled. ([1286198](https://issuetracker.unity3d.com/product/unity/issues/guid/1286198))
- Fixed issue where an infinite clip's `Foot Ik` property was not visible in the Inspector when selecting its track. ([1279824](https://issuetracker.unity3d.com/product/unity/issues/guid/1279824))
- Fixed issue where child particle systems were not controlled correctly when they are not subemitters. ([1212943](https://issuetracker.unity3d.com/product/unity/issues/guid/1212943))
- Fixed inconsistent recording behaviour on audio tracks and `PlayableAssets`. Default values are changed when a value is not recorded, and the key added/updated when a value is already animated. ([1283453](https://issuetracker.unity3d.com/product/unity/issues/guid/1283453))
- Fixed issue where the curves view for tracks and `PlayableAsset`s would not update when changed externally (such as from the Animation window).
- Fixed `Add Key`/`Remove Key` context menus not being properly enabled in some cases when using tracks and `PlayableAsset`s.
- Fixed simulation of subemitters when scrubbing a timeline. ([1142781](https://issuetracker.unity3d.com/product/unity/issues/guid/1142781))
- Fixed choppy playback of particles with a large fixed time step. ([1262234](https://issuetracker.unity3d.com/product/unity/issues/guid/1262234))
## [1.4.4] - 2020-10-09
### Fixed
- Disable drag and drop of Signal asset on Control Track. ([1222760](https://issuetracker.unity3d.com/product/unity/issues/guid/1222760/))
- Fixed system locale causing issues when keying float values on custom clips. ([1190877](https://issuetracker.unity3d.com/product/unity/issues/guid/1190877/))
- Fixed issue where recording to a clip would place keys on the frame. ([1274892](https://issuetracker.unity3d.com/product/unity/issues/guid/1274892/))
- Fixed keyboard clip selection from locked tracks. ([1233612](https://issuetracker.unity3d.com/product/unity/issues/guid/1233612/))
- Fixed issue where the Timeline window would stay locked even when no timeline asset is shown. ([1278598](https://issuetracker.unity3d.com/product/unity/issues/guid/1278598/))
- Fixed issue where invoking `SelectLeft` or `SelectRight` shortcuts on a group track, the group would not collapse or expand. ([1279379](https://issuetracker.unity3d.com/product/unity/issues/guid/1279379/))
- Fixed Blend Curve Editor from the clip's inspector that was not responding correctly to undo and redo commands. (978673)
- Fixed issue where the `Frame All` action would not frame keys outside of clips when the curve display is collapsed. ([1273725](https://issuetracker.unity3d.com/product/unity/issues/guid/1273725/), #295)
- Scrolling the horizontal scrollbar of the timeline to the right edge will no longer prevent the user from dragging left again. ([1127199](https://issuetracker.unity3d.com/product/unity/issues/guid/1127199/), #301)
- Splitting a clip with an ease in or out value now ensures ease duration stays on correct side of split. ([1279350](https://issuetracker.unity3d.com/product/unity/issues/guid/1279350/))
- Fixed delay when zooming in after reaching Timeline window's maximum and then zooming back. ([1214228](https://issuetracker.unity3d.com/product/unity/issues/guid/1214228/))
- Prevent creation of presets with Group Tracks. ([1281056](https://issuetracker.unity3d.com/product/unity/issues/guid/1281056))
- Fixed issue where markers placed on top of clips could not be selected. ([1284807](https://issuetracker.unity3d.com/product/unity/issues/guid/1284807), #314)
- Fixed issue where multiple markers placed on top of each other could not be selected. ([1284801](https://issuetracker.unity3d.com/product/unity/issues/guid/1284801), #314)
## [1.4.3] - 2020-08-26
### Fixed
- Fixed incorrect selection when clicking on a clip's blend. (1178052)
- Fixed issue where an exception was thrown when drawing an Audio clip's waveform when that clip wasn't in the AssetDatabase. ([1268868](https://issuetracker.unity3d.com/product/unity/issues/guid/1268868/))
- When choosing `Add Signal Emitter from Signal Asset`, closing the Object Selector window will not add an empty Signal Emitter. ([1261553](https://issuetracker.unity3d.com/product/unity/issues/guid/1261553/))
- Fixed issue where an error would appear when editing keys in the Animation window if the Timeline window is opened. (1269829)
- Fixed issue where the `Frame All` operation would continually increase the zoom value when only empty tracks are added to the timeline ([1273540](https://issuetracker.unity3d.com/product/unity/issues/guid/1273540/)).
## [1.4.2] - 2020-08-04
### Fixed
- Fixed double-click not opening the AnimationWindow on clips with animated parameters. ([1262950](https://issuetracker.unity3d.com/product/unity/issues/guid/1262950/))
- Fixed issue where the Timeline window would rebuild its Playable Graph every time an AnimationClip would be added, changed or deserialized. (1265314, [1267055](https://issuetracker.unity3d.com/product/unity/issues/guid/1267055/))
## [1.4.1] - 2020-07-15
### Fixed
- Fixed `IndexOutOfRangeException` exception being thrown when editing inspector curves. ([1259902](https://issuetracker.unity3d.com/product/unity/issues/guid/1259902/))
- Fixed `IndexOutOfRangeException` exception being thrown when the `New Signal` dialog replaces an existing signal. ([1241170](https://issuetracker.unity3d.com/product/unity/issues/guid/1241170/))
- Fixed signal state being reset on paused timelines. ([1257208](https://issuetracker.unity3d.com/product/unity/issues/guid/1257208/))
- Fixed nested custom types not updating animation values in the inspector. ([1239893](https://issuetracker.unity3d.com/product/unity/issues/guid/1239893/))
- Fixed `AnimationTrack`s SceneOffset mode incorrectly overriding root transform on tracks without root transform in editor. ([1237704](https://issuetracker.unity3d.com/product/unity/issues/guid/1237704/))
- The `DisplayName` attribute is now supported when used with `TrackAsset`s. ([1253397](https://issuetracker.unity3d.com/product/unity/issues/guid/1253397/))
- Fixed `NullReference` exception being thrown when clicking on the `Scene Preview` checkbox if the Timeline window was closed. (1261543)
## [1.4.0] - 2020-06-26
### Added
- Added `ClipCaps.AutoScale` to automatically change the speed multiplier value when the clip is trimmed in the Timeline window.
- Added a `DeleteClip` method in `TrackAsset`.
- Added dependency on Animation, Audio, Director and Particle System modules. ([1229825](https://issuetracker.unity3d.com/product/unity/issues/guid/1229825/))
- Added an option in `TimelineAsset.EditorSettings` to disable scene preview.
- Added base classes to define custom actions:
- `TimelineAction`
- `TrackAction`
- `ClipAction`
- `MarkerAction`
- Added the following attributes that can be used with action classes:
- `ApplyDefaultUndo` to automatically manage undo operations.
- `ActiveInMode` to control in which Timeline mode the action is valid.
- `MenuEntry` to add the action to the context menu.
- `TimelineShortcut` can be added to a static method to invoke the action with a shortcut.
- `Invoker` to invoke actions using Timeline's selection or context.
- `MenuOrder` contains menu priority values, to be used with `MenuEntry`.
- `TimelineModes` to specify in which mode an action is valid, to be used with `MenuEntry`.
- `ActionContext` to provide a context to invoke `TimelineAction`s.
- `ActionValidity` to specify is an action is valid for a given context.
- `UndoExtension` to manage undo operations with common Timeline types.
### Changed
- Improved performance with ControlTracks in preview mode for cases where multiple Control Tracks are assigned to the same PlayableDirector.
- Improved layout and appearance of track header buttons.
- Reduced icons' file size without any quality loss.
- A track's binding will be duplicated when pasting or duplicating a track.
- When creating a new timeline asset, the "Timeline" suffix will not be added to the file name twice.
- `ClipCaps.All` now includes the new `Autoscale` feature. To get the previous `ClipCaps.All` behaviour on clips, use
```
ClipCaps.Looping | ClipCaps.Extrapolation | ClipCaps.ClipIn | ClipCaps.SpeedMultiplier | ClipCaps.Blending
```
- Inline curve selection is now synced with the clip's selection.
- Selecting a curve view property will also select the corresponding curve view.
- Clicking and holding the `Command` or `Control` key on a curve view will deselect it if it was already selected.
- Improved Timeline window UI performance.
### Fixed
- Selecting clips from locked tracks is not allowed anymore when using the playhead's context menu.
- Inserting gaps in locked tracks is not allowed anymore.
- When adding an Activation track, the viewport is adjusted to show the new Activation clip.
- Fixed issue where trimming AnimationClips would also change the speed multiplier.
## [1.3.4] - 2020-06-09
### Fixed
- Fix a Control Track bug that caused the first frame of an animation to evaluated incorrectly when scrubbing forwards and backwards. (1253485)
- Fixed memory leak where the most recently played timeline would not get unloaded. ([1214752](https://issuetracker.unity3d.com/product/unity/issues/guid/1214752/) and 1253974)
## [1.3.3] - 2020-05-29
### Fixed
- Fixed regression where animation tracks were writing root motion when the animation clip did not contain root transform values ([1249355](https://issuetracker.unity3d.com/product/unity/issues/guid/1249355/))
## [1.3.2] - 2020-04-02
### Fixed
- Fixed issue where the clip Inspector's curve preview would close when clicking on the curve. ([1228127](https://issuetracker.unity3d.com/product/unity/issues/guid/1228127/))
- Fixed issue where the curves view was not synced between Animation and Timeline windows. ([1213937](https://issuetracker.unity3d.com/issues/animation-window-curves-are-not-updated-immediately-when-changing-them-in-timeline-window))
- Fixed issue where play range didn't loop when range ends on the final frame. ([1215926](https://issuetracker.unity3d.com/issues/timeline-play-range-doesnt-loop-when-play-range-ends-on-the-final-frame))
- Fixed issue where displaying an array in the curves view generated errors. ([1178251](https://issuetracker.unity3d.com/product/unity/issues/guid/1178251/))
## [1.3.1] - 2020-03-13
### Fixed
- Fixed issue where the curves view would flicker when editing multiple keys. ([1217326](https://issuetracker.unity3d.com/product/unity/issues/guid/1217326/))
- Fixed issue where adding a keyframe in the curves view at the end of a clip would not place the keyframe at the correct position. ([1221337](https://issuetracker.unity3d.com/product/unity/issues/guid/1221337/))
## [1.3.0] - 2020-02-26
### Added
- Inline Curve Properties can be removed.
- Tracks can be individually resized.
### Changed
- Creating a new Timeline will no longer automatically add an Animation Track and an Animator to the target GameObject.
- Ease-in and ease-out values for clips are no longer restricted to 50% of the clip's duration.
- The resize handle for inline curves has been moved to the track header area.
- Reduced the minimum width of the track header area.
- Trimming the left edge of a clip while pressing the Shift key will change the Speed Multiplier value.
### Fixed
- Fixed humanoid characters going to default pose during initial root motion recording. (1174752)
- Fixed Override Tracks not masking RootTransform when an AvatarMask without the Root Node is applied. ([1190600](https://issuetracker.unity3d.com/product/unity/issues/guid/1190600/))
- Fixed preview of Avatar Masks on base level Animation Tracks. ([1190600](https://issuetracker.unity3d.com/product/unity/issues/guid/1190600/))
## [1.2.13] - 2020-02-24
### Fixed
- Fixed Performance issue where Control Tracks would resimulate during the tail of a non-looping particle clip. ([1216702](https://issuetracker.unity3d.com/product/unity/issues/guid/1216702/))
- Fixed adjacent recording clips highlighting the wrong clip. ([1210312](https://issuetracker.unity3d.com/product/unity/issues/guid/1210312/))
- Fixed timescale drawing to only draw visible lines which avoids a hang with very large clips. ([1213189](https://issuetracker.unity3d.com/product/unity/issues/guid/1213189/))
- Fixed `SignalReceiver.ChangeSignalAtIndex` incorrectly throwing exception when multiple entries are set to null. ([1210877](https://issuetracker.unity3d.com/product/unity/issues/guid/1210877/))
- Fixed a memory leak with Animation Clips in Edit mode.
- Fixed issue where changes to a Signal Receiver component in a prefab were reverted. ([1210883](https://issuetracker.unity3d.com/product/unity/issues/guid/1210883/))
- Fixed avatar mask reassignment not causing immediate re-evaluation. ([1219326](https://issuetracker.unity3d.com/product/unity/issues/guid/1219326/))
- Fixed issues related to recursive control tracks. (1178423)
- Fixed issue where using the `HideInMenu` attribute in combination with a class inheriting from `Marker` would not hide the marker from the Timeline context menus. ([1221054](https://issuetracker.unity3d.com/product/unity/issues/guid/1221054/))
## [1.2.12] - 2020-02-21
### Fixed
- Fixed issue where the curves view would change its framing when moving a clip. ([1217353](https://issuetracker.unity3d.com/product/unity/issues/guid/1217353/))
## [1.2.11] - 2020-01-22
### Fixed
- Fixed Control Track inspector dropdown not opening. ([1208943](https://issuetracker.unity3d.com/product/unity/issues/guid/1208943/))
- Fixed issue where applying the Match content command on subtimeline clip with a newly created subtimeline with no duration makes the clip disappear. ([1203662](https://issuetracker.unity3d.com/product/unity/issues/guid/1203662/))
- Fixed issue where the opened timeline is changed to another timeline when switching focus from Unity to a different application. ([1087348](https://issuetracker.unity3d.com/product/unity/issues/guid/1087348/))
- Fixed issue where the keys in the inline curves view were incorrectly positioned ([1205835](https://issuetracker.unity3d.com/product/unity/issues/guid/1205835/))
### Changed
- ControlPlayableAsset.searchHierarchy (a.k.a. Control Children) now defaults to false.
## [1.2.10] - 2019-12-08
### Fixed
- Fixed issue where object selectors on tracks did not show bound objects. (1202853)
- Fixing inspector blend graph display for animation clips. (1201474)
- Fixed Timeline Window lock state when restarting Unity and no timeline are selected. ([1201405](https://issuetracker.unity3d.com/product/unity/issues/guid/1201405/))
## [1.2.9] - 2019-12-06
### Fixed
- Added missing high-resolution icons for Personal Skin.
## [1.2.8] - 2019-11-21
### Fixed
- Fixed issue where recording couldn't be turned on for override tracks. (1199389)
- Fixed overlay bug when panning. (1198348)
- Fixed Foot IK being applied in Editor when option is disabled. ([1197426](https://issuetracker.unity3d.com/product/unity/issues/guid/1197426/))
- Fixed issue where the Animation Track's inline curves were not properly aligned when panning the timeline. (1198364)
## [1.2.7] - 2019-11-15
### Fixed
- Fixed inline curves to display PlayableBehaviour array properties. (1178251)
- Fixed clip selection from playhead. (1187495)
- Fixed recorded clips dirtying the scene on copy/paste. (1181492)
## [1.2.6] - 2019-10-25
### Added
- Added Timeline manual.
## [1.2.5] - 2019-10-16
### Changed
- Added tooltips that were missing for Timeline selector and settings buttons. ([1152790](https://issuetracker.unity3d.com/product/unity/issues/guid/1152790/))
- Removed Undo menu entry that was added when clicking on the Inline curves button. ([1187402](https://issuetracker.unity3d.com/product/unity/issues/guid/1187402/))
### Fixed
- Fixed issue where recording couldn't be turned off when an object is deactivated. (1187174)
- Timelines listed in the Timeline selector will now be sorted alphabetically. (1190514)
- Fixed Insert Frames options from Trackhead context menu not applying to markers. (1187895)
- Fixed incorrect display when a large number of nested group tracks was added to a Timeline. (1157367)
## [1.2.4] - 2019-10-03
### Changed
- Properties in the Inline Curve editor will now be listed in the same order as the Animation window. (1184058)
- Updated the appearance of the Timeline window to conform to the [editor's UX redesign](https://blogs.unity3d.com/2019/08/29/evolving-the-unity-editor-ux/)
- Improved the appearance of clip blends.
### Fixed
- Adding a PlayableDirector with no Playable Asset will no longer trigger a repaint of the Timeline Window on each frame. ([1172707](https://issuetracker.unity3d.com/product/unity/issues/guid/1172707/))
- Fixed issue where a clip's blend selection border was not drawn correctly when there was a previous clip. (1178173)
- Fixed issue where Animation Events were fired twice when the Playable Director Wrap mode is set to Loop. ([1173281](https://issuetracker.unity3d.com/product/unity/issues/guid/1173281/))
- Fixed issue where double-clicking on a Timeline Asset would not open it in the Timeline window. ([1182159](https://issuetracker.unity3d.com/product/unity/issues/guid/1182159))
- Fixed issue where the paste shortcut would not work when copying and pasting between two different timelines. (1184967)
- Fixed audio stutter when going into playmode. ([1167289](https://issuetracker.unity3d.com/product/unity/issues/guid/1167289/))
- Fixed PreviousFrame and NextFrame controls in subtimelines with large offsets. (1175320)
- Fixed issue where exceptions were thrown when resetting a Signal Receiver component. ([1158227](https://issuetracker.unity3d.com/product/unity/issues/guid/1158227/))
- Increased font size of clip labels (1179642)
## [1.2.3] - 2019-10-03
### Fixed
- Removed unnecessary directories from the package.
## [1.2.2] - 2019-08-20
### Fixed
- Fixed issue where fields for custom clips were not responding to Add Key commands. (1174416)
- Fixed issue where a different track's bound GameObject is highlighted when clicking a track's bound GameObject box. (1141836)
- Fixed issue where a clip locks to the playhead's position when moving it. (1157280)
## [1.2.1] - 2019-08-01
### Fixed
- Fixed appearance of a selected clip's border.
- Fixed non-transform properties from AnimationClips not being correctly put into preview mode when the avatar root does not contain the animator component. ([1162334](https://issuetracker.unity3d.com/product/unity/issues/guid/1162334/))
- Fixed an issue where the context menu for inline curves keys would not open on MacOS. ([1158584](https://issuetracker.unity3d.com/product/unity/issues/guid/1158584/))
- Fixed recording state being incorrect after toggling preview mode (1146551)
- Fixed copying clips without ExposedReferences causing the scene to dirty (1144469)
## [1.2.0] - 2019-07-16
*Compatible with Unity 2019.3*
### Added
- Added ILayerable interface. Implementing this interface on a custom track will enable support for multiple layers, similar to the AnimationTracks override tracks.
- Added "Pan" autoscrolling option in the Timeline window.
- Enabled rectangle tool for inline curves.
### Changed
- Scrolling horizontally with the mouse wheel or trackpad now pans the timeline view horizontally, instead of zooming.
- Scrolling vertically with the mouse wheel or trackpad on the track headers or on the vertical scroll bar now pans the timeline view vertically, instead of zooming.
### Fixed
- Fixed an issue causing info text to overlap when displaying multiple lines (1150863).
- Fixed duration mode not reverting from "Fixed Length" to "Based On Clips" properly. (1154034)
- Fixed playrange markers being drawn over horizontal scrollbar (1156023)
- Fixed an issue where a hotkey does not autofit all when Marker is present (1158704)
- Fixed an issue where an exception was thrown when overwriting a Signal Asset through the Signal Emitter inspector. (1152202)
- Fixed Control Tracks not updating instances when source prefab change. (case 1158592)
- An exception will be thrown when calling TrackAsset.CreateMarker() with a marker that implements INotification if the track does not support notifications. (1150248)
- Fixed preview mode being reenabled when warnings change on tracks. (case 1151381)
- Fixed minimum clip duration to be frame aligned. (case 1156602)
- Fixed playhead being moved when applying undo while recording.(case 1154802)
- Fixed warnings about localEulerAnglesRaw when using RectTransform. (case 1151100)
- Fixed precision error on the duration of infinite tracks. (case 1156723)
- Fixed issue where two GatherProperties call were made when switching between two PlayableDirectors. (1159036)
- Fixed issue where inspectors for clips, tracks and markers would get incorrectly displayed when no Timeline Window is opened. (1158242, 1158283)
- Fixed issue with clip connectors that were incorrectly drawn when the timeline was panned or zoomed. (1141960)
- Fixed issue where evaluating a Playable Graph inside a Notification Receiver would cause an infinite recursion. ([1149930](https://issuetracker.unity3d.com/product/unity/issues/guid/1149930/))
- Fixed Trim and Move operations to ensure playable duration is updated upon completion. ([1151894](https://issuetracker.unity3d.com/product/unity/issues/guid/1151894/))
- Fixed options menu icon that was blurry on high-dpi screens. (1154623)
- Track binding field is now larger. (1153446)
- Fixed issue where an empty Timeline window would create new objects on each repaint. (1142894)
- Fixed an issue causing info text to overlap when displaying multiple lines (when trimming + time scaling, for example). (1150863)
- Fixed duration mode not reverting from "Fixed Length" to "Based On Clips" properly. ([1154034](https://issuetracker.unity3d.com/product/unity/issues/guid/1154034/))
- Prevented the PlayableGraph from being created twice when playing a timeline in play mode with the Timeline window opened. (1147247)
- Fixed issue where an exception was thrown when clicking on a SignalEmitter with the Timeline window in asset mode. (1146261)
- A timeline will now be played correctly when building a player with Mono and Managed Stripping Level set higher than Low. ([1133182](https://issuetracker.unity3d.com/product/unity/issues/guid/1133182/))
- The Signal Asset creation dialog will no longer throw exceptions when canceled on macOS. ([1141959](https://issuetracker.unity3d.com/product/unity/issues/guid/1141959/))
- Fixed issue where the Emit Signal property on a Signal Emitter would not get saved correctly. ([1148709](https://issuetracker.unity3d.com/product/unity/issues/guid/1148709/))
- Fixed issue where a Signal Emitter placed at the start of a timeline would be fired twice. ([1149653](https://issuetracker.unity3d.com/product/unity/issues/guid/1149653/))
- Fixed record button state not updating when offset modes are changed. ([1142747](https://issuetracker.unity3d.com/product/unity/issues/guid/1142747/))
- Cleared invalid assets from the Timeline Clipboard when going into or out of PlayMode. (1144473)
- Copying a Control Clip during play mode no longer throws exceptions. (1141581)
- Going to Play Mode while inspecting a Track Asset will no longer throw exceptions. (1141958)
- Resizing Timeline's window no longer affects the zoom value. ([1147150](https://issuetracker.unity3d.com/product/unity/issues/guid/1147150/))
- Snap relaxing now responds to Command on Mac, instead of Control. (1149144)
- Clips will no longer randomly disappear when showing or hiding inline curves. (1141661)
- The global/local time referential button will no longer be shown for a top-level timeline. (1080872)
- Playhead will not be drawn above the bottom scrollbar anymore. (1134016)
- Fixed moving a marker on an Infinite Track will keep the track in infinite mode (1141190)
- Fixed zooming in/out will keep the padding at the beginning of the timeline (1030689)
- Fixed marker UI is the same color and size on infinite track (1139370)
- Fixed Disable the possibility to add Markers to tracks of a Timeline that is ReadOnly (1134463)
- Fixed wrong context menu being shown when right-clicking a marker (1133592)
- Fixed creation of override track to work with multiselection (1133592)
## [1.1.0] - 2019-02-14
*Compatible with Unity 2019.2*
### Added
- ClipEditor, TrackEditor and MarkerEditor classes users can derive from to control visual appearance of custom timeline clips, tracks and markers using the CustomTimelineEditor attribute.
- ClipEditor.GetSubTimelines to allow user created clips that support sub-timelines in editor
- TimelineEditor.selectedClip and TimelineEditor.selectedClips to set and retrieve the currently selected timeline clips
- IPropertyCollector.AddFromName override that takes a component.
- Warning icons to SignalEmitters when they do not reference an asset
- Ability to mute/unmute a Group Track.
- Mute/Unmute only selected track command added for tracks with multiple layers.
- Animate-able Properties on Tracks and Clips can now be edited through inline curves.
- Added loop override on AnimationTrack clips (1140766)
- ReadOnly/Source Control Lock support for Timeline Scene
### Changed
- Control Track display to show a particle system icon when particle systems are being controlled
- Animate-able Properties for clips are no longer edited using by "recording"; they are edited through the inline curves just like tracks.
- AudioTrack properties can now be animated through inline curves.
- Changed Marker show/hide to be undoable. Hide will also unselect markers. (1124661)
- Changed SignalReceivers show their enabled state in the inspector. (1131163)
- Changed Track Context Menu to show "Add Signal Emitter" at the top of the list of Marker commands. (1131166)
- Moved "Add Signal Emitter" and "Add Signal Emitter From Asset" commands out of their sub-menu. (1131166)
### Fixed
- Fixed markers being drawn outside their pane. (1124381)
- Fixed non-public tracks not being recognized by the Timeline Editor. (1122803)
- Fixed keyboard shortcuts for _Frame All_ (default: A) and _Frame Selected_ (default: F) to also apply horizontally ([1126623](https://issuetracker.unity3d.com/product/unity/issues/guid/1126623/))
- Fixed recording getting disabled when selecting a different GameObject while the Timeline Window is not locked. (1123119)
- Fixed time sync between Animation and Timeline windows when clips have non-default timescale or clip-in values. ([930909](https://issuetracker.unity3d.com/product/unity/issues/guid/930909/))
- Fixed animation window link not releasing when deleting the timeline asset. (1127425)
- Fixed an exception being raised when selecting both a Track marker and a Timeline marker at the same time. ([1113006](https://issuetracker.unity3d.com/product/unity/issues/guid/1113006/))
- Fixed the header marker area will so it no longer opens its context menu if it's hidden. (1124351)
- Fixed Signal emitters to show the Signals list when created on override tracks. (1102913)
- Fixed a crash on IL2CPP platforms when the VideoPlayer component is not used. (1129572)
- Fixed Timeline Duration changes in editor not being undoable. (1109279)
- Fixed _Match Offsets_ commands causing improper animation defaults to be applied. (911678)
- Fixed Timeline Inspectors leaving _EditorGUI.showMixedValue_ in the wrong state. ([1123895](https://issuetracker.unity3d.com/product/unity/issues/guid/1123895/))
- Fixed issue where performing undo after moving items on multiple tracks would not undo some items. (1131071)
- Fixed cog icon in the Signal Receiver inspector being blurry. (1130320)
- Fixed Timeline marker track hamburger icon not being centered vertically. (1131112)
- Fixed detection of signal receivers when track is in a group. (1131811)
- Fixed exception being thrown when deleting Signal entries. (1131065)
- Fixed Markers blocking against Clips when moving both Clips and Markers in Ripple mode. (1102594)
- Fixed NullReferenceException being thrown when muting an empty marker track. (1131106)
- Fixed SignalEmitter Inspector losing the Receiver UI when it is locked and another object is selected. (1116041)
- Fixed Marker and Clip appearing to be allowed to move to another track in Ripple mode. (1131123)
- Fixed issue where the Signal Emitter inspector did not show the Signal Receiver UI when placed on the timeline marker track. (1131811)
- Fixed Replace mode not drawing clips when moved together with a Marker. (1132605)
- Fixed inline curves to retain their state when performing undo/redo or keying from the inspector. ([1125443](https://issuetracker.unity3d.com/product/unity/issues/guid/1125443))
- Fixed an issue preventing Timeline from entering preview mode when an Audio Track is present an a full assembly reload is performed. (1132243)
- Fixed an issue where the Marker context menu would show a superfluous line at the bottom. (1132662)
- Fixed an issue preventing Timeline asset to be removed from a locked Timeline Window when a new scene is loaded. (1135073)
- Fixed EaseIn/Out shortcut for clips
## [1.0.0] - 2019-01-28
*Compatible with Unity 2019.1*
### Added
- This is the first release of Timeline, as a Package
- Added API calls to access all AnimationClips used by Timeline.
- Added support in the runtime API to Animate Properties used by template-style PlayableBehaviours used as Mixers.
- Added Markers. Markers are abstract types that represent a single point in time.
- Added Signal Emitters and Signal Assets. Signal Emitters are markers that send a notification, indicated by a SignalAsset, to a GameObject indicating an event has occurred during playback of the Timeline.
- Added Signal Receiver Components. Signal Receivers are MonoBehaviour that listen for Signals from Timeline and respond by invoking UnityEvents.
- Added Signal Tracks. Signal Tracks are Timeline Tracks that are used only for Signal Emitters.
### Fixed
- Signal Receiver will no longer throw exceptions when its inspector is locked ([1114526](https://issuetracker.unity3d.com/product/unity/issues/guid/1114526/))
- Context menu operations will now be applied on all selected tracks (1089820)
- Clip edit mode clutch keys will not get stuck when holding multiple keys at the same time (1097216)
- Marker inspector will be disabled when the marker is collapsed (1102860)
- Clip inspector will no longer throw exceptions when changing values when the inspector is locked (1115984)
- Fixed appearance of muted tracks (1018643)
- Fixed multiple issues where clips and markers were selectable when located under the time ruler and the marker header track ([1117925](https://issuetracker.unity3d.com/product/unity/issues/guid/1117925/), 1102598)
- A marker aligned with the edge of a clip is now easier to select (1102591)
- Changed behaviour of the Timeline Window to apply modifications immediately during Playmode ([922846](https://issuetracker.unity3d.com/product/unity/issues/guid/922846/), 1111908)
- PlayableDirector.played event is now called after entering or exiting Playmode ([1088918](https://issuetracker.unity3d.com/product/unity/issues/guid/1088918/))
- Undoing a paste track operation in a group will no longer corrupt the timeline (1116052)
- The correct context menu will now be displayed on the marker header track (1120857)
- Fixed an issue where a circular reference warning appeared in the Control Clip inspector even if there was no circular reference (1116520)
- Fixed preview mode when animation clips with root curves are used (case 1116297, case 1116007)
- Added option to disable foot IK on animation playable assets (case 1115652)
- Fixed unevaluated animation tracks causing default pose (case 1109118)
- Fixed drawing of Group Tracks when header is off-screen (case 876340)
- Fixed drag and drop of objects inside a group being inserted outside (case 1011381, case 1014774)

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4a0757ee0236f39489520769ae710288
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5486badfefef3eb47b45d071d232469d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using UnityEditor.ShortcutManagement;
using UnityEditor.Timeline.Actions;
using UnityEngine;
using UnityEngine.Timeline;
namespace DocCodeExamples
{
class ActionExamples_HideAPI
{
#region declare-sampleClipAction
[MenuEntry("Custom Actions/Sample clip Action")]
public class SampleClipAction : ClipAction
{
public override ActionValidity Validate(IEnumerable<TimelineClip> clip)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<TimelineClip> items)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleClipAction", KeyCode.K)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelectedClips<SampleClipAction>();
}
}
#endregion
#region declare-sampleMarkerAction
[MenuEntry("Custom Actions/Sample marker Action")]
public class SampleMarkerAction : MarkerAction
{
public override ActionValidity Validate(IEnumerable<IMarker> markers)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<IMarker> items)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleMarkerAction", KeyCode.L)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelectedMarkers<SampleMarkerAction>();
}
}
#endregion
#region declare-sampleTrackAction
[MenuEntry("Custom Actions/Sample track Action")]
public class SampleTrackAction : TrackAction
{
public override ActionValidity Validate(IEnumerable<TrackAsset> tracks)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<TrackAsset> tracks)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleTrackAction", KeyCode.H)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelectedTracks<SampleTrackAction>();
}
}
#endregion
#region declare-sampleTimelineAction
[MenuEntry("Custom Actions/Sample Timeline Action")]
public class SampleTimelineAction : TimelineAction
{
public override ActionValidity Validate(ActionContext context)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext context)
{
Debug.Log("Test Action");
return true;
}
[TimelineShortcut("SampleTimelineAction", KeyCode.Q)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelected<SampleTimelineAction>();
}
}
#endregion
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 617e6579183b7cc488aae748fe3f88bd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,21 @@
{
"name": "DocCodeExamples",
"rootNamespace": "",
"references": [
"GUID:f06555f75b070af458a003d92f9efb00",
"GUID:02f771204943f4a40949438e873e3eff"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": [
"UNITY_INCLUDE_TESTS"
],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9550f6b9c1ac87345a996c43f204fb30
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
using UnityEditor;
using UnityEditor.Timeline;
using UnityEngine;
namespace DocCodeExamples
{
class MarkerEditorExamples
{
void MarkerRegionExample(MarkerOverlayRegion region)
{
#region declare-trackRegion
GUI.BeginClip(region.trackRegion, -region.trackRegion.min, Vector2.zero, false);
EditorGUI.DrawRect(region.markerRegion, Color.blue);
GUI.EndClip();
#endregion
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ebaa79c245e369449a3565c4b9c3e703
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
using System.Collections.Generic;
using UnityEditor.ShortcutManagement;
using UnityEditor.Timeline;
using UnityEditor.Timeline.Actions;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
namespace DocCodeExamples
{
class TimelineAttributesExamples_HideAPI
{
#region declare-sampleTrackBindingAttr
[TrackBindingType(typeof(Light), TrackBindingFlags.AllowCreateComponent)]
public class LightTrack : TrackAsset { }
#endregion
#region declare-menuEntryAttribute
[MenuEntry("Simple Menu Action")]
class SimpleMenuAction : TimelineAction
{
public override ActionValidity Validate(ActionContext actionContext)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext actionContext)
{
return true;
}
}
[MenuEntry("Menu Action with priority", 9999)]
class MenuActionWithPriority : TimelineAction
{
public override ActionValidity Validate(ActionContext actionContext)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext actionContext)
{
return true;
}
}
[MenuEntry("My Menu/Menu Action inside submenu")]
class MenuActionInsideSubMenu : TimelineAction
{
public override ActionValidity Validate(ActionContext actionContext)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext actionContext)
{
return true;
}
}
#endregion
#region declare-timelineShortcutAttr
public class ShortcutAction : TimelineAction
{
public override ActionValidity Validate(ActionContext _)
{
return ActionValidity.Valid;
}
public override bool Execute(ActionContext _)
{
Debug.Log("Action executed.");
return true;
}
[TimelineShortcut("Test Action", KeyCode.K, ShortcutModifiers.Shift | ShortcutModifiers.Alt)]
public static void HandleShortCut(ShortcutArguments args)
{
Invoker.InvokeWithSelected<ShortcutAction>();
}
}
#endregion
#region declare-applyDefaultUndoAttr
[ApplyDefaultUndo]
public class SetNameToTypeAction : TrackAction
{
public override ActionValidity Validate(IEnumerable<TrackAsset> items)
{
return ActionValidity.Valid;
}
public override bool Execute(IEnumerable<TrackAsset> items)
{
foreach (TrackAsset track in items)
track.name = track.GetType().Name;
return true;
}
}
#endregion
#region declare-customStyleMarkerAttr
[CustomStyle("MyStyle")]
public class MyMarker : UnityEngine.Timeline.Marker { }
#endregion
#region declare-customTimelineEditorAttr
[CustomTimelineEditor(typeof(MyCustomClip))]
class MyCustomClipEditor : ClipEditor { }
#endregion
class MyCustomClip : PlayableAsset
{
public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
{
return Playable.Null;
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5724bf63aa724f5586275b3153a02a01
timeCreated: 1600894640

View File

@@ -0,0 +1,16 @@
using UnityEditor.Timeline;
namespace DocCodeExamples
{
class TimelineEditorExamples_HideAPI
{
void RefreshReasonExample()
{
#region declare-refreshReason
TimelineEditor.Refresh(RefreshReason.ContentsModified | RefreshReason.SceneNeedsUpdate);
#endregion
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6cd9f16fc29247c8af731c6b3b0a990f
timeCreated: 1600965115

View File

@@ -0,0 +1,17 @@
using UnityEngine;
using UnityEngine.Timeline;
namespace DocCodeExamples
{
class TrackAssetExamples_HideAPI
{
#region declare-trackAssetExample
[TrackColor(1, 0, 0)]
[TrackBindingType(typeof(Animator))]
[TrackClipType(typeof(AnimationClip))]
public class CustomAnimationTrack : TrackAsset { }
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c9f0489deaf04d0fbcbe45fd50a018f6
timeCreated: 1600894170

View File

@@ -0,0 +1,63 @@
* [Unity's Timeline](index.md)
* [Install Timeline](install.md)
* [Timeline Samples](samp-overview.md)
* [Customization Samples](samp-custom-samples.md)
* [Gameplay Sequence Demo](samp-gameplay-demo.md)
* [Timeline Workflows](wf-overview.md)
* [Create a Timeline asset and Timeline instance](wf-create-instance.md)
* [Record basic animation](wf-record-anim.md)
* [Convert an Infinite clip to an Animation clip](wf-convert-infinite.md)
* [Animate a humanoid](wf-anim-human.md)
* [Override upper-body animation](wf-anim-override.md)
* [Create a Sub-Timeline instance](wf-subtimeline.md)
* [Use markers and signals for footsteps](wf-signals.md)
* [Create a custom Notes marker](wf-custom-marker.md)
* [Timeline assets and instances](tl-overview.md)
* [Timeline window](tl-window.md)
* [Timeline Preview](tl-preview.md)
* [Timeline Playback Controls](tl-play-ctrls.md)
* [Timeline Selector](tl-selector-instance.md)
* [Timeline Options](tl-options.md)
* [Track List](trk-list-overview.md)
* [Track Header](trk-header.md)
* [Add tracks](trk-add.md)
* [Select tracks](trk-select.md)
* [Duplicate tracks](trk-duplicate.md)
* [Reorder tracks and Animation Priority](trk-reorder.md)
* [Group Tracks](trk-groups.md)
* [Delete Tracks](trk-delete.md)
* [Lock and Mute Tracks](trk-lock-mute.md)
* [Content view and Edit modes](clip-overview.md)
* [Pan and Zoom the Content view](clip-pan-zoom.md)
* [Add clips](clip-add.md)
* [Insert clips](clip-insert.md)
* [Select clips](clip-select.md)
* [Position clips](clip-position.md)
* [Tile clips](clip-tile.md)
* [Duplicate clips](clip-duplicate.md)
* [Trim clips](clip-trim.md)
* [Split clips](clip-split.md)
* [Reset clips](clip-reset.md)
* [Change clip play speed](clip-speed.md)
* [Set Gap Extrapolation](clip-gap-extrap.md)
* [Ease-in and ease-out clips](clip-ease.md)
* [Blend clips](clip-blend.md)
* [Match clip offsets](clip-match.md)
* [Curves View](curves-overview.md)
* [Use the Curves View](curves-using.md)
* [Manipulate keyframes](curves-keyframes.md)
* [Tangent modes and types](curves-tangents.md)
* [Timeline properties in the Inspector window](insp-overview.md)
* [Timeline asset properties](insp-tl-asset.md)
* [Track properties](insp-trk.md)
* [Activation track properties](insp-trk-act.md)
* [Animation track properties](insp-trk-anim.md)
* [Audio track properties](insp-trk-audio.md)
* [Clip properties](insp-clip.md)
* [Activation clip properties](insp-clip-act.md)
* [Animation clip properties](insp-clip-anim.md)
* [Audio clip properties](insp-clip-audio.md)
* [Control clip properties](insp-clip-control.md)
* [Timeline Preferences](tl-preferences.md)
* [Playable Director Component](playable-director.md)
* [Timeline Glossary](tl-glossary.md)

View File

@@ -0,0 +1,21 @@
# Add clips
The Timeline window supports different methods of adding clips to tracks, depending on the type of track, where you click, where you drag, and whether a clip or track is already selected.
The quickest method to add a clip is to right-click on an empty area within a track and choose the appropriate Add option from the context menu. Depending on the track, the options for adding a clip change.
![](images/tl-context-adding-act-clip.png)
_Context menu for adding an Activation clip._
There are other ways to add clips:
* Select a clip option from the More (⋮) menu in the Track Header to add a clip at the location of the Timeline Playhead.
* Drag an animation source asset from the Project window to an empty area in the Timeline window to automatically create an Animation track and add an Animation clip.
* Drag an animation source asset from the Project window to an existing track in the Timeline window to add an Animation clip to the same track.
* Drag an audio source asset from the Project window to an empty area in the Timeline window to automatically create an Audio track and add an Audio clip.
* Drag a GameObject with a PlayableDirector component to create a Sub-Timeline instance. This automatically creates a Control track and adds a Control clip for the Sub-Timeline instance.
* Drag a Prefab from the Project window to an empty area in the Timeline window to add a Prefab instance to your Timeline instance. This automatically creates a Control track and adds a Control clip for the Prefab instance.
* Drag a GameObject with a Particle component to add a particle effect to your Timeline instance. This automatically creates a Control track and adds a Control clip for the duration of the Particle effect.
When you add a clip, the [selected Edit mode](clip-overview.md) determines how the added clip interacts with surrounding and intersecting clips. For example, if you add an Animation clip at the location of the Timeline Playhead, the added clip could blend, ripple, or replace clips on the same track.

View File

@@ -0,0 +1,35 @@
# Blend clips
Blend two clips on the same track to create a smooth transition between two Animation clips, two Audio clips, or two Playable clips. To blend two clips, select the Mix Edit mode and position or trim one clip until it overlaps an adjacent clip.
![](images/tl-clip-blend-area.png)
**(A)** The Mix Edit mode.<br/>
**(B)** The blend area displays the transition between the outgoing clip and incoming clip.<br/>
In a blend, the first clip is referred to as the **outgoing clip** and the second clip is referred to as the **incoming clip**. The area where the outgoing clip transitions to the incoming clip is referred to as the **blend area**. The blend area sets the duration of the transition.
Although the Content view represents a blend area as a single linear curve, the transition between clips is actually comprised of two blend curves. The blend curve for the outgoing clip is referred to as the **Blend Out** curve. The blend curve for the incoming clip is referred to as the **Blend In** curve. By default, each blend curve is automatically set to an ease-in and ease-out curve.
In the Inspector window, the label for the **Ease In Duration** or **Ease Out Duration** property changes to **Blend In Duration** or **Blend Out Duration** if either affects a blend. The blend duration properties cannot be edited when labelled **Blend In Duration** or **Blend Out Duration** because the duration of the blend area is only editable in the Content view.
![](images/insp-blend-curves.png)
**(A)** The **Ease Out Duration** property changes to **Blend Out Duration** because there is a blend between this clip and the next clip.<br/>
**(B)** Use Blend Curves to customize the transition between clips.<br/>
Use the **Blend Curves** in the Inspector window to change the shape for either the Blend In curve, labelled **In**, or Blend Out curve, labelled **Out**. The Inspector window only lets you edit the properties of one clip at a time. You cannot simultaneously customize both blend curves used in the same blend area.
To customize either the Blend Out curve or Blend In curve, use the drop-down menu to switch from **Auto** to **Manual**. With **Manual** selected, the Inspector window displays a preview of the blend curve. Click the Curve Preview to open the Curve Editor in the Inspector window.
![](images/insp-blend-curve-editor.png)
**(A)** Curve Preview.<br/>
**(B)** Click the Curve Editor header to expand or minimize the Curve Editor.<br/>
**(C)** Use the Curve Editor menu to minimize, maximize, or open the Curve Editor in its own Preview window.<br/>
Use the Curve Editor to customize the shape of the blend curve. By default, the blend curve includes a keyframe at the beginning of the curve and a keyframe at the end of the curve. The Curve Editor provides the following different methods of modifying the blend curve:
* Select a shape template from the bottom of the Curve Editor. The available shape templates differ depending on whether you are modifying the Blend In curve or the Blend Out curve.
* Double-click a location on the blend curve to add a new keyframe.
* Select a keyframe and use its tangent handles to adjust the interpolation between keyframes.

View File

@@ -0,0 +1,23 @@
# Duplicate clips
There are many ways to duplicate clips in the Content view:
* Select a clip or multiple clips. Right-click in the Content view and choose **Duplicate** from the context menu.
* Select a clip or multiple clips. Hold Control (MacOS: Command) and press D.
* Right-click an unselected clip and choose **Duplicate** from the context menu.
Duplicating clips copies each selected clip and places the duplicates after the last clip on the same track. If you duplicate clips used in a blend or clips separated by a gap, the blend or gap is also duplicated.
If you duplicate an Animation clip that uses a recorded clip as its source asset, the recorded clip is also duplicated. This duplicate only appears in your Project window after you save the Scene or Project. For example, the following images demonstrates what happens if you duplicate an Animation clip named `Clip 2B` that uses the recorded clip named `Recorded (3)`.
![](images/tl-dup-clip-before.png)
_Select the `Clip 2B`, hold Control (MacOS: Command) and press D to duplicate_
![](images/tl-dup-clip-after.png)
_A duplicate Animation clip is placed at the end of the same track. The recorded clip associated with `Clip 2B` is also duplicated._
![](images/prog-dup-recorded-clip.png)
_The new `Recorded (6)` recorded clip appears in the Project window after you save the Scene or Project_

View File

@@ -0,0 +1,39 @@
# Ease-in and ease-out clips
Ease-in and ease-out a clip to create a smooth transition between a clip and its surrounding gaps. To create an ease-in or ease-out transition, select a clip and, in the Inspector window, set either the **Ease In Duration** or the **Ease Out Duration**.
![](images/insp-ease-in-out.png)
_Use Ease In Duration and Ease Out Duration to smoothly transition into and out of the selected clip._
Ease-in and ease-out transitions create different effects, depending on the track:
* On an Animation track or an Animation Override track, ease-in to an Animation clip to create a smooth transition between the animation in the gap before the clip and the Animation clip. Ease-out of an Animation clip to create a smooth transition between the Animation clip and the animation in the gap after the clip. To understand which animation occurs in the gap before or after an Animation clip, consult [Setting gap extrapolation](clip-gap-extrap.md).
* On an Audio track, ease-in to an Audio clip to fade in the volume of the audio waveform. Ease-out of an Audio clip to fade out the volume of the audio waveform specified by the Audio clip.
* On a Playable track, ease-in to a Playable clip to fade in its custom asset. Ease-out of a Playable clip to fade out its custom asset.
![](images/tl-clip-ease-in-out.png)
_Ease-in and ease-out an Animation clip to transition between its animation and its gaps_
Although the Content view represents each ease-in or ease-out transition as a linear curve, every transition is actually set to a gradual ease-in or ease-out curve by default. To change the shape of either the ease-in curve (labelled **In**) or the ease-out curve (labelled **Out**), use the **Blend Curves** in the Inspector window.
![](images/insp-ease-blend-curves.png)
_Use the Blend Curves to customize ease-in or ease-out transitions_
To customize either the ease-in or ease-out transition, use the drop-down menu to switch from **Auto** to **Manual**. With **Manual** selected, the Inspector window displays a preview of the blend curve. Click the curve preview to open the Curve Editor below the Inspector window.
![](images/insp-curve-editor.png)
_Select Manual and click the preview to open the Curve Editor_
The Curve Editor is the same editor that is used to customize the shape of the blend curves when [blending between clips](clip-blend.md).
Note that the **Blend Curves** could affect the blend area used for blending between two clips. The label for the **Ease In Duration** or **Ease Out Duration** properties changes to **Blend In Duration** or **Blend Out Duration** if either effects a blend. In addition, the blend duration properties cannot be edited when they are labelled **Blend In Duration** or **Blend Out Duration** because the duration of the blend area is only editable in the Clips area.
When creating an ease-in or an ease-out transition with Animation clips, the Animation clip blends between its gaps and the Animation clip. The following factors affect the values of animated properties in the gaps surrounding an Animation clip:
* The [pre-extrapolate and post-extrapolate settings](clip-gap-extrap.md) for the Animation clip and for other Animation clips on the same track.
* Animation clips on other Animation tracks that are bound to the same GameObject.
* The position or animation of the GameObject in the Scene, outside the Timeline asset.

View File

@@ -0,0 +1,53 @@
# Set gap extrapolation
Gap extrapolation refers to how an Animation track approximates animation data in the gaps before and after an Animation clip.
The main purpose for extrapolating animation data in the gaps between Animation clips is to avoid animation anomalies. Depending on the GameObject bound to the Animation track, these anomalies could be a GameObject jumping between two transformations, or a humanoid jumping between different poses.
Each Animation clip has two gap extrapolation properties:
* **Pre-Extrapolate**, which controls how animation data is approximated in the gap before an Animation clip.
* **Post-Extrapolate**, which controls how animation data extends in the gap after an Animation clip.
By default, Timeline sets both extrapolation properties to **Hold**. This sets the gap before the Animation clip to the animation on the first frame, and the gap after the Animation clip to the animation on the last frame. Each gap holds the animation at a certain frame. Icons before and after an Animation clip indicate the selected extrapolation modes.
![](images/tl-extrap-pre-post-hold.png)
_Icons indicate the pre-extrapolate and post-extrapolate modes_
When an Animation track contains a gap between two Animation clips, the **Post-Extrapolate** property of the left clip sets the gap extrapolation by default. If the **Post-Extrapolate** property of the clip to the left of a gap is set to **None**, the **Pre-Extrapolate** property of the right clip sets the gap extrapolation. Icons before and after Animation clips indicate whether the extrapolation for a gap is taken from the **Post-Extrapolate** property of the clip to the left or from the **Pre-Extrapolate** property of the clip to the right.
![](images/tl-extrap-two-tracks.png)
**(A)** The gap extrapolation is taken from the the Post-Extrapolate property of the left clip.<br/>
**(B)** The gap extrapolation is taken from the Pre-Extrapolate property of the right clip.
To change the Pre-Extrapolate and Post-Extrapolate properties, select the Animation clip and use the Animation Extrapolation properties in the Inspector window.
![](images/insp-pre-post-extrap.png)
_Use Pre-Extrapolate and Post-Extrapolate to set the extrapolation modes for the selected Animation clip_
The Pre-Extrapolate property is hidden when one of the following is true:
* The gap before the Animation clip is set by the Post-Extrapolation mode of the previous clip.
* There is no gap before the Animation clip.
Use the Pre-Extrapolation property to set the gap extrapolation of the gap before the selected Animation clip. The following table describes each pre-extrapolation mode.
|**Icon/Name** |**Description** |
|:---|:---|
|**None**<br/>(no icon)|Turns off pre-extrapolation. In the gap before the selected Animation clip, the GameObject uses its transform, pose, or state from the Scene. Select **None** if, for example, you want to create an ease-in between the motion of a GameObject in the Scene and an Animation clip. Consult [Easing-in and Easing-out Clips](clip-ease.md).|
|![](images/icon-gap-hold.png)<br/>**Hold**<br/>(default)|In the gap before the selected Animation clip, the GameObject bound to the Animation track uses the values assigned at the start of the Animation clip.|
|![](images/icon-gap-loop.png)<br/>**Loop**|Turns off pre-extrapolation. In the gap before the selected Animation clip, the GameObject uses its transform, pose, or state from the Scene. Select **None** if, for example, you want to create an ease-in between the motion of a GameObject in the Scene and an Animation clip. Consult [Easing-in and Easing-out Clips](clip-ease.md) for details.|
|![](images/icon-gap-pingpong.png)<br/>**Ping Pong**|In the gap before the selected Animation clip, the GameObject bound to the Animation track repeats the entire animation forwards, then backwards. Use the **Clip In** property to offset the start of the loop. Changing the **Clip In** property affects the start of the loop when looping forward, and the end of the loop when looping backwards.|
|![](images/icon-gap-continue.png)<br/>**Continue**|In the gap before the selected Animation clip, the GameObject bound to the Animation track either holds or loops the animation based on the settings of its source asset. For example, if the selected Animation clip uses the motion file `Recorded(2)` as its source asset and `Recorded(2)` is set to **Loop**, then selecting **Continue** loops the animation according to the `Recorded(2)` Loop Time settings.|
Use the Post-Extrapolate property to set the gap extrapolation of the gap after the selected Animation clip. The following table describes each post-extrapolation mode.
|**Icon/Name** |**Description** |
|:---|:---|
|**None**<br/>(no icon)|Turns off post-extrapolation. In the gap after the selected Animation clip, the GameObject uses its transform, pose, or state from the Scene. Selecting **None** is useful if, for example, you want to create an ease-out between an Animation clip and the motion of a GameObject in the Scene. Consult [Easing-in and Easing-out Clips](clip-ease.md) for details.|
|![](images/icon-gap-hold.png)<br/>**Hold**<br/>(default)|In the gap after the selected Animation clip, the GameObject bound to the Animation track uses the values assigned at the end of the Animation clip.|
|![](images/icon-gap-loop.png)<br/>**Loop**|In the gap after the selected Animation clip, the GameObject bound to the Animation track repeats the entire animation as a forward loop: from start to end. To offset the start of the loop, use the **Clip In** property..|
|![](images/icon-gap-pingpong.png)<br/>**Ping Pong**|In the gap after the selected Animation clip, the GameObject bound to the Animation track repeats the entire animation forwards, then backwards. Use the **Clip In** property to offset the start of the loop. Changing the **Clip In** property affects the start of the loop when looping forward, and the end of the loop when looping backwards.|
|![](images/icon-gap-continue.png)<br/>**Continue**|In the gap after the selected Animation clip, the GameObject bound to the Animation track either holds or loops the animation based on the settings of its source asset. For example, if the selected Animation clip uses the motion file `Recorded(2)` as its source asset and `Recorded(2)` is set to **Loop**, then selecting **Continue** loops the animation according to the `Recorded(2)` Loop Time settings.|

View File

@@ -0,0 +1,24 @@
# Insert clips
The Timeline window supports different methods of inserting clips depending on the type of track, where you click, and whether a clip or track is already selected. In the Timeline window, inserting clips refers to adding and making space for a clip without blending or replacing intersecting clips.
To accurately insert a clip, select Ripple mode as the Edit mode, and position the Timeline Playhead to set the insertion point. Select **Add From Animation Clip** from the More (⋮) menu for the track where you want to insert the clip.
![](images/spec-tl-insert-clip-before.png)
_Accurately insert a clip with the Ripple mode (A), the Timeline Playhead (B), and Add From Animation Clip in the More (⋮) menu (C)_
In the above example, the Timeline Playhead is the insertion point. You can specify the insertion point using these other methods:
* Right-click within a gap and add a clip with the context menu. The insertion point is where you right-click.
* Drag a source asset (animation or audio) to a track in the Content view. The insertion point is where you release dragging.
The location of the insertion point determines where the clip is inserted and how it affects the other clips and gaps on the same track:
* If the insertion point intersects a clip, the inserted clip is added at the insertion point. The intersected clip, and all subsequent clips and gaps, are rippled after the inserted clip.
* If the insertion point is within a gap and there is enough space between the insertion point and the next clip, then the inserted clip is added to the gap. The other clips on the track are not affected.
* If the insertion point is within a gap and the inserted clip overlaps the next clip, the inserted clips is added at the insertion point. The next clip, and all subsequent clips and gaps, are rippled to accommodate the inserted clip.
![](images/tl-insert-clip-after.png)
_For example, inserting a clip at the Timeline Playhead, in the gap between Clip 1A and Clip 1B, ripples Clip 1B to accommodate the 72 frame Walk clip_

View File

@@ -0,0 +1,46 @@
# Match clip offsets
Every Animation clip contains keyframe animation, or motion, that animates a GameObject, or character, bound to the Animation track.
When you add an Animation clip to an Animation track, its animation or motion does not automatically begin where the previous clip ends. By default, each Animation clip begins at the position and rotation of the GameObject, or character, at the start of the Timeline instance.
For example, three Animation clips create an animation sequence where a character walks (`Walk`), turns around and stops (`TurnLeft`), then walks to a jog (`Wk-Jog`).
![](images/tl-match-clips-before.png)
_An animation sequence of three Animation clips: `Walk`, `TurnLeft`, `Wk-Jog`._
When first added, each Animation clip starts at the position and rotation of the character at the start of the Timeline instance. The following illustration shows the end of each Animation clip.
![](images/scene-prematch-clips.png)
**(A)** The start of the Timeline instance.</br>
**(B)** The end of the `Walk` Animation clip.</br>
**(C)** The end of the `TurnLeft` Animation clip.</br>
**(D)** The end of the `Wk-Jog` Animation clip.</br>
For an animation sequence to flow seamlessly, the start position and rotation of each Animation clip must match the end position and rotation of the previous Animation clip.
These position and rotation offsets are named **Clip Transform Offsets** and they [can be set manually in the Inspector window](insp-clip-anim.md) or automatically. The following sections describe how to automatically set clip offsets by matching two or more Animation clips.
## Match two clips
To match the clip offsets between two clips, right-click the Animation clip that you want to match. From the context menu, select either **Match Offsets to Previous Clip** or **Match Offsets to Next Clip**.
![](images/spec-tl-match-next.png)
_Matching an Animation clip with the next clip_
For example, right-click the middle Animation clip, named `TurnLeft`, and choose **Match Offsets To Next Clip** to match its offsets to the next clip. This selects the clip, then matches the end of the middle clip with the start of next clip.
The context menu only displays the match options available for the selected Animation clip. For example, if the first clip, `Walk` is selected, only the **Match Offsets to Next Clip** menu item is available.
## Match many clips
To match the clip offsets of many clips, select the adjacent Animation clips that you want to match and right-click one of the selected clips. From the context menu, select either **Match Offsets to Previous Clip** or **Match Offsets to Next Clip**.
![](images/spec-tl-match-many.png)
_Matching many clips with previous clips_
For example, select the `TurnLeft` and `Wk-Jog` clips. Right-click one of the selected clips and choose **Match Offsets to Previous Clip**. This matches the `TurnLeft` clip with the previous `Walk` clip and matches the `Wk-Jog` clip with the previous `RunLeft` clip.

View File

@@ -0,0 +1,108 @@
# Content view and Edit modes
Use the Content view to add, position, and manage the clips and markers on each track in the Timeline asset or Timeline instance. The selected Edit mode determines how clips and markers interact with each other when you add, position, trim, resize, or delete them.
![](images/tl-edit-mode-clips-view.png)
**(A)** Edit modes<br/>
**(B)** Content view<br/>
## Clips and the Content view
In the Content view, each clip has a colored accent line that identifies the type of clip:
* Activation clips are green.
* Animation clips are blue.
* Audio clips are orange.
* Control clips are turquoise.
* Playable clips are white.
A clip with a source asset, such as an Animation clip or an Audio clip, displays arrows that indicate when the clip excludes part of its source animation, audio waveform, or other source content.
For example, if an Animation clip uses only part of its full animation, white arrows indicate that keyframes exists before the start or after the end of the clip.
![](images/tl-clip-arrows.png)
_Small arrows (red) indicate that data exists before the start or after the end of the area defined by the clip_
There are many ways to resize a clip and view its hidden source data:
* Drag the start or end of the clip to [trim its start or end](clip-trim.md).
* Select the clip and modify its clip timing properties in the Inspector window.
* Right-click the clip and choose **Match Content** from the context menu.
When you resize a clip, the selected Edit mode determines how the surrounding clips are affected.
## Clips and Edit modes
Select an Edit mode to choose how clips are added, positioned, and trimmed in the Content view. The Edit mode is also used when you modify clip timing properties in the Inspector window. There are three Edit modes that affect most clip editing features.
![](images/anno-clip-modes-all.png)
_Edit modes are [Mix mode](#mixmode) (default and selected), [Ripple mode](#ripplemode), and [Replace mode](#replacemode)_
You can temporarily switch between Edit modes. This is useful if, for example, you want to temporarily use Ripple mode to offset the content of a track while you position clips. To temporarily switch between Edit modes, hold down the following keyboard keys:
* Hold down 1 to temporarily switch to Mix mode.
* Hold down 2 to temporarily switch to Ripple mode.
* Hold down 3 to temporarily switch to Replace mode.
<a name="mixmode"></a>
### Mix mode
Use Mix mode to add, position, and trim clips without moving or replacing adjacent clips. Mix mode creates blends between intersecting clips. Mix mode is the default Edit mode.
![](images/anno-clip-modes-mix.png)
_Timeline window with Mix mode as the selected Edit mode._
In Mix mode, when you hover over a clip in the Content view, the cursor changes to indicate the action that you can perform. The action depends on the part of the clip that you hover over:
* When you hover over the start of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the start of the clip.
* When you hover over the middle of a clip, the cursor changes to a position cursor. The position cursor indicates the area to drag to position the clip.
* When you hover over the end of a selected clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the end of the clip.
In Mix mode, if you drag to trim or position a clip and it intersects another clip, the cursor changes to a white arrow that points towards the blend being created. There are three possible cursors depending on whether the blend is created at the beginning of the clip, at the end of the clip, or at both the beginning and end of the clip. The clip and the blend are also outlined in white.
![](images/tl-drag-create-blend.png)
_For example, the white arrow cursor and white outline indicates that dragging Clip `2A` to the right creates a blend, at the end of the clip, between Clip `2A` and Clip `2B`._
<a name="ripplemode"></a>
### Ripple mode
Use Ripple mode to add, position, and trim a clip while affecting the subsequent clips on the same track. Positioning or trimming clips in Ripple mode preserves the gaps between subsequent clips.
![](images/anno-clip-modes-ripple.png)
_Timeline window with Ripple mode as the selected Edit mode._
In Ripple mode, when you hover over a clip in the Content view, the cursor changes to indicate the action that you can perform. The actions and areas are similar to Mix mode:
* When you hover over the start of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its start.
* When you hover over the middle of a clip, the cursor changes to a position cursor. The position cursor indicates the area to drag to position the clip.
* When you hover over the end of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its end.
In Ripple mode, when you drag to trim or position a clip, the cursor switches to a yellow arrow that points towards the affected clips and gaps. A yellow line indicates the ripple point. When you drag to trim a clip, dragging left and right changes the duration of the selected clip and repositions subsequent clips and gaps after the ripple point.
![](images/tl-drag-start-ripple.png)
_For example, the yellow arrow cursor indicates that dragging Clip `2A` affects the clips and gaps to the right, after the ripple point._
<a name="replacemode"></a>
### Replace mode
Use Replace mode to add, position, and trim a clip while cutting or replacing intersecting clips.
![](images/anno-clip-modes-replace.png)
_Timeline window with Replace mode as the selected Edit mode._
In Replace mode, when you hover over a clip in the Content view, the cursor changes to indicate the action that you can perform. The actions and areas are similar to Mix mode:
* When you hover over the start of a selected clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its start.
* When you hover over the middle of a clip, the cursor changes to a position cursor. The position cursor indicates the area to drag to position the clip.
* When you hover over the end of a clip, the cursor changes to a trim cursor. The trim cursor indicates the area to drag to trim the clip relative to its end.
In Replace mode, when you drag to position a clip, the clip becomes transparent so that you can view overlapping clips. If the clip being positioned overlaps other clips, releasing the clip cuts the underlying clip at each overlap.
In Replace mode, when you drag to trim a clip and it intersects another clip, the cursor changes to a red arrow and a red replacement line indicates where clips overlap. Releasing the trim cuts the overlapping clip at the red replacement line.

View File

@@ -0,0 +1,26 @@
# Pan and zoom the Content view
Use either the keyboard or the zoombar to pan and zoom the Content view. There are many ways to pan, zoom, or frame clips and markers in the Content view:
* To pan, either middle-click and drag, or hold Alt (MacOS: Option) and drag.
* To frame selected clips and markers, [select clips](clip-select.md) then press F.
* To frame all clips and markers, press A. Or, press F with no clips or markers selected.
* To zoom horizontally, move the scroll-wheel. Or, press = to zoom-in and - to zoom-out.
* To zoom vertically, hold Control (MacOS: Command) and move the scroll-wheel.
When you horizontally zoom the Content view, the zoombar indicates the level of zoom. The zoombar is the horizontal bar at the bottom of the Content view that zooms and pans the section of the Timeline instance or Timeline asset displayed in the Content view.
![](images/anno-zoombar.png)
_The Timeline zoombar_
**(A)** Left zoombar handle<br/>
**(B)** The zoombar thumb is the area between the two zoombar handles<br/>
**(C)** Right zoombar handle<br/>
**(D)** The white line indicates the location of the Timeline Playhead. Use this line to view the location of the Timeline Playhead relative to the zoom level and the part of the Timeline instance displayed in the Content view. The Timeline Playhead, and the white line, only appears for Timeline instances.<br/>
There are many ways to pan and zoom with the Timeline zoombar:
* To pan, drag the zoombar thumb left or right.
* To jump to a section of the Timeline instance or Timeline asset, click an empty area of the scrollbar, on either side of the zoombar.
* To zoom-in or zoom-out, drag either zoombar handle. Dragging a zoombar handle also resizes the zoombar thumb.

View File

@@ -0,0 +1,59 @@
# Position clips
To position a clip, select Mix mode as the Edit mode. Select a clip and hover over it. When the cursor is a standard arrow cursor, click and drag the clip to its new position.
While dragging, black lines indicate the selection of clips being positioned. The Timeline ruler displays the start time and end time of the selected clips being positioned.
![](images/tl-clip-mix-positioning.png)
_Select Mix mode (A). Select and drag to position a clip (B)._
By default, when you drag to position clips, both Snap to Frame and Edge Snap are enabled in the Content view. You can change these snap settings in the [Timeline Options](tl-options.md) menu.
You can also move a clip to another track of the same type. Drag the clip off of its current track and a white ghost indicates where the clip will be moved. If you drag a clip to an area where the clip cannot be placed, the ghost changes to red indicating that you cannot release the clip in that area. For example, you cannot drag a clip where there is no track.
![](images/tl-clip-position-invalid.png)
_The ghost of the selection being moved is drawn in red if you attempt to move a clip to an invalid area_
You can position a selection of clips on the same track, or on different tracks. You are not limited to positioning one clip at a time. The same edge snapping rules and invalid area restrictions apply when positioning a selection of clips on many tracks.
## Position clips with the Inspector window
Use the [Inspector window to accurately position clips](insp-clip.md). To position a clip with the Inspector window, select a clip and use the Clip Timing properties to change its **Start** property.
![](images/insp-clip-anim-timing.png)
_Clip Timing properties for an Animation clip_
The impact that changing the Start value has on adjacent clips depends on the selected Edit mode.
## Position clips in different Edit modes
You are not restricted to positioning clips with Mix mode as the selected Edit mode. You can also position clips in Ripple mode and in Replace mode. The difference is the impact each Edit mode has on adjacent clips on the tracks where clips are being moved:
* Position clips in Mix mode to create blends between intersecting clips.
* Position clips in Ripple mode to ripple subsequent clips, respecting the gaps between clips.
* Position clips in Replace mode to cut or replace intersecting clips.
## Position clips with the Timeline Playhead
You can position clips by inserting frames at the position of the Timeline Playhead. To do this, follow these steps:
1. move the Timeline Playhead to where you want to insert frames.
![](images/tl-playhead-insert-before.png)
_For example, to insert frames starting at frame 40, move the Timeline Playhead to frame 40_
2. Right-click the Timeline Playhead on the Timeline ruler above the Content view, select **Insert** &gt; **Frame**, and a number of frames.
![](images/tl-playhead-insert-menu.png)
_To insert 25 frames, right-click the Timeline Playhead and choose **Insert** &gt; **Frame** &gt; **25 Frames**_
This inserts frames in the Timeline instance at the position of the Timeline Playhead. Inserting frames only repositions the clips that start after the position of the Timeline Playhead.
![](images/tl-playhead-insert-25-after.png)
_In this example, inserting 25 frames at frame 40 affects Clip `1B`, Clip `2B`, and Clip `2C`._

View File

@@ -0,0 +1,18 @@
# Reset clips
You can reset the duration and speed of a clip. Resetting a clip does not reset the following properties:
* Start
* Ease In Duration and Ease Out Duration
* Animation Extrapolation settings
* Blend Curves
To reset a clip, right-click the clip and choose **Editing** from the context menu. Then, select **Reset Duration**, **Reset Speed**, or **Reset All**. Depending on the reset option you select, resetting a clip does the following:
|**Option:** |**Description:** |
|:---|:---|
|**Reset Duration**|Resets the Duration and the Clip In.|
|**Reset Speed**|Resets the Speed Multiplier.|
|**Reset All**|Resets the Duration, Clip In, and Speed Multiplier.|
If resetting a clip results in two clips overlapping each other, Timeline creates a blend for the overlap, regardless of the selected Edit mode.

View File

@@ -0,0 +1,53 @@
# Select clips
The Timeline window supports many different methods of selecting clips depending on where you click, where you drag, and whether a clip or track is already selected.
The easiest method is to click a clip to select it. The Content view displays the selected clip with a white border, including its blends. Selecting a clip deselects all other tracks or clips.
Selecting a clip also displays its properties in the Inspector window. The clip properties change depending on the type of clip and whether multiple clips are selected. Consult [Setting Clip properties](insp-clip.md) for details.
## Select many clips
Hold Shift and click to select contiguous clips vertically on different tracks or horizontally on the same track. For example, to select three contiguous clips on the same track, select the first clip, then hold Shift and click the third clip. All three clips are selected.
![](images/tl-clip-select-first.png)
_Click to select the first clip, `2A`_
![](images/tl-clip-select-last.png)
_Shift-click the third clip, `2C`, to select contiguous clips (`2A`, `2B`, and `2C`) on the same track_
Hold Control (MacOS: Command) and click to select discontiguous clips. Hold Control (MacOS: Command) and click a selected clip to deselect it.
## Select clips with a selection rectangle
Click and drag on an empty area in the Content view to draw a selection rectangle. This selects all clips inside or that intersect the rectangle. Hold Shift and draw a selection rectangle to add clips to the current selection.
## Select clips with the Tab key
You can also press the Tab key to select clips. The behavior of the Tab key changes depending on the current selection:
* If a track is selected, press Tab to select the first clip on the selected track.
* If many discontiguous tracks are selected, press Tab to select the first clip on the last selected track.
* If a clip is selected, press Tab to [select its track](trk-select.md).
* If there are no clips or tracks selected, press Tab to select the first clip on the first track.
## Select clips with arrow keys
Use the arrow keys to change the selected clips. The behavior and results depend on the current selection and which modifier keys you press:
* If nothing is selected in the Timeline window, press the Tab, Up arrow, or Down arrow key to select the first clip on the first track.
* If a clip is selected, press the Left arrow key to select the previous clip. If the selected clip is the first clip on the track, the Left arrow key selects the track.
* If a clip is selected, press the Right arrow key to select the next clip. Press the Up arrow key to select the closest clip on the previous track. Press the Down arrow key to select the closest clip on the next track.
* Hold Shift and press either the Left arrow key or Right arrow key to add or remove clips from the selection of clips. Whether a clip is added to or removed from the selection of clips is relative to the first selected clip. This selection method only selects or unselects clips on the same track.
When using arrow keys to change selected clips, the Content view pans to display the most recently selected clip if it outside the Content view. For example, if the selected clip is framed in the Content view and you press the Right arrow key to select the next clip that is outside the Content view, the Content view pans to display the start of the selected clip.
## Select clips with the Timeline Playhead
You can also select clips with the Timeline Playhead. Right-click the Timeline Playhead and choose a selection option. This selects clips that either start after, start before, end after, end before, or intersect the Timeline Playhead. Clips are selected on all tracks.
![](images/tl-playhead-select-menu.png)
_Right-click the Timeline Playhead and choose **Select** for more clip selection options_

View File

@@ -0,0 +1,30 @@
# Change clip play speed
Change the clip play speed to accelerate or decelerate its audio, animation, or particle effect. Changing the clip play speed affects the duration of the clip. You can only change the play speed for Animation clips, Audio clips, and Control clips.
To change the clip play speed, first, select the Edit mode to determine how other clips on the same track are affected:
* If the change in duration results in two clips that overlap each other:
* Select Mix mode to create a blend.
* Select Replace mode to cut or remove intersecting clips.
* Select Ripple mode to reposition the clips that start after the clip being sped up or slowed down. Ripple mode also preserves the gaps between clips.
Select the clip and set the **Speed Multiplier** property in the Inspector window. The **Speed Multiplier** property displays the play speed as a multiplier of the original clip speed.
![](images/insp-speed-multipler.png)
_Speed Multiplier in the Inspector window_
When the **Speed Multiplier** is set to 1, the clip plays at its original speed. To double the play speed, change the **Speed Multiplier** to 2. This changes the duration of the clip. For example, doubling the play speed of a 180 frame Animation clip changes its duration to 90 frames.
![](images/tl-victory-double-speed.png)
_A short-dashed line and multiplication factor of 2.00x indicates a clip playing at double its original speed_
There are other ways to change the play speed of a clip:
* Right-click the clip and choose **Editing** &gt; **Double Speed** to halve the clip duration. The clip plays at twice its current speed. A short-dashed line and a multiplication factor indicates an accelerated clip. Doubling the clip speed sets the **Speed Multiplier** property to double its current value.
* Right-click the clip and choose **Editing** &gt; **Half Speed** to double the clip duration. The clip plays at half its current speed. A long-dashed line and multiplication factor indicates a decelerated clip. Halving the clip speed sets the **Speed Multiplier** property to half its current value.
* Right-click the clip and choose **Editing** &gt; **Reset Speed** to reset the clip to its original speed. This is the original duration of the clip. Resetting the clip speed sets the **Speed Multiplier** property to 1.
**Note:** The clip play speed only recognizes positive values 0.001 and greater. You cannot set the clip play speed to a negative value. This does not, for example, play an Animation clip in reverse.

View File

@@ -0,0 +1,22 @@
# Split clips
You can split a clip into two identical clips that have different start points, end points, and durations.
To split a clip:
1. Select the clip.
1. Position the playhead where you want to split the clip.
1. Either right-click the clip and choose **Editing** &gt; **Split**, or press S.
Selected clips that intersect the playhead are split into separate clips. You can position, trim, and edit split clips independently.
![](images/tl-split-before.png)
_Select the clips to be split, position the playhead where you want the split to occur, and press S_
![](images/tl-split-after.png)
_Selected clips are split where each clip intersects the playhead_
If a split clip is part of a blend, or if the split is performed within a blend, Timeline copies the blend settings to the split clips.
If you split an Animation clip that uses a recorded clip as its source asset, the recorded clip is also copied. This copied recorded clip only appears in your Project window after you save the Scene or Project.

View File

@@ -0,0 +1,15 @@
# Tile clips
Tile clips to remove gaps and blends between clips on the same track. Tiling clips is useful if you want each clip to begin exactly where the previous clip ends. If you select multiple clips on multiple tracks, you must select at least two clips on the same track for tiling to have an affect.
To tile clips, select at least two clips on the same track.
![](images/tl-tile-clip-selection.png)
_Three clips with gaps and blends are selected_
Right-click on one of the selected clips and choose Tile from the context menu. Timeline positions the selected clips based on the position of the first selected clip. The first selected clip does not move, and the duration of each clip remains the same.
![](images/tl-tile-clip-result.png)
_Tiling removes gaps and blends between the selected clips_

View File

@@ -0,0 +1,79 @@
# Trim clips
Trimming a clip cuts off a portion of the clip at its start or end. To trim a clip, select the Mix Edit mode, hover over the start or end of the clip until the trim cursor appears, then drag the trim cursor to modify the start or end of the clip.
If you trim an Animation clip, an Audio clip, or a Control clip, this selects the portion of the source asset that the clip uses.
For example, trim the start of an Animation clip to modify its start and offset. This selects the section of the source asset to use. Trim the end of an Animation clip to modify its duration. If an Animation clip's source asset is keyframe animation, use the Curves view to display the unused section of the source asset.
![](images/tl-clip-trim-start.png)
**(A)** Curves view.<br/>
**(B)** If the area defined by an Animation clip, Audio clip, or Control clip only uses part of its source asset, the clip displays a white arrow to indicate that unused content exists before the start or after the end of the clip.<br/>
**(C)** The trimmed keyframe animation displays outside of the Animation clip.<br/>
Trimming a clip is non-destructive. Trim the clip again to modify its start or end to include the animation, audio waveform, or other source content cut during a previous trim. You can also [reset a clip](clip-reset.md) to undo trims and other edits.
## Trim with the Inspector window
You can select a clip to display its [Clip properties](insp-clip.md) in the Inspector window. Use the **Start**, **End**, **Duration**, and **Clip In** (offset) properties to modify a clip to exact values.
![](images/insp-clip-timing.png)
_Position and trim a clip by adjusting its Start, End, Duration, and Clip In properties in the Inspector window_
## Trim with the Timeline Playhead
You can trim a clip based on the location of the Timeline Playhead. To trim using the playhead, do the following:
1. Position the playhead within the clip to be trimmed.
2. Right-click the clip and choose either **Editing** &gt; **Trim Start** or **Editing** &gt; **Trim End**.
**Trim Start** trims the start of the clip to the playhead. **Trim End** trims the end of the clip to the playhead.
![](images/tl-playhead-trim-before.png)
_For example, move the Timeline Playhead within the clip_
![](images/tl-playhead-trim-after.png)
_Right-click the clip and choose **Editing** &gt; **Trim Start** to trim the start of the clip to the playhead_
If you select clips on multiple tracks, Timeline only trims the selected clips that intersect the playhead.
<a name="trimloop"></a>
## Trim to hold or loop clips
If you trim the end of an Animation clip, Audio clip, or Control clip past the end of its source asset, the extra clip area either holds or loops its content.
When the extra clip area loops, the entire source asset loops. Each full loop is labelled sequentially as L1, L2, L3, and so on. If the source asset is recorded keyframe animation, you can also view the looping animation curves in the Curves view.
For example, an Animation clip named `EndRotation` is set to loop. Trimming the end of the `EndRotation` clip past the end of the `Recorded(2)` source asset loops its content.
![](images/tl-clip-trim-loop.png)
_The `EndRotation` clip loops once, indicated by L1. Its animation curve loops and is drawn in white._
Whether the extra clip area holds or loops depends on the **Loop** property in the [Animation Clip Properties](insp-clip-anim.md) or the [Audio Clip Properties](insp-clip-audio.md).
For [Control clips](insp-clip-control.md), the properties that determine whether the extra clip area holds or loops depends on whether the clip controls a Sub-Timeline instance, Particle System, Prefab instance, or an ITimeControl Script.
<a name="trimspecial"></a>
## Special trim options for looping clips
The Timeline window provides special trimming options for clips with loops. These special trim options either remove or complete the last partial loop.
For example, an Animation clip is set to loop and its duration is just over twice longer than its source asset. This results in the Walk clip with one full loop and one partial loop.
![](images/tl-walk-loop-before.png)
_L1 indicates a complete loop. The clip ends in the middle of the second partial loop, L2._
To extend the end of the clip and complete the partial loop, right-click the clip and choose **Editing** &gt; **Complete Last Loop**. To trim the clip at the last complete loop, right-click the clip and choose **Editing** &gt; **Trim Last Loop**.
![](images/tl-walk-loop-complete.png)
_The result of **Complete Last Loop**_
![](images/tl-walk-loop-trim.png)
_The result of **Trim Last Loop**_

View File

@@ -0,0 +1,59 @@
# Manage keyframes
This topic summarizes how to use the Curves view to add, select, step between, edit, and delete keyframes on an animation curve. The functionality described in this topic is similar to [manipulating keyframes in Curves mode](https://docs.unity3d.com/Manual/animeditor-KeyManipulationInCurvesMode.html) in the Animation window.
## Add keyframes
The Curves view provides the following ways to add keyframes:
* Right-click on an animation curve and choose **Add Key**. This method adds a keyframe at the location of the right-click.
* Double-click on an animation curve. This method adds a keyframe at the location of the Double-click.
## Select keyframes
Click to select a single keyframe. Selecting a keyframe deselects all other selected keyframes.
When you select a keyframe, the Curves view displays the keyframe with its tangents. Each keyframe has either one or two tangents that you can use to change the shape of the animation curve. For more information, consult [Tangent modes and types](curves-tangents.md).
To select contiguous keyframes along the same animation curve, click the first keyframe, then hold Shift and click the last keyframe.
![](images/tl-curves-select-key.png)
_Click to select a single keyframe. A selected keyframe displays its tangents._
![](images/tl-curves-select-contiguous.png)
_Hold Shift and click a keyframe to select contiguous keyframes_
There are others ways to select and deselect keyframes:
* Hold Control (MacOS: Command) and click to select discontiguous keyframes. Hold Control (MacOS: Command) and click a selected keyframe to deselect it.
* Click and drag on an empty area in the Curves view to draw a selection rectangle. This selects all keyframes within the rectangle.
* Hold Shift while drawing a selection rectangle to add keyframes to the current selection.
* Hold Control (MacOS: Command) and double-click a keyframe to select all keyframes on the same animation curve.
* Click in an empty area in the Curves view to deselect all selected keyframes. This empty area cannot be within a selection of keyframes.
## Move the Timeline Playhead between keyframes
After you select at least one animation curve in the Curves view, use one of the following methods to move the Timeline Playhead between keyframes:
* Hold Shift and Control (MacOS: Command), and press Period (.) to move the Timeline Playhead to the next keyframe.
* Hold Shift and Control (MacOS: Command), and press Comma (,) to move the Timeline Playhead to the previous keyframe.
## Edit keyframes
Edit a keyframe to change its time, value, or both. The Curves view provides the following different ways to edit a keyframe:
* Right-click a keyframe and choose **Edit** from the context menu to enter specific values for time and value.
* Select a keyframe and press Enter to enter specific values for time and value.
* Select and drag a keyframe to change its time and value.
* Drag a keyframe vertically, then press Shift while dragging to snap the keyframe on the vertical axis. This changes the value but not the time of the keyframe.
* Drag a keyframe horizontally, then press Shift while dragging to snap the keyframe on the horizontal axis. This changes the time of the keyframe, but not its value.
In addition to the methods described above, you can also scale, ripple, and edit the time and value of a selection of keyframes using the same methods as found in the Animation window. Consult [Key manipulation in Curves mode](https://docs.unity3d.com/Manual/animeditor-KeyManipulationInCurvesMode.html) for details.
## Delete keyframes
The Curves view provides the following ways to delete a keyframe:
* Right-click a keyframe and choose **Delete Key** from the context menu.
* Select a keyframe and press Delete.

View File

@@ -0,0 +1,51 @@
# Curves view
Use the Curves view to view and edit animation curves for audio tracks, infinite clips, and animation clips. The Curves view is similar to [Curves mode](https://docs.unity3d.com/Manual/animeditor-AnimationCurves.html) in the Animation window.
![](images/anno-curves-view.png)
**(A)** Curves View toggle.<br/>
**(B)** List of properties with Animation curves, referred to as the Animation Properties list.<br/>
**(C)** Curves view.<br/>
**(D)** Use the double-line at the bottom of the Animated Properties list to resize the Curves view vertically.<br/>
## Curves view with Animation clips
Use the Curves view to view and perform basic edits to animation curves in Infinite clips and Animation clips. These edits include adding keyframes, modifying keyframes, adjusting tangents, and changing the interpolation between keyframes.
To view animation curves for an Infinite clip or Animation clip, enable the Curves View toggle in the Track Header.
If you enable the Curves View toggle for an Animation track without selecting an Animation clip, the Curves view displays the animation curves for the first Animation clip.
![](images/tl-curves-anim-clip.png)
_The Curves View toggle (A) displays or hides the Curves view for the selected Animation clip (B)_
<a name="animwindow"></a>
## View and edit in the Animation window
The Curves View toggle does not appear for Animation tracks with imported animation. To view and edit keyframe animation for imported Animation clips, right-click an Animation clip and choose **Edit in Animation Window** from the context menu. You can also double-click the Animation clip.
When the Animation window appears, it is linked to the Timeline window. When in linked mode, the Animation window displays the Linked button and the name of the Animation clip being viewed or edited.
![](images/anim-window-locked.png)
_Animation window linked to the Timeline window, indicated by the Linked button and Animation clip name. The clip in this example is `(Read-Only)` which means that it can be viewed but not edited._
Click the Linked button to stop viewing or editing the Animation clip, and to release the Animation window from linked mode. You can also close the Animation window to release it from linked mode.
<a name="curvesviewaudiotrack"></a>
## Curves view with Audio tracks
For Audio tracks, the Curves view displays the animation curves for the animatable properties of an Audio track. You can animate the following Audio track properties:
* Spatial Blend
* Stereo Pan
* Volume
Each animatable property is calculated based on its keyframe values, the values for each Audio clip, the values for each Audio source, or a combination of each. Consult [Audio track properties](insp-trk-audio.md) for more information on each animatable property.
![](images/tl-curves-audio-track.png)
_The Curves View toggle (A) displays or hides the animatable properties of an Audio track (B)_
When you animate the properties for an Audio track, it is recommended that you select the Audio track, lock the Timeline window, and lock the Inspector window. With both the Timeline window and Inspector window locked, you can add and edit keyframe values with the Audio Track properties in the Inspector window. Use the Timeline Playhead, Playhead Controls, or keyboard shortcuts to navigate between keyframes.

View File

@@ -0,0 +1,72 @@
# Tangent modes and types
This topic describes [keyframe tangents](#keytangents), [tangent modes](#tangentmodes), [tangent types](#tangenttypes), and [weighted tangents](#weighted). Many of the features described in this topic are similar to [editing tangents in the Editing Curves topic](https://docs.unity3d.com/Manual/animeditor-AnimationCurves.html) in the Animation window.
<a name="keytangents"></a>
## Keyframe tangents
Use keyframe tangents to modify the shape of the animation curve between keyframes. Each keyframe has one or two tangents depending on the location of the keyframe on its animation curve.
![](images/spec-tangents.png)
**(A)** The first keyframe has a single right tangent that controls the shape of the animation curve after the keyframe.<br/>
**(B)** Most keyframes have two tangents where the left tangent controls the shape of the animation curve before the keyframe, and the right tangent controls the shape after the keyframe.<br/>
**(C)** The last keyframe has a single left tangent that controls the shape of the animation curve before the last keyframe.<br/>
By default, left and right tangents are joined. Rotating a joined tangent handle rotates both tangents which changes the shape of the animation curve both before and after the keyframe.
You can break joined tangents to modify the left and right tangent handles independently. In addition, each keyframe has a [tangent mode](#tangentmodes) and a [tangent type](#tangenttypes) that controls tangents and the shape of the animation curve.
<a name="tangentmodes"></a>
## Tangent modes
The term **tangent mode** refers to the algorithm that automatically adjusts tangent handles when you modify the time or value of a keyframe.
To display the tangent mode for a keyframe, right-click the keyframe. A context menu displays the selected tangent mode with a checkmark. In some cases, a keyframe can have more than one tangent mode. For example, keyframe tangents can be both **Free Smooth** and **Flat**.
|**Tangent mode** |**Description** |
|:---|:---|
|**Clamped Auto**|This is the default tangent mode. In this mode, the Curves view automatically adjusts the rotation of each tangent handle to ensure that the animation curve smoothly passes through the keyframe.<br/><br/>For example, if you drag a keyframe to modify its time or value, the **Clamped Auto** tangent mode automatically adjusts the rotation of each tangent handle.<br/><br/>When in **Clamped Auto** mode, if you rotate a keyframe tangent handle, its tangent mode changes to **Free Smooth**.|
|**Auto**|Do not select this tangent mode. This is a legacy tangent mode that is only included for backward compatibility with projects prior to Unity 5.5. If you have a keyframe set to this tangent mode, you should change it to another tangent mode.|
|**Free Smooth**|Joins broken tangent handles. Selecting this tangent mode may rotate the tangent handles as they are joined.<br/><br/>This tangent mode does not use an algorithm to automatically adjust tangent handles. For example, if you drag a keyframe set to the **Free Smooth** tangent mode, the rotation of the each tangent handles are not adjusted.|
|**Flat**|Use this tangent mode to join tangent handles and flatten them horizontally. This tangent mode is linked to the **Free Smooth** tangent mode.<br/><br/>For example, if you change the tangent mode from **Clamped Auto** to **Flat**, the keyframe is set to both the **Free Smooth** and **Flat** tangent modes.|
|**Broken**|Select this mode to break joined tangent handles. When tangent handles are broken, you can control the left and right tangent handles independently. In some cases, both the **Free Smooth** and **Broken** tangent modes may be selected.|
The tangent mode is automatically selected in the following cases:
* If you [select the tangent type](#tangenttypes) for the **Left Tangent**, **Right Tangent**, or **Both Tangents** of a keyframe, the tangent mode changes to either **Free Smooth** or **Broken**.
* If you rotate the left or right tangent handle of a keyframe, the tangents are broken and the tangent mode changes to **Broken**.
<a name="tangenttypes"></a>
## Tangent types
Select a tangent type to have greater control over the shape and slope of the animation curve before and after a keyframe.
The term **tangent type** refers to the interpolation algorithm that determines the shape of an animation curve between keyframes. The term **interpolation** refers to the estimation of values between two known points.
To set the tangent type of a keyframe tangent, do the following:
1. Right-click a keyframe. A context menu appears.
1. Select a tangent type from the **Left Tangent**, **Right Tangent**, or **Both Tangents** sub-menu.
|**Tangent type** |**Description** |
|:---|:---|
|**Free**|Select this tangent type to freely rotate the left tangent handle (Left Tangent), right tangent handle (Right Tangent), or both tangent handles (Both Tangents).<br/><br/>When you select **Free** this breaks joined tangent handles and sets the tangent mode to **Broken**.|
|**Linear**|Select this tangent type to draw a straight line to the keyframe (Left Tangent), away from the keyframe (Right Tangent), or both to and away from the keyframe (Both Tangents).<br/><br/>When you select this tangent type, the tangent is hidden. Selecting this tangent type also breaks joined tangent handles and sets the tangent mode to **Broken**.|
|**Constant**|Select this tangent type to keep a constant value from the last keyframe to this keyframe (Left Tangent), from this keyframe to the next keyframe (Right Tangent), or both (Both Tangents).<br/><br/>When you select this tangent type, the tangent is hidden. Selecting this tangent type also breaks joined tangent handles and sets the tangent mode to **Broken**.|
|**Weighted**|Select this tangent type to use a weighted tangent to modify the shape and slope of the animation curve before the keyframe (Left Tangent), after the keyframe (Right Tangent), or both before and after the keyframe (Both Tangents). Consult [weighted tangents](#weighted) for more information.|
<a name="weighted"></a>
## Weighted tangents
Use weighted tangents to modify the shape and slope of an animation curve. You can modify the length of a weighted tangent which modifies the slope of its animation curve. This provides greater control over the animation when compared to the default tangent.
By default, tangents are non-weighted: you can only rotate a non-weighted tangent to modify the shape of its animation curve. You cannot modify the slope of the animation curve because the tangent is set to a fixed length.
![](images/spec-tangents-weighted.png)
**(A)** Keyframe with default non-weighted tangents. The length of the tangent cannot be changed.<br/>
**(B)** Keyframe with weighted tangents. Its tangent handles are drawn as outlines. In this example, the left and right tangents are set to different lengths.<br/>
To change a non-weighted tangent to a weighted tangent, do the following:
1. Right-click a keyframe. A context menu appears.
1. Select **Weighted** as the tangent type for the **Left Tangent**, **Right Tangent**, or **Both Tangents** sub-menu.

View File

@@ -0,0 +1,36 @@
# Use the Curves view
This topic summarizes how to use the Curves view to navigate, display, and hide animation curves. The functionality described in this topic is similar to [Curves mode](https://docs.unity3d.com/Manual/animeditor-AnimationCurves.html) in the Animation window.
## Navigate the Curves view
Use one of the following methods to pan, zoom, resize, or frame the animation curves and keyframes in the Curves view:
* To pan, middle-click and drag, or hold Alt (MacOS: Option) and drag.
* To zoom vertically, move the scroll-wheel, or hold Alt (MacOS: Option), right-click and drag.
* To zoom horizontally, hold Control (MacOS: Command) and zoom vertically.
* To resize the Curves view, drag the double line separating the Curves view from the next track in the Track list.
* To frame only selected animation curves or selected keyframes, press F.
* To frame all animation curves or keyframes, press A.
You can also [use the Zoombar](clip-pan-zoom.md) to pan, zoom, and resize the Content view.
## Display and hide animation curves
For the selected Animation clip, the Curves view includes a hierarchical list of the properties with animation curves. Expand, collapse, select, and deselect the properties in this list to filter which animation curves appear in the Curves view.
For example, to display only the X-axis animation curves for the position of a GameObject, do the following:
1. Click the Triangle beside the **Position** parent property to display its child properties.
2. Select the **Position.x** property.
3. Press F to frame the animation curve for the **Position.x** property.
![](images/tl-curves-position-x.png)
_Curves view that displays the animation curve of the Position.x property_
There are many ways to expand, collapse, select, and deselect animation curves:
* Click the foldout (triangle) of a parent property to expand and collapse its list of child properties.
* Hold Shift and click to select contiguous properties.
* Hold Control (MacOS: Command) and click to select discontiguous properties.
* Hold Control (MacOS: Command) and click a selected property to deselect it.

View File

@@ -0,0 +1,16 @@
apiRules:
- exclude:
uidRegex: ^EditorTests
type: Namespace
- exclude:
uidRegex: ^Tests
type: Namespace
- exclude:
uidRegex: ^Common
type: Namespace
- exclude:
uidRegex: ^Timeline\.Tests
type: Namespace
- exclude:
uidRegex: ^DocCodeExamples
type: Namespace

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Some files were not shown because too many files have changed in this diff Show More