public BaseEvent AddEvent(int _time, int _length) { BaseEvent baseEvent = (BaseEvent)Activator.CreateInstance(this.eventType); baseEvent.time = _time; if (this.isDurationEvent) { (baseEvent as DurationEvent).length = _length; } int num = 0; if (this.LocateInsertPos(_time, out num)) { if (num > this.trackEvents.get_Count()) { num = this.trackEvents.get_Count(); } this.trackEvents.Insert(num, baseEvent); } else { this.trackEvents.Add(baseEvent); } baseEvent.track = this; BaseEvent baseEvent2 = baseEvent.Clone(); baseEvent2.Release(); return(baseEvent); }
public Track Clone() { Track track = ClassObjPool <Track> .Get(); track.CopyData(this); int count = this.trackEvents.get_Count(); for (int i = 0; i < count; i++) { BaseEvent baseEvent = this.trackEvents.get_Item(i); BaseEvent baseEvent2 = baseEvent.Clone(); baseEvent2.track = track; track.trackEvents.Add(baseEvent2); } track.waitForConditions = this.waitForConditions; track.enabled = this.enabled; track.color = this.color; track.trackName = this.trackName; track.execOnActionCompleted = this.execOnActionCompleted; track.execOnForceStopped = this.execOnForceStopped; return(track); }