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
        }
Exemplo n.º 4
0
        /// <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);
 }