public void AssignToNode(Texture tex, Painting.Channels channels, TC_Node node) { if (node == null) { return; } UpdateNodeTarget(node); node.stampTex = tex; // node.size.y = 1000; if (channels != Painting.Channels.RGBA) { if (node.imageSettings == null) { node.imageSettings = new ImageSettings(); } int active = (int)channels - 2; for (int i = 0; i < node.imageSettings.colChannels.Length; i++) { node.imageSettings.colChannels[i].active = i == active; } } node.active = node.enabled = node.stampTex != null; }
public void UpdateNodeTarget(TC_Node node) { if (node == null) { return; } if (node.inputKind != InputKind.File || node.inputFile != InputFile.Image) { // Make sure it's an image node node.inputKind = InputKind.File; node.inputFile = InputFile.Image; node.Init(); TC.RefreshOutputReferences(node.outputId, true); } if (TCNode != null && TCNode != node) { node.size = TCNode.size; } if (node.transform != transform) { node.transform.position = transform.position; node.transform.localScale = Vector3.one; node.transform.localScale = new Vector3(transform.lossyScale.x / node.transform.lossyScale.x, transform.lossyScale.y / node.transform.lossyScale.y, transform.lossyScale.z / node.transform.lossyScale.z); node.transform.rotation = transform.rotation; } }
private void OnEnable() { TCNode = GetComponent <TC_Node> (); if (painter == null) { painter = new Painting(); } painter.OnAssignCanvas -= AssignCanvas; painter.OnAssignCanvas += AssignCanvas; painter.OnPainting -= UpdatePaintArea; painter.OnPainting += UpdatePaintArea; painter.OnScaleCanvas -= ScaleRelative; painter.OnScaleCanvas += ScaleRelative; painter.Open(); UpdateTerrains(); #if UNITY_EDITOR && UNITY_5_6_OR_NEWER UnityEditor.SceneManagement.EditorSceneManager.sceneSaving -= SaveCacheWithScene; UnityEditor.SceneManagement.EditorSceneManager.sceneSaving += SaveCacheWithScene; #endif }
/// <summary> /// Scans the group the node targets are in and fetches their preview /// </summary> private void GetPreviewTextures(bool overwriteExisting = false) { for (int ch = 0; ch < painter.channelTargets.Count && ch < painter.painter.canvasChannelCount; ch++) { if (painter.painter.canvasChannelDefinitions[ch].displayTexture != null && !overwriteExisting) { continue; } List <TC_Node> nodes = painter.channelTargets[ch].targets; TC_Node node = nodes == null? null : nodes.FirstOrDefault(n => n != null); // TODO: Filter by outputID - make sure each preview is of the same output if possible if (node != null) { // Search layer the node is in TC_ItemBehaviour parent = node; while (parent.parentItem != null) { parent = parent.parentItem; if (parent.GetType() == typeof(TC_Layer) || parent.GetType() == typeof(TC_LayerGroup)) { break; } } TC_Layer layer = parent as TC_Layer; TC_LayerGroup layerGroup = parent as TC_LayerGroup; TC_ItemBehaviour previewItem = null; if (layer != null) { previewItem = (TC_ItemBehaviour)layer.selectItemGroup ?? (TC_ItemBehaviour)layer.selectNodeGroup; } else if (layerGroup != null) { previewItem = layerGroup.groupResult; } if (previewItem != null) { // Get preview texture of the given item Texture texPreview = null; if (previewItem.outputId == TC.colorOutput && previewItem.preview.tex != null) { texPreview = previewItem.preview.tex; } else { if (previewItem.rtDisplay != null) { texPreview = previewItem.rtDisplay; } else if (previewItem.rtPreview != null) { texPreview = previewItem.rtPreview; } else if (previewItem.preview.tex != null) { texPreview = previewItem.preview.tex; } } if (texPreview != null) { // Assign preview texture Painting.CanvasChannel channel = painter.painter.canvasChannelDefinitions[ch]; channel.displayTexture = texPreview; painter.painter.canvasChannelDefinitions[ch] = channel; } } } } }
public void AssignToNode(Texture tex, TC_Node node) { AssignToNode(tex, Painting.Channels.RGBA, node); }