Implement proper scale height for lava spheres

This commit is contained in:
Nick J. Connors 2022-01-23 04:20:44 -05:00
parent 5971f86d49
commit 076161d157

View File

@ -14,6 +14,17 @@ namespace NewHorizons.Builder.Body
{ {
public static void Make(GameObject body, Sector sector, OWRigidbody rb, LavaModule module) public static void Make(GameObject body, Sector sector, OWRigidbody rb, LavaModule module)
{ {
var heightScale = module.Size;
if(module.Curve != null)
{
var modifier = 1f;
foreach(var pair in module.Curve)
{
if (pair.Value < modifier) modifier = pair.Value;
}
heightScale = Mathf.Max(0.1f, heightScale * modifier);
}
var moltenCore = new GameObject("MoltenCore"); var moltenCore = new GameObject("MoltenCore");
moltenCore.SetActive(false); moltenCore.SetActive(false);
moltenCore.transform.parent = body.transform; moltenCore.transform.parent = body.transform;
@ -23,7 +34,7 @@ namespace NewHorizons.Builder.Body
var lavaSphere = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform); var lavaSphere = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform);
lavaSphere.transform.localScale = Vector3.one; lavaSphere.transform.localScale = Vector3.one;
lavaSphere.transform.name = "LavaSphere"; lavaSphere.transform.name = "LavaSphere";
lavaSphere.GetComponent<MeshRenderer>().material.SetFloat("_HeightScale", module.Size); lavaSphere.GetComponent<MeshRenderer>().material.SetFloat("_HeightScale", heightScale);
if(module.Tint != null) lavaSphere.GetComponent<MeshRenderer>().material.SetColor("_EmissionColor", module.Tint.ToColor()); if(module.Tint != null) lavaSphere.GetComponent<MeshRenderer>().material.SetColor("_EmissionColor", module.Tint.ToColor());
var sectorCullGroup = lavaSphere.GetComponent<SectorCullGroup>(); var sectorCullGroup = lavaSphere.GetComponent<SectorCullGroup>();
@ -35,7 +46,7 @@ namespace NewHorizons.Builder.Body
var proxyLavaSphere = moltenCoreProxy.transform.Find("LavaSphere (1)"); var proxyLavaSphere = moltenCoreProxy.transform.Find("LavaSphere (1)");
proxyLavaSphere.transform.localScale = Vector3.one; proxyLavaSphere.transform.localScale = Vector3.one;
proxyLavaSphere.name = "LavaSphere_Proxy"; proxyLavaSphere.name = "LavaSphere_Proxy";
proxyLavaSphere.GetComponent<MeshRenderer>().material.SetFloat("_HeightScale", module.Size); proxyLavaSphere.GetComponent<MeshRenderer>().material.SetFloat("_HeightScale", heightScale);
if (module.Tint != null) proxyLavaSphere.GetComponent<MeshRenderer>().material.SetColor("_EmissionColor", module.Tint.ToColor()); if (module.Tint != null) proxyLavaSphere.GetComponent<MeshRenderer>().material.SetColor("_EmissionColor", module.Tint.ToColor());
var sectorProxy = moltenCoreProxy.GetComponent<SectorProxy>(); var sectorProxy = moltenCoreProxy.GetComponent<SectorProxy>();