From 8a789b2ae2f5d7ea46e413c8a2951e72d2a20faa Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Mon, 1 Jan 2024 22:58:42 -0500 Subject: [PATCH 1/6] fix looping of obsolete effects builder method oopsie daisies. this only affected dreamstalker lol. --- NewHorizons/Builder/Atmosphere/EffectsBuilder.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs index 8be43327..7c38747d 100644 --- a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs @@ -59,11 +59,11 @@ namespace NewHorizons.Builder.Atmosphere // Dreamstalker needed this one [Obsolete] public static void Make(GameObject planetGO, Sector sector, PlanetConfig config, float surfaceHeight) - => Make(planetGO, sector, config, surfaceHeight); + => InternalMake(planetGO, sector, config, surfaceHeight); #endregion public static void Make(GameObject planetGO, Sector sector, PlanetConfig config) - => Make(planetGO, sector, config, null); + => InternalMake(planetGO, sector, config, null); /// /// Nullable surface height for backwards compat @@ -72,7 +72,7 @@ namespace NewHorizons.Builder.Atmosphere /// /// /// - private static void Make(GameObject planetGO, Sector sector, PlanetConfig config, float? surfaceHeight) + private static void InternalMake(GameObject planetGO, Sector sector, PlanetConfig config, float? surfaceHeight) { InitPrefabs(); From 2dbcb37577a0ba6a146888750fef3a07974069b4 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Mon, 1 Jan 2024 23:01:11 -0500 Subject: [PATCH 2/6] bump version --- NewHorizons/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/manifest.json b/NewHorizons/manifest.json index 45285f35..af88a07c 100644 --- a/NewHorizons/manifest.json +++ b/NewHorizons/manifest.json @@ -4,7 +4,7 @@ "author": "xen, Bwc9876, clay, MegaPiggy, John, Trifid, Hawkbar, Book", "name": "New Horizons", "uniqueName": "xen.NewHorizons", - "version": "1.18.1", + "version": "1.18.2", "owmlVersion": "2.9.8", "dependencies": [ "JohnCorby.VanillaFix", "_nebula.MenuFramework", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ], "conflicts": [ "Raicuparta.QuantumSpaceBuddies", "PacificEngine.OW_CommonResources" ], From bcfe939d9d1ea0eb807dbc4bc26dd4e2aba371c5 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Mon, 1 Jan 2024 23:54:28 -0500 Subject: [PATCH 3/6] typo --- NewHorizons/Builder/Atmosphere/EffectsBuilder.cs | 2 +- NewHorizons/Builder/Props/DetailBuilder.cs | 2 +- NewHorizons/External/Configs/PlanetConfig.cs | 2 +- NewHorizons/External/Configs/StarSystemConfig.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs index 7c38747d..9ac3a509 100644 --- a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs @@ -55,7 +55,7 @@ namespace NewHorizons.Builder.Atmosphere #region obsolete - // Never change method signatures, people directly reference the NH dll and it can break backwards compatability + // Never change method signatures, people directly reference the NH dll and it can break backwards compatibility // Dreamstalker needed this one [Obsolete] public static void Make(GameObject planetGO, Sector sector, PlanetConfig config, float surfaceHeight) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 0fa79b84..054f53d3 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -28,7 +28,7 @@ namespace NewHorizons.Builder.Props } #region obsolete - // Never change method signatures, people directly reference the NH dll and it can break backwards compatability + // Never change method signatures, people directly reference the NH dll and it can break backwards compatibility // In particular, Outer Wives needs this method signature [Obsolete] public static GameObject Make(GameObject go, Sector sector, GameObject prefab, DetailInfo detail) diff --git a/NewHorizons/External/Configs/PlanetConfig.cs b/NewHorizons/External/Configs/PlanetConfig.cs index db5dc435..40a9f7f5 100644 --- a/NewHorizons/External/Configs/PlanetConfig.cs +++ b/NewHorizons/External/Configs/PlanetConfig.cs @@ -281,7 +281,7 @@ namespace NewHorizons.External.Configs public void Migrate() { - // Backwards compatability + // Backwards compatibility // Should be the only place that obsolete things are referenced #pragma warning disable 612, 618 if (Base.waterSize != 0) diff --git a/NewHorizons/External/Configs/StarSystemConfig.cs b/NewHorizons/External/Configs/StarSystemConfig.cs index bd998909..902c99bc 100644 --- a/NewHorizons/External/Configs/StarSystemConfig.cs +++ b/NewHorizons/External/Configs/StarSystemConfig.cs @@ -309,7 +309,7 @@ namespace NewHorizons.External.Configs public void Migrate() { - // Backwards compatability + // Backwards compatibility // Should be the only place that obsolete things are referenced #pragma warning disable 612, 618 if (!string.IsNullOrEmpty(travelAudioClip)) travelAudio = travelAudioClip; From aedeb80f16d0a996ae02fedcf11c39b6d3cb6bc7 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Mon, 1 Jan 2024 23:55:16 -0500 Subject: [PATCH 4/6] curse you stalker of dreams --- .../Builder/Atmosphere/EffectsBuilder.cs | 40 ++++++++++--------- NewHorizons/Builder/Atmosphere/FogBuilder.cs | 10 +++++ NewHorizons/Utility/Files/ImageUtilities.cs | 5 +++ 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs index 9ac3a509..fdb4b923 100644 --- a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs @@ -1,6 +1,7 @@ using NewHorizons.External.Configs; using NewHorizons.External.Modules; using NewHorizons.Utility; +using NewHorizons.Utility.OWML; using System; using UnityEngine; @@ -92,27 +93,30 @@ namespace NewHorizons.Builder.Atmosphere // min height override for backwards compat minHeight = surfaceHeight ?? minHeight; - foreach (var particleField in config.ParticleFields) + if (config.ParticleFields != null) { - var prefab = GetPrefabByType(particleField.type); - var emitter = GameObject.Instantiate(prefab, effectsGO.transform); - emitter.name = !string.IsNullOrWhiteSpace(particleField.rename) ? particleField.rename : prefab.name.Replace("Prefab_", ""); - emitter.transform.position = planetGO.transform.position; - - var vfe = emitter.GetComponent(); - var pvc = emitter.GetComponent(); - pvc._vectionFieldEmitter = vfe; - pvc._densityByHeight = particleField.densityByHeightCurve != null ? particleField.densityByHeightCurve.ToAnimationCurve() : new AnimationCurve(new Keyframe[] + foreach (var particleField in config.ParticleFields) { - new Keyframe(minHeight - 0.5f, 0), - new Keyframe(minHeight, 10f), - new Keyframe(maxHeight, 0f) - }); - pvc._followTarget = particleField.followTarget == ParticleFieldModule.FollowTarget.Probe ? PlanetaryVectionController.FollowTarget.Probe : PlanetaryVectionController.FollowTarget.Player; - pvc._activeInSector = sector; - pvc._exclusionSectors = new Sector[] { }; + var prefab = GetPrefabByType(particleField.type); + var emitter = GameObject.Instantiate(prefab, effectsGO.transform); + emitter.name = !string.IsNullOrWhiteSpace(particleField.rename) ? particleField.rename : prefab.name.Replace("Prefab_", ""); + emitter.transform.position = planetGO.transform.position; - emitter.SetActive(true); + var vfe = emitter.GetComponent(); + var pvc = emitter.GetComponent(); + pvc._vectionFieldEmitter = vfe; + pvc._densityByHeight = particleField.densityByHeightCurve != null ? particleField.densityByHeightCurve.ToAnimationCurve() : new AnimationCurve(new Keyframe[] + { + new Keyframe(minHeight - 0.5f, 0), + new Keyframe(minHeight, 10f), + new Keyframe(maxHeight, 0f) + }); + pvc._followTarget = particleField.followTarget == ParticleFieldModule.FollowTarget.Probe ? PlanetaryVectionController.FollowTarget.Probe : PlanetaryVectionController.FollowTarget.Player; + pvc._activeInSector = sector; + pvc._exclusionSectors = new Sector[] { }; + + emitter.SetActive(true); + } } effectsGO.transform.position = planetGO.transform.position; diff --git a/NewHorizons/Builder/Atmosphere/FogBuilder.cs b/NewHorizons/Builder/Atmosphere/FogBuilder.cs index 8c1025bc..9f1d7da8 100644 --- a/NewHorizons/Builder/Atmosphere/FogBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/FogBuilder.cs @@ -1,7 +1,9 @@ using NewHorizons.External.Modules; +using NewHorizons.External.Modules.Props; using NewHorizons.Utility; using NewHorizons.Utility.Files; using OWML.Common; +using System; using UnityEngine; namespace NewHorizons.Builder.Atmosphere { @@ -36,6 +38,14 @@ namespace NewHorizons.Builder.Atmosphere if (_dbImpostorMaterials == null) _dbImpostorMaterials = SearchUtilities.Find("DarkBramble_Body/Atmosphere_DB/FogLOD").GetComponent().sharedMaterials.MakePrefabMaterials(); } + #region obsolete + // Never change method signatures, people directly reference the NH dll and it can break backwards compatibility + // Dreamstalker needs this method signature + [Obsolete] + public static PlanetaryFogController Make(GameObject planetGO, Sector sector, AtmosphereModule atmo) + => Make(planetGO, sector, atmo, null); + #endregion + public static PlanetaryFogController Make(GameObject planetGO, Sector sector, AtmosphereModule atmo, IModBehaviour mod) { InitPrefabs(); diff --git a/NewHorizons/Utility/Files/ImageUtilities.cs b/NewHorizons/Utility/Files/ImageUtilities.cs index 413690ce..742e5310 100644 --- a/NewHorizons/Utility/Files/ImageUtilities.cs +++ b/NewHorizons/Utility/Files/ImageUtilities.cs @@ -33,6 +33,11 @@ namespace NewHorizons.Utility.Files // bug: cache only considers file path, not wrap/mips/linear. oh well public static Texture2D GetTexture(IModBehaviour mod, string filename, bool useMipmaps = true, bool wrap = false, bool linear = false) { + if (mod == null) + { + NHLogger.LogError("Couldn't get texture, mod is null."); + return null; + } // Copied from OWML but without the print statement lol var path = Path.Combine(mod.ModHelper.Manifest.ModFolderPath, filename); var key = GetKey(path); From 375a18e401dfc0ebc3437126bb8909f4639ac940 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Mon, 1 Jan 2024 23:59:41 -0500 Subject: [PATCH 5/6] silly error --- NewHorizons/Handlers/PlanetCreationHandler.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs index 26e8eef6..a778b8ad 100644 --- a/NewHorizons/Handlers/PlanetCreationHandler.cs +++ b/NewHorizons/Handlers/PlanetCreationHandler.cs @@ -949,7 +949,13 @@ namespace NewHorizons.Handlers { flag = false; // idk why we wait here but we do - Delay.FireInNUpdates(() => childObj.gameObject.SetActive(false), 2); + Delay.FireInNUpdates(() => + { + if (childObj != null && childObj.gameObject != null) + { + childObj.gameObject.SetActive(false); + } + }, 2); } if (flag) NHLogger.LogWarning($"Couldn't find \"{childPath}\"."); From 1349c05425de71b8093e62c4b1dbcd104c45314b Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Tue, 2 Jan 2024 00:37:47 -0500 Subject: [PATCH 6/6] Replace shaders in tesselated renderers too --- .../Utility/Files/AssetBundleUtilities.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/NewHorizons/Utility/Files/AssetBundleUtilities.cs b/NewHorizons/Utility/Files/AssetBundleUtilities.cs index 60fdce56..182826ba 100644 --- a/NewHorizons/Utility/Files/AssetBundleUtilities.cs +++ b/NewHorizons/Utility/Files/AssetBundleUtilities.cs @@ -96,6 +96,32 @@ namespace NewHorizons.Utility.Files } } } + + foreach (var trenderer in prefab.GetComponentsInChildren(true)) + { + foreach (var material in trenderer.sharedMaterials) + { + if (material == null) continue; + + var replacementShader = Shader.Find(material.shader.name); + if (replacementShader == null) continue; + + // preserve override tag and render queue (for Standard shader) + // keywords and properties are already preserved + if (material.renderQueue != material.shader.renderQueue) + { + var renderType = material.GetTag("RenderType", false); + var renderQueue = material.renderQueue; + material.shader = replacementShader; + material.SetOverrideTag("RenderType", renderType); + material.renderQueue = renderQueue; + } + else + { + material.shader = replacementShader; + } + } + } } } }