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].SetColor("_FogColor", module.Tint.ToColor());
|
||||||
}
|
}
|
||||||
materials[i].renderQueue = 2990;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proxyGO.GetComponentInChildren<MeshRenderer>().materials = materials;
|
// Proxy
|
||||||
geoGO.GetComponentInChildren<MeshRenderer>().materials = materials;
|
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;
|
break;
|
||||||
case FunnelType.LAVA:
|
case FunnelType.LAVA:
|
||||||
|
|||||||
@ -10,6 +10,7 @@ using NewHorizons.Utility;
|
|||||||
using Logger = NewHorizons.Utility.Logger;
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
using NewHorizons.External.VariableSize;
|
using NewHorizons.External.VariableSize;
|
||||||
using NewHorizons.Components;
|
using NewHorizons.Components;
|
||||||
|
using NewHorizons.Components.SizeControllers;
|
||||||
|
|
||||||
namespace NewHorizons.Builder.Body
|
namespace NewHorizons.Builder.Body
|
||||||
{
|
{
|
||||||
|
|||||||
@ -10,6 +10,7 @@ using NewHorizons.Utility;
|
|||||||
using Logger = NewHorizons.Utility.Logger;
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
using NewHorizons.External.VariableSize;
|
using NewHorizons.External.VariableSize;
|
||||||
using NewHorizons.Components;
|
using NewHorizons.Components;
|
||||||
|
using NewHorizons.Components.SizeControllers;
|
||||||
|
|
||||||
namespace NewHorizons.Builder.Body
|
namespace NewHorizons.Builder.Body
|
||||||
{
|
{
|
||||||
|
|||||||
@ -4,6 +4,8 @@ using OWML.Utils;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using NewHorizons.Utility;
|
using NewHorizons.Utility;
|
||||||
using Logger = NewHorizons.Utility.Logger;
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
|
using NewHorizons.Components;
|
||||||
|
using NewHorizons.Components.SizeControllers;
|
||||||
|
|
||||||
namespace NewHorizons.Builder.Body
|
namespace NewHorizons.Builder.Body
|
||||||
{
|
{
|
||||||
@ -74,22 +76,22 @@ namespace NewHorizons.Builder.Body
|
|||||||
fluidVolume.SetValue("_radius", waterSize);
|
fluidVolume.SetValue("_radius", waterSize);
|
||||||
fluidVolume.SetValue("_layer", LayerMask.NameToLayer("BassicEffectVolume"));
|
fluidVolume.SetValue("_layer", LayerMask.NameToLayer("BassicEffectVolume"));
|
||||||
|
|
||||||
/*
|
|
||||||
var fogGO = GameObject.Instantiate(GameObject.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/OceanFog"), waterGO.transform);
|
var fogGO = GameObject.Instantiate(GameObject.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/OceanFog"), waterGO.transform);
|
||||||
fogGO.name = "OceanFog";
|
fogGO.name = "OceanFog";
|
||||||
fogGO.transform.localPosition = Vector3.zero;
|
fogGO.transform.localPosition = Vector3.zero;
|
||||||
fogGO.transform.localScale = Vector3.one;
|
fogGO.transform.localScale = Vector3.one;
|
||||||
*/
|
|
||||||
|
|
||||||
if (module.Curve != null)
|
if (module.Curve != null)
|
||||||
{
|
{
|
||||||
var levelController = waterGO.AddComponent<SandLevelController>();
|
var sizeController = waterGO.AddComponent<WaterSizeController>();
|
||||||
var curve = new AnimationCurve();
|
var curve = new AnimationCurve();
|
||||||
foreach (var pair in module.Curve)
|
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
|
// TODO: make LOD work
|
||||||
|
|||||||
@ -5,16 +5,17 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace NewHorizons.Components
|
namespace NewHorizons.Components.SizeControllers
|
||||||
{
|
{
|
||||||
public class SizeController : MonoBehaviour
|
public class SizeController : MonoBehaviour
|
||||||
{
|
{
|
||||||
public AnimationCurve scaleCurve;
|
public AnimationCurve scaleCurve;
|
||||||
public float CurrentScale { get; private set; }
|
public float CurrentScale { get; private set; }
|
||||||
|
public float size = 1f;
|
||||||
|
|
||||||
protected void FixedUpdate()
|
protected void FixedUpdate()
|
||||||
{
|
{
|
||||||
CurrentScale = scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed());
|
CurrentScale = scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed()) * size;
|
||||||
base.transform.localScale = new Vector3(CurrentScale, CurrentScale, CurrentScale);
|
base.transform.localScale = new Vector3(CurrentScale, CurrentScale, CurrentScale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,7 +6,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace NewHorizons.Components
|
namespace NewHorizons.Components.SizeControllers
|
||||||
{
|
{
|
||||||
public class StarAtmosphereSizeController : SizeController
|
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