diff --git a/NewHorizons/Assets/newhorizons_private b/NewHorizons/Assets/newhorizons_private index ff23435a..f15bd4c7 100644 Binary files a/NewHorizons/Assets/newhorizons_private and b/NewHorizons/Assets/newhorizons_private differ diff --git a/NewHorizons/Assets/newhorizons_private.manifest b/NewHorizons/Assets/newhorizons_private.manifest index 13a557bc..71d62e91 100644 --- a/NewHorizons/Assets/newhorizons_private.manifest +++ b/NewHorizons/Assets/newhorizons_private.manifest @@ -1,9 +1,9 @@ ManifestFileVersion: 0 -CRC: 192875128 +CRC: 3537427957 Hashes: AssetFileHash: serializedVersion: 2 - Hash: bd3accfa8245e7e8c1fe0bf8cfa04eb1 + Hash: c4d8f41970054074bb375ac5cbe82855 TypeTreeHash: serializedVersion: 2 Hash: de71b9c55befb829b1640ea21774b932 @@ -171,7 +171,7 @@ ClassTypes: Script: {instanceID: 0} SerializeReferenceClassIdentifiers: [] Assets: -- Assets/AmbientLight_QM.png - Assets/BrambleCollision.prefab - Assets/Vessel_Body.prefab +- Assets/AmbientLight_QM.png Dependencies: [] diff --git a/NewHorizons/Builder/General/AmbientLightBuilder.cs b/NewHorizons/Builder/General/AmbientLightBuilder.cs index 0acfd2a0..a54a92f9 100644 --- a/NewHorizons/Builder/General/AmbientLightBuilder.cs +++ b/NewHorizons/Builder/General/AmbientLightBuilder.cs @@ -1,6 +1,8 @@ using UnityEngine; using NewHorizons.Utility; using NewHorizons.External.Modules; +using System; + namespace NewHorizons.Builder.General { public static class AmbientLightBuilder @@ -32,30 +34,25 @@ namespace NewHorizons.Builder.General if (config.tint != null) { var tint = config.tint.ToColor(); - var cubemap = Main.NHPrivateAssetBundle.LoadAsset("AmbientLight_QM"); - var cubemapFace = CubemapFace.Unknown; + var baseCubemap = Main.NHPrivateAssetBundle.LoadAsset("AmbientLight_QM"); + var cubemap = new Cubemap(baseCubemap.width, baseCubemap.format, baseCubemap.mipmapCount != 1); + cubemap.name = baseCubemap.name + "Tinted"; + cubemap.wrapMode = baseCubemap.wrapMode; for (int i = 0; i < 6; i++) { - switch (i) - { - case 0: cubemapFace = CubemapFace.PositiveX; break; - case 1: cubemapFace = CubemapFace.NegativeX; break; - case 2: cubemapFace = CubemapFace.PositiveY; break; - case 3: cubemapFace = CubemapFace.NegativeY; break; - case 4: cubemapFace = CubemapFace.PositiveZ; break; - case 5: cubemapFace = CubemapFace.NegativeZ; break; - default: break; - } - var sourceColors = cubemap.GetPixels(cubemapFace, 0); + var cubemapFace = (CubemapFace)i; + var sourceColors = baseCubemap.GetPixels(cubemapFace); var newColors = new Color[sourceColors.Length]; for (int j = 0; j < sourceColors.Length; j++) { - var grey = sourceColors[j].grayscale * 2; - newColors[j] = tint * new Color(grey, grey, grey); + var grey = sourceColors[j].grayscale * 2; // looks nicer with multiplier + newColors[j] = new Color(grey, grey, grey) * tint; } cubemap.SetPixels(newColors, cubemapFace); } cubemap.Apply(); + ImageUtilities.TrackGeneratedTexture(cubemap); + light.cookie = cubemap; } diff --git a/NewHorizons/Utility/ImageUtilities.cs b/NewHorizons/Utility/ImageUtilities.cs index e99d9072..315678fe 100644 --- a/NewHorizons/Utility/ImageUtilities.cs +++ b/NewHorizons/Utility/ImageUtilities.cs @@ -7,14 +7,19 @@ using System.Linq; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; -using UnityEngine.UI; namespace NewHorizons.Utility { public static class ImageUtilities { - private static Dictionary _loadedTextures = new Dictionary(); - private static List _generatedTextures = new List(); + private static readonly Dictionary _loadedTextures = new(); + private static readonly List _generatedTextures = new(); + + /// + /// Track textures generated outside of this file so they can be cleaned up on scene unload + /// + /// + public static void TrackGeneratedTexture(Texture texture) => _generatedTextures.Add(texture); public static bool IsTextureLoaded(IModBehaviour mod, string filename) {