private void updatePreview() { Image img = PreviewImage; if (ir0 != null) { ir0.Destroy(); img.Source = null; ir0 = null; } // if (!FilesManager.Instance.ActiveFile.ActiveState.IsComplete) return; FileState altState = new FileState(FilesManager.Instance.ActiveFile.ActiveState, false); // Find output Node outputNode = null; foreach (Node node in altState.Nodes) { if (node.inode.IsOutputNode()) { outputNode = node; break; } } // Find selected node oldSelectedVariable = parent.InputVariable; Node selectedNode = altState.dictionaryOldToNew[oldSelectedVariable.Node]; int oldIndex = oldSelectedVariable.Node.Variables.IndexOf(oldSelectedVariable); Variable selectedVariable = selectedNode.Variables[oldIndex]; // Remove output input if it was linked if (outputNode.Variables[0].InputType == Variable.InputTypes.Link) { outputNode.Variables[0].GetLinks()[0].removeConnection(); } // Find var output if it was linked if (selectedVariable.GetLinks().Count > 0 && FilesManager.Instance.ActiveFile.ActiveState.Renderer != null) { Variable outputVariable = selectedVariable.GetLinks()[0].OutputVariable; // Create a new connection Connection c = new Connection(); c.OutputVariable = outputVariable; c.InputVariable = outputNode.Variables[0]; // Compile source HLSLCompiler comp = new HLSLCompiler(altState); comp.Compile(); ir0 = FilesManager.Instance.ActiveFile.ActiveState.Renderer.Create(); ImageSource images = ir0.Initialize(); ir0.SetSourceCode(comp.SourceCode); img.Source = images; } }