diff --git a/NewHorizons/Builder/Body/FunnelBuilder.cs b/NewHorizons/Builder/Body/FunnelBuilder.cs index c65427d0..0e1b3733 100644 --- a/NewHorizons/Builder/Body/FunnelBuilder.cs +++ b/NewHorizons/Builder/Body/FunnelBuilder.cs @@ -126,7 +126,7 @@ namespace NewHorizons.Builder.Body funnelGO.transform.localPosition = Vector3.zero; - var funnelSizeController = funnelGO.AddComponent(); + var funnelSizeController = funnelGO.AddComponent(); if(module.Curve != null) { @@ -137,12 +137,13 @@ namespace NewHorizons.Builder.Body } funnelSizeController.scaleCurve = curve; } + funnelSizeController.anchor = go.transform; // Finish up next tick Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => PostMake(funnelGO, alignment, funnelSizeController, module)); } - private static void PostMake(GameObject funnelGO, AlignWithTargetBody alignment, FunnelSizeController funnelSizeController, FunnelModule module) + private static void PostMake(GameObject funnelGO, AlignWithTargetBody alignment, FunnelController funnelSizeController, FunnelModule module) { var target = AstroObjectLocator.GetAstroObject(module.Target)?.GetAttachedOWRigidbody(); if(target == null) diff --git a/NewHorizons/Builder/Body/StarBuilder.cs b/NewHorizons/Builder/Body/StarBuilder.cs index 757177ca..c18daaa5 100644 --- a/NewHorizons/Builder/Body/StarBuilder.cs +++ b/NewHorizons/Builder/Body/StarBuilder.cs @@ -84,7 +84,8 @@ namespace NewHorizons.Builder.Body } fog.transform.localScale = Vector3.one; fog.fogRadius = starModule.Size * OuterRadiusRatio; - if(starModule.Curve != null) + fog.lodFadeDistance = fog.fogRadius * (StarBuilder.OuterRadiusRatio - 1f); + if (starModule.Curve != null) { var controller = sunAtmosphere.AddComponent(); controller.scaleCurve = starModule.ToAnimationCurve(); diff --git a/NewHorizons/Components/FunnelSizeController.cs b/NewHorizons/Components/FunnelController.cs similarity index 73% rename from NewHorizons/Components/FunnelSizeController.cs rename to NewHorizons/Components/FunnelController.cs index 9a72372d..f813a928 100644 --- a/NewHorizons/Components/FunnelSizeController.cs +++ b/NewHorizons/Components/FunnelController.cs @@ -7,14 +7,19 @@ using UnityEngine; namespace NewHorizons.Components { - public class FunnelSizeController : MonoBehaviour + public class FunnelController : MonoBehaviour { public AnimationCurve scaleCurve; public Transform target; + public Transform anchor; private void FixedUpdate() { float num = scaleCurve == null ? 1f : scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed()); + + // Temporary solution that i will never get rid of + transform.position = anchor.position; + var dist = (transform.position - target.position).magnitude; transform.localScale = new Vector3(num, dist/500f, num); } diff --git a/NewHorizons/Components/StarAtmosphereSizeController.cs b/NewHorizons/Components/StarAtmosphereSizeController.cs index 0c8a0a07..c68b8f71 100644 --- a/NewHorizons/Components/StarAtmosphereSizeController.cs +++ b/NewHorizons/Components/StarAtmosphereSizeController.cs @@ -24,6 +24,7 @@ namespace NewHorizons.Components { base.FixedUpdate(); fog.fogRadius = initialSize * CurrentScale * StarBuilder.OuterRadiusRatio; + fog.lodFadeDistance = initialSize * CurrentScale * (StarBuilder.OuterRadiusRatio - 1f); foreach (var lod in atmosphereRenderers) { lod.material.SetFloat("_InnerRadius", initialSize * CurrentScale);