mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Fix lava scaling
This commit is contained in:
parent
078fc2ce3b
commit
c4b5d615a6
@ -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);
|
||||
|
||||
25
NewHorizons/Components/SizeControllers/LavaSizeController.cs
Normal file
25
NewHorizons/Components/SizeControllers/LavaSizeController.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user