| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- // Amplify Shader Editor - Visual Shader Editing Tool
 
- // Copyright (c) Amplify Creations, Lda <info@amplify.pt>
 
- using UnityEngine;
 
- using System;
 
- namespace AmplifyShaderEditor
 
- {
 
- 	[Serializable]
 
- 	[NodeAttributes( "Rotator", "UV Coordinates", "Rotates UVs or any Vector2 value from an Anchor point for a specified Time value")]
 
- 	public sealed class RotatorNode : ParentNode
 
- 	{
 
- 		private int m_cachedUsingEditorId = -1;
 
- 		protected override void CommonInit( int uniqueId )
 
- 		{
 
- 			base.CommonInit( uniqueId );
 
- 			AddInputPort( WirePortDataType.FLOAT2, false, "UV" );
 
- 			AddInputPort( WirePortDataType.FLOAT2, false, "Anchor" );
 
- 			AddInputPort( WirePortDataType.FLOAT, false, "Time" );
 
- 			AddOutputPort( WirePortDataType.FLOAT2, "Out" );
 
- 			m_useInternalPortData = true;
 
- 			m_inputPorts[ 2 ].FloatInternalData = 1;
 
- 			m_textLabelWidth = 50;
 
- 			m_previewShaderGUID = "e21408a1c7f12f14bbc2652f69bce1fc";
 
- 		}
 
- 		public override void SetPreviewInputs()
 
- 		{
 
- 			base.SetPreviewInputs();
 
- 			if ( m_cachedUsingEditorId == -1 )
 
- 				m_cachedUsingEditorId = Shader.PropertyToID( "_UsingEditor" );
 
- 			PreviewMaterial.SetFloat( m_cachedUsingEditorId, (m_inputPorts[ 2 ].IsConnected ? 0 : 1 ) );
 
- 		}
 
- 		public override void OnInputPortConnected( int portId, int otherNodeId, int otherPortId, bool activateNode = true )
 
- 		{
 
- 			base.OnInputPortConnected( portId, otherNodeId, otherPortId, activateNode );
 
- 			if( portId == 2 )
 
- 			{
 
- 				m_continuousPreviewRefresh = false;
 
- 			}
 
- 		}
 
- 		public override void OnInputPortDisconnected( int portId )
 
- 		{
 
- 			base.OnInputPortDisconnected( portId );
 
- 			if( portId == 2 )
 
- 			{
 
- 				m_continuousPreviewRefresh = true;
 
- 			}
 
- 		}
 
- 		public override string GenerateShaderForOutput( int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalvar )
 
- 		{
 
- 			if( m_outputPorts[ 0 ].IsLocalValue( dataCollector.PortCategory ) )
 
- 				return m_outputPorts[ 0 ].LocalValue( dataCollector.PortCategory );
 
- 			string result = string.Empty;
 
- 			string uv = m_inputPorts[ 0 ].GeneratePortInstructions( ref dataCollector );
 
- 			string anchor = m_inputPorts[ 1 ].GeneratePortInstructions( ref dataCollector );
 
- 			string time = m_inputPorts[ 2 ].GeneratePortInstructions( ref dataCollector );
 
- 			if ( !m_inputPorts[ 2 ].IsConnected )
 
- 			{
 
- 				if( !( dataCollector.IsTemplate && dataCollector.IsSRP ) )
 
- 					dataCollector.AddToIncludes( UniqueId, Constants.UnityShaderVariables );
 
- 				time += " * _Time.y";
 
- 			}
 
- 			result += uv;
 
- 			string cosVar = "cos" + OutputId;
 
- 			string sinVar = "sin" + OutputId;
 
- 			dataCollector.AddLocalVariable( UniqueId, "float " + cosVar + " = cos( "+time+" );");
 
- 			dataCollector.AddLocalVariable( UniqueId, "float " + sinVar + " = sin( "+time+" );");
 
- 			
 
- 			string value =  "mul( " + result + " - " + anchor + " , float2x2( "+cosVar+" , -"+sinVar+" , "+sinVar+" , "+cosVar+" )) + "+anchor;
 
- 			RegisterLocalVariable( 0, value, ref dataCollector, "rotator" + OutputId );
 
- 			return m_outputPorts[ 0 ].LocalValue( dataCollector.PortCategory );
 
- 		}
 
- 		public override void RefreshExternalReferences()
 
- 		{
 
- 			base.RefreshExternalReferences();
 
- 			if( UIUtils.CurrentShaderVersion() < 13107 )
 
- 			{
 
- 				m_inputPorts[ 2 ].FloatInternalData = 1;
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |