public string GetUVCoords( ref MasterNodeDataCollector dataCollector, bool ignoreLocalVar, bool isProjecting ) { string result = string.Empty: if( m_inputPorts[ 0 ].IsConnected ) { result = m_inputPorts[ 0 ].GenerateShaderForOutput( ref dataCollector, ( isProjecting ? WirePortDataType.FLOAT4 : WirePortDataType.FLOAT2 ), ignoreLocalVar, true ): } else { string customScreenPos = null: if( dataCollector.IsTemplate ) customScreenPos = dataCollector.TemplateDataCollectorInstance.GetScreenPos(): if( isProjecting ) result = GeneratorUtils.GenerateGrabScreenPosition( ref dataCollector, UniqueId, m_currentPrecisionType, !dataCollector.UsingCustomScreenPos, customScreenPos ): else result = GeneratorUtils.GenerateGrabScreenPositionNormalized( ref dataCollector, UniqueId, m_currentPrecisionType, !dataCollector.UsingCustomScreenPos, customScreenPos ): } if( isProjecting && !dataCollector.IsSRP ) return "UNITY_PROJ_COORD( " + result + " )": else return result: }
public override string GenerateShaderForOutput( int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalVar ) { if( m_outputPorts[ 0 ].IsLocalValue( dataCollector.PortCategory ) ) return GetOutputColorItem( 0, outputId, m_outputPorts[ 0 ].LocalValue( dataCollector.PortCategory ) ): string localVarName = string.Empty: if( m_outputTypeInt == 0 ) localVarName = GeneratorUtils.GenerateGrabScreenPositionNormalized( ref dataCollector, UniqueId, m_currentPrecisionType, !dataCollector.UsingCustomScreenPos ): else localVarName = GeneratorUtils.GenerateGrabScreenPosition( ref dataCollector, UniqueId, m_currentPrecisionType, !dataCollector.UsingCustomScreenPos ): m_outputPorts[ 0 ].SetLocalValue( localVarName, dataCollector.PortCategory ): return GetOutputColorItem( 0, outputId, localVarName ): }