Heroes_of_Hiis/Assets/Polaris - Low Poly Ecosystem/Polaris - Low Poly Terrain .../Runtime/Scripts/GroupTool/GShadingOverride.cs

659 lines
19 KiB
C#

#if GRIFFIN
using UnityEngine;
namespace Pinwheel.Griffin.GroupTool
{
[System.Serializable]
public struct GShadingOverride
{
[SerializeField]
private bool overrideCustomMaterial;
public bool OverrideCustomMaterial
{
get
{
return overrideCustomMaterial;
}
set
{
overrideCustomMaterial = value;
}
}
[SerializeField]
private Material customMaterial;
public Material CustomMaterial
{
get
{
return customMaterial;
}
set
{
customMaterial = value;
}
}
[SerializeField]
private bool overrideAlbedoMapResolution;
public bool OverrideAlbedoMapResolution
{
get
{
return overrideAlbedoMapResolution;
}
set
{
overrideAlbedoMapResolution = value;
}
}
[SerializeField]
private int albedoMapResolution;
public int AlbedoMapResolution
{
get
{
return albedoMapResolution;
}
set
{
albedoMapResolution = Mathf.Clamp(Mathf.ClosestPowerOfTwo(value), GCommon.TEXTURE_SIZE_MIN, GCommon.TEXTURE_SIZE_MAX);
}
}
[SerializeField]
private bool overrideMetallicMapResolution;
public bool OverrideMetallicMapResolution
{
get
{
return overrideMetallicMapResolution;
}
set
{
overrideMetallicMapResolution = value;
}
}
[SerializeField]
private int metallicMapResolution;
public int MetallicMapResolution
{
get
{
return metallicMapResolution;
}
set
{
metallicMapResolution = Mathf.Clamp(Mathf.ClosestPowerOfTwo(value), GCommon.TEXTURE_SIZE_MIN, GCommon.TEXTURE_SIZE_MAX);
}
}
[SerializeField]
private bool overrideAlbedoMapPropertyName;
public bool OverrideAlbedoMapPropertyName
{
get
{
return overrideAlbedoMapPropertyName;
}
set
{
overrideAlbedoMapPropertyName = value;
}
}
[SerializeField]
private string albedoMapPropertyName;
public string AlbedoMapPropertyName
{
get
{
return albedoMapPropertyName;
}
set
{
albedoMapPropertyName = value;
}
}
[SerializeField]
private bool overrideMetallicMapPropertyName;
public bool OverrideMetallicMapPropertyName
{
get
{
return overrideMetallicMapPropertyName;
}
set
{
overrideMetallicMapPropertyName = value;
}
}
[SerializeField]
private string metallicMapPropertyName;
public string MetallicMapPropertyName
{
get
{
return metallicMapPropertyName;
}
set
{
metallicMapPropertyName = value;
}
}
[SerializeField]
private bool overrideColorByHeight;
public bool OverrideColorByHeight
{
get
{
return overrideColorByHeight;
}
set
{
overrideColorByHeight = value;
}
}
[SerializeField]
private Gradient colorByHeight;
public Gradient ColorByHeight
{
get
{
if (colorByHeight == null)
{
colorByHeight = GUtilities.Clone(GRuntimeSettings.Instance.shadingDefault.colorByHeight);
}
return colorByHeight;
}
set
{
colorByHeight = value;
}
}
[SerializeField]
private bool overrideColorByNormal;
public bool OverrideColorByNormal
{
get
{
return overrideColorByNormal;
}
set
{
overrideColorByNormal = value;
}
}
[SerializeField]
private Gradient colorByNormal;
public Gradient ColorByNormal
{
get
{
if (colorByNormal == null)
{
colorByNormal = GUtilities.Clone(GRuntimeSettings.Instance.shadingDefault.colorByNormal);
}
return colorByNormal;
}
set
{
colorByNormal = value;
}
}
[SerializeField]
private bool overrideColorBlendCurve;
public bool OverrideColorBlendCurve
{
get
{
return overrideColorBlendCurve;
}
set
{
overrideColorBlendCurve = value;
}
}
[SerializeField]
private AnimationCurve colorBlendCurve;
public AnimationCurve ColorBlendCurve
{
get
{
if (colorBlendCurve == null)
{
colorBlendCurve = GUtilities.Clone(GRuntimeSettings.Instance.shadingDefault.colorBlendCurve);
}
return colorBlendCurve;
}
set
{
colorBlendCurve = value;
}
}
[SerializeField]
private bool overrideColorByHeightPropertyName;
public bool OverrideColorByHeightPropertyName
{
get
{
return overrideColorByHeightPropertyName;
}
set
{
overrideColorByHeightPropertyName = value;
}
}
[SerializeField]
private string colorByHeightPropertyName;
public string ColorByHeightPropertyName
{
get
{
return colorByHeightPropertyName;
}
set
{
colorByHeightPropertyName = value;
}
}
[SerializeField]
private bool overrideColorByNormalPropertyName;
public bool OverrideColorByNormalPropertyName
{
get
{
return overrideColorByNormalPropertyName;
}
set
{
overrideColorByNormalPropertyName = value;
}
}
[SerializeField]
private string colorByNormalPropertyName;
public string ColorByNormalPropertyName
{
get
{
return colorByNormalPropertyName;
}
set
{
colorByNormalPropertyName = value;
}
}
[SerializeField]
private bool overrideColorBlendPropertyName;
public bool OverrideColorBlendPropertyName
{
get
{
return overrideColorBlendPropertyName;
}
set
{
overrideColorBlendPropertyName = value;
}
}
[SerializeField]
private string colorBlendPropertyName;
public string ColorBlendPropertyName
{
get
{
return colorBlendPropertyName;
}
set
{
colorBlendPropertyName = value;
}
}
[SerializeField]
private bool overrideDimensionPropertyName;
public bool OverrideDimensionPropertyName
{
get
{
return overrideDimensionPropertyName;
}
set
{
overrideDimensionPropertyName = value;
}
}
[SerializeField]
private string dimensionPropertyName;
public string DimensionPropertyName
{
get
{
return dimensionPropertyName;
}
set
{
dimensionPropertyName = value;
}
}
[SerializeField]
private bool overrideSplats;
public bool OverrideSplats
{
get
{
return overrideSplats;
}
set
{
overrideSplats = value;
}
}
[SerializeField]
private GSplatPrototypeGroup splats;
public GSplatPrototypeGroup Splats
{
get
{
return splats;
}
set
{
splats = value;
}
}
[SerializeField]
private bool overrideSplatControlResolution;
public bool OverrideSplatControlResolution
{
get
{
return overrideSplatControlResolution;
}
set
{
overrideSplatControlResolution = value;
}
}
[SerializeField]
private int splatControlResolution;
public int SplatControlResolution
{
get
{
return splatControlResolution;
}
set
{
splatControlResolution = Mathf.Clamp(Mathf.ClosestPowerOfTwo(value), GCommon.TEXTURE_SIZE_MIN, GCommon.TEXTURE_SIZE_MAX);
}
}
[SerializeField]
private bool overrideSplatControlMapPropertyName;
public bool OverrideSplatControlMapPropertyName
{
get
{
return overrideSplatControlMapPropertyName;
}
set
{
overrideSplatControlMapPropertyName = value;
}
}
[SerializeField]
private string splatControlMapPropertyName;
public string SplatControlMapPropertyName
{
get
{
return splatControlMapPropertyName;
}
set
{
splatControlMapPropertyName = value;
}
}
[SerializeField]
private bool overrideSplatMapPropertyName;
public bool OverrideSplatMapPropertyName
{
get
{
return overrideSplatMapPropertyName;
}
set
{
overrideSplatMapPropertyName = value;
}
}
[SerializeField]
private string splatMapPropertyName;
public string SplatMapPropertyName
{
get
{
return splatMapPropertyName;
}
set
{
splatMapPropertyName = value;
}
}
[SerializeField]
private bool overrideSplatNormalPropertyName;
public bool OverrideSplatNormalPropertyName
{
get
{
return overrideSplatNormalPropertyName;
}
set
{
overrideSplatNormalPropertyName = value;
}
}
[SerializeField]
private string splatNormalPropertyName;
public string SplatNormalPropertyName
{
get
{
return splatNormalPropertyName;
}
set
{
splatNormalPropertyName = value;
}
}
[SerializeField]
private bool overrideSplatMetallicPropertyName;
public bool OverrideSplatMetallicPropertyName
{
get
{
return overrideSplatMetallicPropertyName;
}
set
{
overrideSplatMetallicPropertyName = value;
}
}
[SerializeField]
private string splatMetallicPropertyName;
public string SplatMetallicPropertyName
{
get
{
return splatMetallicPropertyName;
}
set
{
splatMetallicPropertyName = value;
}
}
[SerializeField]
private bool overrideSplatSmoothnessPropertyName;
public bool OverrideSplatSmoothnessPropertyName
{
get
{
return overrideSplatSmoothnessPropertyName;
}
set
{
overrideSplatSmoothnessPropertyName = value;
}
}
[SerializeField]
private string splatSmoothnessPropertyName;
public string SplatSmoothnessPropertyName
{
get
{
return splatSmoothnessPropertyName;
}
set
{
splatSmoothnessPropertyName = value;
}
}
public void Reset()
{
OverrideCustomMaterial = false;
OverrideCustomMaterial = false;
OverrideAlbedoMapResolution = false;
OverrideMetallicMapResolution = false;
OverrideAlbedoMapPropertyName = false;
OverrideMetallicMapPropertyName = false;
OverrideColorByHeight = false;
OverrideColorByNormal = false;
OverrideColorBlendCurve = false;
OverrideColorByHeightPropertyName = false;
OverrideColorByNormalPropertyName = false;
OverrideColorBlendPropertyName = false;
OverrideDimensionPropertyName = false;
OverrideSplatControlResolution = false;
OverrideSplatControlMapPropertyName = false;
OverrideSplatMapPropertyName = false;
OverrideSplatNormalPropertyName = false;
OverrideSplatMetallicPropertyName = false;
OverrideSplatSmoothnessPropertyName = false;
CustomMaterial = null;
AlbedoMapResolution = GRuntimeSettings.Instance.shadingDefault.albedoMapResolution; ;
MetallicMapResolution = GRuntimeSettings.Instance.shadingDefault.metallicMapResolution; ;
AlbedoMapPropertyName = GRuntimeSettings.Instance.shadingDefault.albedoMapPropertyName;
MetallicMapPropertyName = GRuntimeSettings.Instance.shadingDefault.metallicMapPropertyName;
ColorByHeight = GUtilities.Clone(GRuntimeSettings.Instance.shadingDefault.colorByHeight);
ColorByNormal = GUtilities.Clone(GRuntimeSettings.Instance.shadingDefault.colorByNormal);
ColorBlendCurve = GUtilities.Clone(GRuntimeSettings.Instance.shadingDefault.colorBlendCurve);
ColorByHeightPropertyName = GRuntimeSettings.Instance.shadingDefault.colorByHeightPropertyName;
ColorByNormalPropertyName = GRuntimeSettings.Instance.shadingDefault.colorByNormalPropertyName;
ColorBlendPropertyName = GRuntimeSettings.Instance.shadingDefault.colorBlendPropertyName;
DimensionPropertyName = GRuntimeSettings.Instance.shadingDefault.dimensionPropertyName;
SplatControlResolution = GRuntimeSettings.Instance.shadingDefault.splatControlResolution;
SplatControlMapPropertyName = GRuntimeSettings.Instance.shadingDefault.splatControlMapPropertyName;
SplatMapPropertyName = GRuntimeSettings.Instance.shadingDefault.splatMapPropertyName;
SplatNormalPropertyName = GRuntimeSettings.Instance.shadingDefault.splatNormalPropertyName;
SplatMetallicPropertyName = GRuntimeSettings.Instance.shadingDefault.splatMetallicPropertyName;
SplatSmoothnessPropertyName = GRuntimeSettings.Instance.shadingDefault.splatSmoothnessPropertyName;
}
public void Override(GShading s)
{
if (OverrideCustomMaterial && CustomMaterial != null)
{
if (s.CustomMaterial == null)
{
Material mat = Object.Instantiate(CustomMaterial);
mat.name = "TerrainMaterial_" + s.TerrainData.Id;
#if UNITY_EDITOR
UnityEditor.AssetDatabase.CreateAsset(mat, string.Format("Assets/{0}.mat", mat.name));
#endif
s.CustomMaterial = mat;
}
else
{
s.CustomMaterial.shader = CustomMaterial.shader;
}
s.UpdateMaterials();
}
if (OverrideAlbedoMapResolution)
s.AlbedoMapResolution = AlbedoMapResolution;
if (OverrideMetallicMapResolution)
s.MetallicMapResolution = MetallicMapResolution;
if (OverrideAlbedoMapPropertyName)
s.AlbedoMapPropertyName = AlbedoMapPropertyName;
if (OverrideMetallicMapPropertyName)
s.MetallicMapPropertyName = MetallicMapPropertyName;
if (OverrideColorByHeight)
s.ColorByHeight = GUtilities.Clone(ColorByHeight);
if (OverrideColorByNormal)
s.ColorByNormal = GUtilities.Clone(ColorByNormal);
if (OverrideColorBlendCurve)
s.ColorBlendCurve = GUtilities.Clone(ColorBlendCurve);
if (OverrideColorByHeightPropertyName)
s.ColorByHeightPropertyName = ColorByHeightPropertyName;
if (OverrideColorByNormalPropertyName)
s.ColorByNormalPropertyName = ColorByNormalPropertyName;
if (OverrideColorBlendPropertyName)
s.ColorBlendPropertyName = ColorBlendPropertyName;
if (OverrideDimensionPropertyName)
s.DimensionPropertyName = DimensionPropertyName;
if (OverrideSplats)
s.Splats = Splats;
if (OverrideSplatControlResolution)
s.SplatControlResolution = SplatControlResolution;
if (OverrideSplatControlMapPropertyName)
s.SplatControlMapPropertyName = SplatControlMapPropertyName;
if (OverrideSplatMapPropertyName)
s.SplatMapPropertyName = SplatMapPropertyName;
if (OverrideSplatNormalPropertyName)
s.SplatNormalPropertyName = SplatNormalPropertyName;
if (OverrideSplatMetallicPropertyName)
s.SplatMetallicPropertyName = SplatMetallicPropertyName;
if (OverrideSplatSmoothnessPropertyName)
s.SplatSmoothnessPropertyName = SplatSmoothnessPropertyName;
if (OverrideColorByHeight || OverrideColorByNormal || OverrideColorBlendCurve)
{
s.UpdateLookupTextures();
}
}
}
}
#endif