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); } }
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; }