Files
Magical-Jumping-Bean/Library/metadata/cb/cb281723220c9964094e6c52e0ece792
T

200 lines
13 KiB
Plaintext
Raw Normal View History

2019-09-29 19:40:54 -04:00
í3t2019.2.3f1þÿÿÿÿÿ’3$øÌuñ옲e+ Í=^7€ÿÿÿÿ€¦€²€Ѐ¦€¦€¦€#¦€+H€3ÿÿÿÿ€1€1€ÿÿÿÿ@Þ€€ Q€j€
H€<ÿÿÿÿ €1€1€ÿÿÿÿ @Þ€€
Q€j€Õ€Iÿÿÿÿ€1€1€ÿÿÿÿÀÞ€€H€j€ÿÿÿÿ€1€1€ÿÿÿÿ@Þ€€Q€j€™€PAssetMetaDataguiddata[0]data[1]data[2]data[3]pathNameoriginalNamelabelsassetStoreRef ÿÿfš†!ë5˜9Ý4QÁóBí7€ÿÿÿÿ€¦€²€
E€ Þ€#€.€,€5a€ Þ€#€.€,€†€r€ Þ€# €.€,
€H€«€ÿÿÿÿ €1€1€ÿÿÿÿ @Þ€€
Q€j€ñ€JÿÿÿÿÀ1€1€ÿÿÿÿ€Þ€€€j€ÿÿÿÿ€\›€ÿÿÿÿ€H€rÿÿÿÿ€1€1€ÿÿÿÿ@Þ€€Q€j€H€wÿÿÿÿ€1€1€ÿÿÿÿ@Þ€€Q€j€H€€ÿÿÿÿ€1€1€ÿÿÿÿ@Þ€€Q€j€y€
€ Þ€#!€.€,"€€…ÿÿÿÿ#@1€1€ÿÿÿÿ$Þ€€%.€j€&Õ€“ÿÿÿÿ'€1€1€ÿÿÿÿ(ÀÞ€€)€j€ÿÿÿÿ*€H€›€ÿÿÿÿ+€1€1€ÿÿÿÿ,@Þ€€-Q€j€.y€
€ /Þ€#0€.€,1€ €§2@¾€¶ 3@Þ€#4€.€,5€H€»ÿÿÿÿ6€1€1€ÿÿÿÿ7@Þ€€8Q€j€9H€Æÿÿÿÿ:€1€1€ÿÿÿÿ;@Þ€€<Q€j€=H€Øÿÿÿÿ>€1€1€ÿÿÿÿ?@Þ€€@Q€j€AMonoImporterPPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>m_ExternalObjectsSourceAssetIdentifiertypeassemblynamem_UsedFileIDsm_DefaultReferencesexecutionOrdericonm_UserDatam_AssetBundleNamem_AssetBundleVariantsÿÿ£Gñ×Ü�Z56 :!@iÁJ*�€7€ÿÿÿÿ€¦€²€E€ Þ€€.€€(a€ Þ€€.€€†€r€ Þ€ €.€
€H€«€ÿÿÿÿ €1€1€ÿÿÿÿ @Þ€€
Q€j€H€ê€ÿÿÿÿ€1€1€ÿÿÿÿ@Þ€€Q€j€ñ€=ÿÿÿÿ€1€1€ÿÿÿÿ€Þ€€€j€ÿÿÿÿ€H€›€ÿÿÿÿ€1€1€ÿÿÿÿ@Þ€€Q€j€y€
€ Þ€€.€€y€Q Þ€€.€ €Þ€X!H€iÿÿÿÿ"€1€1€ÿÿÿÿ#@Þ€€$Q€j€%H€uÿÿÿÿ&€1€1€ÿÿÿÿ'@Þ€€(Q€j€)PPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>m_DefaultReferencesm_Iconm_ExecutionOrderm_ClassNamem_Namespacetx\ày¯ØŒ¼‚q2"À™F�äÆ%Î~)KPackages/com.unity.timeline/Editor/treeview/Drawers/AnimationTrackDrawer.csày¯AnimationTrackDrawerusing System;
using System.ComponentModel;
using System.Linq;
using JetBrains.Annotations;
using UnityEngine;
using UnityEditor;
using UnityEngine.Timeline;
namespace UnityEditor.Timeline
{
[CustomTrackDrawer(typeof(AnimationTrack)), UsedImplicitly]
class AnimationTrackDrawer : TrackDrawer
{
internal static class Styles
{
public static readonly GUIContent AnimationButtonOnTooltip = EditorGUIUtility.TrTextContent("", "Avatar Mask enabled\nClick to disable");
public static readonly GUIContent AnimationButtonOffTooltip = EditorGUIUtility.TrTextContent("", "Avatar Mask disabled\nClick to enable");
public static readonly GUIContent ConvertToInfiniteClipMenuItem = EditorGUIUtility.TrTextContent("Convert to Infinite Clip");
public static readonly GUIContent ConvertToClipTrackMenuItem = EditorGUIUtility.TrTextContent("Convert To Clip Track");
public static readonly GUIContent AddOverrideTrackMenuItem = EditorGUIUtility.TrTextContent("Add Override Track");
public static readonly string TrackOffsetMenuPrefix = L10n.Tr("Track Offsets/");
}
public override void OnBuildTrackContextMenu(GenericMenu menu, TrackAsset track, WindowState state)
{
var animTrack = track as AnimationTrack;
if (animTrack == null)
{
base.OnBuildTrackContextMenu(menu, track, state);
return;
}
if (animTrack.CanConvertFromClipMode() || animTrack.CanConvertToClipMode())
{
var canConvertToInfinite = animTrack.CanConvertFromClipMode();
var canConvertToClip = animTrack.CanConvertToClipMode();
if (canConvertToInfinite)
{
if (track.lockedInHierarchy || TimelineWindow.instance.state.editSequence.isReadOnly)
{
menu.AddDisabledItem(Styles.ConvertToInfiniteClipMenuItem, false);
}
else
{
menu.AddItem(Styles.ConvertToInfiniteClipMenuItem, false, parentTrack =>
{
animTrack.ConvertFromClipMode(state.editSequence.asset);
state.Refresh();
}, track);
}
}
if (canConvertToClip)
{
if (track.lockedInHierarchy || TimelineWindow.instance.state.editSequence.isReadOnly)
{
menu.AddDisabledItem(Styles.ConvertToClipTrackMenuItem, false);
}
else
{
menu.AddItem(Styles.ConvertToClipTrackMenuItem, false, parentTrack =>
{
animTrack.ConvertToClipMode();
state.Refresh();
}, track);
}
}
}
if (!track.isSubTrack)
{
var items = Enum.GetValues(typeof(TrackOffset));
foreach (var i in items)
{
var item = (TrackOffset)i;
if (state.editSequence.isReadOnly)
{
menu.AddDisabledItem(new GUIContent(Styles.TrackOffsetMenuPrefix + TypeUtility.GetMenuItemName(item)));
}
else
{
menu.AddItem(
new GUIContent(Styles.TrackOffsetMenuPrefix + TypeUtility.GetMenuItemName(item)),
animTrack.trackOffset == item,
() =>
{
animTrack.trackOffset = item;
state.UnarmForRecord(animTrack);
state.rebuildGraph = true;
}
);
}
}
}
base.OnBuildTrackContextMenu(menu, track, state);
if (!track.isSubTrack)
{
menu.AddSeparator(string.Empty);
if (track.lockedInHierarchy || TimelineWindow.instance.state.editSequence.isReadOnly)
{
menu.AddDisabledItem(Styles.AddOverrideTrackMenuItem, false);
}
else
{
menu.AddItem(Styles.AddOverrideTrackMenuItem, false, parentTrack =>
{
AddSubTrack(state, typeof(AnimationTrack), "Override " + track.GetChildTracks().Count().ToString(), track);
}, track);
}
}
}
static void AddSubTrack(WindowState state, Type trackOfType, string trackName, TrackAsset track)
{
TimelineHelpers.CreateTrack(trackOfType, track, trackName);
}
public override void OnBuildClipContextMenu(GenericMenu menu, TimelineClip[] clips, WindowState state)
{
AnimationOffsetMenu.OnClipMenu(state, clips, menu);
}
public override bool DrawTrackHeaderButton(Rect rect, TrackAsset track, WindowState state)
{
var animTrack = track as AnimationTrack;
bool hasAvatarMask = animTrack != null && animTrack.avatarMask != null;
if (hasAvatarMask)
{
var style = animTrack.applyAvatarMask
? DirectorStyles.Instance.avatarMaskOn
: DirectorStyles.Instance.avatarMaskOff;
var tooltip = animTrack.applyAvatarMask
? Styles.AnimationButtonOnTooltip
: Styles.AnimationButtonOffTooltip;
if (GUI.Button(rect, tooltip, style))
{
animTrack.applyAvatarMask = !animTrack.applyAvatarMask;
if (state != null)
state.rebuildGraph = true;
}
}
return hasAvatarMask;
}
public override void DrawRecordingBackground(Rect trackRect, TrackAsset trackAsset, Vector2 visibleTime, WindowState state)
{
base.DrawRecordingBackground(trackRect, trackAsset, visibleTime, state);
DrawBorderOfAddedRecordingClip(trackRect, trackAsset, visibleTime, (WindowState)state);
}
static void DrawBorderOfAddedRecordingClip(Rect trackRect, TrackAsset trackAsset, Vector2 visibleTime, WindowState state)
{
if (!state.IsArmedForRecord(trackAsset))
return;
AnimationTrack animTrack = trackAsset as AnimationTrack;
if (animTrack == null || !animTrack.inClipMode)
return;
// make sure there is no clip but we can add one
TimelineClip clip = null;
if (trackAsset.FindRecordingClipAtTime(state.editSequence.time, out clip) || clip != null)
return;
float yMax = trackRect.yMax;
float yMin = trackRect.yMin;
double startGap = 0;
double endGap = 0;
trackAsset.GetGapAtTime(state.editSequence.time, out startGap, out endGap);
if (double.IsInfinity(endGap))
endGap = visibleTime.y;
if (startGap > visibleTime.y || endGap < visibleTime.x)
return;
startGap = Math.Max(startGap, visibleTime.x);
endGap = Math.Min(endGap, visibleTime.y);
float xMin = state.TimeToPixel(startGap);
float xMax = state.TimeToPixel(endGap);
Rect r = Rect.MinMaxRect(xMin, yMin, xMax, yMax);
ClipDrawer.DrawBorder(r, ClipBorder.kRecording, ClipBlends.kNone);