diff --git a/NewHorizons/Builder/Body/LavaBuilder.cs b/NewHorizons/Builder/Body/LavaBuilder.cs index 7eaab62f..742100ac 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,17 @@ 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.multiplier = multiplier; + sizeController.material = lavaSphere.GetComponent().material; + + var proxySizeController = moltenCoreProxy.AddComponent(); + proxySizeController.SetScaleCurve(module.curve); + proxySizeController.size = module.size; + proxySizeController.multiplier = multiplier; + proxySizeController.material = lavaSphere.GetComponent().material; } moltenCore.SetActive(true); diff --git a/NewHorizons/Components/SizeControllers/LavaSizeController.cs b/NewHorizons/Components/SizeControllers/LavaSizeController.cs new file mode 100644 index 00000000..d13f2f59 --- /dev/null +++ b/NewHorizons/Components/SizeControllers/LavaSizeController.cs @@ -0,0 +1,25 @@ +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 float multiplier; + + protected new void FixedUpdate() + { + base.FixedUpdate(); + + material.SetFloat(LavaBuilder.HeightScale, 150f * multiplier * CurrentScale); + material.SetFloat(LavaBuilder.EdgeFade, 15f * multiplier * CurrentScale); + material.SetFloat(LavaBuilder.TexHeight, 15f * multiplier * CurrentScale); + } + } +}