diff --git a/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs b/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs index 6ec91e61..2457c32c 100644 --- a/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/AtmosphereBuilder.cs @@ -23,7 +23,7 @@ namespace NewHorizons.Atmosphere meshRenderer.material.SetFloat("_InnerRadius", atmosphereModule.Cloud != null ? atmosphereModule.Size : surfaceSize); meshRenderer.material.SetFloat("_OuterRadius", atmosphereModule.Size * 1.2f); if(atmosphereModule.AtmosphereTint != null) - meshRenderer.material.SetColor("_SkyColor", atmosphereModule.AtmosphereTint.ToColor32()); + meshRenderer.material.SetColor("_SkyColor", atmosphereModule.AtmosphereTint.ToColor()); } atmo.SetActive(true); diff --git a/NewHorizons/Builder/Body/FunnelBuilder.cs b/NewHorizons/Builder/Body/FunnelBuilder.cs index b896d317..c65427d0 100644 --- a/NewHorizons/Builder/Body/FunnelBuilder.cs +++ b/NewHorizons/Builder/Body/FunnelBuilder.cs @@ -35,7 +35,7 @@ namespace NewHorizons.Builder.Body var owrb = funnelGO.AddComponent(); var alignment = funnelGO.AddComponent(); - funnelGO.AddComponent(); + //funnelGO.AddComponent(); var matchMotion = funnelGO.AddComponent(); matchMotion.SetBodyToMatch(rigidbody); diff --git a/NewHorizons/Builder/Body/RingBuilder.cs b/NewHorizons/Builder/Body/RingBuilder.cs index cae209b0..ef48e136 100644 --- a/NewHorizons/Builder/Body/RingBuilder.cs +++ b/NewHorizons/Builder/Body/RingBuilder.cs @@ -102,7 +102,7 @@ namespace NewHorizons.Builder.Body if (ring.Curve != null) { - var levelController = ringGO.AddComponent(); + var levelController = ringGO.AddComponent(); var curve = new AnimationCurve(); foreach (var pair in ring.Curve) { diff --git a/NewHorizons/Builder/Body/SandBuilder.cs b/NewHorizons/Builder/Body/SandBuilder.cs index 5e5874e2..18773752 100644 --- a/NewHorizons/Builder/Body/SandBuilder.cs +++ b/NewHorizons/Builder/Body/SandBuilder.cs @@ -58,7 +58,7 @@ namespace NewHorizons.Builder.Body sandGO.transform.parent = go.transform; sandGO.transform.localPosition = Vector3.zero; - sandGO.transform.localScale = Vector3.one * module.Size; + sandGO.transform.localScale = Vector3.one * module.Size * 2f; sandGO.SetActive(true); } diff --git a/NewHorizons/Builder/Body/StarBuilder.cs b/NewHorizons/Builder/Body/StarBuilder.cs index 0f134026..757177ca 100644 --- a/NewHorizons/Builder/Body/StarBuilder.cs +++ b/NewHorizons/Builder/Body/StarBuilder.cs @@ -9,11 +9,14 @@ using UnityEngine; using NewHorizons.Utility; using Logger = NewHorizons.Utility.Logger; using NewHorizons.External.VariableSize; +using NewHorizons.Components; namespace NewHorizons.Builder.Body { static class StarBuilder { + public const float OuterRadiusRatio = 1.5f; + private static Texture2D _colorOverTime; public static StarController Make(GameObject body, Sector sector, StarModule starModule) { @@ -70,17 +73,23 @@ namespace NewHorizons.Builder.Body PlanetaryFogController fog = sunAtmosphere.transform.Find("FogSphere").GetComponent(); if (starModule.Tint != null) { - fog.fogTint = starModule.Tint.ToColor32(); - sunAtmosphere.transform.Find("AtmoSphere").transform.localScale = Vector3.one * (starModule.Size + 1000) / starModule.Size; + fog.fogTint = starModule.Tint.ToColor(); + sunAtmosphere.transform.Find("AtmoSphere").transform.localScale = Vector3.one * (starModule.Size * OuterRadiusRatio); foreach (var lod in sunAtmosphere.transform.Find("AtmoSphere").GetComponentsInChildren()) { - lod.material.SetColor("_SkyColor", starModule.Tint.ToColor32()); + lod.material.SetColor("_SkyColor", starModule.Tint.ToColor()); lod.material.SetFloat("_InnerRadius", starModule.Size); - lod.material.SetFloat("_OuterRadius", starModule.Size * 3f / 2f); + lod.material.SetFloat("_OuterRadius", starModule.Size * OuterRadiusRatio); } } fog.transform.localScale = Vector3.one; - fog.fogRadius = starModule.Size * 1.2f; + fog.fogRadius = starModule.Size * OuterRadiusRatio; + if(starModule.Curve != null) + { + var controller = sunAtmosphere.AddComponent(); + controller.scaleCurve = starModule.ToAnimationCurve(); + controller.initialSize = starModule.Size; + } } var ambientLightGO = GameObject.Instantiate(GameObject.Find("Sun_Body/AmbientLight_SUN"), starGO.transform); @@ -131,7 +140,7 @@ namespace NewHorizons.Builder.Body surface.sharedMaterial.color = adjustedColour; Color.RGBToHSV(adjustedColour, out float H, out float S, out float V); - var darkenedColor = Color.HSVToRGB(H, S, V * 0.125f); + var darkenedColor = Color.HSVToRGB(H, S, V * 0.05f); surface.sharedMaterial.SetTexture("_ColorRamp", ImageUtilities.LerpGreyscaleImage(_colorOverTime, adjustedColour, darkenedColor)); } diff --git a/NewHorizons/Components/RingSizeController.cs b/NewHorizons/Components/RingSizeController.cs deleted file mode 100644 index c43698ea..00000000 --- a/NewHorizons/Components/RingSizeController.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; - -namespace NewHorizons.Components -{ - public class RingSizeController : MonoBehaviour - { - public AnimationCurve scaleCurve; - - private void FixedUpdate() - { - float num = scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed()); - base.transform.localScale = new Vector3(num, num, num); - } - } -} diff --git a/NewHorizons/Components/SizeController.cs b/NewHorizons/Components/SizeController.cs new file mode 100644 index 00000000..1aa23e27 --- /dev/null +++ b/NewHorizons/Components/SizeController.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; + +namespace NewHorizons.Components +{ + public class SizeController : MonoBehaviour + { + public AnimationCurve scaleCurve; + public float CurrentScale { get; private set; } + + protected void FixedUpdate() + { + CurrentScale = scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed()); + base.transform.localScale = new Vector3(CurrentScale, CurrentScale, CurrentScale); + } + } +} diff --git a/NewHorizons/Components/StarAtmosphereSizeController.cs b/NewHorizons/Components/StarAtmosphereSizeController.cs new file mode 100644 index 00000000..0c8a0a07 --- /dev/null +++ b/NewHorizons/Components/StarAtmosphereSizeController.cs @@ -0,0 +1,34 @@ +using NewHorizons.Builder.Body; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; + +namespace NewHorizons.Components +{ + public class StarAtmosphereSizeController : SizeController + { + private PlanetaryFogController fog; + public float initialSize; + private MeshRenderer[] atmosphereRenderers; + + void Awake() + { + fog = GetComponentInChildren(); + atmosphereRenderers = transform.Find("AtmoSphere").GetComponentsInChildren(); + } + + protected new void FixedUpdate() + { + base.FixedUpdate(); + fog.fogRadius = initialSize * CurrentScale * StarBuilder.OuterRadiusRatio; + foreach (var lod in atmosphereRenderers) + { + lod.material.SetFloat("_InnerRadius", initialSize * CurrentScale); + lod.material.SetFloat("_OuterRadius", initialSize * CurrentScale * StarBuilder.OuterRadiusRatio); + } + } + } +} diff --git a/NewHorizons/External/VariableSize/VariableSizeModule.cs b/NewHorizons/External/VariableSize/VariableSizeModule.cs index da7771f4..1901c7c8 100644 --- a/NewHorizons/External/VariableSize/VariableSizeModule.cs +++ b/NewHorizons/External/VariableSize/VariableSizeModule.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using UnityEngine; namespace NewHorizons.External.VariableSize { @@ -15,5 +16,15 @@ namespace NewHorizons.External.VariableSize public float Time { get; set; } public float Value { get; set; } } + + public AnimationCurve ToAnimationCurve(float size = 1f) + { + var curve = new AnimationCurve(); + foreach (var pair in this.Curve) + { + curve.AddKey(new Keyframe(pair.Time, size * pair.Value)); + } + return curve; + } } }