using NewHorizons.External.VariableSize; using OWML.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; using Logger = NewHorizons.Utility.Logger; namespace NewHorizons.Builder.Body { static class LavaBuilder { public static void Make(GameObject body, Sector sector, OWRigidbody rb, LavaModule module) { var moltenCore = new GameObject("MoltenCore"); moltenCore.SetActive(false); moltenCore.transform.parent = body.transform; moltenCore.transform.localPosition = Vector3.zero; moltenCore.transform.localScale = Vector3.one * module.Size; var lavaSphere = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform); lavaSphere.transform.localScale = Vector3.one; var sectorCullGroup = lavaSphere.GetComponent(); sectorCullGroup.SetSector(sector); var moltenCoreProxy = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/MoltenCore_Proxy"), moltenCore.transform); ; moltenCoreProxy.name = "MoltenCore_Proxy"; var proxyLavaSphere = moltenCoreProxy.transform.Find("LavaSphere (1)"); proxyLavaSphere.transform.localScale = Vector3.one; proxyLavaSphere.name = "LavaSphere_Proxy"; var sectorProxy = moltenCoreProxy.GetComponent(); sectorProxy.SetValue("_renderers", new List { proxyLavaSphere.GetComponent() }); sectorProxy.SetSector(sector); var destructionVolume = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/DestructionVolume"), moltenCore.transform); destructionVolume.GetComponent().radius = 1; destructionVolume.SetActive(true); 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; } moltenCore.SetActive(true); } } }