mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Rename sphereOfInfluence to soiOverride
This commit is contained in:
parent
df66d4ef8d
commit
e833512bda
@ -18,7 +18,7 @@ namespace NewHorizons.Builder.General
|
||||
// To let you actually orbit things the way you would expect we cap this at 4x the diameter if its not a star or black hole (this is what giants deep has)
|
||||
if (config.Star == null && config.Singularity == null) gravityRadius = Mathf.Min(gravityRadius, 4 * config.Base.surfaceSize);
|
||||
else gravityRadius = Mathf.Min(gravityRadius, 15 * config.Base.surfaceSize);
|
||||
if (config.Base.sphereOfInfluence != 0f) gravityRadius = config.Base.sphereOfInfluence;
|
||||
if (config.Base.soiOverride != 0f) gravityRadius = config.Base.soiOverride;
|
||||
|
||||
var gravityGO = new GameObject("GravityWell");
|
||||
gravityGO.transform.parent = planetGO.transform;
|
||||
|
||||
@ -57,7 +57,7 @@ namespace NewHorizons.Builder.Orbital
|
||||
|
||||
// Other stuff to make the fake barycenter not interact with anything in any way
|
||||
fakeMassConfig.name = config.name + "_FakeBarycenterMass";
|
||||
fakeMassConfig.Base.sphereOfInfluence = 0;
|
||||
fakeMassConfig.Base.soiOverride = 0;
|
||||
fakeMassConfig.Base.hasMapMarker = false;
|
||||
fakeMassConfig.ReferenceFrame.hideInMap = true;
|
||||
|
||||
|
||||
494
NewHorizons/External/Configs/PlanetConfig.cs
vendored
494
NewHorizons/External/Configs/PlanetConfig.cs
vendored
@ -1,250 +1,252 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.External.Modules.VariableSize;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace NewHorizons.External.Configs
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes a body to generate
|
||||
/// </summary>
|
||||
[JsonObject(Title = "Celestial Body")]
|
||||
public class PlanetConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Generate asteroids around this body
|
||||
/// </summary>
|
||||
public AsteroidBeltModule AsteroidBelt;
|
||||
|
||||
/// <summary>
|
||||
/// Describes this Body's atmosphere
|
||||
/// </summary>
|
||||
public AtmosphereModule Atmosphere;
|
||||
|
||||
/// <summary>
|
||||
/// Base Properties of this Body
|
||||
/// </summary>
|
||||
public BaseModule Base;
|
||||
|
||||
/// <summary>
|
||||
/// Set to a higher number if you wish for this body to be built sooner
|
||||
/// </summary>
|
||||
[DefaultValue(-1)] public int buildPriority = -1;
|
||||
|
||||
/// <summary>
|
||||
/// Should this planet ever be shown on the title screen?
|
||||
/// </summary>
|
||||
public bool canShowOnTitle = true;
|
||||
|
||||
#region Obsolete
|
||||
|
||||
[Obsolete("ChildrenToDestroy is deprecated, please use RemoveChildren instead")]
|
||||
public string[] childrenToDestroy;
|
||||
|
||||
#endregion Obsolete
|
||||
|
||||
/// <summary>
|
||||
/// Add a cloaking field to this planet
|
||||
/// </summary>
|
||||
public CloakModule Cloak;
|
||||
|
||||
/// <summary>
|
||||
/// `true` if you want to delete this planet
|
||||
/// </summary>
|
||||
public bool destroy;
|
||||
|
||||
/// <summary>
|
||||
/// Make this body into a focal point (barycenter)
|
||||
/// </summary>
|
||||
public FocalPointModule FocalPoint;
|
||||
|
||||
/// <summary>
|
||||
/// Add funnel from this planet to another
|
||||
/// </summary>
|
||||
public FunnelModule Funnel;
|
||||
|
||||
/// <summary>
|
||||
/// Generate the surface of this planet using a heightmap
|
||||
/// </summary>
|
||||
public HeightMapModule HeightMap;
|
||||
|
||||
/// <summary>
|
||||
/// Does this config describe a quantum state of a custom planet defined in another file?
|
||||
/// </summary>
|
||||
public bool isQuantumState;
|
||||
|
||||
/// <summary>
|
||||
/// Add lava to this planet
|
||||
/// </summary>
|
||||
public LavaModule Lava;
|
||||
|
||||
/// <summary>
|
||||
/// Unique name of your planet
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string name;
|
||||
|
||||
/// <summary>
|
||||
/// Describes this Body's orbit (or lack there of)
|
||||
/// </summary>
|
||||
public OrbitModule Orbit;
|
||||
|
||||
/// <summary>
|
||||
/// Procedural Generation
|
||||
/// </summary>
|
||||
public ProcGenModule ProcGen;
|
||||
|
||||
/// <summary>
|
||||
/// Spawn various objects on this body
|
||||
/// </summary>
|
||||
public PropModule Props;
|
||||
|
||||
/// <summary>
|
||||
/// Reference frame properties of this body
|
||||
/// </summary>
|
||||
public ReferenceFrameModule ReferenceFrame;
|
||||
|
||||
/// <summary>
|
||||
/// A list of paths to child GameObjects to destroy on this planet
|
||||
/// </summary>
|
||||
public string[] removeChildren;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a ring around the planet
|
||||
/// </summary>
|
||||
public RingModule Ring;
|
||||
|
||||
/// <summary>
|
||||
/// Add sand to this planet
|
||||
/// </summary>
|
||||
public SandModule Sand;
|
||||
|
||||
/// <summary>
|
||||
/// Add ship log entries to this planet and describe how it looks in map mode
|
||||
/// </summary>
|
||||
public ShipLogModule ShipLog;
|
||||
|
||||
/// <summary>
|
||||
/// Add signals that can be heard via the signal-scope to this planet
|
||||
/// </summary>
|
||||
public SignalModule Signal;
|
||||
|
||||
/// <summary>
|
||||
/// Add a black or white hole to this planet
|
||||
/// </summary>
|
||||
public SingularityModule Singularity;
|
||||
|
||||
/// <summary>
|
||||
/// Spawn the player at this planet
|
||||
/// </summary>
|
||||
public SpawnModule Spawn;
|
||||
|
||||
/// <summary>
|
||||
/// Make this body a star
|
||||
/// </summary>
|
||||
public StarModule Star;
|
||||
|
||||
/// <summary>
|
||||
/// Unique star system containing your planet
|
||||
/// </summary>
|
||||
[DefaultValue("SolarSystem")] public string starSystem = "SolarSystem";
|
||||
|
||||
/// <summary>
|
||||
/// Version of New Horizons this config is using (Doesn't do anything)
|
||||
/// </summary>
|
||||
public string version;
|
||||
|
||||
/// <summary>
|
||||
/// Add water to this planet
|
||||
/// </summary>
|
||||
public WaterModule Water;
|
||||
|
||||
public PlanetConfig()
|
||||
{
|
||||
// Always have to have a base module
|
||||
if (Base == null) Base = new BaseModule();
|
||||
if (Orbit == null) Orbit = new OrbitModule();
|
||||
if (ShipLog == null) ShipLog = new ShipLogModule();
|
||||
if (ReferenceFrame == null) ReferenceFrame = new ReferenceFrameModule();
|
||||
}
|
||||
|
||||
public void MigrateAndValidate()
|
||||
{
|
||||
// Validate
|
||||
if (Base.centerOfSolarSystem) Orbit.isStatic = true;
|
||||
if (Atmosphere?.clouds?.lightningGradient != null) Atmosphere.clouds.hasLightning = true;
|
||||
|
||||
// Backwards compatability
|
||||
// Should be the only place that obsolete things are referenced
|
||||
#pragma warning disable 612, 618
|
||||
if (Base.waterSize != 0)
|
||||
Water = new WaterModule
|
||||
{
|
||||
size = Base.waterSize,
|
||||
tint = Base.waterTint
|
||||
};
|
||||
|
||||
if (Base.lavaSize != 0)
|
||||
Lava = new LavaModule
|
||||
{
|
||||
size = Base.lavaSize
|
||||
};
|
||||
|
||||
if (Base.blackHoleSize != 0)
|
||||
Singularity = new SingularityModule
|
||||
{
|
||||
type = SingularityModule.SingularityType.BlackHole,
|
||||
size = Base.blackHoleSize
|
||||
};
|
||||
|
||||
if (Base.isSatellite) Base.showMinimap = false;
|
||||
|
||||
if (!Base.hasReferenceFrame) ReferenceFrame.hideInMap = true;
|
||||
|
||||
if (childrenToDestroy != null) removeChildren = childrenToDestroy;
|
||||
|
||||
if (Base.cloakRadius != 0)
|
||||
Cloak = new CloakModule
|
||||
{
|
||||
radius = Base.cloakRadius
|
||||
};
|
||||
|
||||
if (Base.hasAmbientLight) Base.ambientLight = 0.5f;
|
||||
|
||||
if (Atmosphere != null)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Atmosphere.cloud))
|
||||
Atmosphere.clouds = new AtmosphereModule.CloudInfo
|
||||
{
|
||||
outerCloudRadius = Atmosphere.size,
|
||||
innerCloudRadius = Atmosphere.size * 0.9f,
|
||||
tint = Atmosphere.cloudTint,
|
||||
texturePath = Atmosphere.cloud,
|
||||
capPath = Atmosphere.cloudCap,
|
||||
rampPath = Atmosphere.cloudRamp,
|
||||
fluidType = Atmosphere.fluidType,
|
||||
useBasicCloudShader = Atmosphere.useBasicCloudShader,
|
||||
unlit = !Atmosphere.shadowsOnClouds
|
||||
};
|
||||
|
||||
// Validate
|
||||
if (Atmosphere.clouds?.lightningGradient != null) Atmosphere.clouds.hasLightning = true;
|
||||
|
||||
// Former is obsolete, latter is to validate
|
||||
if (Atmosphere.hasAtmosphere || Atmosphere.atmosphereTint != null)
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.External.Modules.VariableSize;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace NewHorizons.External.Configs
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes a body to generate
|
||||
/// </summary>
|
||||
[JsonObject(Title = "Celestial Body")]
|
||||
public class PlanetConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Generate asteroids around this body
|
||||
/// </summary>
|
||||
public AsteroidBeltModule AsteroidBelt;
|
||||
|
||||
/// <summary>
|
||||
/// Describes this Body's atmosphere
|
||||
/// </summary>
|
||||
public AtmosphereModule Atmosphere;
|
||||
|
||||
/// <summary>
|
||||
/// Base Properties of this Body
|
||||
/// </summary>
|
||||
public BaseModule Base;
|
||||
|
||||
/// <summary>
|
||||
/// Set to a higher number if you wish for this body to be built sooner
|
||||
/// </summary>
|
||||
[DefaultValue(-1)] public int buildPriority = -1;
|
||||
|
||||
/// <summary>
|
||||
/// Should this planet ever be shown on the title screen?
|
||||
/// </summary>
|
||||
public bool canShowOnTitle = true;
|
||||
|
||||
#region Obsolete
|
||||
|
||||
[Obsolete("ChildrenToDestroy is deprecated, please use RemoveChildren instead")]
|
||||
public string[] childrenToDestroy;
|
||||
|
||||
#endregion Obsolete
|
||||
|
||||
/// <summary>
|
||||
/// Add a cloaking field to this planet
|
||||
/// </summary>
|
||||
public CloakModule Cloak;
|
||||
|
||||
/// <summary>
|
||||
/// `true` if you want to delete this planet
|
||||
/// </summary>
|
||||
public bool destroy;
|
||||
|
||||
/// <summary>
|
||||
/// Make this body into a focal point (barycenter)
|
||||
/// </summary>
|
||||
public FocalPointModule FocalPoint;
|
||||
|
||||
/// <summary>
|
||||
/// Add funnel from this planet to another
|
||||
/// </summary>
|
||||
public FunnelModule Funnel;
|
||||
|
||||
/// <summary>
|
||||
/// Generate the surface of this planet using a heightmap
|
||||
/// </summary>
|
||||
public HeightMapModule HeightMap;
|
||||
|
||||
/// <summary>
|
||||
/// Does this config describe a quantum state of a custom planet defined in another file?
|
||||
/// </summary>
|
||||
public bool isQuantumState;
|
||||
|
||||
/// <summary>
|
||||
/// Add lava to this planet
|
||||
/// </summary>
|
||||
public LavaModule Lava;
|
||||
|
||||
/// <summary>
|
||||
/// Unique name of your planet
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string name;
|
||||
|
||||
/// <summary>
|
||||
/// Describes this Body's orbit (or lack there of)
|
||||
/// </summary>
|
||||
public OrbitModule Orbit;
|
||||
|
||||
/// <summary>
|
||||
/// Procedural Generation
|
||||
/// </summary>
|
||||
public ProcGenModule ProcGen;
|
||||
|
||||
/// <summary>
|
||||
/// Spawn various objects on this body
|
||||
/// </summary>
|
||||
public PropModule Props;
|
||||
|
||||
/// <summary>
|
||||
/// Reference frame properties of this body
|
||||
/// </summary>
|
||||
public ReferenceFrameModule ReferenceFrame;
|
||||
|
||||
/// <summary>
|
||||
/// A list of paths to child GameObjects to destroy on this planet
|
||||
/// </summary>
|
||||
public string[] removeChildren;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a ring around the planet
|
||||
/// </summary>
|
||||
public RingModule Ring;
|
||||
|
||||
/// <summary>
|
||||
/// Add sand to this planet
|
||||
/// </summary>
|
||||
public SandModule Sand;
|
||||
|
||||
/// <summary>
|
||||
/// Add ship log entries to this planet and describe how it looks in map mode
|
||||
/// </summary>
|
||||
public ShipLogModule ShipLog;
|
||||
|
||||
/// <summary>
|
||||
/// Add signals that can be heard via the signal-scope to this planet
|
||||
/// </summary>
|
||||
public SignalModule Signal;
|
||||
|
||||
/// <summary>
|
||||
/// Add a black or white hole to this planet
|
||||
/// </summary>
|
||||
public SingularityModule Singularity;
|
||||
|
||||
/// <summary>
|
||||
/// Spawn the player at this planet
|
||||
/// </summary>
|
||||
public SpawnModule Spawn;
|
||||
|
||||
/// <summary>
|
||||
/// Make this body a star
|
||||
/// </summary>
|
||||
public StarModule Star;
|
||||
|
||||
/// <summary>
|
||||
/// Unique star system containing your planet
|
||||
/// </summary>
|
||||
[DefaultValue("SolarSystem")] public string starSystem = "SolarSystem";
|
||||
|
||||
/// <summary>
|
||||
/// Version of New Horizons this config is using (Doesn't do anything)
|
||||
/// </summary>
|
||||
public string version;
|
||||
|
||||
/// <summary>
|
||||
/// Add water to this planet
|
||||
/// </summary>
|
||||
public WaterModule Water;
|
||||
|
||||
public PlanetConfig()
|
||||
{
|
||||
// Always have to have a base module
|
||||
if (Base == null) Base = new BaseModule();
|
||||
if (Orbit == null) Orbit = new OrbitModule();
|
||||
if (ShipLog == null) ShipLog = new ShipLogModule();
|
||||
if (ReferenceFrame == null) ReferenceFrame = new ReferenceFrameModule();
|
||||
}
|
||||
|
||||
public void MigrateAndValidate()
|
||||
{
|
||||
// Validate
|
||||
if (Base.centerOfSolarSystem) Orbit.isStatic = true;
|
||||
if (Atmosphere?.clouds?.lightningGradient != null) Atmosphere.clouds.hasLightning = true;
|
||||
|
||||
// Backwards compatability
|
||||
// Should be the only place that obsolete things are referenced
|
||||
#pragma warning disable 612, 618
|
||||
if (Base.waterSize != 0)
|
||||
Water = new WaterModule
|
||||
{
|
||||
size = Base.waterSize,
|
||||
tint = Base.waterTint
|
||||
};
|
||||
|
||||
if (Base.lavaSize != 0)
|
||||
Lava = new LavaModule
|
||||
{
|
||||
size = Base.lavaSize
|
||||
};
|
||||
|
||||
if (Base.blackHoleSize != 0)
|
||||
Singularity = new SingularityModule
|
||||
{
|
||||
type = SingularityModule.SingularityType.BlackHole,
|
||||
size = Base.blackHoleSize
|
||||
};
|
||||
|
||||
if (Base.isSatellite) Base.showMinimap = false;
|
||||
|
||||
if (!Base.hasReferenceFrame) ReferenceFrame.hideInMap = true;
|
||||
|
||||
if (childrenToDestroy != null) removeChildren = childrenToDestroy;
|
||||
|
||||
if (Base.cloakRadius != 0)
|
||||
Cloak = new CloakModule
|
||||
{
|
||||
radius = Base.cloakRadius
|
||||
};
|
||||
|
||||
if (Base.hasAmbientLight) Base.ambientLight = 0.5f;
|
||||
|
||||
if (Atmosphere != null)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Atmosphere.cloud))
|
||||
Atmosphere.clouds = new AtmosphereModule.CloudInfo
|
||||
{
|
||||
outerCloudRadius = Atmosphere.size,
|
||||
innerCloudRadius = Atmosphere.size * 0.9f,
|
||||
tint = Atmosphere.cloudTint,
|
||||
texturePath = Atmosphere.cloud,
|
||||
capPath = Atmosphere.cloudCap,
|
||||
rampPath = Atmosphere.cloudRamp,
|
||||
fluidType = Atmosphere.fluidType,
|
||||
useBasicCloudShader = Atmosphere.useBasicCloudShader,
|
||||
unlit = !Atmosphere.shadowsOnClouds
|
||||
};
|
||||
|
||||
// Validate
|
||||
if (Atmosphere.clouds?.lightningGradient != null) Atmosphere.clouds.hasLightning = true;
|
||||
|
||||
// Former is obsolete, latter is to validate
|
||||
if (Atmosphere.hasAtmosphere || Atmosphere.atmosphereTint != null)
|
||||
Atmosphere.useAtmosphereShader = true;
|
||||
|
||||
// useBasicCloudShader is obsolete
|
||||
if (Atmosphere.clouds != null && Atmosphere.clouds.useBasicCloudShader)
|
||||
Atmosphere.clouds.cloudsPrefab = CloudPrefabType.Basic;
|
||||
}
|
||||
|
||||
if (Props?.tornados != null)
|
||||
foreach (var tornado in Props.tornados)
|
||||
if (tornado.downwards)
|
||||
tornado.type = PropModule.TornadoInfo.TornadoType.Downwards;
|
||||
}
|
||||
}
|
||||
if (Atmosphere.clouds != null && Atmosphere.clouds.useBasicCloudShader)
|
||||
Atmosphere.clouds.cloudsPrefab = CloudPrefabType.Basic;
|
||||
}
|
||||
|
||||
if (Props?.tornados != null)
|
||||
foreach (var tornado in Props.tornados)
|
||||
if (tornado.downwards)
|
||||
tornado.type = PropModule.TornadoInfo.TornadoType.Downwards;
|
||||
|
||||
if (Base.sphereOfInfluence != 0f) Base.soiOverride = Base.sphereOfInfluence;
|
||||
}
|
||||
}
|
||||
}
|
||||
5
NewHorizons/External/Modules/BaseModule.cs
vendored
5
NewHorizons/External/Modules/BaseModule.cs
vendored
@ -69,7 +69,7 @@ namespace NewHorizons.External.Modules
|
||||
/// <summary>
|
||||
/// An override for the radius of the planet's gravitational sphere of influence. Optional
|
||||
/// </summary>
|
||||
public float sphereOfInfluence;
|
||||
public float soiOverride;
|
||||
|
||||
/// <summary>
|
||||
/// The acceleration due to gravity felt as the surfaceSize. Timber Hearth has 12 for reference
|
||||
@ -112,6 +112,9 @@ namespace NewHorizons.External.Modules
|
||||
[Obsolete("CloakRadius is deprecated, please use CloakModule instead")]
|
||||
public float cloakRadius;
|
||||
|
||||
[Obsolete("SphereOfInfluence is deprecated, please use soiOverride instead")]
|
||||
public float sphereOfInfluence;
|
||||
|
||||
#endregion Obsolete
|
||||
}
|
||||
}
|
||||
@ -365,7 +365,7 @@ namespace NewHorizons.Handlers
|
||||
{
|
||||
var atmoSize = body.Config.Atmosphere != null ? body.Config.Atmosphere.size : 0f;
|
||||
float sphereOfInfluence = Mathf.Max(Mathf.Max(atmoSize, 50), body.Config.Base.surfaceSize * 2f);
|
||||
var overrideSOI = body.Config.Base.sphereOfInfluence;
|
||||
var overrideSOI = body.Config.Base.soiOverride;
|
||||
if (overrideSOI != 0) sphereOfInfluence = overrideSOI;
|
||||
return sphereOfInfluence;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user