From b25db98b850bc9a6a35890602bcac489c4cdd635 Mon Sep 17 00:00:00 2001 From: Katy Fox Date: Mon, 3 Feb 2025 21:23:56 -0500 Subject: [PATCH] fix primer disease, normal scales, bogie colors --- SMShared/Json/SkinConfigJson.cs | 1 + SkinManagerMod/SkinProvider.cs | 27 ++-------------------- SkinManagerMod/TextureUtility.cs | 39 ++++++++++++++++++++++++-------- 3 files changed, 32 insertions(+), 35 deletions(-) diff --git a/SMShared/Json/SkinConfigJson.cs b/SMShared/Json/SkinConfigJson.cs index 73d549c..c527ccb 100644 --- a/SMShared/Json/SkinConfigJson.cs +++ b/SMShared/Json/SkinConfigJson.cs @@ -16,6 +16,7 @@ public enum BaseTheme Pristine = 1, Demonstrator = 2, Relic = 4, + Primer = 8, DVRT_NoDetails = 32, Pristine_NoDetails = Pristine | DVRT_NoDetails, diff --git a/SkinManagerMod/SkinProvider.cs b/SkinManagerMod/SkinProvider.cs index cfb14da..fef93e9 100644 --- a/SkinManagerMod/SkinProvider.cs +++ b/SkinManagerMod/SkinProvider.cs @@ -47,6 +47,7 @@ public static BaseTheme GetThemeTypeByName(string themeName) DefaultNewThemeName => BaseTheme.Pristine, DemoThemeName => BaseTheme.Demonstrator, DemoRustyThemeName => BaseTheme.Relic, + PrimerThemeName => BaseTheme.Primer, _ => BaseTheme.DVRT, }; } @@ -58,6 +59,7 @@ public static CustomPaintTheme GetBaseTheme(BaseTheme themeType) BaseTheme.Pristine => DefaultNewThemeName, BaseTheme.Demonstrator => DemoThemeName, BaseTheme.Relic => DemoRustyThemeName, + BaseTheme.Primer => PrimerThemeName, _ => DefaultThemeName, }; @@ -635,31 +637,6 @@ private static void InjectNewDefaultThemes() _themeDict[themeName] = customDefaultTheme; //PaintTheme.loadedThemes[themeName.ToLower()] = customDefaultTheme; } - - // primer - PaintTheme.TryLoad(PrimerThemeName, out PaintTheme defaultPrimer); - - var customPrimer = ScriptableObject.CreateInstance(); - UnityEngine.Object.DontDestroyOnLoad(customPrimer); - customPrimer.assetName = defaultPrimer.assetName; - customPrimer.name = defaultPrimer.name; - customPrimer.nameLocalizationKey = defaultPrimer.nameLocalizationKey; - customPrimer.substitutions = defaultPrimer.substitutions; - - foreach (var carType in Globals.G.Types.Liveries) - { - if (IsThemeable(carType)) - { - var fakeSkin = Skin.Default(carType.id, BaseTheme.DVRT); - var carData = CarMaterialData.GetDataForCar(carType.id); - - foreach (var substitution in customPrimer.substitutions - .Where(sub => carData.GetDataForMaterial(sub.original) is not null)) - { - - } - } - } } /// diff --git a/SkinManagerMod/TextureUtility.cs b/SkinManagerMod/TextureUtility.cs index 27b9539..33c2f0a 100644 --- a/SkinManagerMod/TextureUtility.cs +++ b/SkinManagerMod/TextureUtility.cs @@ -20,6 +20,7 @@ public static class PropNames public static readonly string DetailAlbedo = "_DetailAlbedoMap"; public static readonly string DetailNormal = "_DetailNormalMap"; + public static readonly string DetailNormalScale = "_DetailNormalMapScale"; public static readonly string[] UniqueTextures = { @@ -307,6 +308,11 @@ public static void ApplyTextures(MeshRenderer renderer, Skin skin, CarMaterialDa var skinTexture = skin.GetTexture(defaultTexture.TextureName)!; renderer.material.SetTexture(defaultTexture.PropertyName, skinTexture.TextureData); + if (defaultTexture.PropertyName == PropNames.Main) + { + renderer.material.color = Color.white; + } + if (defaultTexture.PropertyName == PropNames.MetalGlossMap) { if (!GetMaterialTexture(renderer.material, PropNames.OcclusionMap)) @@ -317,20 +323,33 @@ public static void ApplyTextures(MeshRenderer renderer, Skin skin, CarMaterialDa } else { - var skinTexture = defaultMaterial.GetTexture(defaultTexture.PropertyName); - renderer.material.SetTexture(defaultTexture.PropertyName, skinTexture); - - if (!skinTexture) + if (PropNames.DetailTextures.Contains(defaultTexture.PropertyName) && skin.BaseTheme.HasFlag(BaseTheme.DVRT_NoDetails)) { - // demo bogies et al. don't have textures... - renderer.material.color = defaultMaterial.color; + renderer.material.SetTexture(defaultTexture.PropertyName, null); } - - if (defaultTexture.PropertyName == PropNames.MetalGlossMap) + else { - if (!GetMaterialTexture(renderer.material, PropNames.OcclusionMap)) + var skinTexture = defaultMaterial.GetTexture(defaultTexture.PropertyName); + renderer.material.SetTexture(defaultTexture.PropertyName, skinTexture); + + if (defaultTexture.PropertyName == PropNames.DetailNormal) + { + float intensity = defaultMaterial.GetFloat(PropNames.DetailNormalScale); + renderer.material.SetFloat(PropNames.DetailNormalScale, intensity); + } + + if ((defaultTexture.PropertyName == PropNames.Main) && !skinTexture) + { + // demo bogies et al. don't have textures... + renderer.material.color = defaultMaterial.color; + } + + if (defaultTexture.PropertyName == PropNames.MetalGlossMap) { - renderer.material.SetTexture(PropNames.OcclusionMap, skinTexture); + if (!GetMaterialTexture(renderer.material, PropNames.OcclusionMap)) + { + renderer.material.SetTexture(PropNames.OcclusionMap, skinTexture); + } } } }