Пример #1
0
        public void OnImportsSatisfied()
        {
            var attr = new InputAttribute("Input");

            attr.Order = 0;
            FInput     = new GenericInput(FPluginHost, attr);
        }
        public DX11CubeRendererNode(IPluginHost FHost, IIOFactory iofactory)
        {
            string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.RenderTarget);

            InputAttribute tattr = new InputAttribute("Target Format");

            tattr.EnumName         = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";

            this.FInFormat = iofactory.CreateDiffSpread <EnumEntry>(tattr);

            lookatvectors.Add(new Vector3(1, 0, 0));
            lookatvectors.Add(new Vector3(-1, 0, 0));
            lookatvectors.Add(new Vector3(0, 1, 0));
            lookatvectors.Add(new Vector3(0, -1, 0));
            lookatvectors.Add(new Vector3(0, 0, 1));
            lookatvectors.Add(new Vector3(0, 0, -1));

            upvectors.Add(new Vector3(0, 1, 0));
            upvectors.Add(new Vector3(0, 1, 0));
            upvectors.Add(new Vector3(0, 0, -1));
            upvectors.Add(new Vector3(0, 0, 1));
            upvectors.Add(new Vector3(0, 1, 0));
            upvectors.Add(new Vector3(0, 1, 0));

            //this.depthmanager = new DepthBufferManager(FHost,iofactory);
        }
Пример #3
0
 private void SetInputs()
 {
     if (this.FInputCount[0] != FLayers.Count)
     {
         if (this.FInputCount[0] > FLayers.Count)
         {
             while (this.FInputCount[0] > FLayers.Count)
             {
                 InputAttribute attr = new InputAttribute("Layer " + Convert.ToString(this.FLayers.Count + 1));
                 attr.IsSingle       = false;
                 attr.CheckIfChanged = true;
                 attr.AutoValidate   = false;
                 //Create new layer Pin
                 IIOContainer <Pin <DX11Resource <DX11Layer> > > newlayer = this.FIOFactory.CreateIOContainer <Pin <DX11Resource <DX11Layer> > >(attr);
                 newlayer.IOObject.SliceCount = 1;
                 this.FLayers.Add(newlayer);
                 newlayer.IOObject[0] = new DX11Resource <DX11Layer>();
             }
         }
         else
         {
             while (this.FInputCount[0] < FLayers.Count)
             {
                 this.FLayers[this.FLayers.Count - 1].Dispose();
                 this.FLayers.RemoveAt(this.FLayers.Count - 1);
             }
         }
     }
 }
Пример #4
0
        void HandleCountSpreadChanged(IDiffSpread <int> spread)
        {
            int oldCount = FIOContainers.Count;
            int newCount = Math.Max(spread[0], 0);

            for (int i = oldCount; i < newCount; i++)
            {
                var attribute = new InputAttribute(string.Format("{0} {1}", FInputAttribute.Name, i + 1))
                {
                    IsPinGroup   = false,
                    Order        = FInputAttribute.Order + FOffsetCounter * 1000 + i,
                    BinOrder     = FInputAttribute.Order + FOffsetCounter * 1000 + i,
                    AutoValidate = FInputAttribute.AutoValidate
                };
                var io = FFactory.CreateIOContainer(typeof(IInStream <T>), attribute);
                FIOContainers.Add(io);
            }

            for (int i = oldCount - 1; i >= newCount; i--)
            {
                var io = FIOContainers[i];
                FIOContainers.Remove(io);
                io.Dispose();
            }

            FStreams.Length = FIOContainers.Count;
            using (var writer = FStreams.GetWriter())
            {
                foreach (var io in FIOContainers)
                {
                    writer.Write(io.RawIOObject as IInStream <T>);
                }
            }
        }
Пример #5
0
        protected override InputAttribute GetEnumPin()
        {
            InputAttribute attr = new InputAttribute("Mode");

            attr.EnumName = DX11DepthStencilStates.Instance.EnumName;
            return(attr);
        }
Пример #6
0
        public DX11CubeRendererNode(IPluginHost FHost, IIOFactory iofactory)
        {
            string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.RenderTarget);

            InputAttribute tattr = new InputAttribute("Target Format");
            tattr.IsSingle = true;
            tattr.EnumName = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";

            this.FInFormat = iofactory.CreateDiffSpread<EnumEntry>(tattr);

            this.depthmanager = new DepthBufferManager(FHost, iofactory);

            this.lookats.Add(new Vector3(1.0f, 0.0f, 0.0f));
            this.lookats.Add(new Vector3(-1.0f, 0.0f, 0.0f));
            this.lookats.Add(new Vector3(0.0f, 1.0f, 0.0f));

            this.lookats.Add(new Vector3(0.0f, - 1.0f, 0.0f));
            this.lookats.Add(new Vector3(0.0f, 0.0f, 1.0f));
            this.lookats.Add(new Vector3(0.0f, 0.0f, -1.0f));

            this.upvectors.Add(new Vector3(0.0f, 1.0f, 0.0f));
            this.upvectors.Add(new Vector3(0.0f, 1.0f, 0.0f));
            this.upvectors.Add(new Vector3(0.0f, 0.0f, -1.0f));
            this.upvectors.Add(new Vector3(0.0f, 0.0f, 1.0f));
            this.upvectors.Add(new Vector3(0.0f, 1.0f, 0.0f));
            this.upvectors.Add(new Vector3(0.0f, 1.0f, 0.0f));
        }
Пример #7
0
 public MultiDimInStream(IIOFactory factory, InputAttribute attribute)
 {
     FDataContainer    = factory.CreateIOContainer <IInStream <T> >(attribute, false);
     FBinSizeContainer = factory.CreateIOContainer <IInStream <int> >(attribute.GetBinSizeInputAttribute(), false);
     FDataStream       = FDataContainer.IOObject;
     FBinSizeStream    = (IntInStream)FBinSizeContainer.IOObject;
 }
Пример #8
0
        public ClassConstructor(ConstructorInfo cinfo, Parameter[] parameters)
        {
            _constructorInfo = cinfo;
            object[]      attrs  = cinfo.GetCustomAttributes(false);
            List <string> inputs = new List <string>();

            foreach (object obj in attrs)
            {
                if (obj is InputAttribute)
                {
                    InputAttribute attr = obj as InputAttribute;
                    _error |= ~FlagsError.InputInfoNotFound;
                    inputs.AddRange(attr.Parameters);
                }
            }
            foreach (string input in inputs)
            {
                bool find = false;
                foreach (Parameter param in parameters)
                {
                    if (param.Name == input)
                    {
                        _parameters.Add(param);
                        find = true;
                    }
                }
                if (!find)
                {
                    _error |= FlagsError.ParameterNotFound;
                }
            }
        }
 private void SetInputs()
 {
     if (this.FInputCount[0] != FInputs.Count)
     {
         if (this.FInputCount[0] > FInputs.Count)
         {
             while (this.FInputCount[0] > FInputs.Count)
             {
                 InputAttribute attr = new InputAttribute("Input " + Convert.ToString(this.FInputs.Count + 1));
                 //attr.IsSingle = true;
                 attr.CheckIfChanged = true;
                 //Create new layer Pin
                 IIOContainer <Pin <DX11Resource <DX11IndexedGeometry> > > newlayer = this.FIOFactory.CreateIOContainer <Pin <DX11Resource <DX11IndexedGeometry> > >(attr);
                 newlayer.IOObject.SliceCount = 1;
                 this.FInputs.Add(newlayer);
             }
         }
         else
         {
             while (this.FInputCount[0] < FInputs.Count)
             {
                 this.FInputs[this.FInputs.Count - 1].Dispose();
                 this.FInputs.RemoveAt(this.FInputs.Count - 1);
             }
         }
     }
 }
Пример #10
0
        protected override void SetDefault(InputAttribute attr, EffectVariable var)
        {
            Vector4 vec = var.AsVector().GetVector();

            attr.DefaultValues = new double[] { vec.X, vec.Y, vec.Z, vec.W };
            attr.AsInt         = true;
        }
Пример #11
0
 public bool CreateIO(IIOFactory ioFactory, Dictionary <Field, IOContainer> ioContainers, Field field, bool isInput = true, bool isBinSized = false, int order = 0)
 {
     if (ioContainers.ContainsKey(field))
     {
         ioContainers[field].SetOrder(order);
         return(false);
     }
     else
     {
         if (isInput)
         {
             var inAttr = new InputAttribute(field.Name)
             {
                 Order = order, AutoValidate = false, Visibility = PinVisibility.Hidden
             };
             var ioCont = ioFactory.CreateIOContainer(typeof(INodeIn), inAttr);
             ioContainers.Add(field, new IOContainer(ioCont, isInput, false, order));
         }
         else
         {
             var outAttr = new OutputAttribute(field.Name)
             {
                 Order = order, Visibility = PinVisibility.Hidden
             };                                                                                                  //, AutoFlush = false
             var ioCont = ioFactory.CreateIOContainer(typeof(INodeOut), outAttr);
             ioContainers.Add(field, new IOContainer(ioCont, isInput, false, order));
             //(ioContainers[field].RawIOObject as ISpread).SliceCount = 0;
         }
     }
     return(true);
 }
Пример #12
0
 private void SetInputs()
 {
     if (this.FInputCount[0] != FInputs.Count)
     {
         if (this.FInputCount[0] > FInputs.Count)
         {
             while (this.FInputCount[0] > FInputs.Count)
             {
                 InputAttribute attr = new InputAttribute("Input " + Convert.ToString(this.FInputs.Count + 1));
                 //attr.IsSingle = true;
                 attr.CheckIfChanged = true;
                 //Create new layer Pin
                 IIOContainer<Pin<DX11Resource<DX11Texture2D>>> newlayer = this.FIOFactory.CreateIOContainer<Pin<DX11Resource<DX11Texture2D>>>(attr);
                 newlayer.IOObject.SliceCount = 1;
                 this.FInputs.Add(newlayer);
             }
         }
         else
         {
             while (this.FInputCount[0] < FInputs.Count)
             {
                 this.FInputs[this.FInputs.Count - 1].Dispose();
                 this.FInputs.RemoveAt(this.FInputs.Count - 1);
             }
         }
     }
 }
Пример #13
0
        void SyncPins(BuildResult buildResult)
        {
            var updateOperation = buildResult.Operation;
            var compilation     = buildResult.Compilation;
            var scope           = buildResult.Scope;

            FPluginHost.Plugin = null;
            foreach (var input in FInputs)
            {
                input.Dispose();
            }
            foreach (var output in FOutputs)
            {
                output.Dispose();
            }
            FInputs.Clear();
            FOutputs.Clear();
            if (updateOperation != null)
            {
                foreach (var input in updateOperation.GetRegularInputs())
                {
                    var clrType        = compilation.GetClrType(input.Type, typeof(object));
                    var spreadType     = typeof(IInStream <>).MakeGenericType(clrType);
                    var inputAttribute = new InputAttribute(input.Name);
                    if (input.DefaultValue.IsNotDummy())
                    {
                        SetDefaultValue(inputAttribute, input.DefaultValue.GetClrValue(buildResult.Compilation), scope);
                    }
                    else
                    {
                        var genericTypeDefinition = clrType.IsGenericType ? clrType.GetGenericTypeDefinition() : null;
                        var dataType = (genericTypeDefinition == typeof(IEnumerable <>) || genericTypeDefinition == typeof(global::VL.Lib.Collections.Spread <>))
                            ? clrType.GenericTypeArguments[0]
                            : clrType;
                        var defaultValue = compilation.DefaultClrValue(dataType, scope);
                        if (defaultValue != null)
                        {
                            SetDefaultValue(inputAttribute, defaultValue, scope);
                        }
                    }
                    var ioContainer = this.CreateIOContainer(spreadType, inputAttribute) as IIOContainer <IInStream>;
                    FInputs.Add(ioContainer);
                }
            }
            FInStreams = FInputs.Select(c => c.IOObject).ToArray();
            if (updateOperation != null)
            {
                foreach (var output in updateOperation.GetRegularOutputs())
                {
                    var clrType        = compilation.GetClrType(output.Type, typeof(object));
                    var spreadType     = typeof(IOutStream <>).MakeGenericType(clrType);
                    var inputAttribute = new OutputAttribute(output.Name);
                    var ioContainer    = this.CreateIOContainer(spreadType, inputAttribute) as IIOContainer <IOutStream>;
                    FOutputs.Add(ioContainer);
                }
            }
            FOutStreams        = FOutputs.Select(c => c.IOObject).ToArray();
            FPluginHost.Plugin = this;
        }
Пример #14
0
        private void ManageDiffOutput(IDiffSpread <bool> advanced)
        {
            if (FAdvanced[0])
            {
                Keep.QuickMode = false;

                var ia = new InputAttribute("Include input in Diff");
                ia.Order          = 2;
                ia.IsSingle       = true;
                ia.IsToggle       = true;
                ia.DefaultBoolean = true;

                Type pinType = typeof(IDiffSpread <>).MakeGenericType(typeof(bool));
                DoAllChange = FIOFactory.CreateIOContainer(pinType, ia);
                var pin = DoAllChange.RawIOObject as IDiffSpread <bool>;
                pin.Changed += UpdateChangeAll;

                var attr = new OutputAttribute("Message Diff");
                attr.AutoFlush = false;
                attr.Order     = 2;

                pinType    = typeof(Pin <>).MakeGenericType(typeof(Message));
                Change     = FIOFactory.CreateIOContainer(pinType, attr);
                FChangeOut = Change.RawIOObject as Pin <Message>;

                attr           = new OutputAttribute("Changed Message Index");
                attr.AutoFlush = false;
                attr.Order     = 3;

                pinType         = typeof(ISpread <>).MakeGenericType(typeof(int));
                ChangeIndex     = FIOFactory.CreateIOContainer(pinType, attr);
                FChangeIndexOut = ChangeIndex.RawIOObject as Pin <int>;
            }
            else
            {
                Keep.QuickMode = true;

                if (DoAllChange != null)
                {
                    DoAllChange.Dispose();
                    DoAllChange      = null;
                    ManageAllChanges = true;
                }

                if (ChangeIndex != null)
                {
                    ChangeIndex.Dispose();
                    ChangeIndex     = null;
                    FChangeIndexOut = null;
                }

                if (FChangeOut != null)
                {
                    Change.Dispose();
                    Change     = null;
                    FChangeOut = null;
                }
            }
        }
Пример #15
0
        protected override void ConstructFieldTemplates(NodeProvider nodeProvider, Dictionary <Type, NodeFieldTemplate> templates)
        {
            NodeLibrary library = nodeProvider.GetNodeLibrary();

            foreach (var nodeTemplate in library.nodeTemplates)
            {
                Type type     = nodeTemplate.RuntimeNodeType;
                var  fields   = type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                var  template = new NodeFieldTemplate();

                var supressInput = type.GetCustomAttribute <SupressInputAttribute>();

                // All tasks (nodes in this case) need to have an input, that isnt in the code of the behaviours
                // so we just add it in the first thing we do.
                if (supressInput == null)
                {
                    template.InputPorts.Add(new PortDescription("Input", typeof(Task), PortDirection.Input, false, false));
                }

                foreach (var field in fields)
                {
                    OutputAttribute output   = field.GetCustomAttribute <OutputAttribute>();
                    InputAttribute  input    = field.GetCustomAttribute <InputAttribute>();
                    SerializeField  property = field.GetCustomAttribute <SerializeField>();

                    bool autoAdd  = false;
                    bool isInput  = input == null ? false : true;
                    bool isOutput = output == null ? false : true;

                    if (output != null)
                    {
                        autoAdd = output.AutoAddPortOnConnect;
                    }
                    if (input != null)
                    {
                        autoAdd = input.AutoAddPortOnConnect;
                    }

                    bool isList = IsListType(field);

                    if (output != null || input != null)
                    {
                        if (IsListType(field))
                        {
                            AddGenericPort(template, field, isInput, isOutput, autoAdd);
                        }
                        else
                        {
                            AddNonGenericPort(template, field.FieldType, field.Name, field.Name, isInput, isOutput, autoAdd);
                        }
                    }
                    else if (property != null)
                    {
                        AddNonGenericProperty(template, field, field.Name, field.Name);
                    }
                }
                templates.Add(type, template);
            }
        }
Пример #16
0
        public void OnImportsSatisfied()
        {
            var inputAttribute = new InputAttribute("Input")
            {
            };

            CountIn.Changed          += HandlePinCountChanged;
            FMainLoop.OnPrepareGraph += HandleOnPrepareGraph;
        }
Пример #17
0
        protected override void PreInitialize()
        {
            ConfigPinCopy = FCount;
            var attr = new InputAttribute("Input");

            attr.Order = 0;
            FInput     = new GenericInput(FPluginHost, attr);
            pd         = new PinDictionary(FIOFactory);
        }
Пример #18
0
        private Struct CreatePins(Definition definition)
        {
            Struct s    = new Struct(FStructDefName);
            var    pins = new Dictionary <string, IIOContainer>();

            foreach (var entry in definition.Types)
            {
                string key = entry.Key + entry.Value;
                if (FPins.ContainsKey(key))
                {
                    pins.Add(key, FPins[key]);
                    s.Data.Add(key, FPins[key].RawIOObject);
                    FPins.Remove(key);

                    if (!FIsJoin)                     //create output bin size
                    {
                        string binKey = "Bin" + key;
                        pins.Add(binKey, FPins[binKey]);
                        FPins.Remove(binKey);
                    }
                }
                else
                {
                    Type        pinType = typeof(ISpread <>).MakeGenericType(entry.Value);
                    IOAttribute attr;
                    if (FIsJoin)
                    {
                        attr = new InputAttribute(entry.Key);
                        attr = TrySetDefault(attr as InputAttribute, entry.Value, definition.Defaults[entry.Key]);
                    }
                    else
                    {
                        attr = new OutputAttribute(entry.Key);
                    }

                    var pin = FIOFactory.CreateIOContainer(pinType, attr);
                    pins.Add(key, pin);
                    s.Data.Add(key, pin.RawIOObject);

                    if (!FIsJoin)                     //create output bin size
                    {
                        attr.Name       = attr.Name + " Bin Size";
                        attr.Visibility = PinVisibility.OnlyInspector;
                        pinType         = typeof(ISpread <>).MakeGenericType(typeof(int));
                        pins.Add("Bin" + key, FIOFactory.CreateIOContainer(pinType, attr));
                    }
                }
            }

            foreach (var oldPin in FPins.Values)
            {
                oldPin.Dispose();
            }

            FPins = pins;
            return(s);
        }
Пример #19
0
        public bool CreateIO(IIOFactory ioFactory, Dictionary <Field, IOContainer> ioContainers, Field field, bool isInput = true, bool isBinSized = false, int order = 0)
        {
            Type t = typeof(IIOStream <IInStream <double> >);

            if (isBinSized)
            {
                t = typeof(IInStream <>).MakeGenericType(field.FieldType);
                if (isInput)
                {
                    t = typeof(IInStream <>).MakeGenericType(t);
                }
                else
                {
                    t = typeof(IIOStream <>).MakeGenericType(t);
                }
            }
            else
            if (isInput)
            {
                t = typeof(IInStream <>).MakeGenericType(field.FieldType);
            }
            else
            {
                t = typeof(IOutStream <>).MakeGenericType(field.FieldType);
            }


            if (ioContainers.ContainsKey(field))
            {
                ioContainers[field].SetOrder(order);
                return(false);
            }
            else
            {
                if (isInput)
                {
                    var inAttr = new InputAttribute(field.Name)
                    {
                        Order = order, BinOrder = order + 1, AutoValidate = false
                    };
                    inAttr.SetDefaultAttribute(field);
                    var ioCont = ioFactory.CreateIOContainer(t, inAttr);
                    ioContainers.Add(field, new IOContainer(ioCont, isInput, isBinSized, order));
                }
                else
                {
                    var outAttr = new OutputAttribute(field.Name)
                    {
                        Order = order, BinOrder = order + 1
                    };                                                                                     //, AutoFlush = false
                    var ioCont = ioFactory.CreateIOContainer(t, outAttr);
                    ioContainers.Add(field, new IOContainer(ioCont, isInput, isBinSized, order));
                    (ioContainers[field].RawIOObject as IOutStream).Length = 0;
                }
            }
            return(true);
        }
Пример #20
0
        private InputAttribute TrySetDefault(InputAttribute attr, Type type, string defaultString)
        {
            if (!string.IsNullOrEmpty(defaultString))
            {
                double doubleDefault = 0;
                switch (type.ToString())
                {
                case "System.Boolean":
                    bool boolDefault = false;
                    if (bool.TryParse(defaultString, out boolDefault))
                    {
                        attr.DefaultBoolean = boolDefault;
                    }
                    break;

                case "System.Double":
                case "System.Single":
                case "System.Int32":
                    if (double.TryParse(defaultString, out doubleDefault))
                    {
                        attr.DefaultValue = doubleDefault;
                    }
                    break;

                case "System.String":
                    attr.DefaultString = defaultString;
                    break;

                case "VVVV.Utils.VMath.Vector2D":
                case "VVVV.Utils.VMath.Vector3D":
                case "VVVV.Utils.VMath.Vector4D":
                    var vectorString = defaultString.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    attr.DefaultValues = new double[vectorString.Length];
                    for (int i = 0; i < vectorString.Length; i++)
                    {
                        if (double.TryParse(vectorString[i].Trim(), out doubleDefault))
                        {
                            attr.DefaultValues[i] = doubleDefault;
                        }
                    }
                    break;

                case "VVVV.Utils.VColor.RGBAColor":
                    var colorString = defaultString.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    attr.DefaultColor = new double[colorString.Length];
                    for (int i = 0; i < colorString.Length; i++)
                    {
                        if (double.TryParse(colorString[i].Trim(), out doubleDefault))
                        {
                            attr.DefaultColor[i] = doubleDefault;
                        }
                    }
                    break;
                }
            }
            return(attr);
        }
Пример #21
0
        private void CreateTextureIn()
        {
            if (this.texinputpin == null)
            {
                InputAttribute tattr = new InputAttribute("Texture In");
                tattr.Order = -1;

                this.texinputpin = this.iofactory.CreateIOContainer <Pin <DX11Resource <DX11Texture2D> > >(tattr);
            }
        }
Пример #22
0
        public void AddInputBinSized(Type T, InputAttribute attr)
        {
            Type pinType = typeof(IDiffSpread <>).MakeGenericType(typeof(ISpread <>).MakeGenericType(T));
            var  ioc     = FIOFactory.CreateIOContainer(pinType, attr);
            var  ispread = ioc.ToIDiffSpread();
            var  pin     = new DiffSpreadPin(ispread, attr, ioc);

            InputPins.Add(attr.Name, pin);
            pin.Type = T;
        }
        public BaseDX11RenderStateSimple(IPluginHost host, IIOFactory iofactory)
        {
            this.FHost      = host;
            this.FIOFactory = iofactory;

            InputAttribute attr = this.GetEnumPin();

            attr.CheckIfChanged = true;
            this.FInPreset      = this.FIOFactory.CreatePin <EnumEntry>(attr);
        }
Пример #24
0
#pragma warning restore


        protected override IOAttribute DefinePin(string name, Type type, int binSize = -1)
        {
            var attr = new InputAttribute(name);
            attr.BinVisibility = PinVisibility.Hidden;
            attr.BinSize = binSize;
            attr.Order = FCount;
            attr.BinOrder = FCount + 1;
            attr.AutoValidate = false;  // need to sync all pins manually. Don't forget to Flush()
            return attr;
        }
Пример #25
0
 protected override IOAttribute DefinePin(string name, Type type)
 {
     var attr = new InputAttribute(name);
     attr.BinVisibility = PinVisibility.Hidden;
     attr.BinSize = 1;
     attr.Order = FCount;
     attr.BinOrder = FCount + 1;
     //                attr.AutoValidate = false;  // need to sync all pins manually
     return attr;
 }
        public DX11Texture1dArrayRendererNode(IPluginHost FHost, IIOFactory iofactory)
        {
            string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.UnorderedAccessView);

            InputAttribute tattr = new InputAttribute("Target Format");
            tattr.EnumName = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";

            this.FInFormat = iofactory.CreateDiffSpread<EnumEntry>(tattr);
        }
Пример #27
0
#pragma warning restore

        protected override IOAttribute DefinePin(FormularFieldDescriptor configuration)
        {
            var attr = new InputAttribute(configuration.Name); 
            attr.BinVisibility = PinVisibility.Hidden;
            attr.BinSize = configuration.DefaultSize;
            attr.Order = DynPinCount;
            attr.BinOrder = DynPinCount + 1;

            return attr;
        }
Пример #28
0
            protected override IIOContainer <ISpread <ISpread <T> > > CreatePin <T>(string name)
            {
                var attr = new InputAttribute(name);

                attr.BinVisibility = PinVisibility.Hidden;
                attr.BinSize       = 1;
                attr.Order         = Count;
                attr.BinOrder      = Count + 1;
                return(IOFactory.CreateIOContainer <IDiffSpread <ISpread <T> > >(attr));
            }
Пример #29
0
        protected override void ProcessAttribute(InputAttribute attr, EffectVariable var)
        {
            this.classes = var.LinkClassesStr();

            eid = Guid.NewGuid().ToString();
            string def = this.UpdateEnum(var);

            attr.DefaultEnumEntry = def;
            attr.EnumName         = eid;
        }
Пример #30
0
        public InputElementJoinNode(IPluginHost host,IIOFactory iofactory)
        {
            this.FHost = host;
            this.FIOFactory = iofactory;

            InputAttribute fmtAttr = new InputAttribute("Format");
            fmtAttr.EnumName = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.VertexBuffer);
            fmtAttr.DefaultEnumEntry = "R32G32B32A32_Float";
            FInFormat = this.FIOFactory.CreateDiffSpread<EnumEntry>(fmtAttr);
        }
Пример #31
0
        public void OnImportsSatisfied()
        {
            AutomataUI.Connected    += Input_Connected;
            AutomataUI.Disconnected += Input_Disconnected;

            //new way of enums
            InputAttribute attr = new InputAttribute("State");

            StatesEnum = FIOFactory.CreateIOContainer <IDiffSpread <EnumEntry> >(attr, true);
        }
Пример #32
0
        public void AddInputEnum(List<IIOContainer<Pin<EnumEntry>>> FInput, int pinOrder, string pinName, string enumName, string enumDefault, string[] enums)
        {
            EnumManager.UpdateEnum(enumName, enumDefault, enums);

            InputAttribute ioAttribute = new InputAttribute(enumName);
            ioAttribute.Name = pinName;
            ioAttribute.EnumName = enumName;
            ioAttribute.Order = pinOrder;
            FInput.Add(FIOFactory.CreateIOContainer<Pin<EnumEntry>>(ioAttribute));
        }
Пример #33
0
        public async Task CreateShouldSucceed()
        {
            // Arrange
            var id          = Guid.NewGuid();
            var name        = "name";
            var description = "description";
            var icon        = Guid.NewGuid();
            var instruction = "instruction";
            var input       = new Input(id, name, description, icon, instruction);

            var tag = new Tag("tag");

            input.AddTag(tag);

            var image = new Image("image", "url");

            input.AddImage(image);

            var video = new Video("image", "url");

            input.AddVideo(video);

            var inputAttributeName                 = "any name";
            var inputAttributeNotMandatory         = true;
            var inputAttributeScanningOnly         = true;
            var inputAttributeMinLenght            = new Random().Next();
            var inputAttributeMaxLenght            = new Random().Next();
            var inputAttributePrefix               = "any prefix";
            var inputAttributeCheckLastXCharacters = new Random().Next();
            var inputAttribute = new InputAttribute(inputAttributeName, inputAttributeNotMandatory, inputAttributeScanningOnly, inputAttributeMinLenght, inputAttributeMaxLenght, inputAttributePrefix, inputAttributeCheckLastXCharacters);

            input.AddInputAttribute(inputAttribute);

            // Act
            await _repository.CreateAsync(input);

            // Assert
            var data = RepositoryHelper.ForInput.GetInputs();

            data.Should().HaveCount(1);
            var result = data.First();

            result.Name.Should().Be(name);
            result.Description.Should().Be(description);
            result.Icon.Should().Be(icon);
            result.Instruction.Should().Be(instruction);
            result.Tags.Should().HaveCount(1);
            result.Tags.First().Should().Be(tag);
            result.Images.Should().HaveCount(1);
            result.Images.First().Should().Be(image);
            result.Videos.Should().HaveCount(1);
            result.Videos.First().Should().Be(video);
            result.InputAttributes.Should().HaveCount(1);
            result.InputAttributes.First().Should().Be(inputAttribute);
        }
Пример #34
0
        private void HandleTransitionPins(IDiffSpread <string> sender)
        {
            //FLogger.Log(LogType.Debug, "Update Pins");

            //empty automata tree ? -> create a reset pin
            if (TransitionNames[0] == "")
            {
                TransitionNames[0] = "Init";
            }

            // CREATE INIT
            if (stateList.Count == 0)
            {
                stateList.Add(new State()
                {
                    ID     = "Init",
                    Name   = "Init",
                    Bounds = new Rectangle(new Point(0, 0), new Size(p.StateSize, p.StateSize))
                });
            }

            //delete pins which are not in the new list
            foreach (var name in FPins.Keys)
            {
                if (TransitionNames.IndexOf(name) == -1)
                {
                    FPins[name].Dispose();
                }
            }

            Dictionary <string, IIOContainer> newPins = new Dictionary <string, IIOContainer>();

            foreach (var name in TransitionNames)
            {
                if (!string.IsNullOrEmpty(name)) //ignore empty slices
                {
                    if (FPins.ContainsKey(name)) //pin already exists, copy to new dict
                    {
                        newPins.Add(name, FPins[name]);
                        FPins.Remove(name);
                    }
                    else if (!newPins.ContainsKey(name)) //just checking in case of duplicate names
                    {
                        var attr = new InputAttribute(name);
                        attr.IsBang = true;
                        var type      = typeof(IDiffSpread <bool>);
                        var container = FIOFactory.CreateIOContainer(type, attr);
                        newPins.Add(name, container);
                    }
                }
            }

            //FPins now only holds disposed IIOContainers, since we copied the reusable ones to newPins
            FPins = newPins;
        }
Пример #35
0
 public InputBinSpreadStream(IIOFactory ioFactory, InputAttribute attribute, bool checkIfChanged, Func <IIOContainer <IInStream <int> > > binSizeIOContainerFactory)
 {
     // Don't do this, as spread max won't get computed for this pin
     //                attribute.AutoValidate = false;
     attribute.CheckIfChanged = checkIfChanged;
     FDataContainer           = ioFactory.CreateIOContainer <IInStream <T> >(attribute, false);
     FBinSizeContainer        = binSizeIOContainerFactory();
     FDataStream    = FDataContainer.IOObject;
     FBinSizeStream = FBinSizeContainer.IOObject;
     FDataIO        = FDataContainer.GetPluginIO();
 }
Пример #36
0
        public DX11VolumeRendererNode(IPluginHost FHost,IIOFactory factory)
        {
            string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.RenderTarget);

            InputAttribute tattr = new InputAttribute("Target Format");
            tattr.EnumName = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";
            tattr.CheckIfChanged = true;

            this.FInFormat = factory.CreateDiffSpread<EnumEntry>(tattr);
        }
Пример #37
0
        public InputElementJoinNode(IPluginHost host, IIOFactory iofactory)
        {
            this.FHost      = host;
            this.FIOFactory = iofactory;

            InputAttribute fmtAttr = new InputAttribute("Format");

            fmtAttr.EnumName         = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.VertexBuffer);
            fmtAttr.DefaultEnumEntry = "R32G32B32A32_Float";
            FInFormat = this.FIOFactory.CreateDiffSpread <EnumEntry>(fmtAttr);
        }
Пример #38
0
        public DX11SamplerStatePresetNode(IPluginHost host, IIOFactory iofactory)
        {
            string[] enums = DX11SamplerStates.Instance.StateKeys;

            host.UpdateEnum(DX11SamplerStates.Instance.EnumName, enums[0], enums);

            InputAttribute attr = new InputAttribute("Mode");
            attr.EnumName = DX11SamplerStates.Instance.EnumName;
            attr.DefaultEnumEntry = enums[0];
            this.FInPreset = iofactory.CreateDiffSpread<EnumEntry>(attr);
        }
        public DX11Texture1dRendererNode(IPluginHost FHost, IIOFactory iofactory)
        {
            string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.UnorderedAccessView);

            InputAttribute tattr = new InputAttribute("Target Format");

            tattr.EnumName         = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";

            this.FInFormat = iofactory.CreateDiffSpread <EnumEntry>(tattr);
        }
Пример #40
0
        public virtual IOAttribute PinAttribute(string name, int order)
        {
            InputAttribute attr = new InputAttribute(name);

            attr.BinVisibility = PinVisibility.True;
            attr.BinSize       = 1;
            attr.Order         = order * 2;
            attr.BinOrder      = order * 2 + 1;

            return(attr);
        }
        public DX11TextureArrayRendererNode(IPluginHost FHost, IIOFactory iofactory)
        {
            string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.RenderTarget);

            InputAttribute tattr = new InputAttribute("Target Format");
            tattr.EnumName = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";

            this.FInFormat = iofactory.CreateDiffSpread<EnumEntry>(tattr);

            //this.depthmanager = new DepthBufferManager(FHost,iofactory);
        }
Пример #42
0
        public DX11TempRTRendererNode(IPluginHost FHost)
        {
            string ename = VDX11.NullDeviceFormats.GetEnumName(FormatSupport.RenderTarget);

            InputAttribute tattr = new InputAttribute("Target Format");
            tattr.EnumName = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";

            this.FInFormat = PinFactory.CreateDiffSpread<EnumEntry>(FHost, tattr);

            this.FDepthManager = new DepthBufferManager(FHost);
        }
        protected override InputAttribute GetEnumPin()
        {
            string[] enums = DX11DepthStencilStates.Instance.StateKeys;

            this.FHost.UpdateEnum(DX11DepthStencilStates.Instance.EnumName,enums[0],enums);

            InputAttribute attr = new InputAttribute("Mode");
            attr.EnumName = DX11DepthStencilStates.Instance.EnumName;
            attr.DefaultEnumEntry = enums[0];

            return attr;
        }
Пример #44
0
        public DX11RenderStatePresetNode(IPluginHost host, IIOFactory iofactory)
        {
            InputAttribute attr = new InputAttribute("Blend Mode");
            attr.EnumName = DX11BlendStates.Instance.EnumName;
            this.FInBlendPreset = iofactory.CreateDiffSpread<EnumEntry>(attr);

            attr = new InputAttribute("Rasterizer Mode");
            attr.EnumName = DX11RasterizerStates.Instance.EnumName;
            this.FInRasterPreset = iofactory.CreateDiffSpread<EnumEntry>(attr);

            attr = new InputAttribute("Depth Stencil Mode");
            attr.EnumName = DX11DepthStencilStates.Instance.EnumName;
            this.FInDepthPreset = iofactory.CreateDiffSpread<EnumEntry>(attr);
        }
Пример #45
0
        public DX11ImageShaderNode(IPluginHost host, IIOFactory factory)
        {
            this.FHost = host;
            this.FFactory = factory;
            this.TechniqueEnumId = Guid.NewGuid().ToString();

            InputAttribute inAttr = new InputAttribute("Technique");
            inAttr.EnumName = this.TechniqueEnumId;
            //inAttr.DefaultEnumEntry = defaultenum;
            inAttr.Order = 1000;
            this.FInTechnique = this.FFactory.CreateDiffSpread<EnumEntry>(inAttr);

            this.varmanager = new DX11ImageShaderVariableManager(host, factory);
        }
Пример #46
0
        protected override IOAttribute SetPinAttributes(FormularFieldDescriptor field)
        {
            var attr = new InputAttribute(field.Name);
            attr.BinVisibility = PinVisibility.Hidden;
            attr.BinSize = field.DefaultSize;

            attr.Order = DynPinCount;
            attr.BinOrder = DynPinCount + 1;

            attr.CheckIfChanged = false; // very lazy inputs. only do something when New is hit.
            attr.AutoValidate = false;

            return attr;
        }
        public void CreateEnumPin(string pinName, IEnumerable<string> entries)
        {
            EnumName = "Enum_" + this.GetHashCode().ToString();

            EnumManager.UpdateEnum(EnumName, entries.First(), entries.ToArray());

            var attr = new InputAttribute(pinName);
            attr.Order = 2;
            attr.AutoValidate = true;

            attr.EnumName = EnumName;

            Type pinType = typeof(IDiffSpread<EnumEntry>);
            var pin = FIOFactory.CreateIOContainer(pinType, attr);
            FUseAsID = (IDiffSpread<EnumEntry>)(pin.RawIOObject);
        }
Пример #48
0
		public void CreateEnumPin(string pinName, string[] entries)
        {
			EnumName = "Enum_" + this.GetHashCode().ToString();

        	EnumManager.UpdateEnum(EnumName, entries[0], entries);

        	var attr = new InputAttribute(pinName);
            attr.Order = 3;
            attr.AutoValidate = true;  

        	attr.EnumName = EnumName;

            Type pinType = typeof(ISpread<EnumEntry>); 
        	var pin = FIOFactory.CreateIOContainer(pinType, attr);
        	FEnum = (ISpread<EnumEntry>)(pin.RawIOObject);
        }
Пример #49
0
        public DX11TextureSpreadRendererNode(IPluginHost FHost, IIOFactory iofactory)
        {
            string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.RenderTarget);

            InputAttribute tattr = new InputAttribute("Target Format");
            tattr.EnumName = ename;
            tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";

            ConfigAttribute dfAttr = new ConfigAttribute("Depth Buffer Format");
            dfAttr.EnumName = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.DepthStencil);
            dfAttr.DefaultEnumEntry = "D32_Float";
            dfAttr.IsSingle = true;

            this.depthformatpin = iofactory.CreateDiffSpread<EnumEntry>(dfAttr);
            this.depthformatpin[0] = new EnumEntry(dfAttr.EnumName, 1);

            this.FInFormat = iofactory.CreateDiffSpread<EnumEntry>(tattr);
        }
        public void CreateEnumPin(string pinName, IEnumerable<string> entries)
        {
            EnumName = "Enum_" + this.GetHashCode().ToString();

            FillEnum(entries);

            var attr = new InputAttribute(pinName);
            attr.Order = 2;
            attr.AutoValidate = true;

            attr.BinVisibility = PinVisibility.OnlyInspector;
            attr.BinSize = -1;
            attr.BinOrder = 3;
            attr.CheckIfChanged = true;

            attr.EnumName = EnumName;

            Type pinType = typeof(ISpread<ISpread<EnumEntry>>);

            var pin = FIOFactory.CreateIOContainer(pinType, attr);
            FUseFields = (ISpread<ISpread<EnumEntry>>)(pin.RawIOObject);
        }
Пример #51
0
        private void CreateSize()
        {
            if (this.FInTextureSize == null)
            {
                InputAttribute a = new InputAttribute("Texture Size");
                a.Order = 8;
                a.DefaultValues = new double[] { 400, 300 };
                a.CheckIfChanged = true;

                this.FInTextureSize = this.iofactory.CreateIOContainer<IDiffSpread<Vector2D>>(a);

                a.Name = "Texture Scale";
                a.DefaultValues = new double[] { 1, 1 };
                this.FInTextureScale = this.iofactory.CreateIOContainer<IDiffSpread<Vector2D>>(a);
            }
        }
Пример #52
0
        private void CreateFormat()
        {
            if (this.FInFormat == null)
            {
                string ename = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.RenderTarget);

                InputAttribute tattr = new InputAttribute("Target Format");
                tattr.EnumName = ename;
                tattr.DefaultEnumEntry = "R8G8B8A8_UNorm";
                tattr.DefaultString = "R8G8B8A8_UNorm";
                tattr.AllowDefault = true;
                tattr.Order = 0;
                tattr.CheckIfChanged = true;
                tattr.DefaultString = "R8G8B8A8_UNorm";

                this.FInFormat = this.iofactory.CreateIOContainer<IDiffSpread<EnumEntry>>(tattr);
            }
        }
Пример #53
0
        private void Pinmode_Changed(IDiffSpread<eDepthBufferMode> spread)
        {
            if (this.currentmode != spread[0])
            {

                if (this.currentmode == eDepthBufferMode.Standard)
                {
                    if (this.depthoutputpin != null)
                    {
                        //Destroy depth stencil
                        if (this.depthoutputpin.IOObject[0] != null)
                        {
                            this.depthoutputpin.IOObject[0].Dispose();
                        }

                        this.depthoutputpin.Dispose();
                        this.depthformatpin.Dispose();

                        this.depthformatpin = null;
                        this.depthoutputpin = null;
                    }
                }

                if (this.currentmode == eDepthBufferMode.ReadOnly)
                {
                    if (this.depthinputpin != null)
                    {
                        this.depthinputpin.Dispose();
                        this.depthinputpin = null;
                    }
                }

                this.currentmode = spread[0];
                if (this.currentmode == eDepthBufferMode.Standard)
                {
                    OutputAttribute oattr = new OutputAttribute("Depth Buffer");
                    oattr.IsSingle = true;

                    this.depthoutputpin = this.factory.CreateIOContainer<Pin<DX11Resource<DX11DepthStencil>>>(oattr);
                    this.depthoutputpin.IOObject[0] = new DX11Resource<DX11DepthStencil>();

                    ConfigAttribute dfAttr = new ConfigAttribute("Depth Buffer Format");
                    dfAttr.EnumName = DX11EnumFormatHelper.NullDeviceFormats.GetEnumName(FormatSupport.DepthStencil);
                    dfAttr.DefaultEnumEntry = DX11EnumFormatHelper.NullDeviceFormats.GetAllowedFormats(FormatSupport.DepthStencil)[0];
                    dfAttr.IsSingle = true;

                    this.depthformatpin = this.factory.CreateIOContainer<IDiffSpread<EnumEntry>>(dfAttr);
                    this.depthformatpin.IOObject[0] = new EnumEntry(dfAttr.EnumName, 1);

                    this.depthformatpin.IOObject.Changed += depthformatpin_Changed;
                }

                if (this.currentmode == eDepthBufferMode.ReadOnly)
                {
                    InputAttribute oattr = new InputAttribute("Depth Buffer");
                    oattr.IsSingle = true;

                    this.depthinputpin = this.factory.CreateIOContainer<Pin<DX11Resource<DX11DepthStencil>>>(oattr);
                }

                this.NeedReset = true;
            }
        }
        protected override void OnConfigChange(IDiffSpread<string> configSpread)
        {
            base.OnConfigChange(configSpread);

            var attr = new InputAttribute("AvoidNil");
            attr.BinVisibility = PinVisibility.OnlyInspector;
            attr.Order = 6;
            attr.BinOrder = 7;
            attr.BinSize = 1;
            attr.CheckIfChanged = true;

            Type pinType = typeof(ISpread<>).MakeGenericType((typeof(ISpread<>)).MakeGenericType(TargetDynamicType)); // the Pin is always a binsized one

            if (FAvoidNil != null) FAvoidNil.Dispose();
            FAvoidNil = FIOFactory.CreateIOContainer(pinType, attr);
        }
Пример #55
0
        void ParameterNamesConfig_Changed(IDiffSpread<string> spread)
        {
            //temp pin dictionary
            var prevPins = new Dictionary<string, ParamPin>(FParamPins);

            //create pin?
            foreach (var pinString in spread)
            {
                if(string.IsNullOrWhiteSpace(pinString))
                    continue;

                if (!prevPins.ContainsKey(pinString))
                {
                    var paramPin = ParamPin.Parse(pinString);

                    var oa = new InputAttribute(paramPin.ParamName);
                    //FLogger.Log(LogType.Debug, col.DataType.ToString());

                    paramPin.Pin = FHost.CreateValueInput(oa, typeof(float));

                    FParamPins[pinString] = paramPin;
                }
                else
                {
                    prevPins.Remove(pinString);
                }
            }

            //any pin which is left over can be removed
            foreach (var pin in prevPins)
            {
                FHost.DeletePin(pin.Value.Pin);
                FParamPins.Remove(pin.Key);
            }
        }
Пример #56
0
 protected override InputAttribute GetEnumPin()
 {
     InputAttribute attr = new InputAttribute("Mode");
     attr.EnumName = DX11RasterizerStates.Instance.EnumName;
     return attr;
 }
Пример #57
0
        private void CreateTextureIn()
        {
            if (this.texinputpin == null)
            {
                InputAttribute tattr = new InputAttribute("Texture In");
                tattr.Order = -1;

                this.texinputpin = this.iofactory.CreateIOContainer<Pin<DX11Resource<DX11Texture2D>>>(tattr);
            }
        }
Пример #58
0
            #pragma warning restore

            protected override IOAttribute DefinePin(string name, Type type, int binSize = -1)
            {
                var attr = new InputAttribute(name);
                attr.BinVisibility = PinVisibility.Hidden;
                attr.BinSize = binSize;
                attr.Order = FCount;
                attr.BinOrder = FCount + 1;

                return attr;
            }
Пример #59
0
        protected override IOAttribute DefinePin(FormularFieldDescriptor field)
        {
            var attr = new InputAttribute("Field");
            attr.BinVisibility = PinVisibility.Hidden;

            attr.Order = 4;
            attr.BinOrder = 5;
            attr.BinSize = 1;

            attr.CheckIfChanged = true;

            return attr;
        }
Пример #60
0
        public override void SetShader(DX11Effect shader, bool isnew, string fileName)
        {
            this.FShader = shader;

            this.varmanager.SetShader(shader);
            FOutPath.SliceCount = 1;
            FOutPath[0] = fileName;

            //Only set technique if new, otherwise do it on update/evaluate
            if (isnew)
            {
                string defaultenum;
                if (shader.IsCompiled)
                {
                    defaultenum = shader.TechniqueNames[0];
                    this.FHost.UpdateEnum(this.TechniqueEnumId, shader.TechniqueNames[0], shader.TechniqueNames);
                    this.varmanager.CreateShaderPins();
                }
                else
                {
                    defaultenum = "";
                    this.FHost.UpdateEnum(this.TechniqueEnumId, "", new string[0]);
                }

                //Create Technique enum pin
                InputAttribute inAttr = new InputAttribute("Technique");
                inAttr.EnumName = this.TechniqueEnumId;
                inAttr.DefaultEnumEntry = defaultenum;
                inAttr.Order = 1000;
                this.FInTechnique = this.FFactory.CreateDiffSpread<EnumEntry>(inAttr);

                this.FoutCS.AssignFrom(this.varmanager.GetCustomData());
            }
            else
            {
                if (shader.IsCompiled)
                {
                    this.FHost.UpdateEnum(this.TechniqueEnumId, shader.TechniqueNames[0], shader.TechniqueNames);
                    this.varmanager.UpdateShaderPins();
                    this.FoutCS.AssignFrom(this.varmanager.GetCustomData());
                }
            }

            this.shaderupdated = true;
            this.FInvalidate = true;
        }