72 lines
2.1 KiB
C#
72 lines
2.1 KiB
C#
|
using UnityEngine;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System;
|
|||
|
|
|||
|
namespace DigitalOpus.MB.Core
|
|||
|
{
|
|||
|
public class TextureBlenderLegacyDiffuse : TextureBlender
|
|||
|
{
|
|||
|
bool doColor;
|
|||
|
Color m_tintColor;
|
|||
|
Color m_defaultTintColor = Color.white;
|
|||
|
|
|||
|
public bool DoesShaderNameMatch(string shaderName)
|
|||
|
{
|
|||
|
if (shaderName.Equals ("Legacy Shaders/Diffuse")) {
|
|||
|
return true;
|
|||
|
} else if (shaderName.Equals ("Diffuse")) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
public void OnBeforeTintTexture(Material sourceMat, string shaderTexturePropertyName)
|
|||
|
{
|
|||
|
if (shaderTexturePropertyName.EndsWith("_MainTex"))
|
|||
|
{
|
|||
|
doColor = true;
|
|||
|
m_tintColor = sourceMat.GetColor("_Color");
|
|||
|
} else
|
|||
|
{
|
|||
|
doColor = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public Color OnBlendTexturePixel(string propertyToDoshaderPropertyName, Color pixelColor)
|
|||
|
{
|
|||
|
if (doColor)
|
|||
|
{
|
|||
|
return new Color(pixelColor.r * m_tintColor.r, pixelColor.g * m_tintColor.g, pixelColor.b * m_tintColor.b, pixelColor.a * m_tintColor.a);
|
|||
|
}
|
|||
|
return pixelColor;
|
|||
|
}
|
|||
|
|
|||
|
public bool NonTexturePropertiesAreEqual(Material a, Material b)
|
|||
|
{
|
|||
|
return TextureBlenderFallback._compareColor(a, b, m_defaultTintColor, "_Color");
|
|||
|
}
|
|||
|
|
|||
|
public void SetNonTexturePropertyValuesOnResultMaterial(Material resultMaterial)
|
|||
|
{
|
|||
|
resultMaterial.SetColor("_Color", Color.white);
|
|||
|
}
|
|||
|
|
|||
|
public Color GetColorIfNoTexture(Material m, ShaderTextureProperty texPropertyName)
|
|||
|
{
|
|||
|
if (texPropertyName.name.Equals("_MainTex"))
|
|||
|
{
|
|||
|
if (m != null && m.HasProperty("_Color"))
|
|||
|
{
|
|||
|
try
|
|||
|
{ //need try because can't garantee _Color is a color
|
|||
|
return m.GetColor("_Color");
|
|||
|
}
|
|||
|
catch (Exception) { }
|
|||
|
}
|
|||
|
}
|
|||
|
return new Color(1,1,1,0);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|