diff options
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/Editor/Menu/Clipboard.cs')
-rw-r--r-- | Assets/AmplifyShaderEditor/Plugins/Editor/Menu/Clipboard.cs | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/Assets/AmplifyShaderEditor/Plugins/Editor/Menu/Clipboard.cs b/Assets/AmplifyShaderEditor/Plugins/Editor/Menu/Clipboard.cs deleted file mode 100644 index 4f2405c4..00000000 --- a/Assets/AmplifyShaderEditor/Plugins/Editor/Menu/Clipboard.cs +++ /dev/null @@ -1,250 +0,0 @@ -// Amplify Shader Editor - Visual Shader Editing Tool -// Copyright (c) Amplify Creations, Lda <info@amplify.pt> -using System; -using UnityEngine; -using System.Collections.Generic; -using UnityEditor; - -namespace AmplifyShaderEditor -{ - - public class ClipboardData - { - public string Data = string.Empty; - public string Connections = string.Empty; - public int OldNodeId = -1; - public int NewNodeId = -1; - - public ClipboardData( string data, string connections, int oldNodeId ) - { - Data = data; - Connections = connections; - OldNodeId = oldNodeId; - } - - public override string ToString() - { - return Data + IOUtils.CLIPBOARD_DATA_SEPARATOR + Connections + IOUtils.CLIPBOARD_DATA_SEPARATOR + OldNodeId + IOUtils.CLIPBOARD_DATA_SEPARATOR + NewNodeId; - } - } - - public class Clipboard - { - public const string ClipboardId = "AMPLIFY_CLIPBOARD_ID"; - private readonly string[] ClipboardTagId = { "#CLIP_ITEM#" }; - private List<ClipboardData> m_clipboardStrData; - private Dictionary<int, ClipboardData> m_clipboardAuxData; - private Dictionary<string, ClipboardData> m_multiPassMasterNodeData; - - public Clipboard() - { - m_clipboardStrData = new List<ClipboardData>(); - m_clipboardAuxData = new Dictionary<int, ClipboardData>(); - m_multiPassMasterNodeData = new Dictionary<string, ClipboardData>(); - } - - public void AddMultiPassNodesToClipboard( List<TemplateMultiPassMasterNode> masterNodes ) - { - m_multiPassMasterNodeData.Clear(); - int templatesAmount = masterNodes.Count; - for( int i = 0; i < templatesAmount; i++ ) - { - if( !masterNodes[ i ].InvalidNode ) - { - string data = string.Empty; - string connection = string.Empty; - masterNodes[ i ].FullWriteToString( ref data, ref connection ); - ClipboardData clipboardData = new ClipboardData( data, connection, masterNodes[ i ].UniqueId ); - m_multiPassMasterNodeData.Add( masterNodes[ i ].PassUniqueName, clipboardData ); - } - } - } - - public void GetMultiPassNodesFromClipboard( List<TemplateMultiPassMasterNode> masterNodes ) - { - int templatesAmount = masterNodes.Count; - for( int i = 0; i < templatesAmount; i++ ) - { - if( m_multiPassMasterNodeData.ContainsKey( masterNodes[ i ].PassUniqueName ) ) - { - ClipboardData nodeData = m_multiPassMasterNodeData[ masterNodes[ i ].PassUniqueName ]; - string[] nodeParams = nodeData.Data.Split( IOUtils.FIELD_SEPARATOR ); - masterNodes[ i ].FullReadFromString( ref nodeParams ); - } - } - - for( int i = 0; i < templatesAmount; i++ ) - { - if( m_multiPassMasterNodeData.ContainsKey( masterNodes[ i ].PassUniqueName ) ) - { - masterNodes[ i ].SetReadOptions(); - masterNodes[ i ].ForceOptionsRefresh(); - } - } - - m_multiPassMasterNodeData.Clear(); - } - - public void AddToClipboard( List<ParentNode> selectedNodes , Vector3 initialPosition, ParentGraph graph ) - { - //m_clipboardStrData.Clear(); - //m_clipboardAuxData.Clear(); - - string clipboardData = IOUtils.Vector3ToString( initialPosition ) + ClipboardTagId[ 0 ]; - int masterNodeId = UIUtils.CurrentWindow.CurrentGraph.CurrentMasterNodeId; - int count = selectedNodes.Count; - for ( int i = 0; i < count; i++ ) - { - if ( UIUtils.CurrentWindow.IsShaderFunctionWindow || !graph.IsMasterNode( selectedNodes[ i ] )) - { - string nodeData = string.Empty; - string connections = string.Empty; - selectedNodes[ i ].ClipboardFullWriteToString( ref nodeData, ref connections ); - clipboardData += nodeData; - if ( !string.IsNullOrEmpty( connections ) ) - { - connections = connections.Substring( 0, connections.Length - 1 ); - clipboardData += "\n" + connections; - } - if ( i < count - 1 ) - clipboardData += ClipboardTagId[ 0 ]; - - //ClipboardData data = new ClipboardData( nodeData, connections, selectedNodes[ i ].UniqueId ); - //m_clipboardStrData.Add( data ); - //m_clipboardAuxData.Add( selectedNodes[ i ].UniqueId, data ); - } - } - - if ( !string.IsNullOrEmpty( clipboardData ) ) - { - EditorPrefs.SetString( ClipboardId, clipboardData ); - } - //for ( int i = 0; i < selectedNodes.Count; i++ ) - //{ - // if ( selectedNodes[ i ].UniqueId != masterNodeId ) - // { - // WireNode wireNode = selectedNodes[ i ] as WireNode; - // if ( wireNode != null ) - // { - // if ( !IsNodeChainValid( selectedNodes[ i ], true ) || !IsNodeChainValid( selectedNodes[ i ], false ) ) - // { - // UnityEngine.Debug.Log( "found invalid wire port" ); - // } - // } - // } - //} - } - - public Vector3 GetDataFromEditorPrefs() - { - Vector3 initialPos = Vector3.zero; - m_clipboardStrData.Clear(); - m_clipboardAuxData.Clear(); - string clipboardData = EditorPrefs.GetString( ClipboardId, string.Empty ); - if ( !string.IsNullOrEmpty( clipboardData ) ) - { - string[] clipboardDataArray = clipboardData.Split( ClipboardTagId, StringSplitOptions.None ); - initialPos = IOUtils.StringToVector3( clipboardDataArray[0] ); - for ( int i = 1; i < clipboardDataArray.Length; i++ ) - { - if ( !string.IsNullOrEmpty( clipboardDataArray[ i ] ) ) - { - int wiresIndex = clipboardDataArray[ i ].IndexOf( IOUtils.LINE_TERMINATOR ); - string nodeData = string.Empty; - string connections = string.Empty; - if ( wiresIndex < 0 ) - { - nodeData = clipboardDataArray[ i ]; - } - else - { - nodeData = clipboardDataArray[ i ].Substring( 0, wiresIndex ); - connections = clipboardDataArray[ i ].Substring( wiresIndex + 1 ); - } - string[] nodeDataArr = nodeData.Split( IOUtils.FIELD_SEPARATOR ); - if ( nodeDataArr.Length > 2 ) - { - int nodeId = Convert.ToInt32( nodeDataArr[ 2 ] ); - ClipboardData data = new ClipboardData( nodeData, connections, nodeId ); - m_clipboardStrData.Add( data ); - m_clipboardAuxData.Add( nodeId, data ); - } - - } - } - } - return initialPos; - } - - public bool IsNodeChainValid( ParentNode currentNode, bool forward ) - { - WireNode wireNode = currentNode as WireNode; - if ( wireNode == null ) - { - return m_clipboardAuxData.ContainsKey( currentNode.UniqueId ); - } - - if ( forward ) - { - if ( wireNode.InputPorts[ 0 ].ExternalReferences.Count > 0 ) - { - int nodeId = wireNode.InputPorts[ 0 ].ExternalReferences[ 0 ].NodeId; - if ( m_clipboardAuxData.ContainsKey( nodeId ) ) - { - return IsNodeChainValid( UIUtils.GetNode( nodeId ), forward ); - } - } - } - else - { - int nodeId = wireNode.OutputPorts[ 0 ].ExternalReferences[ 0 ].NodeId; - if ( m_clipboardAuxData.ContainsKey( nodeId ) ) - { - return IsNodeChainValid( UIUtils.GetNode( nodeId ), forward ); - } - } - return false; - } - - public void GenerateFullString() - { - string data = string.Empty; - for ( int i = 0; i < m_clipboardStrData.Count; i++ ) - { - data += m_clipboardStrData[ i ].ToString(); - if ( i < m_clipboardStrData.Count - 1 ) - { - data += IOUtils.LINE_TERMINATOR; - } - } - } - - public void ClearClipboard() - { - m_clipboardStrData.Clear(); - m_clipboardAuxData.Clear(); - m_multiPassMasterNodeData.Clear(); - } - - public ClipboardData GetClipboardData( int oldNodeId ) - { - if ( m_clipboardAuxData.ContainsKey( oldNodeId ) ) - return m_clipboardAuxData[ oldNodeId ]; - return null; - } - - public int GeNewNodeId( int oldNodeId ) - { - if ( m_clipboardAuxData.ContainsKey( oldNodeId ) ) - return m_clipboardAuxData[ oldNodeId ].NewNodeId; - return -1; - } - - public List<ClipboardData> CurrentClipboardStrData - { - get { return m_clipboardStrData; } - } - - public bool HasCachedMasterNodes { get { return m_multiPassMasterNodeData.Count > 0; } } - } -} |