diff --git a/NewHorizons/Builder/Body/LavaBuilder.cs b/NewHorizons/Builder/Body/LavaBuilder.cs index 7eaab62f..dd21b635 100644 --- a/NewHorizons/Builder/Body/LavaBuilder.cs +++ b/NewHorizons/Builder/Body/LavaBuilder.cs @@ -4,14 +4,15 @@ using NewHorizons.Utility; using NewHorizons.External.Modules.VariableSize; using System.Linq; using UnityEngine.Assertions.Must; +using NewHorizons.Components.SizeControllers; namespace NewHorizons.Builder.Body { public static class LavaBuilder { - private static readonly int HeightScale = Shader.PropertyToID("_HeightScale"); - private static readonly int EdgeFade = Shader.PropertyToID("_EdgeFade"); - private static readonly int TexHeight = Shader.PropertyToID("_TexHeight"); + public static readonly int HeightScale = Shader.PropertyToID("_HeightScale"); + public static readonly int EdgeFade = Shader.PropertyToID("_EdgeFade"); + public static readonly int TexHeight = Shader.PropertyToID("_TexHeight"); private static readonly int EmissionColor = Shader.PropertyToID("_EmissionColor"); private static GameObject _lavaSphere; @@ -36,11 +37,6 @@ namespace NewHorizons.Builder.Body InitPrefabs(); var multiplier = module.size / 100f; - if (module.curve != null) - { - var modifier = module.curve.Max(pair => pair.value); - multiplier *= modifier; - } var moltenCore = new GameObject("MoltenCore"); moltenCore.SetActive(false); @@ -83,13 +79,11 @@ namespace NewHorizons.Builder.Body if (module.curve != null) { - var levelController = moltenCore.AddComponent(); - var curve = new AnimationCurve(); - foreach (var pair in module.curve) - { - curve.AddKey(new Keyframe(pair.time, module.size * pair.value)); - } - levelController._scaleCurve = curve; + var sizeController = moltenCore.AddComponent(); + sizeController.SetScaleCurve(module.curve); + sizeController.size = module.size; + sizeController.material = lavaSphere.GetComponent().material; + sizeController.proxyMaterial = proxyLavaSphere.GetComponent().material; } moltenCore.SetActive(true); diff --git a/NewHorizons/Builder/Body/SingularityBuilder.cs b/NewHorizons/Builder/Body/SingularityBuilder.cs index 38b944f3..0c4d12f1 100644 --- a/NewHorizons/Builder/Body/SingularityBuilder.cs +++ b/NewHorizons/Builder/Body/SingularityBuilder.cs @@ -300,7 +300,7 @@ namespace NewHorizons.Builder.Body sizeController = singularityRenderer.gameObject.AddComponent(); sizeController.SetScaleCurve(curve); sizeController.size = distort; - sizeController.innerScale = horizon; + sizeController.innerScale = horizon / distort; sizeController.material = singularityRenderer.material; } diff --git a/NewHorizons/Components/SizeControllers/LavaSizeController.cs b/NewHorizons/Components/SizeControllers/LavaSizeController.cs new file mode 100644 index 00000000..50cca879 --- /dev/null +++ b/NewHorizons/Components/SizeControllers/LavaSizeController.cs @@ -0,0 +1,29 @@ +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.SizeControllers +{ + public class LavaSizeController : SizeController + { + public Material material; + public Material proxyMaterial; + + protected new void FixedUpdate() + { + base.FixedUpdate(); + + material.SetFloat(LavaBuilder.HeightScale, 150f * CurrentScale / 100f); + material.SetFloat(LavaBuilder.EdgeFade, 15f * CurrentScale / 100f); + material.SetFloat(LavaBuilder.TexHeight, 15f * CurrentScale / 100f); + + proxyMaterial.SetFloat(LavaBuilder.HeightScale, 150f * CurrentScale / 100f); + proxyMaterial.SetFloat(LavaBuilder.EdgeFade, 15f * CurrentScale / 100f); + proxyMaterial.SetFloat(LavaBuilder.TexHeight, 15f * CurrentScale / 100f); + } + } +}