Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }