Add visor effect volumes

This commit is contained in:
Noah Pilarski 2022-11-25 17:58:53 -05:00
parent dcf119fe48
commit 11d0980153
4 changed files with 105 additions and 0 deletions

View File

@ -0,0 +1,18 @@
using NewHorizons.External.Modules;
using UnityEngine;
namespace NewHorizons.Builder.Volumes
{
public static class VisorFrostEffectVolumeBuilder
{
public static VisorFrostEffectVolume Make(GameObject planetGO, Sector sector, VolumesModule.VisorEffectModule.FrostEffectVolumeInfo info)
{
var volume = PriorityVolumeBuilder.Make<VisorFrostEffectVolume>(planetGO, sector, info);
volume._frostRate = info.frostRate;
volume._maxFrost = info.maxFrost;
return volume;
}
}
}

View File

@ -0,0 +1,18 @@
using NewHorizons.External.Modules;
using UnityEngine;
namespace NewHorizons.Builder.Volumes
{
public static class VisorRainEffectVolumeBuilder
{
public static VisorRainEffectVolume Make(GameObject planetGO, Sector sector, VolumesModule.VisorEffectModule.RainEffectVolumeInfo info)
{
var volume = PriorityVolumeBuilder.Make<VisorRainEffectVolume>(planetGO, sector, info);
volume._dropletRate = info.dropletRate;
volume._streakRate = info.streakRate;
return volume;
}
}
}

View File

@ -123,6 +123,23 @@ namespace NewHorizons.Builder.Volumes
} }
} }
} }
if (config.Volumes.visorEffects != null)
{
if (config.Volumes.visorEffects.frostEffectVolumes != null)
{
foreach (var frostEffectVolume in config.Volumes.visorEffects.frostEffectVolumes)
{
VisorFrostEffectVolumeBuilder.Make(go, sector, frostEffectVolume);
}
}
if (config.Volumes.visorEffects.rainEffectVolumes != null)
{
foreach (var rainEffectVolume in config.Volumes.visorEffects.rainEffectVolumes)
{
VisorRainEffectVolumeBuilder.Make(go, sector, rainEffectVolume);
}
}
}
} }
} }
} }

View File

@ -81,6 +81,11 @@ namespace NewHorizons.External.Modules
/// </summary> /// </summary>
public PriorityVolumeInfo[] zeroGravityVolumes; public PriorityVolumeInfo[] zeroGravityVolumes;
/// <summary>
/// Add visor effect volumes to this planet.
/// </summary>
public VisorEffectModule visorEffects;
[JsonObject] [JsonObject]
public class VolumeInfo public class VolumeInfo
{ {
@ -426,6 +431,53 @@ namespace NewHorizons.External.Modules
/// </summary> /// </summary>
public VolumeInfo[] safetyVolumes; public VolumeInfo[] safetyVolumes;
} }
[JsonObject]
public class VisorEffectModule
{
/// <summary>
/// Add visor frost effect volumes to this planet. This is the ghost matter effect.
/// </summary>
public FrostEffectVolumeInfo[] frostEffectVolumes;
/// <summary>
/// Add visor rain effect volumes to this planet. You can see this on Giant's Deep.
/// </summary>
public RainEffectVolumeInfo[] rainEffectVolumes;
[JsonObject]
public class FrostEffectVolumeInfo : PriorityVolumeInfo
{
/// <summary>
/// The rate at which the frost effect will get stronger
/// </summary>
[DefaultValue(0.1f)]
public float frostRate = 0.1f;
/// <summary>
/// The maximum strength of frost this volume can give
/// </summary>
[Range(0f, 1f)]
[DefaultValue(0.5f)]
public float maxFrost = 0.5f;
}
[JsonObject]
public class RainEffectVolumeInfo : PriorityVolumeInfo
{
/// <summary>
/// The rate at which the rain droplet effect will happen
/// </summary>
[DefaultValue(0.1f)]
public float dropletRate = 10f;
/// <summary>
/// The rate at which the rain streak effect will happen
/// </summary>
[DefaultValue(1f)]
public float streakRate = 1f;
}
}
} }
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]