﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ApplyProceduralTextureProperties : MonoBehaviour
{
    [Space(5)]
    public Material m_Material;
    [Space(5)]
    public ProceduralTexture2D proceduralTexAssetAlbedo;
    public ProceduralTexture2D proceduralTexAssetNormal;
    public ProceduralTexture2D proceduralTexAssetMask;

    public void SyncMatWithProceduralTextureAsset() {

    	if(m_Material == null) {
    		return;
    	}

        if(proceduralTexAssetAlbedo != null) {
        	m_Material.SetTexture	("_Tinput_Albedo", proceduralTexAssetAlbedo.Tinput);
        	m_Material.SetTexture	("_invT_Albedo", proceduralTexAssetAlbedo.invT);
        	
        	m_Material.SetVector 	("_InputSize_Albedo", new Vector3(proceduralTexAssetAlbedo.Tinput.width, proceduralTexAssetAlbedo.Tinput.height, 1.0f / proceduralTexAssetAlbedo.invT.height));
            m_Material.SetVector    ("_CompressionScalars_Albedo",proceduralTexAssetAlbedo.compressionScalers);

        	m_Material.SetVector 	("_ColorSpaceOrigin_Albedo",proceduralTexAssetAlbedo.colorSpaceOrigin);
        	m_Material.SetVector 	("_ColorSpaceVector1_Albedo",proceduralTexAssetAlbedo.colorSpaceVector1);
        	m_Material.SetVector 	("_ColorSpaceVector2_Albedo",proceduralTexAssetAlbedo.colorSpaceVector2);
        	m_Material.SetVector 	("_ColorSpaceVector3_Albedo",proceduralTexAssetAlbedo.colorSpaceVector3);
        }

        if(proceduralTexAssetNormal != null) {
            m_Material.SetTexture   ("_Tinput_Normal", proceduralTexAssetNormal.Tinput);
            m_Material.SetTexture   ("_invT_Normal", proceduralTexAssetNormal.invT);

            m_Material.SetVector    ("_InputSize_Normal", new Vector3(proceduralTexAssetNormal.Tinput.width, proceduralTexAssetNormal.Tinput.height, 1.0f / proceduralTexAssetNormal.invT.height));
            m_Material.SetVector    ("_CompressionScalars_Normal",proceduralTexAssetNormal.compressionScalers);
        }

        if(proceduralTexAssetMask != null) {
            m_Material.SetTexture   ("_Tinput_Mask", proceduralTexAssetMask.Tinput);
            m_Material.SetTexture   ("_invT_Mask", proceduralTexAssetMask.invT);
            
            m_Material.SetVector    ("_InputSize_Mask", new Vector3(proceduralTexAssetMask.Tinput.width, proceduralTexAssetMask.Tinput.height, 1.0f / proceduralTexAssetMask.invT.height));
            m_Material.SetVector    ("_CompressionScalars_Mask",proceduralTexAssetMask.compressionScalers);

            m_Material.SetVector    ("_ColorSpaceOrigin_Mask",proceduralTexAssetMask.colorSpaceOrigin);
            m_Material.SetVector    ("_ColorSpaceVector1_Mask",proceduralTexAssetMask.colorSpaceVector1);
            m_Material.SetVector    ("_ColorSpaceVector2_Mask",proceduralTexAssetMask.colorSpaceVector2);
            m_Material.SetVector    ("_ColorSpaceVector3_Mask",proceduralTexAssetMask.colorSpaceVector3);
        }
    }
}