Make sun override builder better

This commit is contained in:
Nick 2022-06-28 20:46:07 -04:00
parent f01471775c
commit d154477dc6
2 changed files with 31 additions and 9 deletions

View File

@ -1,21 +1,43 @@
using NewHorizons.External.Modules;
using NewHorizons.External.Modules;
using NewHorizons.External.Modules.VariableSize;
using UnityEngine;
namespace NewHorizons.Builder.Atmosphere
{
public static class SunOverrideBuilder
{
public static void Make(GameObject planetGO, Sector sector, AtmosphereModule atmo, float surfaceSize)
public static void Make(GameObject planetGO, Sector sector, AtmosphereModule atmo, WaterModule water, float surfaceSize)
{
GameObject overrideGO = new GameObject("SunOverride");
overrideGO.SetActive(false);
overrideGO.transform.parent = sector?.transform ?? planetGO.transform;
GiantsDeepSunOverrideVolume GDSOV = overrideGO.AddComponent<GiantsDeepSunOverrideVolume>();
if (water != null)
{
var GDSOV = overrideGO.AddComponent<GiantsDeepSunOverrideVolume>();
GDSOV._sector = sector;
GDSOV._cloudsOuterRadius = atmo.size;
GDSOV._cloudsInnerRadius = atmo.size * 0.9f;
GDSOV._waterOuterRadius = surfaceSize;
GDSOV._cloudsOuterRadius = atmo.clouds.outerCloudRadius;
GDSOV._cloudsInnerRadius = atmo.clouds.innerCloudRadius;
GDSOV._waterOuterRadius = water.size;
GDSOV._waterInnerRadius = 0f;
}
else
{
var sunOverride = overrideGO.AddComponent<SunOverrideVolume>();
sunOverride._sector = sector;
sunOverride._overrideColor = true;
sunOverride._color = Color.black;
sunOverride._overrideIntensity = true;
sunOverride._intensity = 0f;
sunOverride._overrideShadowStrength = true;
sunOverride._shadowStrength = 1f;
sunOverride.shape = SimpleVolume.Shape.Sphere;
sunOverride.height = 2;
sunOverride.radius = atmo.clouds.innerCloudRadius;
}
overrideGO.transform.position = planetGO.transform.position;
overrideGO.SetActive(true);

View File

@ -447,7 +447,7 @@ namespace NewHorizons.Handlers
if (!string.IsNullOrEmpty(body.Config.Atmosphere?.clouds?.texturePath))
{
CloudsBuilder.Make(go, sector, body.Config.Atmosphere, body.Mod);
SunOverrideBuilder.Make(go, sector, body.Config.Atmosphere, surfaceSize);
SunOverrideBuilder.Make(go, sector, body.Config.Atmosphere, body.Config.Water, surfaceSize);
}
if (body.Config.Atmosphere.hasRain || body.Config.Atmosphere.hasSnow)