public void DeleteKeyframe(TimelineKeyframe keyframe, int characterID, float _timer) { timeline.DeleteKeyframe(characterID, _timer); Open(); // timelineKeyframes.Remove (keyframe); }
void AddKeyframes(TimeLineCharacter timeLineCharacter) { List <KeyframeBase> keyframes = World.Instance.timeLine.GetkeyframesOfAvatar(timeLineCharacter.data.id); KeyframeBase lastkeyframeBase = null; foreach (KeyframeBase keyframeBase in keyframes) { if (isNewDrawableKeyFrame(keyframeBase)) { TimelineKeyframe newKeyframe = Instantiate(keyframe); newKeyframe.transform.SetParent(timeLineCharacter.transform); newKeyframe.Init(this, keyframeBase, offset, separation); Resize(timeLineCharacter, newKeyframe.transform.localPosition.x); timelineKeyframes.Add(newKeyframe); } lastkeyframeBase = keyframeBase; } if (lastkeyframeBase != null) { ActiveKeyframe(lastkeyframeBase); } }
public static TimelineInfo GetTimelineInfo(GMFileContent c, uint id) { if (id >= c.Timelines->Count) { throw new ArgumentOutOfRangeException(nameof(id)); } var tl = (TimelineEntry *)GMFile.PtrFromOffset(c, (&c.Timelines->Offsets)[id]); TimelineInfo ti; ti.Name = StringFromOffset(c, tl->Name); var ks = new TimelineKeyframe[tl->KeyframeCount]; for (uint i = 0; i < ks.Length; ++i) { var tk = &((&tl->Keyframes)[i]); var tes = (CountOffsetsPair *)GMFile.PtrFromOffset(c, tk->OffsetToEvents); ks[i].Time = tk->Time; var ees = new uint[tes->Count]; for (uint j = 0; j < ees.Length; ++j) { ees[j] = ((TimelineEventEntry *)GMFile.PtrFromOffset(c, (&tes->Offsets)[i]))->EventID; } ks[i].EventIDs = ees; } ti.Keyframes = ks; return(ti); }