public static void CreateAnimationCurves(TimelineClip clip) { FieldInfo field = clip.GetType().GetField("m_AnimationCurves", BindingFlags.NonPublic | BindingFlags.Instance); AnimationClip animation = CreateAnimationClipForTrack("Clip Parameters", clip.parentTrack, true); field.SetValue(clip, animation); }
public static void SetClipExtrapolationMode(TimelineClip clip, string propertyName, TimelineClip.ClipExtrapolation mode) { // FIXME: get rid of reflection var pro = clip.GetType().GetProperty(propertyName); pro.SetValue(clip, Convert.ChangeType(mode, pro.PropertyType), null); }
public static TrackAsset GetTrackBasedOnClip(TimelineClip clip) { // FIXME: get rid of Reflection var trackProp = clip.GetType().GetProperty("parentTrack", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); return(trackProp.GetValue(clip, null) as TrackAsset); }
/// <summary> /// All manipulation through reflection /// Highly prompt to changes, use at risk /// </summary> public static void SetClipExtrapolationMode(TimelineClip clip, string propertyName, TimelineClip.ClipExtrapolation mode) { var pro = clip.GetType().GetProperty(propertyName); if (pro == null) { UnityEngine.Debug.LogWarning("Error in getting property: " + clip + "." + propertyName); return; } pro.SetValue(clip, Convert.ChangeType(mode, pro.PropertyType), null); }
void Replace(TimelineClip _oldclip, AnimationClip _clip, AnimationTrack _selectedTrack, TimelineAsset _timelineAsset) { var clipInField = _oldclip.GetType().GetField("m_ClipIn", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); var clipInValue = (double)clipInField.GetValue(_oldclip); _timelineAsset.DeleteClip(_oldclip); var newAnimClip = _selectedTrack.CreateClip(newClip); newAnimClip.start = _oldclip.start;; newAnimClip.duration = _oldclip.duration; newAnimClip.displayName = _clip.name; newAnimClip.timeScale = _oldclip.timeScale; newAnimClip.clipIn = clipInValue; }