72 lines
2.2 KiB
C#
72 lines
2.2 KiB
C#
using Thousandto.Code.Center;
|
|
using Thousandto.Core.Asset;
|
|
using UnityEngine;
|
|
|
|
namespace Thousandto.Code.Logic
|
|
{
|
|
/// <summary>
|
|
/// FGameObject的Shader的处理,用于Shader的切换处理.
|
|
/// </summary>
|
|
public class FGOShaderSwitcher
|
|
{
|
|
/// <summary>
|
|
/// 处理切换接口
|
|
/// </summary>
|
|
/// <param name="sh"></param>
|
|
/// <param name="code"></param>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public static Shader Process(Shader sh,ModelTypeCode code,int id)
|
|
{
|
|
switch (code)
|
|
{
|
|
case ModelTypeCode.Wing:
|
|
return ProcessWing(sh, id);
|
|
case ModelTypeCode.Object:
|
|
return ProcessObject(sh, id);
|
|
}
|
|
return sh;
|
|
|
|
}
|
|
|
|
//处理翅膀的处理
|
|
private static Shader ProcessWing(Shader sh, int imodelid)
|
|
{
|
|
var _sn = sh.name;
|
|
if (imodelid % 100 < 50) {
|
|
_sn = _sn + "_AlphaTest";
|
|
}
|
|
var _rgbSh = ShaderUseRGB(_sn);
|
|
if (_rgbSh != null)
|
|
return _rgbSh;
|
|
else if(sh.name != _sn)
|
|
{
|
|
//如果两个名字不同,那么就使用新的Shader
|
|
var _si = ShaderManager.SharedInstance.GetShaderDefine(_sn);
|
|
if (_si != null) return _si.RealShader;
|
|
}
|
|
return sh;
|
|
}
|
|
|
|
//处理采集的shader
|
|
private static Shader ProcessObject(Shader sh, int imodelid)
|
|
{
|
|
if (ShaderManager.IsEntityUseRGB && sh.name == "Ares/EntityState/Grown") {
|
|
var _newSh = ShaderUseRGB("Ares/EntityState/Grown");
|
|
if (_newSh!=null) return _newSh;
|
|
}
|
|
return sh;
|
|
}
|
|
|
|
//Shader使用RGB
|
|
private static Shader ShaderUseRGB(string strShName) {
|
|
if (ShaderManager.IsEntityUseRGB) {
|
|
var _rgb = strShName + "_RGB";
|
|
var _rgbSi = ShaderManager.SharedInstance.GetShaderDefine(_rgb);
|
|
if (_rgbSi!=null) return _rgbSi.RealShader;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|