1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- 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);
- }
- }
- }
|