Exemplo n.º 1
0
        private void AddPin(IPin2 pin)
        {
            DX11Node vn = this.graph.FindNode(pin.ParentNode);

            IPluginIO io = pin.InternalCOMInterf as IPluginIO;

            if (pin.Direction == PinDirection.Input && io != null && pin.Type.StartsWith("DX11Resource"))
            {
                DX11InputPin vop = new DX11InputPin(vn, pin.InternalCOMInterf, io);

                //We only register event on input pin (more than enough to build graph)
                pin.Connected    += pin_Connected;
                pin.Disconnected += pin_Disconnected;

                IPin src = this.GetSource(pin.InternalCOMInterf);

                if (src != null)
                {
                    if (this.CanProcessPin(pin.InternalCOMInterf, src))
                    {
                        if (!this.SetLink(pin.InternalCOMInterf, src, false))
                        {
                            //Add projected pending link
                            HdeLink link = new HdeLink(pin.InternalCOMInterf, src);
                            this.pendinglinks.Add(pin.InternalCOMInterf, link);
                        }
                    }
                }
            }

            if (pin.Direction == PinDirection.Output && io != null && pin.Type.StartsWith("DX11Resource"))
            {
                DX11OutputPin vop = new DX11OutputPin(vn, pin.InternalCOMInterf, io);
            }
        }
Exemplo n.º 2
0
        private void ProcessPendingLinks()
        {
            //Try to see if we can process lost links now
            Dictionary <IPin, HdeLink> np = new Dictionary <IPin, HdeLink>();

            foreach (IPin p in this.pendinglinks.Keys)
            {
                HdeLink l = this.pendinglinks[p];
                if (!this.SetLink(l.sink, l.src, true))
                {
                    np[p] = l;
                }
            }
            this.pendinglinks = np;
        }