protected override void CreatePins() { FHost.CreateValueConfig(FPin.Name + "-Time" + FSliceIndex.ToString(), 1, null, TSliceMode.Dynamic, TPinVisibility.Hidden, out FStateTime); FStateTime.SliceCount = 0; FStateTime.SetSubType(Double.MinValue, Double.MaxValue, 0.001D, 0, false, false, false); FHost.CreateStringConfig(FPin.Name + "-Name" + FSliceIndex.ToString(), TSliceMode.Dynamic, TPinVisibility.Hidden, out FStateName); FStateName.SliceCount = 0; FStateName.SetSubType("default", false); FHost.CreateStringConfig(FPin.Name + "-Events" + FSliceIndex.ToString(), TSliceMode.Dynamic, TPinVisibility.Hidden, out FStateEvents); FStateEvents.SliceCount = 0; FStateEvents.SetSubType("default", false); }
public override void SaveKeyFrames() { FStateTime.SliceCount = FKeyFrames.Count; FStateName.SliceCount = FKeyFrames.Count; FStateEvents.SliceCount = FKeyFrames.Count; FKeyFrames.Sort(delegate(TLBaseKeyFrame k0, TLBaseKeyFrame k1) { return(k0.Time.CompareTo(k1.Time)); }); for (int i = 0; i < FKeyFrames.Count; i++) { FStateTime.SetValue(i, FKeyFrames[i].Time); FStateName.SetString(i, (FKeyFrames[i] as TLStateKeyFrame).Name); FStateEvents.SetString(i, (FKeyFrames[i] as TLStateKeyFrame).EventsAsString); } }
public override void Configurate(IPluginConfig Input, bool FirstFrame) { //if Input = last ConfigInput created! if (Input == FStateEvents && FirstFrame) { FKeyFrames.Clear(); string name, events; double time; for (int i = 0; i < FStateEvents.SliceCount; i++) { FStateTime.GetValue(i, out time); FStateName.GetString(i, out name); FStateEvents.GetString(i, out events); AddKeyFrame(name, time, events); } FKeyFrames.Sort(delegate(TLBaseKeyFrame k0, TLBaseKeyFrame k1) { return(k0.Time.CompareTo(k1.Time)); }); } //make sure every state's events have according input-pins //remove all inputs that don't have an according event //go through all events and find a corresponding pin List <IValueFastIn> tmpList = new List <IValueFastIn>(); IValueFastIn tmpEventPin; foreach (TLStateKeyFrame skf in FKeyFrames) { foreach (TLEvent e in skf.Events) { if (e.Name != "OnEnd") { IValueFastIn ep = FEventPins.Find(delegate(IValueFastIn p) { return(p.Name == e.Name); }); if (ep == null) { FHost.CreateValueFastInput(e.Name, 1, null, TSliceMode.Single, TPinVisibility.True, out tmpEventPin); tmpEventPin.SetSubType(0, 1, 1, 0, false, false, false); e.EventPin = tmpEventPin; tmpList.Add(tmpEventPin); FEventPins.Add(tmpEventPin); } else { e.EventPin = ep; if (!tmpList.Contains(ep)) { tmpList.Add(ep); } } } } } for (int i = 0; i < FEventPins.Count; i++) { if (!tmpList.Contains(FEventPins[i])) { FHost.DeletePin(FEventPins[i]); } } FEventPins.Clear(); FEventPins.AddRange(tmpList); }