public void Render(IPluginIO pin, DX11RenderContext context, DX11RenderSettings settings)
        {
            if (this.FEnabled[0])
            {
                List <IDX11ObjectValidator> valids = new List <IDX11ObjectValidator>();
                if (this.FInVal.IsConnected)
                {
                    for (int i = 0; i < this.FInVal.SliceCount; i++)
                    {
                        if (this.FInVal[i].Enabled)
                        {
                            IDX11ObjectValidator v = this.FInVal[i];
                            //v.Reset();
                            v.SetGlobalSettings(settings);

                            valids.Add(v);
                            settings.ObjectValidators.Add(v);
                        }
                    }
                }

                if (this.FLayerIn.IsConnected)
                {
                    for (int i = 0; i < this.FLayerIn.SliceCount; i++)
                    {
                        this.FLayerIn[i][context].Render(this.FLayerIn.PluginIO, context, settings);
                    }
                }

                foreach (IDX11ObjectValidator v in valids)
                {
                    settings.ObjectValidators.Remove(v);
                }
            }
        }
 public bool ValidateObject(DX11ObjectRenderSettings obj)
 {
     for (int i = 0; i < this.ObjectValidators.Count; i++)
     {
         IDX11ObjectValidator objval = this.ObjectValidators[i];
         if (objval.Enabled)
         {
             if (!objval.Validate(obj))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
        public void Render(IPluginIO pin, DX11RenderContext context, DX11RenderSettings settings)
        {
            if (this.spmax > 0)
            {
                if (this.FEnabled[0])
                {
                    bool popstate = false;

                    if (this.FInState.PluginIO.IsConnected)
                    {
                        context.RenderStateStack.Push(this.FInState[0]);
                        popstate = true;
                    }

                    List <IDX11RenderSemantic> semantics = new List <IDX11RenderSemantic>();
                    if (this.FInSemantics.PluginIO.IsConnected)
                    {
                        semantics.AddRange(this.FInSemantics);
                        settings.CustomSemantics.AddRange(semantics);
                    }


                    List <DX11Resource <IDX11RenderSemantic> > ressemantics = new List <DX11Resource <IDX11RenderSemantic> >();
                    if (this.FInResSemantics.PluginIO.IsConnected)
                    {
                        ressemantics.AddRange(this.FInResSemantics);
                        settings.ResourceSemantics.AddRange(ressemantics);
                    }


                    List <IDX11ObjectValidator> valids = new List <IDX11ObjectValidator>();
                    if (this.FInVal.PluginIO.IsConnected)
                    {
                        for (int i = 0; i < this.FInVal.SliceCount; i++)
                        {
                            if (this.FInVal[i].Enabled)
                            {
                                IDX11ObjectValidator v = this.FInVal[i];
                                //v.Reset();
                                v.SetGlobalSettings(settings);

                                valids.Add(v);
                                settings.ObjectValidators.Add(v);
                            }
                        }
                    }



                    if (this.BeginQuery != null)
                    {
                        this.BeginQuery(context);
                    }

                    foreach (IIOContainer <Pin <DX11Resource <DX11Layer> > > dxpin in this.FLayers)
                    {
                        if (dxpin.IOObject.PluginIO.IsConnected)
                        {
                            try
                            {
                                dxpin.IOObject[0][context].Render(dxpin.IOObject.PluginIO, context, settings);
                            }
                            catch
                            { }
                        }
                    }

                    if (this.EndQuery != null)
                    {
                        this.EndQuery(context);
                    }

                    foreach (IDX11RenderSemantic semantic in semantics)
                    {
                        settings.CustomSemantics.Remove(semantic);
                    }

                    foreach (DX11Resource <IDX11RenderSemantic> rs in ressemantics)
                    {
                        settings.ResourceSemantics.Remove(rs);
                    }

                    foreach (IDX11ObjectValidator v in valids)
                    {
                        settings.ObjectValidators.Remove(v);
                    }

                    if (popstate)
                    {
                        context.RenderStateStack.Pop();
                    }
                }
            }
        }