From 9e8e2e40072891303ad8f2a77b2377ebbda536df Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Mon, 22 Aug 2022 19:34:29 -0400 Subject: [PATCH 1/3] Add emission map/color (#137) --- NewHorizons/Assets/xen.newhorizons | Bin 27566 -> 39823 bytes NewHorizons/Builder/Body/HeightMapBuilder.cs | 31 +++++++++++++++--- .../External/Modules/HeightMapModule.cs | 10 ++++++ 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/NewHorizons/Assets/xen.newhorizons b/NewHorizons/Assets/xen.newhorizons index 8424b8001baa75ddc448057afc68ef25490249f6..ec5317398d316aeca05afa987532af789ba2d155 100644 GIT binary patch literal 39823 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⁣A>e7F{hDFcBQVOjt1hQbzPNqXlSX~Fb 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 diff --git a/NewHorizons/Builder/Body/HeightMapBuilder.cs b/NewHorizons/Builder/Body/HeightMapBuilder.cs index 3e8a06f5..1483a62e 100644 --- a/NewHorizons/Builder/Body/HeightMapBuilder.cs +++ b/NewHorizons/Builder/Body/HeightMapBuilder.cs @@ -13,12 +13,14 @@ namespace NewHorizons.Builder.Body public static class HeightMapBuilder { public static Shader PlanetShader; + private static readonly int EmissionMap = Shader.PropertyToID("_EmissionMap"); + private static readonly int EmissionColor = Shader.PropertyToID("_EmissionColor"); public static GameObject Make(GameObject planetGO, Sector sector, HeightMapModule module, IModBehaviour mod, int resolution, bool useLOD = false) { var deleteHeightmapFlag = false; - Texture2D heightMap, textureMap; + Texture2D heightMap, textureMap, emissionMap; try { if (module.heightMap != null && !File.Exists(Path.Combine(mod.ModHelper.Manifest.ModFolderPath, module.heightMap))) @@ -31,6 +33,11 @@ namespace NewHorizons.Builder.Body Logger.LogError($"Bad path for {planetGO.name} textureMap: {module.textureMap} couldn't be found."); module.textureMap = null; } + if (module.emissionMap != null && !File.Exists(Path.Combine(mod.ModHelper.Manifest.ModFolderPath, module.emissionMap ?? ""))) + { + Logger.LogError($"Bad path for {planetGO.name} emissionMap: {module.emissionMap} couldn't be found."); + module.emissionMap = null; + } if (module.heightMap == null) { @@ -54,8 +61,18 @@ namespace NewHorizons.Builder.Body textureMap = ImageUtilities.GetTexture(mod, module.textureMap); } + if (module.emissionMap == null) + { + emissionMap = Texture2D.blackTexture; + } + else + { + emissionMap = ImageUtilities.GetTexture(mod, module.emissionMap); + } + // If the texturemap is the same as the heightmap don't delete it #176 - if (textureMap == heightMap) deleteHeightmapFlag = false; + // Do the same with emissionmap + if (textureMap == heightMap || emissionMap == heightMap) deleteHeightmapFlag = false; } catch (Exception e) { @@ -71,7 +88,9 @@ namespace NewHorizons.Builder.Body Vector3 stretch = module.stretch != null ? (Vector3)module.stretch : Vector3.one; - var level1 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, resolution, stretch); + Color emissionColor = module.emissionColor != null ? module.emissionColor.ToColor() : Color.white; + + var level1 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, resolution, stretch, emissionMap, emissionColor); var cubeSphereMC = cubeSphere.AddComponent(); cubeSphereMC.sharedMesh = level1.gameObject.GetComponent().mesh; @@ -79,7 +98,7 @@ namespace NewHorizons.Builder.Body if (useLOD) { var level2Res = (int)Mathf.Clamp(resolution / 2f, 1 /*cube moment*/, 100); - var level2 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, level2Res, stretch); + var level2 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, level2Res, stretch, emissionMap, emissionColor); var LODGroup = cubeSphere.AddComponent(); LODGroup.size = module.maxHeight; @@ -115,7 +134,7 @@ namespace NewHorizons.Builder.Body return cubeSphere; } - public static MeshRenderer MakeLODTerrain(GameObject root, Texture2D heightMap, Texture2D textureMap, float minHeight, float maxHeight, int resolution, Vector3 stretch) + public static MeshRenderer MakeLODTerrain(GameObject root, Texture2D heightMap, Texture2D textureMap, float minHeight, float maxHeight, int resolution, Vector3 stretch, Texture2D emissionMap, Color emissionColor) { var LODCubeSphere = new GameObject("LODCubeSphere"); @@ -126,6 +145,8 @@ namespace NewHorizons.Builder.Body cubeSphereMR.material = material; material.name = textureMap.name; material.mainTexture = textureMap; + material.SetTexture(EmissionMap, emissionMap); + material.SetColor(EmissionColor, emissionColor); LODCubeSphere.transform.parent = root.transform; LODCubeSphere.transform.localPosition = Vector3.zero; diff --git a/NewHorizons/External/Modules/HeightMapModule.cs b/NewHorizons/External/Modules/HeightMapModule.cs index 945f65ed..18c9d250 100644 --- a/NewHorizons/External/Modules/HeightMapModule.cs +++ b/NewHorizons/External/Modules/HeightMapModule.cs @@ -41,5 +41,15 @@ namespace NewHorizons.External.Modules [Range(1 * 4, 500 * 4)] [DefaultValue(51 * 4)] public int resolution = 51 * 4; + + /// + /// Relative filepath to the texture used for emission. Optional. + /// + public string emissionMap; + + /// + /// Color multiplier of the emission texture. Defaults to white. + /// + public MColor emissionColor; } } \ No newline at end of file From 4cbb7459d028906c00a4ce581daf6f97bd569ffa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 22 Aug 2022 23:48:01 +0000 Subject: [PATCH 2/3] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index d8d4db3c..ec4a433e 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -745,6 +745,14 @@ "default": 204, "maximum": 2000.0, "minimum": 4.0 + }, + "emissionMap": { + "type": "string", + "description": "Relative filepath to the texture used for emission. Optional." + }, + "emissionColor": { + "description": "Color multiplier of the emission texture. Defaults to white.", + "$ref": "#/definitions/MColor" } } }, From 6a44a684e003d5a66ae1c1caa9e086b8f04bc0cb Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 22 Aug 2022 21:36:11 -0400 Subject: [PATCH 3/3] Small clean-up / refactor --- NewHorizons/Builder/Body/HeightMapBuilder.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/NewHorizons/Builder/Body/HeightMapBuilder.cs b/NewHorizons/Builder/Body/HeightMapBuilder.cs index 1483a62e..3255b839 100644 --- a/NewHorizons/Builder/Body/HeightMapBuilder.cs +++ b/NewHorizons/Builder/Body/HeightMapBuilder.cs @@ -28,12 +28,12 @@ namespace NewHorizons.Builder.Body Logger.LogError($"Bad path for {planetGO.name} heightMap: {module.heightMap} couldn't be found."); module.heightMap = null; } - if (module.textureMap != null && !File.Exists(Path.Combine(mod.ModHelper.Manifest.ModFolderPath, module.textureMap ?? ""))) + if (module.textureMap != null && !File.Exists(Path.Combine(mod.ModHelper.Manifest.ModFolderPath, module.textureMap))) { Logger.LogError($"Bad path for {planetGO.name} textureMap: {module.textureMap} couldn't be found."); module.textureMap = null; } - if (module.emissionMap != null && !File.Exists(Path.Combine(mod.ModHelper.Manifest.ModFolderPath, module.emissionMap ?? ""))) + if (module.emissionMap != null && !File.Exists(Path.Combine(mod.ModHelper.Manifest.ModFolderPath, module.emissionMap))) { Logger.LogError($"Bad path for {planetGO.name} emissionMap: {module.emissionMap} couldn't be found."); module.emissionMap = null; @@ -80,17 +80,18 @@ namespace NewHorizons.Builder.Body return null; } - GameObject cubeSphere = new GameObject("CubeSphere"); + var cubeSphere = new GameObject("CubeSphere"); cubeSphere.SetActive(false); cubeSphere.transform.parent = sector?.transform ?? planetGO.transform; if (PlanetShader == null) PlanetShader = Main.NHAssetBundle.LoadAsset("Assets/Shaders/SphereTextureWrapper.shader"); - Vector3 stretch = module.stretch != null ? (Vector3)module.stretch : Vector3.one; + var stretch = module.stretch != null ? (Vector3)module.stretch : Vector3.one; - Color emissionColor = module.emissionColor != null ? module.emissionColor.ToColor() : Color.white; + var emissionColor = module.emissionColor != null ? module.emissionColor.ToColor() : Color.white; - var level1 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, resolution, stretch, emissionMap, emissionColor); + var level1 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, resolution, stretch, + emissionMap, emissionColor); var cubeSphereMC = cubeSphere.AddComponent(); cubeSphereMC.sharedMesh = level1.gameObject.GetComponent().mesh; @@ -98,7 +99,8 @@ namespace NewHorizons.Builder.Body if (useLOD) { var level2Res = (int)Mathf.Clamp(resolution / 2f, 1 /*cube moment*/, 100); - var level2 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, level2Res, stretch, emissionMap, emissionColor); + var level2 = MakeLODTerrain(cubeSphere, heightMap, textureMap, module.minHeight, module.maxHeight, level2Res, stretch, + emissionMap, emissionColor); var LODGroup = cubeSphere.AddComponent(); LODGroup.size = module.maxHeight; @@ -134,7 +136,7 @@ namespace NewHorizons.Builder.Body return cubeSphere; } - public static MeshRenderer MakeLODTerrain(GameObject root, Texture2D heightMap, Texture2D textureMap, float minHeight, float maxHeight, int resolution, Vector3 stretch, Texture2D emissionMap, Color emissionColor) + private static MeshRenderer MakeLODTerrain(GameObject root, Texture2D heightMap, Texture2D textureMap, float minHeight, float maxHeight, int resolution, Vector3 stretch, Texture2D emissionMap, Color emissionColor) { var LODCubeSphere = new GameObject("LODCubeSphere");