Fix lava scaling

This commit is contained in:
TerrificTrifid 2022-11-23 13:51:28 -06:00
parent 078fc2ce3b
commit c4b5d615a6
2 changed files with 40 additions and 15 deletions

View File

@ -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<SandLevelController>();
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<LavaSizeController>();
sizeController.SetScaleCurve(module.curve);
sizeController.size = module.size;
sizeController.multiplier = multiplier;
sizeController.material = lavaSphere.GetComponent<MeshRenderer>().material;
var proxySizeController = moltenCoreProxy.AddComponent<LavaSizeController>();
proxySizeController.SetScaleCurve(module.curve);
proxySizeController.size = module.size;
proxySizeController.multiplier = multiplier;
proxySizeController.material = lavaSphere.GetComponent<MeshRenderer>().material;
}
moltenCore.SetActive(true);

View File

@ -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);
}
}
}