mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Move zero g volume to Volumes
This commit is contained in:
parent
d8bae23644
commit
00a1cd2a16
@ -11,15 +11,15 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
{
|
||||
var innerRadius = config.Base.surfaceSize;
|
||||
|
||||
GameObject volumesGO = new GameObject("Volumes");
|
||||
var volumesGO = new GameObject("Volumes");
|
||||
volumesGO.SetActive(false);
|
||||
volumesGO.transform.parent = planetGO.transform;
|
||||
|
||||
GameObject rulesetGO = new GameObject("Ruleset");
|
||||
var rulesetGO = new GameObject("Ruleset");
|
||||
rulesetGO.SetActive(false);
|
||||
rulesetGO.transform.parent = volumesGO.transform;
|
||||
|
||||
SphereShape SS = rulesetGO.AddComponent<SphereShape>();
|
||||
var SS = rulesetGO.AddComponent<SphereShape>();
|
||||
SS.SetCollisionMode(Shape.CollisionMode.Volume);
|
||||
SS.SetLayer(Shape.Layer.Sector);
|
||||
SS.layerMask = -1;
|
||||
@ -28,7 +28,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
|
||||
rulesetGO.AddComponent<OWTriggerVolume>();
|
||||
|
||||
PlanetoidRuleset PR = rulesetGO.AddComponent<PlanetoidRuleset>();
|
||||
var PR = rulesetGO.AddComponent<PlanetoidRuleset>();
|
||||
PR._altitudeFloor = innerRadius;
|
||||
PR._altitudeCeiling = sphereOfInfluence;
|
||||
PR._shuttleLandingRadius = sphereOfInfluence;
|
||||
@ -37,7 +37,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
|
||||
rulesetGO.AddComponent<AntiTravelMusicRuleset>();
|
||||
|
||||
EffectRuleset ER = rulesetGO.AddComponent<EffectRuleset>();
|
||||
var ER = rulesetGO.AddComponent<EffectRuleset>();
|
||||
ER._type = EffectRuleset.BubbleType.Underwater;
|
||||
var gdRuleset = SearchUtilities.Find("GiantsDeep_Body/Sector_GD/Volumes_GD/RulesetVolumes_GD").GetComponent<EffectRuleset>();
|
||||
|
||||
@ -50,32 +50,6 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
}
|
||||
ER._cloudMaterial = cloudMaterial;
|
||||
|
||||
if (config.Base.zeroGravityRadius != 0)
|
||||
{
|
||||
var zeroGObject = new GameObject("ZeroGVolume");
|
||||
zeroGObject.transform.parent = volumesGO.transform;
|
||||
zeroGObject.transform.localPosition = Vector3.zero;
|
||||
zeroGObject.transform.localScale = Vector3.one * config.Base.zeroGravityRadius;
|
||||
zeroGObject.layer = LayerMask.NameToLayer("BasicEffectVolume");
|
||||
|
||||
var sphereCollider = zeroGObject.AddComponent<SphereCollider>();
|
||||
sphereCollider.radius = 1;
|
||||
sphereCollider.isTrigger = true;
|
||||
|
||||
var owCollider = zeroGObject.AddComponent<OWCollider>();
|
||||
owCollider._parentBody = owrb;
|
||||
owCollider._collider = sphereCollider;
|
||||
|
||||
var triggerVolume = zeroGObject.AddComponent<OWTriggerVolume>();
|
||||
triggerVolume._owCollider = owCollider;
|
||||
|
||||
var zeroGVolume = zeroGObject.AddComponent<ZeroGVolume>();
|
||||
zeroGVolume._attachedBody = owrb;
|
||||
zeroGVolume._triggerVolume = triggerVolume;
|
||||
zeroGVolume._inheritable = true;
|
||||
zeroGVolume._priority = 1;
|
||||
}
|
||||
|
||||
volumesGO.transform.position = planetGO.transform.position;
|
||||
rulesetGO.SetActive(true);
|
||||
volumesGO.SetActive(true);
|
||||
|
||||
17
NewHorizons/Builder/Volumes/PriorityVolumeBuilder.cs
Normal file
17
NewHorizons/Builder/Volumes/PriorityVolumeBuilder.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using NewHorizons.External.Modules;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NewHorizons.Builder.Volumes
|
||||
{
|
||||
public static class PriorityVolumeBuilder
|
||||
{
|
||||
public static TVolume Make<TVolume>(GameObject planetGO, Sector sector, VolumesModule.PriorityVolumeInfo info) where TVolume : PriorityVolume
|
||||
{
|
||||
var volume = VolumeBuilder.Make<TVolume>(planetGO, sector, info);
|
||||
|
||||
volume.SetPriority(info.priority);
|
||||
|
||||
return volume;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -78,6 +78,13 @@ namespace NewHorizons.Builder.Volumes
|
||||
VolumeBuilder.Make<InsulatingVolume>(go, sector, insulatingVolume);
|
||||
}
|
||||
}
|
||||
if (config.Volumes.zeroGravityVolumes != null)
|
||||
{
|
||||
foreach (var zeroGravityVolume in config.Volumes.zeroGravityVolumes)
|
||||
{
|
||||
PriorityVolumeBuilder.Make<ZeroGVolume>(go, sector, zeroGravityVolume);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
13
NewHorizons/External/Configs/PlanetConfig.cs
vendored
13
NewHorizons/External/Configs/PlanetConfig.cs
vendored
@ -415,6 +415,19 @@ namespace NewHorizons.External.Configs
|
||||
if (ring.curve != null) ring.scaleCurve = ring.curve;
|
||||
}
|
||||
}
|
||||
|
||||
if (Base.zeroGravityRadius != 0f)
|
||||
{
|
||||
Volumes ??= new VolumesModule();
|
||||
Volumes.zeroGravityVolumes ??= new VolumesModule.PriorityVolumeInfo[0];
|
||||
|
||||
Volumes.zeroGravityVolumes = Volumes.zeroGravityVolumes.Append(new VolumesModule.PriorityVolumeInfo()
|
||||
{
|
||||
priority = 1,
|
||||
rename = "ZeroGVolume",
|
||||
radius = Base.zeroGravityRadius
|
||||
}).ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
NewHorizons/External/Modules/BaseModule.cs
vendored
8
NewHorizons/External/Modules/BaseModule.cs
vendored
@ -81,11 +81,6 @@ namespace NewHorizons.External.Modules
|
||||
/// </summary>
|
||||
public float surfaceSize;
|
||||
|
||||
/// <summary>
|
||||
/// Radius of the zero gravity volume. This will make it so no gravity from any planet will affect you. Useful for satellites.
|
||||
/// </summary>
|
||||
public float zeroGravityRadius;
|
||||
|
||||
/// <summary>
|
||||
/// Optional. You can force this planet's gravity to be felt over other gravity/zero-gravity sources by increasing this number.
|
||||
/// </summary>
|
||||
@ -120,6 +115,9 @@ namespace NewHorizons.External.Modules
|
||||
[Obsolete("SphereOfInfluence is deprecated, please use soiOverride instead")]
|
||||
public float sphereOfInfluence;
|
||||
|
||||
[Obsolete("zeroGravityRadius is deprecated, please use Volumes->ZeroGravityVolumes instead")]
|
||||
public float zeroGravityRadius;
|
||||
|
||||
#endregion Obsolete
|
||||
}
|
||||
}
|
||||
17
NewHorizons/External/Modules/VolumesModule.cs
vendored
17
NewHorizons/External/Modules/VolumesModule.cs
vendored
@ -55,6 +55,12 @@ namespace NewHorizons.External.Modules
|
||||
/// </summary>
|
||||
public VolumeInfo[] reverbVolumes;
|
||||
|
||||
/// <summary>
|
||||
/// Add zero-gravity volumes to this planet.
|
||||
/// Good for surrounding planets which are using a static position to stop the player being pulled away.
|
||||
/// </summary>
|
||||
public PriorityVolumeInfo[] zeroGravityVolumes;
|
||||
|
||||
[JsonObject]
|
||||
public class VolumeInfo
|
||||
{
|
||||
@ -79,6 +85,17 @@ namespace NewHorizons.External.Modules
|
||||
public string rename;
|
||||
}
|
||||
|
||||
[JsonObject]
|
||||
public class PriorityVolumeInfo : VolumeInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// The priority for this volume's effects to be applied.
|
||||
/// Ex, a player in a gravity volume with priority 0, and zero-gravity volume with priority 1, will feel zero gravity.
|
||||
/// </summary>
|
||||
[DefaultValue(1)]
|
||||
public int priority = 1;
|
||||
}
|
||||
|
||||
[JsonObject]
|
||||
public class RevealVolumeInfo : VolumeInfo
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user