using AssetRipper.SourceGenerated.Classes.ClassID_30;
using AssetRipper.SourceGenerated.NativeEnums.Global;
using GraphicsTier = AssetRipper.SourceGenerated.Enums.GraphicsTier;
using RenderingPath = AssetRipper.SourceGenerated.Enums.RenderingPath;
namespace AssetRipper.SourceGenerated.Extensions;
public static class GraphicsSettingsExtensions
{
public static void ConvertToEditorFormat(this IGraphicsSettings settings)
{
settings.BrgStripping = (int)BrgStrippingMode.KeepIfHybrid;//https://github.com/AssetRipper/TypeTreeDumps/blob/23cd2d4db3bd83a25c57ade3d5126b011422aa3c/FieldValues/2022.3.7f1.json#L761
settings.DefaultMobileRenderingPath = (int)RenderingPath.Forward;
settings.DefaultRenderingPath = (int)RenderingPath.Forward;
settings.FogKeepExp = true;
settings.FogKeepExp2 = true;
settings.FogKeepLinear = true;
settings.FogStripping = (int)ShaderStrippingMode.Automatic;
settings.InstancingStripping = (int)InstancingStrippingMode.StripUnused;
settings.LightmapKeepDirCombined = true;
settings.LightmapKeepDirSeparate = true;
settings.LightmapKeepDynamicDirCombined = true;
settings.LightmapKeepDynamicDirSeparate = true;
settings.LightmapKeepDynamicPlain = true;
settings.LightmapKeepDynamic = true;
settings.LightmapKeepPlain = true;
settings.LightmapKeepShadowMask = true;
settings.LightmapKeepSubtractive = true;
settings.LightmapStripping = (int)ShaderStrippingMode.Automatic;
if (settings.Has_TierSettings())
{
settings.TierSettings.Clear();//protection against converting GraphicsSettings multiple times
if (settings.Has_TierSettings_Tier1())
{
settings.TierSettings.Capacity = 3;
settings.TierSettings.AddNew().ConvertToEditorFormat(settings.TierSettings_Tier1, settings.GetBuildTargetGroup(), GraphicsTier.Tier1);
settings.TierSettings.AddNew().ConvertToEditorFormat(settings.TierSettings_Tier2, settings.GetBuildTargetGroup(), GraphicsTier.Tier2);
settings.TierSettings.AddNew().ConvertToEditorFormat(settings.TierSettings_Tier3, settings.GetBuildTargetGroup(), GraphicsTier.Tier3);
}
else if (settings.Has_ShaderSettings_Tier1())
{
settings.TierSettings.Capacity = 3;
settings.ShaderSettings_Tier1.ConvertToEditorFormat();
settings.ShaderSettings_Tier2.ConvertToEditorFormat();
settings.ShaderSettings_Tier2.ConvertToEditorFormat();
settings.TierSettings.AddNew().ConvertToEditorFormat(settings.ShaderSettings_Tier1, settings.GetBuildTargetGroup(), GraphicsTier.Tier1);
settings.TierSettings.AddNew().ConvertToEditorFormat(settings.ShaderSettings_Tier2, settings.GetBuildTargetGroup(), GraphicsTier.Tier2);
settings.TierSettings.AddNew().ConvertToEditorFormat(settings.ShaderSettings_Tier3, settings.GetBuildTargetGroup(), GraphicsTier.Tier3);
}
else if (settings.Has_ShaderSettings())
{
settings.TierSettings.Capacity = 1;
settings.ShaderSettings.ConvertToEditorFormat();
settings.TierSettings.AddNew().ConvertToEditorFormat(settings.ShaderSettings, settings.GetBuildTargetGroup(), GraphicsTier.Tier1);
}
}
}
private static BuildTargetGroup GetBuildTargetGroup(this IGraphicsSettings settings)
{
return settings.Collection.Platform.PlatformToBuildGroup();
}
///
/// Default:
///
public static RenderingPath GetDefaultRenderingPath(this IGraphicsSettings settings)
{
return settings.Has_DefaultRenderingPath()
? settings.DefaultRenderingPathE
: RenderingPath.Forward;
}
///
/// Default:
///
public static RenderingPath GetDefaultMobileRenderingPath(this IGraphicsSettings settings)
{
return settings.Has_DefaultMobileRenderingPath()
? settings.DefaultMobileRenderingPathE
: RenderingPath.Forward;
}
///
/// Default:
///
public static ShaderStrippingMode GetLightmapStripping(this IGraphicsSettings settings)
{
return (ShaderStrippingMode)settings.LightmapStripping; //default is 0, so no need to check if present
}
///
/// Default:
///
public static ShaderStrippingMode GetFogStripping(this IGraphicsSettings settings)
{
return (ShaderStrippingMode)settings.FogStripping; //default is 0, so no need to check if present
}
///
/// Default:
///
public static InstancingStrippingMode GetInstancingStripping(this IGraphicsSettings settings)
{
return (InstancingStrippingMode)settings.InstancingStripping; //default is 0, so no need to check if present
}
}