From 0139a6678169fb80926c0adf6db7592c541abcd6 Mon Sep 17 00:00:00 2001 From: xen-42 Date: Sat, 15 Feb 2025 02:59:33 -0500 Subject: [PATCH] Cache map mode outlines --- .../Assets/DefaultMapModNoAtmoOutline.png | Bin 0 -> 3728 bytes .../Assets/DefaultMapModePlanetOutline.png | Bin 0 -> 3760 bytes .../Assets/DefaultMapModeStarOutline.png | Bin 0 -> 10079 bytes NewHorizons/Builder/ShipLog/MapModeBuilder.cs | 61 ++++++++++++++++-- 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 NewHorizons/Assets/DefaultMapModNoAtmoOutline.png create mode 100644 NewHorizons/Assets/DefaultMapModePlanetOutline.png create mode 100644 NewHorizons/Assets/DefaultMapModeStarOutline.png diff --git a/NewHorizons/Assets/DefaultMapModNoAtmoOutline.png b/NewHorizons/Assets/DefaultMapModNoAtmoOutline.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3954d340c76300f086df411d52ba02e5dfa09e GIT binary patch literal 3728 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 literal 0 HcmV?d00001 diff --git a/NewHorizons/Assets/DefaultMapModeStarOutline.png b/NewHorizons/Assets/DefaultMapModeStarOutline.png new file mode 100644 index 0000000000000000000000000000000000000000..b002a0b0efb38ce79d0f49c6dba2044fc155f519 GIT binary patch literal 10079 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 WrmfB<#-m?=85x+LEI#4>*Z%+lCtrd9 literal 0 HcmV?d00001 diff --git a/NewHorizons/Builder/ShipLog/MapModeBuilder.cs b/NewHorizons/Builder/ShipLog/MapModeBuilder.cs index 9d66447f..08c3e8dc 100644 --- a/NewHorizons/Builder/ShipLog/MapModeBuilder.cs +++ b/NewHorizons/Builder/ShipLog/MapModeBuilder.cs @@ -10,6 +10,7 @@ using NewHorizons.Utility.OWML; using OWML.ModHelper; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using UnityEngine; using UnityEngine.UI; @@ -169,6 +170,49 @@ namespace NewHorizons.Builder.ShipLog return newGameObject; } + private static Texture2D GetCachedOutlineOrCreate(NewHorizonsBody body, Texture2D original, string originalPath) + { + if (string.IsNullOrEmpty(originalPath)) + { + Texture2D defaultTexture = null; + if (body.Config.Star != null) + { + defaultTexture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModeStarOutline.png"); + } + else if (body.Config.Atmosphere != null) + { + defaultTexture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModNoAtmoOutline.png"); + } + else + { + defaultTexture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModePlanetOutline.png"); + } + + return defaultTexture; + } + else + { + var cachedPath = Path.Combine(body.Mod.ModHelper.Manifest.ModFolderPath, $"TextureCache_{Main.Instance.CurrentStarSystem}", originalPath); + var outlineTexture = ImageUtilities.GetTexture(body.Mod, cachedPath); + + if (outlineTexture == null) + { + NHLogger.LogVerbose($"Caching outline to {cachedPath}"); + + var newTexture = ImageUtilities.MakeOutline(original, Color.white, 10); + + Directory.CreateDirectory(Path.GetDirectoryName(cachedPath)); + File.WriteAllBytes(cachedPath, newTexture.EncodeToPNG()); + + return newTexture; + } + else + { + return outlineTexture; + } + } + } + private static ShipLogAstroObject AddShipLogAstroObject(GameObject gameObject, NewHorizonsBody body, Material greyScaleMaterial, int layer) { if (body.Object == null) @@ -198,7 +242,7 @@ namespace NewHorizons.Builder.ShipLog if (image == null) image = AutoGenerateMapModePicture(body); if (outlinePath != null) outline = ImageUtilities.GetTexture(body.Mod, outlinePath); - if (outline == null) outline = ImageUtilities.MakeOutline(image, Color.white, 10); + if (outline == null) outline = GetCachedOutlineOrCreate(body, image, imagePath); astroObject._imageObj = CreateImage(gameObject, image, body.Config.name + " Revealed", layer); astroObject._outlineObj = CreateImage(gameObject, outline, body.Config.name + " Outline", layer); @@ -609,9 +653,18 @@ namespace NewHorizons.Builder.ShipLog { Texture2D texture; - if (body.Config.Star != null) texture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModeStar.png"); - else if (body.Config.Atmosphere != null) texture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModNoAtmo.png"); - else texture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModePlanet.png"); + if (body.Config.Star != null) + { + texture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModeStar.png"); + } + else if (body.Config.Atmosphere != null) + { + texture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModNoAtmo.png"); + } + else + { + texture = ImageUtilities.GetTexture(Main.Instance, "Assets/DefaultMapModePlanet.png"); + } var color = GetDominantPlanetColor(body); var darkColor = new Color(color.r / 3f, color.g / 3f, color.b / 3f);