Exemplo n.º 1
0
        public static IValueIn CreateValueInput(this IPluginHost host, InputAttribute attribute, Type type)
        {
            attribute = NormalizePinAttribute(attribute, type);

            IValueIn result = null;

            host.CreateValueInput(attribute.Name, attribute.Dimension, attribute.DimensionNames, (TSliceMode)attribute.SliceMode, (TPinVisibility)attribute.Visibility, out result);
            switch (attribute.Dimension)
            {
            case 2:
                result.SetSubType2D(attribute.MinValue, attribute.MaxValue, attribute.StepSize, attribute.DefaultValues[0], attribute.DefaultValues[1], attribute.IsBang, attribute.IsToggle, attribute.AsInt);
                break;

            case 3:
                result.SetSubType3D(attribute.MinValue, attribute.MaxValue, attribute.StepSize, attribute.DefaultValues[0], attribute.DefaultValues[1], attribute.DefaultValues[2], attribute.IsBang, attribute.IsToggle, attribute.AsInt);
                break;

            case 4:
                result.SetSubType4D(attribute.MinValue, attribute.MaxValue, attribute.StepSize, attribute.DefaultValues[0], attribute.DefaultValues[1], attribute.DefaultValues[2], attribute.DefaultValues[3], attribute.IsBang, attribute.IsToggle, attribute.AsInt);
                break;

            default:
                result.SetSubType(attribute.MinValue, attribute.MaxValue, attribute.StepSize, attribute.DefaultValue, attribute.IsBang, attribute.IsToggle, attribute.AsInt);
                break;
            }
            result.Order        = attribute.Order;
            result.AutoValidate = attribute.AutoValidate;
            return(result);
        }
Exemplo n.º 2
0
        public void Configurate(IPluginConfig Input)
        {
            if (Input == FPinCountPin || Input == FPinCountCons)
            {
                double countPin;
                double countCons;
                FPinCountPin.GetValue(0, out countPin);
                FPinCountCons.GetValue(0, out countCons);

                // delete all pins.
                for (int i = 0; i < FInputPinList.Count; i++)
                {
                    IValueIn pinToDelete = FInputPinList[i];
                    FHost.DeletePin(pinToDelete);
                }
                for (int i = 0; i < FSelectPinList.Count; i++)
                {
                    IValueIn pinToDelete = FSelectPinList[i];
                    FHost.DeletePin(pinToDelete);
                }
                for (int i = 0; i < FOutputPinList.Count; i++)
                {
                    IValueOut pinToDelete = FOutputPinList[i];
                    FHost.DeletePin(pinToDelete);
                }
                FInputPinList.Clear();
                FSelectPinList.Clear();
                FOutputPinList.Clear();

                // create new pins.
                for (int i = 0; i < countCons; i++)
                {
                    for (int j = 0; j < countPin; j++)
                    {
                        IValueIn inputPin;

                        FHost.CreateValueInput("Input " + (i + 1) + "," + (j + 1), 1, null, TSliceMode.Dynamic, TPinVisibility.True, out inputPin);
                        inputPin.SetSubType(double.MinValue, double.MaxValue, 0.01, 0.0, false, false, false);

                        FInputPinList.Add(inputPin);
                    }

                    IValueIn selectPin;
                    FHost.CreateValueInput("Select " + (i + 1), 1, null, TSliceMode.Single, TPinVisibility.True, out selectPin);
                    selectPin.SetSubType(0, double.MaxValue, 1, 1, false, false, true);
                    FSelectPinList.Add(selectPin);
                }
                for (int i = 0; i < countPin; i++)
                {
                    IValueOut outputPin;
                    FHost.CreateValueOutput("Output " + (i + 1), 1, null, TSliceMode.Dynamic, TPinVisibility.True, out outputPin);
                    outputPin.SetSubType(double.MinValue, double.MaxValue, 0.01, 0, false, false, false);
                    FOutputPinList.Add(outputPin);
                }
            }
        }
Exemplo n.º 3
0
        public void Configurate(IPluginConfig Input)
        {
            if (Input == this.FPinInManualTiming)
            {
                try
                {
                    double dblmanual;
                    this.FPinInManualTiming.GetValue(0, out dblmanual);

                    if (dblmanual < 0.5)
                    {
                        if (this.FPinInTime != null)
                        {
                            this.FHost.DeletePin(this.FPinInTime);
                            this.FPinInTime = null;
                        }

                        this.FHost.CreateEnumInput("Clock", TSliceMode.Single, TPinVisibility.True, out this.FPinInDevice);
                        this.FPinInDevice.SetSubType("Clock Input Devices");
                    }
                    else
                    {
                        if (this.FPinInDevice != null)
                        {
                            this.FHost.DeletePin(this.FPinInDevice);
                            this.FPinInDevice = null;
                        }

                        this.FHost.CreateValueInput("Time", 1, null, TSliceMode.Single, TPinVisibility.True, out this.FPinInTime);
                        this.FPinInTime.SetSubType(0, double.MaxValue, 0.01, 0, false, false, false);
                    }
                }
                catch (Exception ex)
                {
                    this.FHost.Log(TLogType.Error, ex.Message);
                }
            }
        }
Exemplo n.º 4
0
 public ValueInput(IValueIn pin)
 {
     FPin = pin;
     pin.GetValuePointer(out lenptr, out dataptr);
 }
Exemplo n.º 5
0
        public VecBin(IValueIn InValues, IValueIn InBins, int VectorSize)
        {
            vecSize = VectorSize;
            int slicecount = (int)Math.Ceiling((double)InValues.SliceCount / (double)vecSize);

            bins = new List <List <double> >();
            int incr    = 0;
            int binIncr = 0;

            double tmpBin;
            int    curBin;

//			while (incr<slicecount || binIncr<InBins.SliceCount)
//			{
//				bins.Add(new List<double>());
//
//				InBins.GetValue(binIncr, out tmpBin);
//				curBin = (int)Math.Round(tmpBin);
//				if (curBin<0)
//					curBin = slicecount;
//
//				double curSlice;
//				for (int i=0; i<curBin*vecSize; i++)
//				{
//					InValues.GetValue((incr*vecSize)+i, out curSlice);
//						bins[binIncr].Add(curSlice);
//				}
//
//				incr+=curBin;
//				if (curBin==0)
//					incr+=slicecount*vecSize;
//				binIncr++;
//			}

            while (incr < slicecount || (binIncr % InBins.SliceCount) != 0)
            {
                int l = 1;
                InBins.GetValue(binIncr, out tmpBin);
                curBin = (int)Math.Round(tmpBin);

                if (curBin < 0)
                {
                    l      = Math.Abs(curBin);
                    curBin = (int)Math.Ceiling(slicecount / (double)l);
                }

                double curSlice;
                for (int _l = 0; _l < l; _l++)
                {
                    bins.Add(new List <double>());
                    for (int i = 0; i < curBin * vecSize; i++)
                    {
                        InValues.GetValue((incr * vecSize) + i, out curSlice);
                        bins[bins.Count - 1].Add(curSlice);
                    }
                    incr += curBin;
                }
                if (binIncr == 0 && curBin == 0)
                {
                    incr += slicecount * vecSize;
                }
                binIncr++;
            }
        }
Exemplo n.º 6
0
        //called by the plugin the host can create a pin
        public void CreateValueInput(string Name, int Dimension, string[] DimensionNames, TSliceMode SliceMode, TPinVisibility Visibility, out IValueIn Pin)
        {
            Pin = new TValuePin(this, Name, Dimension, DimensionNames, TPinDirection.Input, null, SliceMode, Visibility);

            AddPin(Pin as TBasePin);
        }
Exemplo n.º 7
0
        public void Evaluate(int SpreadMax)
        {
            double *oldvals;

            this.FPinOutput.GetValuePointer(out oldvals);

            this.FPinOutput.SliceCount = SpreadMax;
            this.FPinOutIdx.SliceCount = SpreadMax;

            for (int i = 0; i < this.FPinInMode.Count; i++)
            {
                string val;
                this.FPinInMode[i].GetString(0, out val);
                this.FModes[i] = (eLTPTakeOverMode)Enum.Parse(typeof(eLTPTakeOverMode), val);
            }

            if (this.FPinInPickUpEpsilon.PinIsChanged)
            {
                this.FPinInPickUpEpsilon.GetValue(0, out this.FEps);
                //Keep absolute value here
                this.FEps = Math.Abs(this.FEps);
            }

            if (this.FFirstFrame)
            {
                //On first frame, we take the first input only (highest priority)
                double *ptr;
                int     ptrcnt;
                this.FPinInputs[0].GetValuePointer(out ptrcnt, out ptr);

                for (int i = 0; i < SpreadMax; i++)
                {
                    this.FPinOutput.SetValue(i, ptr[i % ptrcnt]);
                    this.FPinOutIdx.SetValue(i, 0);
                }
                this.FFirstFrame = false;
            }
            else
            {
                bool[] updated = new bool[SpreadMax];

                for (int i = 0; i < SpreadMax; i++)
                {
                    for (int j = 0; j < this.FPinInputs.Count; j++)
                    {
                        if (!updated[i])
                        {
                            double dblval;
                            this.FPinInputs[j].GetValue(i, out dblval);
                            double oldval = this.FOldValues[j][i % this.FOldValues[j].Length];

                            double currval = oldvals[i];
                            if (dblval != oldval)
                            {
                                if (this.FModes[j] == eLTPTakeOverMode.Immediate)
                                {
                                    this.FPinOutput.SetValue(i, dblval);
                                    this.FPinOutIdx.SetValue(i, j);
                                    updated[i] = true;
                                }
                                else
                                {
                                    if ((dblval <= currval + this.FEps && oldval >= currval - this.FEps) ||
                                        (dblval >= currval - this.FEps && oldval <= currval + this.FEps))
                                    {
                                        this.FPinOutput.SetValue(i, dblval);
                                        this.FPinOutIdx.SetValue(i, j);
                                        updated[i] = true;
                                    }
                                }
                            }
                        }
                    }
                }
            }


            //Save old values
            this.FOldValues.Clear();
            for (int i = 0; i < this.FPinInputs.Count; i++)
            {
                IValueIn pin = this.FPinInputs[i];
                double[] dbl = new double[pin.SliceCount];

                double *ptr;
                int     ptrcnt;
                pin.GetValuePointer(out ptrcnt, out ptr);

                for (int j = 0; j < pin.SliceCount; j++)
                {
                    dbl[j] = ptr[j];
                }
                this.FOldValues.Add(dbl);
            }
        }