using AssetRipper.SourceGenerated.Classes.ClassID_30; using AssetRipper.SourceGenerated.Enums; namespace AssetRipper.SourceGenerated.Extensions { public static class GraphicsSettingsExtensions { public enum LightmapStrippingMode { Automatic = 0, Custom = 1, } public enum InstancingStrippingVariant { StripUnused = 0, StripAll = 1, KeepAll = 2, } public static void ConvertToEditorFormat(this IGraphicsSettings settings) { settings.DefaultMobileRenderingPath_C30 = (int)RenderingPath.Forward; settings.DefaultRenderingPath_C30 = (int)RenderingPath.Forward; settings.FogKeepExp_C30 = true; settings.FogKeepExp2_C30 = true; settings.FogKeepLinear_C30 = true; settings.FogStripping_C30 = (int)LightmapStrippingMode.Automatic; settings.InstancingStripping_C30 = (int)InstancingStrippingVariant.StripUnused; settings.LightmapKeepDirCombined_C30 = true; settings.LightmapKeepDirSeparate_C30 = true; settings.LightmapKeepDynamicDirCombined_C30 = true; settings.LightmapKeepDynamicDirSeparate_C30 = true; settings.LightmapKeepDynamicPlain_C30 = true; settings.LightmapKeepDynamic_C30 = true; settings.LightmapKeepPlain_C30 = true; settings.LightmapKeepShadowMask_C30 = true; settings.LightmapKeepSubtractive_C30 = true; settings.LightmapStripping_C30 = (int)LightmapStrippingMode.Automatic; if (settings.Has_TierSettings_C30()) { settings.TierSettings_C30.Clear();//protection against converting GraphicsSettings multiple times if (settings.Has_TierSettings_Tier1_C30() && settings.Has_TierSettings_Tier2_C30() && settings.Has_TierSettings_Tier3_C30()) { settings.TierSettings_C30.Capacity = 3; settings.TierSettings_C30.AddNew().ConvertToEditorFormat(settings.TierSettings_Tier1_C30, settings.GetBuildTargetGroup(), GraphicsTier.Tier1); settings.TierSettings_C30.AddNew().ConvertToEditorFormat(settings.TierSettings_Tier2_C30, settings.GetBuildTargetGroup(), GraphicsTier.Tier2); settings.TierSettings_C30.AddNew().ConvertToEditorFormat(settings.TierSettings_Tier3_C30, settings.GetBuildTargetGroup(), GraphicsTier.Tier3); } else if (settings.Has_ShaderSettings_Tier1_C30() && settings.Has_ShaderSettings_Tier2_C30() && settings.Has_ShaderSettings_Tier3_C30()) { settings.TierSettings_C30.Capacity = 3; settings.ShaderSettings_Tier1_C30.ConvertToEditorFormat(); settings.ShaderSettings_Tier2_C30.ConvertToEditorFormat(); settings.ShaderSettings_Tier2_C30.ConvertToEditorFormat(); settings.TierSettings_C30.AddNew().ConvertToEditorFormat(settings.ShaderSettings_Tier1_C30, settings.GetBuildTargetGroup(), GraphicsTier.Tier1); settings.TierSettings_C30.AddNew().ConvertToEditorFormat(settings.ShaderSettings_Tier2_C30, settings.GetBuildTargetGroup(), GraphicsTier.Tier2); settings.TierSettings_C30.AddNew().ConvertToEditorFormat(settings.ShaderSettings_Tier3_C30, settings.GetBuildTargetGroup(), GraphicsTier.Tier3); } else if (settings.Has_ShaderSettings_C30()) { settings.TierSettings_C30.Capacity = 1; settings.ShaderSettings_C30.ConvertToEditorFormat(); settings.TierSettings_C30.AddNew().ConvertToEditorFormat(settings.ShaderSettings_C30, settings.GetBuildTargetGroup(), GraphicsTier.Tier1); } } } private static BuildTargetGroup GetBuildTargetGroup(this IGraphicsSettings settings) { return settings.Collection.Platform.PlatformToBuildGroup(); } public static TransparencySortMode GetTransparencySortMode(this IGraphicsSettings settings) { return (TransparencySortMode)settings.TransparencySortMode_C30; } /// /// Default: /// public static RenderingPath GetDefaultRenderingPath(this IGraphicsSettings settings) { return settings.Has_DefaultRenderingPath_C30() ? (RenderingPath)settings.DefaultRenderingPath_C30 : RenderingPath.Forward; } /// /// Default: /// public static RenderingPath GetDefaultMobileRenderingPath(this IGraphicsSettings settings) { return settings.Has_DefaultMobileRenderingPath_C30() ? (RenderingPath)settings.DefaultMobileRenderingPath_C30 : RenderingPath.Forward; } /// /// Default: /// public static LightmapStrippingMode GetLightmapStripping(this IGraphicsSettings settings) { return (LightmapStrippingMode)settings.LightmapStripping_C30; //default is 0, so no need to check if present } /// /// Default: /// public static LightmapStrippingMode GetFogStripping(this IGraphicsSettings settings) { return (LightmapStrippingMode)settings.FogStripping_C30; //default is 0, so no need to check if present } /// /// Default: /// public static InstancingStrippingVariant GetInstancingStripping(this IGraphicsSettings settings) { return (InstancingStrippingVariant)settings.InstancingStripping_C30; //default is 0, so no need to check if present } } }