Firstborn/Assets/AwesomeTechnologies/VegetationStudioPro/Runtime/ShaderSystem/NM/NMStandardSnowController.cs

83 lines
2.6 KiB
C#
Raw Permalink Normal View History

using System;
using AwesomeTechnologies.VegetationSystem;
using UnityEngine;
namespace AwesomeTechnologies.Shaders
{
// ReSharper disable once InconsistentNaming
public class NMStandardSnowController : IShaderController
{
private static readonly string[] ShaderNames =
{
"NatureManufacture Shaders/Standard Shaders/Standard Metalic Snow", "NatureManufacture Shaders/Standard Shaders/Standard Specular Snow"
};
public bool MatchShader(string shaderName)
{
if (string.IsNullOrEmpty(shaderName)) return false;
for (int i = 0; i <= ShaderNames.Length - 1; i++)
{
if (ShaderNames[i] == shaderName) return true;
}
return false;
}
public ShaderControllerSettings Settings { get; set; }
public void CreateDefaultSettings(Material[] materials)
{
Settings = new ShaderControllerSettings
{
Heading = "Nature Manufacture Standard Snow",
Description = "",
LODFadePercentage = false,
LODFadeCrossfade = false,
SampleWind = false,
SupportsInstantIndirect = true,
BillboardHDWind = false
};
Settings.AddLabelProperty("Snow settings");
Settings.AddBooleanProperty("GlobalSnow", "Use Global Snow Value", "", true);
Settings.AddFloatProperty("SnowAmount", "Snow Amount", "", ShaderControllerSettings.GetFloatFromMaterials(materials, "_Snow_Amount"), 0, 1);
}
public void UpdateMaterial(Material material, EnvironmentSettings environmentSettings)
{
if (Settings == null) return;
if (material == null) return;
try
{
bool globalSnow = Settings.GetBooleanPropertyValue("GlobalSnow");
if (globalSnow)
{
material.SetFloat("_Snow_Amount", environmentSettings.SnowAmount * 2f);
}
else
{
float snowAmount = Settings.GetFloatPropertyValue("SnowAmount");
material.SetFloat("_Snow_Amount", snowAmount * 2f);
}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
public void UpdateWind(Material material, WindSettings windSettings)
{
}
public bool MatchBillboardShader(Material[] materials)
{
return true;
}
}
}