From 55e8be6546ece6e4c4d7bd86334b7a926a7cf430 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 12 May 2022 01:47:20 -0400 Subject: [PATCH] Fix positions --- NewHorizons/Builder/Atmosphere/AirBuilder.cs | 6 +-- .../Builder/Atmosphere/AtmosphereBuilder.cs | 8 ++-- .../Builder/Atmosphere/CloudsBuilder.cs | 16 +++---- .../Builder/Atmosphere/EffectsBuilder.cs | 14 +++--- NewHorizons/Builder/Atmosphere/FogBuilder.cs | 8 ++-- .../Builder/Atmosphere/SunOverrideBuilder.cs | 6 +-- .../Builder/Atmosphere/VolumesBuilder.cs | 6 +-- NewHorizons/Builder/Body/CloakBuilder.cs | 10 ++-- NewHorizons/Builder/Body/CometTailBuilder.cs | 6 +-- NewHorizons/Builder/Body/FunnelBuilder.cs | 10 ++-- NewHorizons/Builder/Body/GeometryBuilder.cs | 6 +-- NewHorizons/Builder/Body/HeightMapBuilder.cs | 10 ++-- NewHorizons/Builder/Body/LavaBuilder.cs | 6 +-- NewHorizons/Builder/Body/ProcGenBuilder.cs | 9 ++-- NewHorizons/Builder/Body/RingBuilder.cs | 8 ++-- NewHorizons/Builder/Body/SandBuilder.cs | 6 +-- .../Builder/Body/SingularityBuilder.cs | 16 +++---- NewHorizons/Builder/Body/StarBuilder.cs | 14 +++--- NewHorizons/Builder/Body/WaterBuilder.cs | 6 +-- .../Builder/General/AmbientLightBuilder.cs | 6 +-- .../Builder/General/DetectorBuilder.cs | 4 +- NewHorizons/Builder/General/GravityBuilder.cs | 4 +- .../Builder/General/RFVolumeBuilder.cs | 6 +-- NewHorizons/Builder/General/SectorBuilder.cs | 6 +-- .../Builder/General/SpawnPointBuilder.cs | 14 +++--- .../Builder/Orbital/OrbitlineBuilder.cs | 4 +- NewHorizons/Builder/Props/DetailBuilder.cs | 12 ++--- NewHorizons/Builder/Props/DialogueBuilder.cs | 12 ++--- NewHorizons/Builder/Props/GeyserBuilder.cs | 8 ++-- NewHorizons/Builder/Props/NomaiTextBuilder.cs | 46 +++++++++---------- .../Builder/Props/ProjectionBuilder.cs | 16 +++---- NewHorizons/Builder/Props/RaftBuilder.cs | 13 +----- NewHorizons/Builder/Props/SignalBuilder.cs | 4 +- NewHorizons/Builder/Props/TornadoBuilder.cs | 4 +- NewHorizons/Builder/Props/VolcanoBuilder.cs | 4 +- .../Builder/ShipLog/EntryLocationBuilder.cs | 2 +- NewHorizons/Builder/ShipLog/RevealBuilder.cs | 6 +-- NewHorizons/Handlers/PlanetCreationHandler.cs | 2 +- NewHorizons/Utility/NewHorizonExtensions.cs | 5 ++ 39 files changed, 173 insertions(+), 176 deletions(-) diff --git a/NewHorizons/Builder/Atmosphere/AirBuilder.cs b/NewHorizons/Builder/Atmosphere/AirBuilder.cs index f17af9fb..9083bbe9 100644 --- a/NewHorizons/Builder/Atmosphere/AirBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/AirBuilder.cs @@ -7,12 +7,12 @@ namespace NewHorizons.Builder.Atmosphere { public static class AirBuilder { - public static void Make(GameObject body, Sector sector, AtmosphereModule.AirInfo info) + public static void Make(GameObject planetGO, Sector sector, AtmosphereModule.AirInfo info) { GameObject airGO = new GameObject("Air"); airGO.SetActive(false); airGO.layer = 17; - airGO.transform.parent = sector?.transform ?? body.transform; + airGO.transform.parent = sector?.transform ?? planetGO.transform; SphereCollider SC = airGO.AddComponent(); SC.isTrigger = true; @@ -60,7 +60,7 @@ namespace NewHorizons.Builder.Atmosphere airGO.AddComponent(); } - airGO.transform.localPosition = Vector3.zero; + airGO.transform.position = planetGO.transform.TransformPoint(Vector3.zero); airGO.SetActive(true); } } diff --git a/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs b/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs index d5353cfb..d59c72d2 100644 --- a/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs @@ -6,17 +6,17 @@ namespace NewHorizons.Builder.Atmosphere { public static class AtmosphereBuilder { - public static void Make(GameObject body, Sector sector, AtmosphereModule atmosphereModule, float surfaceSize) + public static void Make(GameObject planetGO, Sector sector, AtmosphereModule atmosphereModule, float surfaceSize) { GameObject atmoGO = new GameObject("Atmosphere"); atmoGO.SetActive(false); - atmoGO.transform.parent = sector?.transform ?? body.transform; + atmoGO.transform.parent = sector?.transform ?? planetGO.transform; if (atmosphereModule.HasAtmosphere) { GameObject atmo = GameObject.Instantiate(GameObject.Find("TimberHearth_Body/Atmosphere_TH/AtmoSphere")); atmo.transform.parent = atmoGO.transform; - atmo.transform.localPosition = Vector3.zero; + atmo.transform.position = planetGO.transform.TransformPoint(Vector3.zero); atmo.transform.localScale = Vector3.one * atmosphereModule.Size * 1.2f; foreach(var meshRenderer in atmo.GetComponentsInChildren()) { @@ -29,7 +29,7 @@ namespace NewHorizons.Builder.Atmosphere atmo.SetActive(true); } - atmoGO.transform.localPosition = Vector3.zero; + atmoGO.transform.position = planetGO.transform.TransformPoint(Vector3.zero); atmoGO.SetActive(true); } } diff --git a/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs b/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs index 51fc0087..5289156e 100644 --- a/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs @@ -11,7 +11,7 @@ namespace NewHorizons.Builder.Atmosphere public static class CloudsBuilder { private static Shader _sphereShader = null; - public static void Make(GameObject body, Sector sector, AtmosphereModule atmo, IModBehaviour mod) + public static void Make(GameObject planetGO, Sector sector, AtmosphereModule atmo, IModBehaviour mod) { Texture2D image, cap, ramp; @@ -34,7 +34,7 @@ namespace NewHorizons.Builder.Atmosphere GameObject cloudsMainGO = new GameObject("Clouds"); cloudsMainGO.SetActive(false); - cloudsMainGO.transform.parent = sector?.transform ?? body.transform; + cloudsMainGO.transform.parent = sector?.transform ?? planetGO.transform; GameObject cloudsTopGO = new GameObject("TopClouds"); cloudsTopGO.SetActive(false); @@ -158,14 +158,14 @@ namespace NewHorizons.Builder.Atmosphere fluidCLFV._disableOnStart = false; // Fix the rotations once the rest is done - cloudsMainGO.transform.localRotation = Quaternion.Euler(0, 0, 0); + cloudsMainGO.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(0, 0, 0)); // For the base shader it has to be rotated idk - if(atmo.UseBasicCloudShader) cloudsMainGO.transform.localRotation = Quaternion.Euler(90, 0, 0); + if(atmo.UseBasicCloudShader) cloudsMainGO.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(90, 0, 0)); - cloudsMainGO.transform.localPosition = Vector3.zero; - cloudsBottomGO.transform.localPosition = Vector3.zero; - cloudsFluidGO.transform.localPosition = Vector3.zero; - cloudsTopGO.transform.localPosition = Vector3.zero; + cloudsMainGO.transform.position = planetGO.transform.TransformPoint(Vector3.zero); + cloudsBottomGO.transform.position = planetGO.transform.TransformPoint(Vector3.zero); + cloudsFluidGO.transform.position = planetGO.transform.TransformPoint(Vector3.zero); + cloudsTopGO.transform.position = planetGO.transform.TransformPoint(Vector3.zero); cloudsTopGO.SetActive(true); cloudsBottomGO.SetActive(true); diff --git a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs index 3758182b..17b7a36a 100644 --- a/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/EffectsBuilder.cs @@ -8,12 +8,12 @@ namespace NewHorizons.Builder.Atmosphere { public static class EffectsBuilder { - public static void Make(GameObject body, Sector sector, AtmosphereModule.AirInfo info, float surfaceSize) + public static void Make(GameObject planetGO, Sector sector, AtmosphereModule.AirInfo info, float surfaceSize) { GameObject effectsGO = new GameObject("Effects"); effectsGO.SetActive(false); - effectsGO.transform.parent = sector?.transform ?? body.transform; - effectsGO.transform.localPosition = Vector3.zero; + effectsGO.transform.parent = sector?.transform ?? planetGO.transform; + effectsGO.transform.position = planetGO.transform.position; SectorCullGroup SCG = effectsGO.AddComponent(); SCG._sector = sector; @@ -25,7 +25,7 @@ namespace NewHorizons.Builder.Atmosphere if(info.IsRaining) { var rainGO = GameObject.Instantiate(SearchUtilities.CachedFind("/GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/Effects_GD_Rain"), effectsGO.transform); - rainGO.transform.localPosition = Vector3.zero; + rainGO.transform.position = planetGO.transform.position; var pvc = rainGO.GetComponent(); pvc._densityByHeight = new AnimationCurve(new Keyframe[] @@ -44,12 +44,12 @@ namespace NewHorizons.Builder.Atmosphere { var snowGO = new GameObject("SnowEffects"); snowGO.transform.parent = effectsGO.transform; - snowGO.transform.localPosition = Vector3.zero; + snowGO.transform.position = planetGO.transform.position; for(int i = 0; i < 5; i++) { var snowEmitter = GameObject.Instantiate(SearchUtilities.CachedFind("/BrittleHollow_Body/Sector_BH/Effects_BH/Effects_BH_Snowflakes"), snowGO.transform); snowEmitter.name = "SnowEmitter"; - snowEmitter.transform.localPosition = Vector3.zero; + snowEmitter.transform.position = planetGO.transform.position; var pvc = snowEmitter.GetComponent(); pvc._densityByHeight = new AnimationCurve(new Keyframe[] @@ -65,7 +65,7 @@ namespace NewHorizons.Builder.Atmosphere } } - effectsGO.transform.localPosition = Vector3.zero; + effectsGO.transform.position = planetGO.transform.position; effectsGO.SetActive(true); } } diff --git a/NewHorizons/Builder/Atmosphere/FogBuilder.cs b/NewHorizons/Builder/Atmosphere/FogBuilder.cs index d9d3616c..431be9f5 100644 --- a/NewHorizons/Builder/Atmosphere/FogBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/FogBuilder.cs @@ -12,11 +12,11 @@ namespace NewHorizons.Builder.Atmosphere { public static class FogBuilder { - public static void Make(GameObject body, Sector sector, AtmosphereModule atmo) + public static void Make(GameObject planetGO, Sector sector, AtmosphereModule atmo) { GameObject fogGO = new GameObject("FogSphere"); fogGO.SetActive(false); - fogGO.transform.parent = sector?.transform ?? body.transform; + fogGO.transform.parent = sector?.transform ?? planetGO.transform; fogGO.transform.localScale = Vector3.one; // Going to copy from dark bramble @@ -59,8 +59,8 @@ namespace NewHorizons.Builder.Atmosphere lodFogSectorProxy.SetSector(sector); */ - fogGO.transform.localPosition = Vector3.zero; - lodFogGO.transform.localPosition = Vector3.zero; + fogGO.transform.position = planetGO.transform.position; + lodFogGO.transform.position = planetGO.transform.position; fogGO.SetActive(true); lodFogGO.SetActive(true); diff --git a/NewHorizons/Builder/Atmosphere/SunOverrideBuilder.cs b/NewHorizons/Builder/Atmosphere/SunOverrideBuilder.cs index 91ced973..a2de6f17 100644 --- a/NewHorizons/Builder/Atmosphere/SunOverrideBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/SunOverrideBuilder.cs @@ -7,11 +7,11 @@ namespace NewHorizons.Builder.Atmosphere { public static class SunOverrideBuilder { - public static void Make(GameObject body, Sector sector, AtmosphereModule atmo, float surfaceSize) + public static void Make(GameObject planetGO, Sector sector, AtmosphereModule atmo, float surfaceSize) { GameObject overrideGO = new GameObject("SunOverride"); overrideGO.SetActive(false); - overrideGO.transform.parent = sector?.transform ?? body.transform; + overrideGO.transform.parent = sector?.transform ?? planetGO.transform; GiantsDeepSunOverrideVolume GDSOV = overrideGO.AddComponent(); GDSOV._sector = sector; @@ -20,7 +20,7 @@ namespace NewHorizons.Builder.Atmosphere GDSOV._waterOuterRadius = surfaceSize; GDSOV._waterInnerRadius = 0f; - overrideGO.transform.localPosition = Vector3.zero; + overrideGO.transform.position = planetGO.transform.position; overrideGO.SetActive(true); } } diff --git a/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs b/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs index 6a3d8eb8..2fb722fc 100644 --- a/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs @@ -8,11 +8,11 @@ namespace NewHorizons.Builder.Atmosphere { public static class VolumesBuilder { - public static void Make(GameObject body, float innerRadius, float outerRadius, bool useMiniMap) + public static void Make(GameObject planetGO, float innerRadius, float outerRadius, bool useMiniMap) { GameObject volumesGO = new GameObject("Volumes"); volumesGO.SetActive(false); - volumesGO.transform.parent = body.transform; + volumesGO.transform.parent = planetGO.transform; GameObject rulesetGO = new GameObject("Ruleset"); rulesetGO.SetActive(false); @@ -38,7 +38,7 @@ namespace NewHorizons.Builder.Atmosphere ER._material = GameObject.Find("RulesetVolumes_GD").GetComponent().GetValue("_material"); ER._cloudMaterial = GameObject.Find("RulesetVolumes_GD").GetComponent().GetValue("_cloudMaterial"); - volumesGO.transform.localPosition = Vector3.zero; + volumesGO.transform.position = planetGO.transform.position; rulesetGO.SetActive(true); volumesGO.SetActive(true); } diff --git a/NewHorizons/Builder/Body/CloakBuilder.cs b/NewHorizons/Builder/Body/CloakBuilder.cs index 7375924b..8080bddb 100644 --- a/NewHorizons/Builder/Body/CloakBuilder.cs +++ b/NewHorizons/Builder/Body/CloakBuilder.cs @@ -11,12 +11,12 @@ namespace NewHorizons.Builder.Body { public static class CloakBuilder { - public static void Make(GameObject body, Sector sector, float radius) + public static void Make(GameObject planetGO, Sector sector, float radius) { var cloak = SearchUtilities.Find("RingWorld_Body/CloakingField_IP"); - var newCloak = GameObject.Instantiate(cloak, body.transform); - newCloak.transform.localPosition = Vector3.zero; + var newCloak = GameObject.Instantiate(cloak, sector?.transform ?? planetGO.transform); + newCloak.transform.position = planetGO.transform.position; newCloak.transform.name = "CloakingField"; newCloak.transform.localScale = Vector3.one * radius; @@ -28,11 +28,11 @@ namespace NewHorizons.Builder.Body cloakFieldController._innerCloakRadius = radius * 900 / 3000f; cloakFieldController._nearCloakRadius = radius * 800 / 3000f; - cloakFieldController._referenceFrameVolume = body.GetAttachedOWRigidbody()._attachedRFVolume; + cloakFieldController._referenceFrameVolume = planetGO.GetAttachedOWRigidbody()._attachedRFVolume; cloakFieldController._exclusionSector = null; var cloakSectorController = newCloak.AddComponent(); - cloakSectorController.Init(newCloak.GetComponent(), body); + cloakSectorController.Init(newCloak.GetComponent(), planetGO); newCloak.SetActive(true); cloakFieldController.enabled = true; diff --git a/NewHorizons/Builder/Body/CometTailBuilder.cs b/NewHorizons/Builder/Body/CometTailBuilder.cs index 6e20263d..6a5cab7e 100644 --- a/NewHorizons/Builder/Body/CometTailBuilder.cs +++ b/NewHorizons/Builder/Body/CometTailBuilder.cs @@ -12,10 +12,10 @@ namespace NewHorizons.Builder.Body { public static class CometTailBuilder { - public static void Make(GameObject go, Sector sector, IPlanetConfig config, AstroObject primary) + public static void Make(GameObject planetGO, Sector sector, IPlanetConfig config, AstroObject primary) { - var cometTail = GameObject.Instantiate(GameObject.Find("Comet_Body/Sector_CO/Effects_CO/Effects_CO_TailMeshes"), sector?.transform ?? go.transform); - cometTail.transform.localPosition = Vector3.zero; + var cometTail = GameObject.Instantiate(GameObject.Find("Comet_Body/Sector_CO/Effects_CO/Effects_CO_TailMeshes"), sector?.transform ?? planetGO.transform); + cometTail.transform.position = planetGO.transform.position; cometTail.name = "CometTail"; cometTail.transform.localScale = Vector3.one * config.Base.SurfaceSize / 110; diff --git a/NewHorizons/Builder/Body/FunnelBuilder.cs b/NewHorizons/Builder/Body/FunnelBuilder.cs index a955fe7c..70d7b47b 100644 --- a/NewHorizons/Builder/Body/FunnelBuilder.cs +++ b/NewHorizons/Builder/Body/FunnelBuilder.cs @@ -21,16 +21,16 @@ namespace NewHorizons.Builder.Body STAR } - public static void Make(GameObject go, ConstantForceDetector detector, OWRigidbody rigidbody, FunnelModule module) + public static void Make(GameObject planetGO, ConstantForceDetector detector, OWRigidbody rigidbody, FunnelModule module) { var funnelType = FunnelType.SAND; if (module.Type.ToUpper().Equals("WATER")) funnelType = FunnelType.WATER; else if (module.Type.ToUpper().Equals("LAVA")) funnelType = FunnelType.LAVA; else if (module.Type.ToUpper().Equals("STAR")) funnelType = FunnelType.STAR; - var funnelGO = new GameObject($"{go.name.Replace("_Body", "")}Funnel_Body"); + var funnelGO = new GameObject($"{planetGO.name.Replace("_Body", "")}Funnel_Body"); funnelGO.SetActive(false); - funnelGO.transform.parent = go.transform; + funnelGO.transform.parent = planetGO.transform; var owrb = funnelGO.AddComponent(); @@ -149,7 +149,7 @@ namespace NewHorizons.Builder.Body break; } - var sector = go.GetComponent().GetPrimaryBody().GetRootSector(); + var sector = planetGO.GetComponent().GetPrimaryBody().GetRootSector(); proxyGO.GetComponent().SetSector(sector); geoGO.GetComponent().SetSector(sector); volumesGO.GetComponent().SetSector(sector); @@ -167,7 +167,7 @@ namespace NewHorizons.Builder.Body } funnelSizeController.scaleCurve = curve; } - funnelSizeController.anchor = go.transform; + funnelSizeController.anchor = planetGO.transform; // Finish up next tick Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => PostMake(funnelGO, funnelSizeController, module)); diff --git a/NewHorizons/Builder/Body/GeometryBuilder.cs b/NewHorizons/Builder/Body/GeometryBuilder.cs index 6db2c64a..e3ba2d81 100644 --- a/NewHorizons/Builder/Body/GeometryBuilder.cs +++ b/NewHorizons/Builder/Body/GeometryBuilder.cs @@ -5,12 +5,12 @@ namespace NewHorizons.Builder.Body { public static class GeometryBuilder { - public static void Make(GameObject body, Sector sector, float groundScale) + public static void Make(GameObject planetGO, Sector sector, float groundScale) { GameObject groundGO = GameObject.CreatePrimitive(PrimitiveType.Sphere); - groundGO.transform.parent = sector?.transform ?? body.transform; + groundGO.transform.parent = sector?.transform ?? planetGO.transform; groundGO.transform.localScale = new Vector3(groundScale, groundScale, groundScale); - groundGO.transform.localPosition = Vector3.zero; + groundGO.transform.position = planetGO.transform.position; groundGO.GetComponent().mesh = GameObject.Find("CloudsTopLayer_GD").GetComponent().mesh; groundGO.GetComponent().radius = 1f; groundGO.SetActive(true); diff --git a/NewHorizons/Builder/Body/HeightMapBuilder.cs b/NewHorizons/Builder/Body/HeightMapBuilder.cs index b873d63e..5fa0e752 100644 --- a/NewHorizons/Builder/Body/HeightMapBuilder.cs +++ b/NewHorizons/Builder/Body/HeightMapBuilder.cs @@ -17,7 +17,7 @@ namespace NewHorizons.Builder.Body { public static Shader PlanetShader; - public static void Make(GameObject go, Sector sector, HeightMapModule module, IModBehaviour mod) + public static void Make(GameObject planetGO, Sector sector, HeightMapModule module, IModBehaviour mod) { Texture2D heightMap, textureMap; try @@ -35,7 +35,7 @@ namespace NewHorizons.Builder.Body GameObject cubeSphere = new GameObject("CubeSphere"); cubeSphere.SetActive(false); - cubeSphere.transform.parent = sector?.transform ?? go.transform; + cubeSphere.transform.parent = sector?.transform ?? planetGO.transform; cubeSphere.transform.rotation = Quaternion.Euler(90, 0, 0); Mesh mesh = CubeSphere.Build(51, heightMap, module.MinHeight, module.MaxHeight, module.Stretch); @@ -55,11 +55,11 @@ namespace NewHorizons.Builder.Body var cubeSphereMC = cubeSphere.AddComponent(); cubeSphereMC.sharedMesh = mesh; - if(go.GetComponent() != null) cubeSphere.AddComponent(); + if(planetGO.GetComponent() != null) cubeSphere.AddComponent(); // Fix rotation in the end - cubeSphere.transform.localRotation = Quaternion.Euler(90, 0, 0); - cubeSphere.transform.localPosition = Vector3.zero; + cubeSphere.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(90, 0, 0)); + cubeSphere.transform.position = planetGO.transform.position; cubeSphere.SetActive(true); } diff --git a/NewHorizons/Builder/Body/LavaBuilder.cs b/NewHorizons/Builder/Body/LavaBuilder.cs index be195568..df429bb1 100644 --- a/NewHorizons/Builder/Body/LavaBuilder.cs +++ b/NewHorizons/Builder/Body/LavaBuilder.cs @@ -12,7 +12,7 @@ namespace NewHorizons.Builder.Body { public static class LavaBuilder { - public static void Make(GameObject go, Sector sector, OWRigidbody rb, LavaModule module) + public static void Make(GameObject planetGO, Sector sector, OWRigidbody rb, LavaModule module) { var heightScale = module.Size; if(module.Curve != null) @@ -27,8 +27,8 @@ namespace NewHorizons.Builder.Body var moltenCore = new GameObject("MoltenCore"); moltenCore.SetActive(false); - moltenCore.transform.parent = sector?.transform ?? go.transform; - moltenCore.transform.localPosition = Vector3.zero; + moltenCore.transform.parent = sector?.transform ?? planetGO.transform; + moltenCore.transform.position = planetGO.transform.position; moltenCore.transform.localScale = Vector3.one * module.Size; var lavaSphere = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform); diff --git a/NewHorizons/Builder/Body/ProcGenBuilder.cs b/NewHorizons/Builder/Body/ProcGenBuilder.cs index f8d0efc5..af7222c7 100644 --- a/NewHorizons/Builder/Body/ProcGenBuilder.cs +++ b/NewHorizons/Builder/Body/ProcGenBuilder.cs @@ -6,17 +6,18 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; +using NewHorizons.Utility; namespace NewHorizons.Builder.Body { public static class ProcGenBuilder { - public static void Make(GameObject go, Sector sector, ProcGenModule module) + public static void Make(GameObject planetGO, Sector sector, ProcGenModule module) { GameObject icosphere = new GameObject("Icosphere"); - icosphere.transform.parent = sector?.transform ?? go.transform; + icosphere.transform.parent = sector?.transform ?? planetGO.transform; icosphere.transform.rotation = Quaternion.Euler(90, 0, 0); - icosphere.transform.localPosition = Vector3.zero; + icosphere.transform.position = planetGO.transform.position; Mesh mesh = Icosphere.Build(4, module.Scale, module.Scale * 1.2f); @@ -29,7 +30,7 @@ namespace NewHorizons.Builder.Body var cubeSphereMC = icosphere.AddComponent(); cubeSphereMC.sharedMesh = mesh; - icosphere.transform.localRotation = Quaternion.Euler(90, 0, 0); + icosphere.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(90, 0, 0)); icosphere.AddComponent(); } diff --git a/NewHorizons/Builder/Body/RingBuilder.cs b/NewHorizons/Builder/Body/RingBuilder.cs index 7203794f..c52d102c 100644 --- a/NewHorizons/Builder/Body/RingBuilder.cs +++ b/NewHorizons/Builder/Body/RingBuilder.cs @@ -21,7 +21,7 @@ namespace NewHorizons.Builder.Body public static Shader UnlitRingShader; public static Shader UnlitRingShader1Pixel; - public static GameObject Make(GameObject body, Sector sector, RingModule ring, IModBehaviour mod) + public static GameObject Make(GameObject planetGO, Sector sector, RingModule ring, IModBehaviour mod) { // Properly lit shader doesnt work yet ring.Unlit = true; @@ -38,9 +38,9 @@ namespace NewHorizons.Builder.Body } var ringGO = new GameObject("Ring"); - ringGO.transform.parent = sector?.transform ?? body.transform; - ringGO.transform.localPosition = Vector3.zero; - ringGO.transform.localRotation = Quaternion.Euler(0, 0, 0); + ringGO.transform.parent = sector?.transform ?? planetGO.transform; + ringGO.transform.position = planetGO.transform.position; + ringGO.transform.rotation = planetGO.transform.rotation; ringGO.transform.Rotate(ringGO.transform.TransformDirection(Vector3.up), ring.LongitudeOfAscendingNode); ringGO.transform.Rotate(ringGO.transform.TransformDirection(Vector3.right), ring.Inclination); diff --git a/NewHorizons/Builder/Body/SandBuilder.cs b/NewHorizons/Builder/Body/SandBuilder.cs index 494ad6eb..d9abba3c 100644 --- a/NewHorizons/Builder/Body/SandBuilder.cs +++ b/NewHorizons/Builder/Body/SandBuilder.cs @@ -11,7 +11,7 @@ namespace NewHorizons.Builder.Body { public static class SandBuilder { - public static void Make(GameObject go, Sector sector, OWRigidbody rb, SandModule module) + public static void Make(GameObject planetGO, Sector sector, OWRigidbody rb, SandModule module) { var sandGO = new GameObject("Sand"); sandGO.SetActive(false); @@ -56,8 +56,8 @@ namespace NewHorizons.Builder.Body levelController._scaleCurve = curve; } - sandGO.transform.parent = sector?.transform ?? go.transform; - sandGO.transform.localPosition = Vector3.zero; + sandGO.transform.parent = sector?.transform ?? planetGO.transform; + sandGO.transform.position = planetGO.transform.position; sandGO.transform.localScale = Vector3.one * module.Size * 2f; sandGO.SetActive(true); diff --git a/NewHorizons/Builder/Body/SingularityBuilder.cs b/NewHorizons/Builder/Body/SingularityBuilder.cs index a3a2c579..3db6cc24 100644 --- a/NewHorizons/Builder/Body/SingularityBuilder.cs +++ b/NewHorizons/Builder/Body/SingularityBuilder.cs @@ -94,12 +94,12 @@ namespace NewHorizons.Builder.Body } } - public static GameObject MakeBlackHole(GameObject go, Sector sector, Vector3 localPosition, float size, bool hasDestructionVolume, string targetSolarSystem, bool makeAudio = true) + public static GameObject MakeBlackHole(GameObject planetGO, Sector sector, Vector3 localPosition, float size, bool hasDestructionVolume, string targetSolarSystem, bool makeAudio = true) { var blackHole = new GameObject("BlackHole"); blackHole.SetActive(false); - blackHole.transform.parent = sector?.transform ?? go.transform; - blackHole.transform.localPosition = localPosition; + blackHole.transform.parent = sector?.transform ?? planetGO.transform; + blackHole.transform.position = planetGO.transform.TransformPoint(localPosition); var blackHoleRender = new GameObject("BlackHoleRender"); blackHoleRender.transform.parent = blackHole.transform; @@ -165,12 +165,12 @@ namespace NewHorizons.Builder.Body return blackHole; } - public static GameObject MakeWhiteHole(GameObject body, Sector sector, OWRigidbody OWRB, Vector3 localPosition, float size, bool makeZeroGVolume = true) + public static GameObject MakeWhiteHole(GameObject planetGO, Sector sector, OWRigidbody OWRB, Vector3 localPosition, float size, bool makeZeroGVolume = true) { var whiteHole = new GameObject("WhiteHole"); whiteHole.SetActive(false); - whiteHole.transform.parent = sector?.transform ?? body.transform; - whiteHole.transform.localPosition = localPosition; + whiteHole.transform.parent = sector?.transform ?? planetGO.transform; + whiteHole.transform.position = planetGO.transform.TransformPoint(localPosition); var whiteHoleRenderer = new GameObject("WhiteHoleRenderer"); whiteHoleRenderer.transform.parent = whiteHole.transform; @@ -214,7 +214,7 @@ namespace NewHorizons.Builder.Body whiteHoleVolume._whiteHoleSector = sector; whiteHoleVolume._fluidVolume = whiteHoleFluidVolume; whiteHoleVolume._whiteHoleBody = OWRB; - whiteHoleVolume._whiteHoleProxyShadowSuperGroup = body.GetComponent(); + whiteHoleVolume._whiteHoleProxyShadowSuperGroup = planetGO.GetComponent(); whiteHoleVolume._radius = size * 0.5f; whiteHoleVolumeGO.GetComponent().radius = size; @@ -230,7 +230,7 @@ namespace NewHorizons.Builder.Body zeroGVolume.GetComponent().radius = size * 10f; zeroGVolume.GetComponent()._attachedBody = OWRB; - var rulesetVolume = GameObject.Instantiate(GameObject.Find("WhiteHole_Body/Sector_WhiteHole/RulesetVolumes_WhiteHole"), body.transform); + var rulesetVolume = GameObject.Instantiate(GameObject.Find("WhiteHole_Body/Sector_WhiteHole/RulesetVolumes_WhiteHole"), planetGO.transform); rulesetVolume.name = "RulesetVolume"; rulesetVolume.transform.localPosition = Vector3.zero; rulesetVolume.transform.localScale = Vector3.one * size / 100f; diff --git a/NewHorizons/Builder/Body/StarBuilder.cs b/NewHorizons/Builder/Body/StarBuilder.cs index 701b0468..92b28696 100644 --- a/NewHorizons/Builder/Body/StarBuilder.cs +++ b/NewHorizons/Builder/Body/StarBuilder.cs @@ -19,15 +19,15 @@ namespace NewHorizons.Builder.Body public const float OuterRadiusRatio = 1.5f; private static Texture2D _colorOverTime; - public static StarController Make(GameObject go, Sector sector, StarModule starModule) + public static StarController Make(GameObject planetGO, Sector sector, StarModule starModule) { if (_colorOverTime == null) _colorOverTime = ImageUtilities.GetTexture(Main.Instance, "AssetBundle/StarColorOverTime.png"); var starGO = new GameObject("Star"); - starGO.transform.parent = sector?.transform ?? go.transform; + starGO.transform.parent = sector?.transform ?? planetGO.transform; var sunSurface = GameObject.Instantiate(GameObject.Find("Sun_Body/Sector_SUN/Geometry_SUN/Surface"), starGO.transform); - sunSurface.transform.localPosition = Vector3.zero; + sunSurface.transform.position = planetGO.transform.position; sunSurface.transform.localScale = Vector3.one; sunSurface.name = "Surface"; @@ -67,8 +67,8 @@ namespace NewHorizons.Builder.Body if(starModule.HasAtmosphere) { - var sunAtmosphere = GameObject.Instantiate(GameObject.Find("Sun_Body/Atmosphere_SUN"), go.transform); - sunAtmosphere.transform.localPosition = Vector3.zero; + var sunAtmosphere = GameObject.Instantiate(GameObject.Find("Sun_Body/Atmosphere_SUN"), planetGO.transform); + sunAtmosphere.transform.position = planetGO.transform.position; sunAtmosphere.transform.localScale = Vector3.one; sunAtmosphere.name = "Atmosphere_Star"; PlanetaryFogController fog = sunAtmosphere.transform.Find("FogSphere").GetComponent(); @@ -151,13 +151,13 @@ namespace NewHorizons.Builder.Body if(starModule.SolarFlareTint != null) solarFlareEmitter.GetComponent().tint = starModule.SolarFlareTint.ToColor(); - starGO.transform.localPosition = Vector3.zero; + starGO.transform.position = planetGO.transform.position; starGO.transform.localScale = starModule.Size * Vector3.one; StarController starController = null; if (starModule.SolarLuminosity != 0) { - starController = go.AddComponent(); + starController = planetGO.AddComponent(); starController.Light = light; starController.AmbientLight = ambientLight; starController.FaceActiveCamera = faceActiveCamera; diff --git a/NewHorizons/Builder/Body/WaterBuilder.cs b/NewHorizons/Builder/Body/WaterBuilder.cs index fd7cb5b9..bdeb2f4e 100644 --- a/NewHorizons/Builder/Body/WaterBuilder.cs +++ b/NewHorizons/Builder/Body/WaterBuilder.cs @@ -11,14 +11,14 @@ namespace NewHorizons.Builder.Body { public static class WaterBuilder { - public static void Make(GameObject go, Sector sector, OWRigidbody rb, WaterModule module) + public static void Make(GameObject planetGO, Sector sector, OWRigidbody rb, WaterModule module) { var waterSize = module.Size; GameObject waterGO = new GameObject("Water"); waterGO.SetActive(false); waterGO.layer = 15; - waterGO.transform.parent = sector?.transform ?? go.transform; + waterGO.transform.parent = sector?.transform ?? planetGO.transform; waterGO.transform.localScale = new Vector3(waterSize, waterSize, waterSize); var GDTSR = GameObject.Find("Ocean_GD").GetComponent(); @@ -113,7 +113,7 @@ namespace NewHorizons.Builder.Body // TODO: fix ruleset making the sand bubble pop up - waterGO.transform.localPosition = Vector3.zero; + waterGO.transform.position = planetGO.transform.position; waterGO.SetActive(true); } } diff --git a/NewHorizons/Builder/General/AmbientLightBuilder.cs b/NewHorizons/Builder/General/AmbientLightBuilder.cs index c3dacbe6..a3db71f3 100644 --- a/NewHorizons/Builder/General/AmbientLightBuilder.cs +++ b/NewHorizons/Builder/General/AmbientLightBuilder.cs @@ -8,10 +8,10 @@ namespace NewHorizons.Builder.General { public static class AmbientLightBuilder { - public static void Make(GameObject body, Sector sector, float scale) + public static void Make(GameObject planetGO, Sector sector, float scale) { - GameObject lightGO = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/AmbientLight_BH_Surface"), sector?.transform ?? body.transform); - lightGO.transform.localPosition = Vector3.zero; + GameObject lightGO = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/AmbientLight_BH_Surface"), sector?.transform ?? planetGO.transform); + lightGO.transform.position = planetGO.transform.position; lightGO.name = "Light"; var light = lightGO.GetComponent(); diff --git a/NewHorizons/Builder/General/DetectorBuilder.cs b/NewHorizons/Builder/General/DetectorBuilder.cs index 0ddcad9e..234981f0 100644 --- a/NewHorizons/Builder/General/DetectorBuilder.cs +++ b/NewHorizons/Builder/General/DetectorBuilder.cs @@ -14,11 +14,11 @@ namespace NewHorizons.Builder.General { public static class DetectorBuilder { - public static GameObject Make(GameObject body, OWRigidbody OWRB, AstroObject primaryBody, AstroObject astroObject, IPlanetConfig config) + public static GameObject Make(GameObject planetGO, OWRigidbody OWRB, AstroObject primaryBody, AstroObject astroObject, IPlanetConfig config) { GameObject detectorGO = new GameObject("FieldDetector"); detectorGO.SetActive(false); - detectorGO.transform.parent = body.transform; + detectorGO.transform.parent = planetGO.transform; detectorGO.transform.localPosition = Vector3.zero; detectorGO.layer = LayerMask.NameToLayer("BasicDetector"); diff --git a/NewHorizons/Builder/General/GravityBuilder.cs b/NewHorizons/Builder/General/GravityBuilder.cs index 06012de7..ae648ead 100644 --- a/NewHorizons/Builder/General/GravityBuilder.cs +++ b/NewHorizons/Builder/General/GravityBuilder.cs @@ -11,7 +11,7 @@ namespace NewHorizons.Builder.General { public static class GravityBuilder { - public static GravityVolume Make(GameObject body, AstroObject ao, IPlanetConfig config) + public static GravityVolume Make(GameObject planetGO, AstroObject ao, IPlanetConfig config) { var exponent = config.Base.GravityFallOff.Equals("linear") ? 1f : 2f; var GM = config.Base.SurfaceGravity * Mathf.Pow(config.Base.SurfaceSize, exponent); @@ -26,7 +26,7 @@ namespace NewHorizons.Builder.General if (config.Base.SphereOfInfluence != 0f) gravityRadius = config.Base.SphereOfInfluence; GameObject gravityGO = new GameObject("GravityWell"); - gravityGO.transform.parent = body.transform; + gravityGO.transform.parent = planetGO.transform; gravityGO.transform.localPosition = Vector3.zero; gravityGO.layer = 17; gravityGO.SetActive(false); diff --git a/NewHorizons/Builder/General/RFVolumeBuilder.cs b/NewHorizons/Builder/General/RFVolumeBuilder.cs index 47ca317b..d429748e 100644 --- a/NewHorizons/Builder/General/RFVolumeBuilder.cs +++ b/NewHorizons/Builder/General/RFVolumeBuilder.cs @@ -7,10 +7,10 @@ namespace NewHorizons.Builder.General { public static class RFVolumeBuilder { - public static void Make(GameObject body, OWRigidbody rigidbody, float sphereOfInfluence) + public static void Make(GameObject planetGO, OWRigidbody owRigidBody, float sphereOfInfluence) { GameObject rfGO = new GameObject("RFVolume"); - rfGO.transform.parent = body.transform; + rfGO.transform.parent = planetGO.transform; rfGO.transform.localPosition = Vector3.zero; rfGO.layer = 19; rfGO.SetActive(false); @@ -21,7 +21,7 @@ namespace NewHorizons.Builder.General ReferenceFrameVolume RFV = rfGO.AddComponent(); - ReferenceFrame RV = new ReferenceFrame(rigidbody); + ReferenceFrame RV = new ReferenceFrame(owRigidBody); RV._minSuitTargetDistance = sphereOfInfluence; RV._maxTargetDistance = 0; RV._autopilotArrivalDistance = 2.0f * sphereOfInfluence; diff --git a/NewHorizons/Builder/General/SectorBuilder.cs b/NewHorizons/Builder/General/SectorBuilder.cs index d1ddb089..346d0c15 100644 --- a/NewHorizons/Builder/General/SectorBuilder.cs +++ b/NewHorizons/Builder/General/SectorBuilder.cs @@ -8,11 +8,11 @@ namespace NewHorizons.Builder.General { public static class MakeSector { - public static Sector Make(GameObject body, OWRigidbody rigidbody, float sphereOfInfluence) + public static Sector Make(GameObject planetBody, OWRigidbody owRigidBody, float sphereOfInfluence) { GameObject sectorGO = new GameObject("Sector"); sectorGO.SetActive(false); - sectorGO.transform.parent = body.transform; + sectorGO.transform.parent = planetBody.transform; sectorGO.transform.localPosition = Vector3.zero; SphereShape SS = sectorGO.AddComponent(); @@ -27,7 +27,7 @@ namespace NewHorizons.Builder.General Sector S = sectorGO.AddComponent(); S._name = (Sector.Name)24; - S._attachedOWRigidbody = rigidbody; + S._attachedOWRigidbody = owRigidBody; S._subsectors = new List(); sectorGO.SetActive(true); diff --git a/NewHorizons/Builder/General/SpawnPointBuilder.cs b/NewHorizons/Builder/General/SpawnPointBuilder.cs index 3d078f19..865ffea6 100644 --- a/NewHorizons/Builder/General/SpawnPointBuilder.cs +++ b/NewHorizons/Builder/General/SpawnPointBuilder.cs @@ -10,25 +10,25 @@ namespace NewHorizons.Builder.General public static class SpawnPointBuilder { private static bool suitUpQueued = false; - public static SpawnPoint Make(GameObject body, SpawnModule module, OWRigidbody rb) + public static SpawnPoint Make(GameObject planetGO, SpawnModule module, OWRigidbody owRigidBody) { SpawnPoint playerSpawn = null; if(!Main.Instance.IsWarping && module.PlayerSpawnPoint != null) { GameObject spawnGO = new GameObject("PlayerSpawnPoint"); - spawnGO.transform.parent = body.transform; + spawnGO.transform.parent = planetGO.transform; spawnGO.layer = 8; spawnGO.transform.localPosition = module.PlayerSpawnPoint; playerSpawn = spawnGO.AddComponent(); - spawnGO.transform.rotation = Quaternion.FromToRotation(Vector3.up, (playerSpawn.transform.position - body.transform.position).normalized); + spawnGO.transform.rotation = Quaternion.FromToRotation(Vector3.up, (playerSpawn.transform.position - planetGO.transform.position).normalized); spawnGO.transform.position = spawnGO.transform.position + spawnGO.transform.TransformDirection(Vector3.up) * 4f; } if(module.ShipSpawnPoint != null) { GameObject spawnGO = new GameObject("ShipSpawnPoint"); - spawnGO.transform.parent = body.transform; + spawnGO.transform.parent = planetGO.transform; spawnGO.layer = 8; spawnGO.transform.localPosition = module.ShipSpawnPoint; @@ -38,11 +38,11 @@ namespace NewHorizons.Builder.General var ship = GameObject.Find("Ship_Body"); ship.transform.position = spawnPoint.transform.position; - ship.transform.rotation = Quaternion.FromToRotation(Vector3.up, (spawnPoint.transform.position - body.transform.position).normalized); + ship.transform.rotation = Quaternion.FromToRotation(Vector3.up, (spawnPoint.transform.position - planetGO.transform.position).normalized); // Move it up a bit more ship.transform.position = ship.transform.position + ship.transform.TransformDirection(Vector3.up) * 4f; - ship.GetRequiredComponent().SetBodyToMatch(rb); + ship.GetRequiredComponent().SetBodyToMatch(owRigidBody); if(Main.Instance.IsWarping) { @@ -63,7 +63,7 @@ namespace NewHorizons.Builder.General Main.Instance.ModHelper.Events.Unity.RunWhen(() => Main.IsSystemReady, () => SuitUp()); } - Logger.Log("Made spawnpoint on [" + body.name + "]"); + Logger.Log("Made spawnpoint on [" + planetGO.name + "]"); return playerSpawn; } diff --git a/NewHorizons/Builder/Orbital/OrbitlineBuilder.cs b/NewHorizons/Builder/Orbital/OrbitlineBuilder.cs index 76500311..a4304dfc 100644 --- a/NewHorizons/Builder/Orbital/OrbitlineBuilder.cs +++ b/NewHorizons/Builder/Orbital/OrbitlineBuilder.cs @@ -11,10 +11,10 @@ namespace NewHorizons.Builder.Orbital { public static class OrbitlineBuilder { - public static OrbitLine Make(GameObject body, NHAstroObject astroObject, bool isMoon, IPlanetConfig config) + public static OrbitLine Make(GameObject planetGO, NHAstroObject astroObject, bool isMoon, IPlanetConfig config) { GameObject orbitGO = new GameObject("Orbit"); - orbitGO.transform.parent = body.transform; + orbitGO.transform.parent = planetGO.transform; orbitGO.transform.localPosition = Vector3.zero; var lineRenderer = orbitGO.AddComponent(); diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 78f4255e..5343557d 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -60,7 +60,7 @@ namespace NewHorizons.Builder.Props return MakeDetail(go, sector, prefab, position, rotation, scale, alignWithNormal); } - public static GameObject MakeDetail(GameObject go, Sector sector, GameObject prefab, MVector3 position, MVector3 rotation, float scale, bool alignWithNormal) + public static GameObject MakeDetail(GameObject planetGO, Sector sector, GameObject prefab, MVector3 position, MVector3 rotation, float scale, bool alignWithNormal) { if (prefab == null) return null; @@ -105,7 +105,7 @@ namespace NewHorizons.Builder.Props { try { - (component as AnglerfishController)._chaseSpeed += OWPhysics.CalculateOrbitVelocity(go.GetAttachedOWRigidbody(), go.GetComponent().GetPrimaryBody().GetAttachedOWRigidbody()).magnitude; + (component as AnglerfishController)._chaseSpeed += OWPhysics.CalculateOrbitVelocity(planetGO.GetAttachedOWRigidbody(), planetGO.GetComponent().GetPrimaryBody().GetAttachedOWRigidbody()).magnitude; } catch (Exception e) { @@ -150,20 +150,20 @@ namespace NewHorizons.Builder.Props }); } - prop.transform.position = position == null ? go.transform.position : go.transform.TransformPoint((Vector3)position); + prop.transform.position = position == null ? planetGO.transform.position : planetGO.transform.TransformPoint((Vector3)position); Quaternion rot = rotation == null ? Quaternion.identity : Quaternion.Euler((Vector3)rotation); - prop.transform.localRotation = Quaternion.identity; + prop.transform.rotation = planetGO.transform.TransformRotation(Quaternion.identity); if (alignWithNormal) { // Apply the rotation after aligning it with normal - var up = prop.transform.localPosition.normalized; + var up = planetGO.transform.InverseTransformPoint(prop.transform.position).normalized; prop.transform.rotation = Quaternion.FromToRotation(prop.transform.up, up) * prop.transform.rotation; prop.transform.rotation *= rot; } else { - prop.transform.localRotation = rot; + prop.transform.rotation = planetGO.transform.TransformRotation(rot); } prop.transform.localScale = scale != 0 ? Vector3.one * scale : prefab.transform.localScale; diff --git a/NewHorizons/Builder/Props/DialogueBuilder.cs b/NewHorizons/Builder/Props/DialogueBuilder.cs index e3f59d95..be687164 100644 --- a/NewHorizons/Builder/Props/DialogueBuilder.cs +++ b/NewHorizons/Builder/Props/DialogueBuilder.cs @@ -28,7 +28,7 @@ namespace NewHorizons.Builder.Props if (!string.IsNullOrEmpty(info.pathToAnimController)) MakePlayerTrackingZone(go, dialogue, info); } - public static void MakeRemoteDialogueTrigger(GameObject go, Sector sector, PropModule.DialogueInfo info, CharacterDialogueTree dialogue) + public static void MakeRemoteDialogueTrigger(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, CharacterDialogueTree dialogue) { GameObject conversationTrigger = new GameObject("ConversationTrigger"); conversationTrigger.SetActive(false); @@ -53,12 +53,12 @@ namespace NewHorizons.Builder.Props sphereCollider.radius = info.remoteTriggerRadius == 0 ? info.radius : info.remoteTriggerRadius; - conversationTrigger.transform.parent = sector?.transform ?? go.transform; - conversationTrigger.transform.localPosition = info.remoteTriggerPosition ?? info.position; + conversationTrigger.transform.parent = sector?.transform ?? planetGO.transform; + conversationTrigger.transform.position = planetGO.transform.TransformPoint(info.remoteTriggerPosition ?? info.position); conversationTrigger.SetActive(true); } - public static CharacterDialogueTree MakeConversationZone(GameObject go, Sector sector, PropModule.DialogueInfo info, IModHelper mod) + public static CharacterDialogueTree MakeConversationZone(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, IModHelper mod) { GameObject conversationZone = new GameObject("ConversationZone"); conversationZone.SetActive(false); @@ -87,8 +87,8 @@ namespace NewHorizons.Builder.Props dialogueTree.SetTextXml(text); AddTranslation(xml); - conversationZone.transform.parent = sector?.transform ?? go.transform; - conversationZone.transform.localPosition = info.position; + conversationZone.transform.parent = sector?.transform ?? planetGO.transform; + conversationZone.transform.position = planetGO.transform.TransformPoint(info.position); conversationZone.SetActive(true); return dialogueTree; diff --git a/NewHorizons/Builder/Props/GeyserBuilder.cs b/NewHorizons/Builder/Props/GeyserBuilder.cs index 69f7f1f2..5fbbbb62 100644 --- a/NewHorizons/Builder/Props/GeyserBuilder.cs +++ b/NewHorizons/Builder/Props/GeyserBuilder.cs @@ -11,11 +11,11 @@ namespace NewHorizons.Builder.Props { public static class GeyserBuilder { - public static void Make(GameObject go, Sector sector, PropModule.GeyserInfo info) + public static void Make(GameObject planetGO, Sector sector, PropModule.GeyserInfo info) { var original = GameObject.Find("TimberHearth_Body/Sector_TH/Interactables_TH/Geysers/Geyser_Village"); GameObject geyserGO = original.InstantiateInactive(); - geyserGO.transform.parent = sector?.transform ?? go.transform; + geyserGO.transform.parent = sector?.transform ?? planetGO.transform; geyserGO.name = "Geyser"; var pos = ((Vector3)info.position); @@ -24,11 +24,11 @@ namespace NewHorizons.Builder.Props var length = pos.magnitude - 65; // About 130 high and the surface is at 65 - geyserGO.transform.localPosition = pos.normalized * length; + geyserGO.transform.position = planetGO.transform.TransformPoint(pos.normalized * length); geyserGO.transform.localScale = Vector3.one; - var up = go.transform.TransformPoint(pos) - go.transform.position; + var up = planetGO.transform.TransformPoint(pos) - planetGO.transform.position; geyserGO.transform.rotation = Quaternion.FromToRotation(geyserGO.transform.up, up) * geyserGO.transform.rotation; var controller = geyserGO.GetComponent(); diff --git a/NewHorizons/Builder/Props/NomaiTextBuilder.cs b/NewHorizons/Builder/Props/NomaiTextBuilder.cs index 69388188..60661940 100644 --- a/NewHorizons/Builder/Props/NomaiTextBuilder.cs +++ b/NewHorizons/Builder/Props/NomaiTextBuilder.cs @@ -71,7 +71,7 @@ namespace NewHorizons.Builder.Props _recorderPrefab.transform.rotation = Quaternion.identity; } - public static void Make(GameObject go, Sector sector, PropModule.NomaiTextInfo info, IModBehaviour mod) + public static void Make(GameObject planetGO, Sector sector, PropModule.NomaiTextInfo info, IModBehaviour mod) { if (_scrollPrefab == null) InitPrefabs(); @@ -79,22 +79,22 @@ namespace NewHorizons.Builder.Props if (info.type == "wall") { - var nomaiWallTextObj = MakeWallText(go, sector, info, xmlPath).gameObject; + var nomaiWallTextObj = MakeWallText(planetGO, sector, info, xmlPath).gameObject; - nomaiWallTextObj.transform.parent = sector?.transform ?? go.transform; - nomaiWallTextObj.transform.localPosition = info.position; + nomaiWallTextObj.transform.parent = sector?.transform ?? planetGO.transform; + nomaiWallTextObj.transform.position = planetGO.transform.TransformPoint(info.position); if (info.normal != null) { // In global coordinates (normal was in local coordinates) - var up = (nomaiWallTextObj.transform.position - go.transform.position).normalized; - var forward = go.transform.TransformDirection(info.normal).normalized; + var up = (nomaiWallTextObj.transform.position - planetGO.transform.position).normalized; + var forward = planetGO.transform.TransformDirection(info.normal).normalized; nomaiWallTextObj.transform.up = up; nomaiWallTextObj.transform.forward = forward; } if (info.rotation != null) { - nomaiWallTextObj.transform.localRotation = Quaternion.Euler(info.rotation); + nomaiWallTextObj.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(info.rotation)); } nomaiWallTextObj.SetActive(true); @@ -103,7 +103,7 @@ namespace NewHorizons.Builder.Props { var customScroll = _scrollPrefab.InstantiateInactive(); - var nomaiWallText = MakeWallText(go, sector, info, xmlPath); + var nomaiWallText = MakeWallText(planetGO, sector, info, xmlPath); nomaiWallText.transform.parent = customScroll.transform; nomaiWallText.transform.localPosition = Vector3.zero; nomaiWallText.transform.localRotation = Quaternion.identity; @@ -130,10 +130,10 @@ namespace NewHorizons.Builder.Props customScroll.GetComponent()._physicsRemoved = false; // Place scroll - customScroll.transform.parent = sector?.transform ?? go.transform; - customScroll.transform.localPosition = info.position ?? Vector3.zero; + customScroll.transform.parent = sector?.transform ?? planetGO.transform; + customScroll.transform.position = planetGO.transform.TransformPoint(info.position ?? Vector3.zero); - var up = customScroll.transform.localPosition.normalized; + var up = planetGO.transform.InverseTransformPoint(customScroll.transform.position).normalized; customScroll.transform.rotation = Quaternion.FromToRotation(customScroll.transform.up, up) * customScroll.transform.rotation; customScroll.SetActive(true); @@ -157,11 +157,11 @@ namespace NewHorizons.Builder.Props { var computerObject = _computerPrefab.InstantiateInactive(); - computerObject.transform.parent = sector?.transform ?? go.transform; - computerObject.transform.localPosition = info?.position ?? Vector3.zero; + computerObject.transform.parent = sector?.transform ?? planetGO.transform; + computerObject.transform.position = planetGO.transform.TransformPoint(info?.position ?? Vector3.zero); - var up = computerObject.transform.position - go.transform.position; - if (info.normal != null) up = go.transform.TransformDirection(info.normal); + var up = computerObject.transform.position - planetGO.transform.position; + if (info.normal != null) up = planetGO.transform.TransformDirection(info.normal); computerObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, up) * computerObject.transform.rotation; var computer = computerObject.GetComponent(); @@ -181,17 +181,17 @@ namespace NewHorizons.Builder.Props { var cairnObject = _cairnPrefab.InstantiateInactive(); - cairnObject.transform.parent = sector?.transform ?? go.transform; - cairnObject.transform.localPosition = info?.position ?? Vector3.zero; + cairnObject.transform.parent = sector?.transform ?? planetGO.transform; + cairnObject.transform.position = planetGO.transform.TransformPoint(info?.position ?? Vector3.zero); if (info.rotation != null) { - cairnObject.transform.localRotation = Quaternion.Euler(info.rotation); + cairnObject.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(info.rotation)); } else { // By default align it to normal - var up = (cairnObject.transform.position - go.transform.position).normalized; + var up = (cairnObject.transform.position - planetGO.transform.position).normalized; cairnObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, up) * cairnObject.transform.rotation; } @@ -224,16 +224,16 @@ namespace NewHorizons.Builder.Props { var recorderObject = _recorderPrefab.InstantiateInactive(); - recorderObject.transform.parent = sector?.transform ?? go.transform; - recorderObject.transform.localPosition = info?.position ?? Vector3.zero; + recorderObject.transform.parent = sector?.transform ?? planetGO.transform; + recorderObject.transform.position = planetGO.transform.TransformPoint(info?.position ?? Vector3.zero); if (info.rotation != null) { - recorderObject.transform.localRotation = Quaternion.Euler(info.rotation); + recorderObject.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(info.rotation)); } else { - var up = recorderObject.transform.position - go.transform.position; + var up = recorderObject.transform.position - planetGO.transform.position; recorderObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, up) * recorderObject.transform.rotation; } diff --git a/NewHorizons/Builder/Props/ProjectionBuilder.cs b/NewHorizons/Builder/Props/ProjectionBuilder.cs index 60b3f8c9..1c1e5c62 100644 --- a/NewHorizons/Builder/Props/ProjectionBuilder.cs +++ b/NewHorizons/Builder/Props/ProjectionBuilder.cs @@ -24,7 +24,7 @@ namespace NewHorizons.Builder.Props else Logger.LogError($"Invalid projection type {info.type}"); } - private static void MakeSlideReel(GameObject go, Sector sector, PropModule.ProjectionInfo info, IModBehaviour mod) + private static void MakeSlideReel(GameObject planetGO, Sector sector, PropModule.ProjectionInfo info, IModBehaviour mod) { if (_slideReelPrefab == null) { @@ -51,9 +51,9 @@ namespace NewHorizons.Builder.Props renderer.enabled = true; } - slideReelObj.transform.parent = sector?.transform ?? go.transform; - slideReelObj.transform.localPosition = (Vector3)(info.position ?? Vector3.zero); - slideReelObj.transform.localRotation = Quaternion.Euler((Vector3)(info.rotation ?? Vector3.zero)); + slideReelObj.transform.parent = sector?.transform ?? planetGO.transform; + slideReelObj.transform.position = planetGO.transform.TransformPoint((Vector3)(info.position ?? Vector3.zero)); + slideReelObj.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler((Vector3)(info.rotation ?? Vector3.zero))); // Now we replace the slides int slidesCount = info.slides.Length; @@ -102,7 +102,7 @@ namespace NewHorizons.Builder.Props slideReelObj.SetActive(true); } - public static void MakeAutoProjector(GameObject go, Sector sector, PropModule.ProjectionInfo info, IModBehaviour mod) + public static void MakeAutoProjector(GameObject planetGO, Sector sector, PropModule.ProjectionInfo info, IModBehaviour mod) { if (_autoPrefab == null) { @@ -123,9 +123,9 @@ namespace NewHorizons.Builder.Props var slideCollectionContainer = autoProjector.GetRequiredComponent(); - autoProjector.transform.parent = sector?.transform ?? go.transform; - autoProjector.transform.localPosition = (Vector3)(info.position ?? Vector3.zero); - autoProjector.transform.localRotation = Quaternion.Euler((Vector3)(info.rotation ?? Vector3.zero)); + autoProjector.transform.parent = sector?.transform ?? planetGO.transform; + autoProjector.transform.position = planetGO.transform.TransformPoint((Vector3)(info.position ?? Vector3.zero)); + autoProjector.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler((Vector3)(info.rotation ?? Vector3.zero))); // Now we replace the slides int slidesCount = info.slides.Length; diff --git a/NewHorizons/Builder/Props/RaftBuilder.cs b/NewHorizons/Builder/Props/RaftBuilder.cs index 20d041c1..9a3e30f7 100644 --- a/NewHorizons/Builder/Props/RaftBuilder.cs +++ b/NewHorizons/Builder/Props/RaftBuilder.cs @@ -34,8 +34,8 @@ namespace NewHorizons.Builder.Props GameObject raftObject = _prefab.InstantiateInactive(); raftObject.name = "Raft_Body"; raftObject.transform.parent = sector?.transform ?? planetGO.transform; - raftObject.transform.localPosition = info.position; - raftObject.transform.localRotation = Quaternion.identity; + raftObject.transform.position = planetGO.transform.TransformPoint(info.position); + raftObject.transform.rotation = planetGO.transform.TransformRotation(Quaternion.identity); sector.OnOccupantEnterSector += (sd) => OWAssetHandler.OnOccupantEnterSector(raftObject, sd, sector); OWAssetHandler.LoadObject(raftObject); @@ -63,15 +63,6 @@ namespace NewHorizons.Builder.Props sector.OnSectorOccupantsUpdated += lightSensor.OnSectorOccupantsUpdated; } - /* - // Debug - foreach (var point in fluidDetector._localAlignmentCheckPoints) - { - var sphere = AddDebugShape.AddSphere(fluidDetector.gameObject, 0.5f, Color.green); - sphere.transform.localPosition = point; - } - */ - raftObject.SetActive(true); } } diff --git a/NewHorizons/Builder/Props/SignalBuilder.cs b/NewHorizons/Builder/Props/SignalBuilder.cs index f67d2bc6..56a6fe28 100644 --- a/NewHorizons/Builder/Props/SignalBuilder.cs +++ b/NewHorizons/Builder/Props/SignalBuilder.cs @@ -142,7 +142,7 @@ namespace NewHorizons.Builder.Props var signalGO = new GameObject($"Signal_{info.Name}"); signalGO.SetActive(false); signalGO.transform.parent = sector?.transform ?? planetGO.transform; - signalGO.transform.localPosition = info.Position != null ? (Vector3)info.Position : Vector3.zero; + signalGO.transform.position = planetGO.transform.TransformPoint(info.Position != null ? (Vector3)info.Position : Vector3.zero); signalGO.layer = LayerMask.NameToLayer("AdvancedEffectVolume"); var source = signalGO.AddComponent(); @@ -211,7 +211,7 @@ namespace NewHorizons.Builder.Props var signalDetectionGO = new GameObject($"SignalDetectionTrigger_{info.Name}"); signalDetectionGO.SetActive(false); signalDetectionGO.transform.parent = sector?.transform ?? planetGO.transform; - signalDetectionGO.transform.localPosition = info.Position != null ? (Vector3)info.Position : Vector3.zero; + signalDetectionGO.transform.position = planetGO.transform.TransformPoint(info.Position != null ? (Vector3)info.Position : Vector3.zero); signalDetectionGO.layer = LayerMask.NameToLayer("AdvancedEffectVolume"); var sphereShape = signalDetectionGO.AddComponent(); diff --git a/NewHorizons/Builder/Props/TornadoBuilder.cs b/NewHorizons/Builder/Props/TornadoBuilder.cs index 619d07ff..b276a1ef 100644 --- a/NewHorizons/Builder/Props/TornadoBuilder.cs +++ b/NewHorizons/Builder/Props/TornadoBuilder.cs @@ -19,7 +19,7 @@ namespace NewHorizons.Builder.Props private static GameObject downPrefab; private static GameObject soundPrefab; - public static void Make(GameObject go, Sector sector, PropModule.TornadoInfo info, bool hasClouds) + public static void Make(GameObject planetGO, Sector sector, PropModule.TornadoInfo info, bool hasClouds) { if (upPrefab == null) { @@ -57,7 +57,7 @@ namespace NewHorizons.Builder.Props var tornadoGO = info.downwards ? downPrefab.InstantiateInactive() : upPrefab.InstantiateInactive(); tornadoGO.transform.parent = sector.transform; - tornadoGO.transform.localPosition = position; + tornadoGO.transform.position = planetGO.transform.TransformPoint(position); tornadoGO.transform.rotation = Quaternion.FromToRotation(Vector3.up, sector.transform.TransformDirection(position.normalized)); // Add the sound thing before changing the scale diff --git a/NewHorizons/Builder/Props/VolcanoBuilder.cs b/NewHorizons/Builder/Props/VolcanoBuilder.cs index e9ccf88c..a7e1c80a 100644 --- a/NewHorizons/Builder/Props/VolcanoBuilder.cs +++ b/NewHorizons/Builder/Props/VolcanoBuilder.cs @@ -10,13 +10,13 @@ namespace NewHorizons.Builder.Props private static Color defaultStoneTint = new Color(0.07450981f, 0.07450981f, 0.07450981f); private static Color defaultLavaTint = new Color(4.594794f, 0.3419145f, 0f, 1f); - public static void Make(GameObject go, Sector sector, PropModule.VolcanoInfo info) + public static void Make(GameObject planetGO, Sector sector, PropModule.VolcanoInfo info) { var prefab = GameObject.Find("VolcanicMoon_Body/Sector_VM/Effects_VM/VolcanoPivot (2)/MeteorLauncher"); var launcherGO = prefab.InstantiateInactive(); launcherGO.transform.parent = sector.transform; - launcherGO.transform.localPosition = info.position == null ? Vector3.zero : (Vector3)info.position; + launcherGO.transform.position = planetGO.transform.TransformPoint(info.position == null ? Vector3.zero : (Vector3)info.position); launcherGO.transform.rotation = Quaternion.FromToRotation(launcherGO.transform.TransformDirection(Vector3.up), ((Vector3)info.position).normalized).normalized; launcherGO.name = "MeteorLauncher"; diff --git a/NewHorizons/Builder/ShipLog/EntryLocationBuilder.cs b/NewHorizons/Builder/ShipLog/EntryLocationBuilder.cs index 33388e5b..8781c10b 100644 --- a/NewHorizons/Builder/ShipLog/EntryLocationBuilder.cs +++ b/NewHorizons/Builder/ShipLog/EntryLocationBuilder.cs @@ -20,7 +20,7 @@ namespace NewHorizons.Builder.ShipLog GameObject entryLocationGameObject = new GameObject("Entry Location (" + info.id + ")"); entryLocationGameObject.SetActive(false); entryLocationGameObject.transform.parent = sector?.transform ?? go.transform; - entryLocationGameObject.transform.localPosition = info.position ?? Vector3.zero; + entryLocationGameObject.transform.position = go.transform.TransformPoint(info.position ?? Vector3.zero); ShipLogEntryLocation newLocation = entryLocationGameObject.AddComponent(); newLocation._entryID = info.id; newLocation._isWithinCloakField = info.cloaked; diff --git a/NewHorizons/Builder/ShipLog/RevealBuilder.cs b/NewHorizons/Builder/ShipLog/RevealBuilder.cs index 93e579e4..69df7055 100644 --- a/NewHorizons/Builder/ShipLog/RevealBuilder.cs +++ b/NewHorizons/Builder/ShipLog/RevealBuilder.cs @@ -44,12 +44,12 @@ namespace NewHorizons.Builder.ShipLog return newShape; } - private static GameObject MakeGameObject(GameObject go, Sector sector, PropModule.RevealInfo info, IModBehaviour mod) + private static GameObject MakeGameObject(GameObject planetGO, Sector sector, PropModule.RevealInfo info, IModBehaviour mod) { GameObject revealTriggerVolume = new GameObject("Reveal Volume (" + info.revealOn + ")"); revealTriggerVolume.SetActive(false); - revealTriggerVolume.transform.parent = sector?.transform ?? go.transform; - revealTriggerVolume.transform.localPosition = info.position ?? Vector3.zero; + revealTriggerVolume.transform.parent = sector?.transform ?? planetGO.transform; + revealTriggerVolume.transform.position = planetGO.transform.TransformPoint(info.position ?? Vector3.zero); return revealTriggerVolume; } diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs index cdac126b..c459f84c 100644 --- a/NewHorizons/Handlers/PlanetCreationHandler.cs +++ b/NewHorizons/Handlers/PlanetCreationHandler.cs @@ -181,7 +181,7 @@ namespace NewHorizons.Handlers var rb = existingPlanet.GetComponent(); var sector = MakeSector.Make(existingPlanet, rb, GetSphereOfInfluence(body)); - sector.name = $"Sector-{existingPlanet.GetComponents().Count()}"; + sector.name = $"Sector-{existingPlanet.GetComponentsInChildren().Count()}"; SharedGenerateBody(body, existingPlanet, sector, rb); diff --git a/NewHorizons/Utility/NewHorizonExtensions.cs b/NewHorizons/Utility/NewHorizonExtensions.cs index c88d3e46..4264ab5d 100644 --- a/NewHorizons/Utility/NewHorizonExtensions.cs +++ b/NewHorizons/Utility/NewHorizonExtensions.cs @@ -117,5 +117,10 @@ namespace NewHorizons.Utility original.SetActive(true); return copy; } + + public static Quaternion TransformRotation(this Transform transform, Quaternion localRotation) + { + return transform.rotation * localRotation; + } } }