mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Rearrange size controllers, better water funnels
This commit is contained in:
parent
ff3ed51907
commit
63fcdb5ba5
@ -84,15 +84,37 @@ namespace NewHorizons.Builder.Body
|
||||
{
|
||||
materials[i].SetColor("_FogColor", module.Tint.ToColor());
|
||||
}
|
||||
materials[i].renderQueue = 2990;
|
||||
}
|
||||
|
||||
proxyGO.GetComponentInChildren<MeshRenderer>().materials = materials;
|
||||
geoGO.GetComponentInChildren<MeshRenderer>().materials = materials;
|
||||
// Proxy
|
||||
var proxyExterior = proxyGO.transform.Find("SandColumn_Exterior (1)");
|
||||
proxyExterior.name = "WaterColumn_Exterior";
|
||||
var proxyExteriorMR = proxyExterior.GetComponent<MeshRenderer>();
|
||||
proxyExteriorMR.material = materials[0];
|
||||
proxyExteriorMR.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
|
||||
|
||||
//TODO: Material inside
|
||||
/*
|
||||
var proxyInterior = GameObject.Instantiate(proxyExterior, proxyGO.transform);
|
||||
proxyInterior.name = "WaterColumn_Interior";
|
||||
var proxyInteriorMR = proxyInterior.GetComponent<MeshRenderer>();
|
||||
proxyInteriorMR.material = materials[1];
|
||||
proxyInteriorMR.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
|
||||
*/
|
||||
|
||||
//TODO: do the effect in water effect
|
||||
// Geometry
|
||||
var geoExterior = geoGO.transform.Find("Effects_HT_SandColumn/SandColumn_Exterior");
|
||||
geoExterior.name = "WaterColumn_Exterior";
|
||||
var geoExteriorMR = geoExterior.GetComponent<MeshRenderer>();
|
||||
geoExteriorMR.material = materials[0];
|
||||
geoExteriorMR.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
|
||||
|
||||
/*
|
||||
var geoInterior = GameObject.Instantiate(geoExterior, geoGO.transform);
|
||||
geoInterior.name = "WaterColumn_Interior";
|
||||
var geoInteriorMR = geoInterior.GetComponent<MeshRenderer>();
|
||||
geoInteriorMR.material = materials[1];
|
||||
geoInteriorMR.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
|
||||
*/
|
||||
|
||||
break;
|
||||
case FunnelType.LAVA:
|
||||
|
||||
@ -10,6 +10,7 @@ using NewHorizons.Utility;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
using NewHorizons.External.VariableSize;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components.SizeControllers;
|
||||
|
||||
namespace NewHorizons.Builder.Body
|
||||
{
|
||||
|
||||
@ -10,6 +10,7 @@ using NewHorizons.Utility;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
using NewHorizons.External.VariableSize;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components.SizeControllers;
|
||||
|
||||
namespace NewHorizons.Builder.Body
|
||||
{
|
||||
|
||||
@ -4,6 +4,8 @@ using OWML.Utils;
|
||||
using UnityEngine;
|
||||
using NewHorizons.Utility;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components.SizeControllers;
|
||||
|
||||
namespace NewHorizons.Builder.Body
|
||||
{
|
||||
@ -74,22 +76,22 @@ namespace NewHorizons.Builder.Body
|
||||
fluidVolume.SetValue("_radius", waterSize);
|
||||
fluidVolume.SetValue("_layer", LayerMask.NameToLayer("BassicEffectVolume"));
|
||||
|
||||
/*
|
||||
var fogGO = GameObject.Instantiate(GameObject.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/OceanFog"), waterGO.transform);
|
||||
fogGO.name = "OceanFog";
|
||||
fogGO.transform.localPosition = Vector3.zero;
|
||||
fogGO.transform.localScale = Vector3.one;
|
||||
*/
|
||||
|
||||
if (module.Curve != null)
|
||||
{
|
||||
var levelController = waterGO.AddComponent<SandLevelController>();
|
||||
var sizeController = waterGO.AddComponent<WaterSizeController>();
|
||||
var curve = new AnimationCurve();
|
||||
foreach (var pair in module.Curve)
|
||||
{
|
||||
curve.AddKey(new Keyframe(pair.Time, module.Size * pair.Value));
|
||||
curve.AddKey(new Keyframe(pair.Time, pair.Value));
|
||||
}
|
||||
levelController._scaleCurve = curve;
|
||||
sizeController.scaleCurve = curve;
|
||||
sizeController.oceanFogMaterial = fogGO.GetComponent<MeshRenderer>().material;
|
||||
sizeController.size = module.Size;
|
||||
}
|
||||
|
||||
// TODO: make LOD work
|
||||
|
||||
@ -5,16 +5,17 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NewHorizons.Components
|
||||
namespace NewHorizons.Components.SizeControllers
|
||||
{
|
||||
public class SizeController : MonoBehaviour
|
||||
{
|
||||
public AnimationCurve scaleCurve;
|
||||
public float CurrentScale { get; private set; }
|
||||
public float size = 1f;
|
||||
|
||||
protected void FixedUpdate()
|
||||
{
|
||||
CurrentScale = scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed());
|
||||
CurrentScale = scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed()) * size;
|
||||
base.transform.localScale = new Vector3(CurrentScale, CurrentScale, CurrentScale);
|
||||
}
|
||||
}
|
||||
@ -6,7 +6,7 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NewHorizons.Components
|
||||
namespace NewHorizons.Components.SizeControllers
|
||||
{
|
||||
public class StarAtmosphereSizeController : SizeController
|
||||
{
|
||||
@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NewHorizons.Components.SizeControllers
|
||||
{
|
||||
public class WaterSizeController : SizeController
|
||||
{
|
||||
public Material oceanFogMaterial;
|
||||
|
||||
//private const float oceanFogR1Ratio = 500f / 550f;
|
||||
private const float oceanFogR1Ratio = 1f;
|
||||
//private const float oceanFogR2Ratio = 210f / 550f;
|
||||
private const float oceanFogR2Ratio = 0f;
|
||||
|
||||
protected new void FixedUpdate()
|
||||
{
|
||||
base.FixedUpdate();
|
||||
if (oceanFogMaterial)
|
||||
{
|
||||
oceanFogMaterial.SetFloat("_Radius", oceanFogR1Ratio * CurrentScale);
|
||||
oceanFogMaterial.SetFloat("_Radius2", oceanFogR2Ratio * CurrentScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user