From 36065fd3a55e179c71b5ef1e1f5b276a86255315 Mon Sep 17 00:00:00 2001 From: TerrificTrifid <99054745+TerrificTrifid@users.noreply.github.com> Date: Thu, 19 Dec 2024 22:57:31 -0600 Subject: [PATCH 1/6] fix the heightmap proxy caster guy --- NewHorizons/Builder/Body/HeightMapBuilder.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/NewHorizons/Builder/Body/HeightMapBuilder.cs b/NewHorizons/Builder/Body/HeightMapBuilder.cs index 55b6f58c..cc6f84b5 100644 --- a/NewHorizons/Builder/Body/HeightMapBuilder.cs +++ b/NewHorizons/Builder/Body/HeightMapBuilder.cs @@ -91,14 +91,14 @@ namespace NewHorizons.Builder.Body level2.name += "1"; LODGroup.RecalculateBounds(); + + var superGroup = planetGO.GetComponent(); + if (superGroup != null) level2.gameObject.AddComponent()._superGroup = superGroup; } var cubeSphereSC = cubeSphere.AddComponent(); cubeSphereSC.radius = Mathf.Min(module.minHeight, module.maxHeight) * Mathf.Min(stretch.x, stretch.y, stretch.z); - var superGroup = planetGO.GetComponent(); - if (superGroup != null) cubeSphere.AddComponent()._superGroup = superGroup; - cubeSphere.SetActive(true); // Now that we've made the mesh we can delete the heightmap texture From da50a411710bd8a94029fa51417eedae86dd46df Mon Sep 17 00:00:00 2001 From: TerrificTrifid <99054745+TerrificTrifid@users.noreply.github.com> Date: Wed, 25 Dec 2024 15:23:08 -0600 Subject: [PATCH 2/6] more asteroid belt options --- .../Builder/Body/AsteroidBeltBuilder.cs | 37 ++++++++++++++----- .../External/Modules/AsteroidBeltModule.cs | 33 +++++++++++++++-- 2 files changed, 57 insertions(+), 13 deletions(-) diff --git a/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs b/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs index 01fd7f18..22dbe716 100644 --- a/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs +++ b/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs @@ -1,6 +1,7 @@ using NewHorizons.External; using NewHorizons.External.Configs; using NewHorizons.External.Modules; +using NewHorizons.External.Modules.Props; using NewHorizons.External.SerializableData; using NewHorizons.Handlers; using NewHorizons.Utility.OWML; @@ -36,7 +37,7 @@ namespace NewHorizons.Builder.Body config.Base = new BaseModule() { - surfaceGravity = 1, + surfaceGravity = belt.gravity, surfaceSize = size, gravityFallOff = GravityFallOff.InverseSquared }; @@ -49,7 +50,8 @@ namespace NewHorizons.Builder.Body trueAnomaly = 360f * (i + Random.Range(-0.2f, 0.2f)) / (float)count, primaryBody = bodyName, semiMajorAxis = Random.Range(belt.innerRadius, belt.outerRadius), - showOrbitLine = false + showOrbitLine = false, + isTidallyLocked = true }; config.ReferenceFrame = new ReferenceFrameModule() @@ -62,8 +64,30 @@ namespace NewHorizons.Builder.Body enabled = false }; - config.ProcGen = belt.procGen; - if (config.ProcGen == null) + if (belt.assetBundle != null || belt.path != null) + { + config.Props = new PropModule() + { + details = new DetailInfo[1] + { + new DetailInfo() + { + assetBundle = belt.assetBundle, + path = belt.path, + scale = size, + rotation = belt.randomOrientation ? Random.rotation.eulerAngles : Vector3.zero, + keepLoaded = true + } + } + }; + + } + else if (belt.procGen != null) + { + config.ProcGen = belt.procGen; + config.ProcGen.scale = size; + } + else { config.ProcGen = new ProcGenModule() { @@ -71,11 +95,6 @@ namespace NewHorizons.Builder.Body color = new MColor(126, 94, 73) }; } - else - { - // Still update the size - config.ProcGen.scale = size; - } var asteroid = new NewHorizonsBody(config, mod); PlanetCreationHandler.GenerateBody(asteroid); diff --git a/NewHorizons/External/Modules/AsteroidBeltModule.cs b/NewHorizons/External/Modules/AsteroidBeltModule.cs index 29588801..5f2f0388 100644 --- a/NewHorizons/External/Modules/AsteroidBeltModule.cs +++ b/NewHorizons/External/Modules/AsteroidBeltModule.cs @@ -1,4 +1,4 @@ -using System.ComponentModel; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; using Newtonsoft.Json; @@ -13,7 +13,7 @@ namespace NewHorizons.External.Modules [Range(-1, 200)] [DefaultValue(-1)] public int amount = -1; /// - /// Angle between the rings and the equatorial plane of the planet. + /// Angle between the belt and the equatorial plane of the planet. /// public float inclination; @@ -23,7 +23,7 @@ namespace NewHorizons.External.Modules [Range(0f, double.MaxValue)] public float innerRadius; /// - /// Angle defining the point where the rings rise up from the planet's equatorial plane if inclination is nonzero. + /// Angle defining the point where the belt rises up from the planet's equatorial plane if inclination is nonzero. /// public float longitudeOfAscendingNode; @@ -45,7 +45,7 @@ namespace NewHorizons.External.Modules [Range(0f, double.MaxValue)] public float outerRadius; /// - /// How the asteroids are generated + /// How the asteroids are generated, unless you supply a detail yourself using "assetBundle" and "path" /// public ProcGenModule procGen; @@ -53,5 +53,30 @@ namespace NewHorizons.External.Modules /// Number used to randomize asteroid positions /// public int randomSeed; + + /// + /// You can use this to load a custom asset or ingame object, instead of using ProcGen. It will be scaled by "minSize" and "maxSize", so ideally it should be near a 1 meter radius. + /// This is a relative filepath to an asset-bundle to load the prefab defined in `path` from. + /// + public string assetBundle; + + /// + /// You can use this to load a custom asset or ingame object, instead of using ProcGen. It will be scaled by "minSize" and "maxSize", so ideally it should be near a 1 meter radius. + /// This is either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle. + /// + public string path; + + /// + /// Surface gravity of the asteroids. + /// + [Range(0f, double.MaxValue)] + [DefaultValue(1)] + public float gravity = 1f; + + /// + /// Should they be randomly oriented, or all pointing towards the center. + /// + [DefaultValue(true)] + public bool randomOrientation = true; } } \ No newline at end of file From aaeb529eb6ca7aac9509c17f6a19b3f8179b594a Mon Sep 17 00:00:00 2001 From: Ben C Date: Wed, 25 Dec 2024 21:24:59 +0000 Subject: [PATCH 3/6] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index cf035d00..ab06ca7b 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -280,7 +280,7 @@ }, "inclination": { "type": "number", - "description": "Angle between the rings and the equatorial plane of the planet.", + "description": "Angle between the belt and the equatorial plane of the planet.", "format": "float" }, "innerRadius": { @@ -291,7 +291,7 @@ }, "longitudeOfAscendingNode": { "type": "number", - "description": "Angle defining the point where the rings rise up from the planet's equatorial plane if inclination is nonzero.", + "description": "Angle defining the point where the belt rises up from the planet's equatorial plane if inclination is nonzero.", "format": "float" }, "maxSize": { @@ -315,13 +315,33 @@ "minimum": 0.0 }, "procGen": { - "description": "How the asteroids are generated", + "description": "How the asteroids are generated, unless you supply a detail yourself using \"assetBundle\" and \"path\"", "$ref": "#/definitions/ProcGenModule" }, "randomSeed": { "type": "integer", "description": "Number used to randomize asteroid positions", "format": "int32" + }, + "assetBundle": { + "type": "string", + "description": "You can use this to load a custom asset or ingame object, instead of using ProcGen. It will be scaled by \"minSize\" and \"maxSize\", so ideally it should be near a 1 meter radius.\nThis is a relative filepath to an asset-bundle to load the prefab defined in `path` from." + }, + "path": { + "type": "string", + "description": "You can use this to load a custom asset or ingame object, instead of using ProcGen. It will be scaled by \"minSize\" and \"maxSize\", so ideally it should be near a 1 meter radius.\nThis is either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle. " + }, + "gravity": { + "type": "number", + "description": "Surface gravity of the asteroids.", + "format": "float", + "default": 1, + "minimum": 0.0 + }, + "randomOrientation": { + "type": "boolean", + "description": "Should they be randomly oriented, or all pointing towards the center.", + "default": true } } }, From 664eb0f2dd28c60b3bef3ef135d2d25cece2d5d4 Mon Sep 17 00:00:00 2001 From: TerrificTrifid <99054745+TerrificTrifid@users.noreply.github.com> Date: Sun, 5 Jan 2025 20:26:52 -0600 Subject: [PATCH 4/6] requested changes --- NewHorizons/Builder/Body/AsteroidBeltBuilder.cs | 2 +- NewHorizons/Builder/Body/HeightMapBuilder.cs | 1 + NewHorizons/External/Modules/AsteroidBeltModule.cs | 12 ++++++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs b/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs index 22dbe716..fdc893c7 100644 --- a/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs +++ b/NewHorizons/Builder/Body/AsteroidBeltBuilder.cs @@ -64,7 +64,7 @@ namespace NewHorizons.Builder.Body enabled = false }; - if (belt.assetBundle != null || belt.path != null) + if (!string.IsNullOrEmpty(belt.assetBundle) || !string.IsNullOrEmpty(belt.path)) { config.Props = new PropModule() { diff --git a/NewHorizons/Builder/Body/HeightMapBuilder.cs b/NewHorizons/Builder/Body/HeightMapBuilder.cs index cc6f84b5..02190def 100644 --- a/NewHorizons/Builder/Body/HeightMapBuilder.cs +++ b/NewHorizons/Builder/Body/HeightMapBuilder.cs @@ -92,6 +92,7 @@ namespace NewHorizons.Builder.Body LODGroup.RecalculateBounds(); + // do this only for LOD because only the main body uses LOD, while title screen and proxies dont var superGroup = planetGO.GetComponent(); if (superGroup != null) level2.gameObject.AddComponent()._superGroup = superGroup; } diff --git a/NewHorizons/External/Modules/AsteroidBeltModule.cs b/NewHorizons/External/Modules/AsteroidBeltModule.cs index 5f2f0388..b6ac9111 100644 --- a/NewHorizons/External/Modules/AsteroidBeltModule.cs +++ b/NewHorizons/External/Modules/AsteroidBeltModule.cs @@ -20,7 +20,7 @@ namespace NewHorizons.External.Modules /// /// Lowest distance from the planet asteroids can spawn /// - [Range(0f, double.MaxValue)] public float innerRadius; + [Range(0f, float.MaxValue)] public float innerRadius; /// /// Angle defining the point where the belt rises up from the planet's equatorial plane if inclination is nonzero. @@ -30,19 +30,19 @@ namespace NewHorizons.External.Modules /// /// Maximum size of the asteroids. /// - [Range(0f, double.MaxValue)] [DefaultValue(50)] + [Range(0f, float.MaxValue)] [DefaultValue(50)] public float maxSize = 50f; /// /// Minimum size of the asteroids. /// - [Range(0f, double.MaxValue)] [DefaultValue(20)] + [Range(0f, float.MaxValue)] [DefaultValue(20)] public float minSize = 20; /// /// Greatest distance from the planet asteroids can spawn /// - [Range(0f, double.MaxValue)] public float outerRadius; + [Range(0f, float.MaxValue)] public float outerRadius; /// /// How the asteroids are generated, unless you supply a detail yourself using "assetBundle" and "path" @@ -69,12 +69,12 @@ namespace NewHorizons.External.Modules /// /// Surface gravity of the asteroids. /// - [Range(0f, double.MaxValue)] + [Range(0f, float.MaxValue)] [DefaultValue(1)] public float gravity = 1f; /// - /// Should they be randomly oriented, or all pointing towards the center. + /// Should the detail of the asteroid be randomly oriented, or should it point towards the center. /// [DefaultValue(true)] public bool randomOrientation = true; From 1e9e3d832cb39b8b5e865385cf7f2759e6b2834b Mon Sep 17 00:00:00 2001 From: xen-42 Date: Sun, 5 Jan 2025 22:15:12 -0500 Subject: [PATCH 5/6] It was double for a reason my bad --- NewHorizons/External/Modules/AsteroidBeltModule.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/NewHorizons/External/Modules/AsteroidBeltModule.cs b/NewHorizons/External/Modules/AsteroidBeltModule.cs index b6ac9111..d042a9fc 100644 --- a/NewHorizons/External/Modules/AsteroidBeltModule.cs +++ b/NewHorizons/External/Modules/AsteroidBeltModule.cs @@ -20,7 +20,7 @@ namespace NewHorizons.External.Modules /// /// Lowest distance from the planet asteroids can spawn /// - [Range(0f, float.MaxValue)] public float innerRadius; + [Range(0f, double.MaxValue)] public float innerRadius; /// /// Angle defining the point where the belt rises up from the planet's equatorial plane if inclination is nonzero. @@ -30,19 +30,19 @@ namespace NewHorizons.External.Modules /// /// Maximum size of the asteroids. /// - [Range(0f, float.MaxValue)] [DefaultValue(50)] + [Range(0f, double.MaxValue)] [DefaultValue(50)] public float maxSize = 50f; /// /// Minimum size of the asteroids. /// - [Range(0f, float.MaxValue)] [DefaultValue(20)] + [Range(0f, double.MaxValue)] [DefaultValue(20)] public float minSize = 20; /// /// Greatest distance from the planet asteroids can spawn /// - [Range(0f, float.MaxValue)] public float outerRadius; + [Range(0f, double.MaxValue)] public float outerRadius; /// /// How the asteroids are generated, unless you supply a detail yourself using "assetBundle" and "path" @@ -69,7 +69,7 @@ namespace NewHorizons.External.Modules /// /// Surface gravity of the asteroids. /// - [Range(0f, float.MaxValue)] + [Range(0f, double.MaxValue)] [DefaultValue(1)] public float gravity = 1f; From 11d58e0632c8407d6ef2e9e5565bb577fd24fdba Mon Sep 17 00:00:00 2001 From: Ben C Date: Mon, 6 Jan 2025 03:17:02 +0000 Subject: [PATCH 6/6] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index ab06ca7b..ca6c0b29 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -340,7 +340,7 @@ }, "randomOrientation": { "type": "boolean", - "description": "Should they be randomly oriented, or all pointing towards the center.", + "description": "Should the detail of the asteroid be randomly oriented, or should it point towards the center.", "default": true } }