public IShaderPin CreatePin(string type, EffectVariable var, IPluginHost host, IIOFactory iofactory) { if (this.delegates.ContainsKey(type)) { IShaderPin sp = this.delegates[type](var); sp.Initialize(iofactory, var); return(sp); } else { return(null); } }
protected override void CreatePin(EffectVariable var) { if (var.AsInterface() != null) { if (var.LinkClasses().Length == 0) { if (var.GetVariableType().Description.Elements == 0) { /*InterfaceShaderPin ip = new InterfaceShaderPin(var, this.host, this.iofactory); * ip.ParentEffect = this.shader.DefaultEffect; * this.shaderpins.Add(var.Description.Name, ip);*/ } } else { RestrictedInterfaceShaderPin rp = new RestrictedInterfaceShaderPin(); rp.Initialize(this.iofactory, var); rp.ParentEffect = this.shader.DefaultEffect; this.shaderpins.Add(var.Description.Name, rp); } return; } //Search for render variable first if (ShaderPinFactory.IsRenderVariable(var)) { IRenderVariable rv = ShaderPinFactory.GetRenderVariable(var, this.host, this.iofactory); this.rendervariables.Add(rv.Name, rv); } else if (ShaderPinFactory.IsWorldRenderVariable(var)) { IWorldRenderVariable wv = ShaderPinFactory.GetWorldRenderVariable(var, this.host, this.iofactory); this.worldvariables.Add(wv.Name, wv); } else if (ShaderPinFactory.IsShaderPin(var)) { IShaderPin sp = traverseResult().Pins[var.Description.Name]; sp.Initialize(iofactory, var); if (sp != null) { this.shaderpins.Add(sp.Name, sp); } } else { if (var.Description.Semantic != "IMMUTABLE" && var.Description.Semantic != "") { this.customvariables.Add(new DX11CustomRenderVariable(var)); } } }