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;
|
var innerRadius = config.Base.surfaceSize;
|
||||||
|
|
||||||
GameObject volumesGO = new GameObject("Volumes");
|
var volumesGO = new GameObject("Volumes");
|
||||||
volumesGO.SetActive(false);
|
volumesGO.SetActive(false);
|
||||||
volumesGO.transform.parent = planetGO.transform;
|
volumesGO.transform.parent = planetGO.transform;
|
||||||
|
|
||||||
GameObject rulesetGO = new GameObject("Ruleset");
|
var rulesetGO = new GameObject("Ruleset");
|
||||||
rulesetGO.SetActive(false);
|
rulesetGO.SetActive(false);
|
||||||
rulesetGO.transform.parent = volumesGO.transform;
|
rulesetGO.transform.parent = volumesGO.transform;
|
||||||
|
|
||||||
SphereShape SS = rulesetGO.AddComponent<SphereShape>();
|
var SS = rulesetGO.AddComponent<SphereShape>();
|
||||||
SS.SetCollisionMode(Shape.CollisionMode.Volume);
|
SS.SetCollisionMode(Shape.CollisionMode.Volume);
|
||||||
SS.SetLayer(Shape.Layer.Sector);
|
SS.SetLayer(Shape.Layer.Sector);
|
||||||
SS.layerMask = -1;
|
SS.layerMask = -1;
|
||||||
@ -28,7 +28,7 @@ namespace NewHorizons.Builder.Atmosphere
|
|||||||
|
|
||||||
rulesetGO.AddComponent<OWTriggerVolume>();
|
rulesetGO.AddComponent<OWTriggerVolume>();
|
||||||
|
|
||||||
PlanetoidRuleset PR = rulesetGO.AddComponent<PlanetoidRuleset>();
|
var PR = rulesetGO.AddComponent<PlanetoidRuleset>();
|
||||||
PR._altitudeFloor = innerRadius;
|
PR._altitudeFloor = innerRadius;
|
||||||
PR._altitudeCeiling = sphereOfInfluence;
|
PR._altitudeCeiling = sphereOfInfluence;
|
||||||
PR._shuttleLandingRadius = sphereOfInfluence;
|
PR._shuttleLandingRadius = sphereOfInfluence;
|
||||||
@ -37,7 +37,7 @@ namespace NewHorizons.Builder.Atmosphere
|
|||||||
|
|
||||||
rulesetGO.AddComponent<AntiTravelMusicRuleset>();
|
rulesetGO.AddComponent<AntiTravelMusicRuleset>();
|
||||||
|
|
||||||
EffectRuleset ER = rulesetGO.AddComponent<EffectRuleset>();
|
var ER = rulesetGO.AddComponent<EffectRuleset>();
|
||||||
ER._type = EffectRuleset.BubbleType.Underwater;
|
ER._type = EffectRuleset.BubbleType.Underwater;
|
||||||
var gdRuleset = SearchUtilities.Find("GiantsDeep_Body/Sector_GD/Volumes_GD/RulesetVolumes_GD").GetComponent<EffectRuleset>();
|
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;
|
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;
|
volumesGO.transform.position = planetGO.transform.position;
|
||||||
rulesetGO.SetActive(true);
|
rulesetGO.SetActive(true);
|
||||||
volumesGO.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);
|
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 (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>
|
/// </summary>
|
||||||
public float surfaceSize;
|
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>
|
/// <summary>
|
||||||
/// Optional. You can force this planet's gravity to be felt over other gravity/zero-gravity sources by increasing this number.
|
/// Optional. You can force this planet's gravity to be felt over other gravity/zero-gravity sources by increasing this number.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -120,6 +115,9 @@ namespace NewHorizons.External.Modules
|
|||||||
[Obsolete("SphereOfInfluence is deprecated, please use soiOverride instead")]
|
[Obsolete("SphereOfInfluence is deprecated, please use soiOverride instead")]
|
||||||
public float sphereOfInfluence;
|
public float sphereOfInfluence;
|
||||||
|
|
||||||
|
[Obsolete("zeroGravityRadius is deprecated, please use Volumes->ZeroGravityVolumes instead")]
|
||||||
|
public float zeroGravityRadius;
|
||||||
|
|
||||||
#endregion Obsolete
|
#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>
|
/// </summary>
|
||||||
public VolumeInfo[] reverbVolumes;
|
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]
|
[JsonObject]
|
||||||
public class VolumeInfo
|
public class VolumeInfo
|
||||||
{
|
{
|
||||||
@ -79,6 +85,17 @@ namespace NewHorizons.External.Modules
|
|||||||
public string rename;
|
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]
|
[JsonObject]
|
||||||
public class RevealVolumeInfo : VolumeInfo
|
public class RevealVolumeInfo : VolumeInfo
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user