Put sectors on everything

This commit is contained in:
Nick 2022-05-10 21:42:30 -04:00
parent 420e212695
commit 18ebcb85cc
31 changed files with 329 additions and 307 deletions

View File

@ -1,4 +1,5 @@
using OWML.Utils;
using NewHorizons.External;
using OWML.Utils;
using UnityEngine;
using Logger = NewHorizons.Utility.Logger;
@ -6,16 +7,16 @@ namespace NewHorizons.Builder.Atmosphere
{
static class AirBuilder
{
public static void Make(GameObject body, float airScale, bool isRaining, bool hasOxygen)
public static void Make(GameObject body, Sector sector, AtmosphereModule.AirInfo info)
{
GameObject airGO = new GameObject("Air");
airGO.SetActive(false);
airGO.layer = 17;
airGO.transform.parent = body.transform;
airGO.transform.parent = sector?.transform ?? body.transform;
SphereCollider SC = airGO.AddComponent<SphereCollider>();
SC.isTrigger = true;
SC.radius = airScale;
SC.radius = info.Scale;
SimpleFluidVolume SFV = airGO.AddComponent<SimpleFluidVolume>();
SFV._layer = 5;
@ -25,12 +26,12 @@ namespace NewHorizons.Builder.Atmosphere
SFV._allowShipAutoroll = true;
SFV._disableOnStart = false;
if(hasOxygen)
if(info.HasOxygen)
{
airGO.AddComponent<OxygenVolume>();
}
if (isRaining)
if (info.IsRaining)
{
VisorRainEffectVolume VREF = airGO.AddComponent<VisorRainEffectVolume>();
VREF._rainDirection = VisorRainEffectVolume.RainDirection.Radial;

View File

@ -6,11 +6,11 @@ namespace NewHorizons.Builder.Atmosphere
{
static class AtmosphereBuilder
{
public static void Make(GameObject body, AtmosphereModule atmosphereModule, float surfaceSize)
public static void Make(GameObject body, Sector sector, AtmosphereModule atmosphereModule, float surfaceSize)
{
GameObject atmoGO = new GameObject("Atmosphere");
atmoGO.SetActive(false);
atmoGO.transform.parent = body.transform;
atmoGO.transform.parent = sector?.transform ?? body.transform;
if (atmosphereModule.HasAtmosphere)
{

View File

@ -34,7 +34,7 @@ namespace NewHorizons.Builder.Atmosphere
GameObject cloudsMainGO = new GameObject("Clouds");
cloudsMainGO.SetActive(false);
cloudsMainGO.transform.parent = body.transform;
cloudsMainGO.transform.parent = sector?.transform ?? body.transform;
GameObject cloudsTopGO = new GameObject("TopClouds");
cloudsTopGO.SetActive(false);

View File

@ -1,4 +1,5 @@
using NewHorizons.Utility;
using NewHorizons.External;
using NewHorizons.Utility;
using OWML.Utils;
using UnityEngine;
using Logger = NewHorizons.Utility.Logger;
@ -7,11 +8,11 @@ namespace NewHorizons.Builder.Atmosphere
{
static class EffectsBuilder
{
public static void Make(GameObject body, Sector sector, float surfaceSize, float atmoSize, bool hasRain, bool hasSnow)
public static void Make(GameObject body, Sector sector, AtmosphereModule.AirInfo info, float surfaceSize)
{
GameObject effectsGO = new GameObject("Effects");
effectsGO.SetActive(false);
effectsGO.transform.parent = body.transform;
effectsGO.transform.parent = sector?.transform ?? body.transform;
effectsGO.transform.localPosition = Vector3.zero;
SectorCullGroup SCG = effectsGO.AddComponent<SectorCullGroup>();
@ -21,7 +22,7 @@ namespace NewHorizons.Builder.Atmosphere
SCG._dynamicCullingBounds = false;
SCG._waitForStreaming = false;
if(hasRain)
if(info.IsRaining)
{
var rainGO = GameObject.Instantiate(SearchUtilities.CachedFind("/GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/Effects_GD_Rain"), effectsGO.transform);
rainGO.transform.localPosition = Vector3.zero;
@ -31,7 +32,7 @@ namespace NewHorizons.Builder.Atmosphere
{
new Keyframe(surfaceSize - 0.5f, 0),
new Keyframe(surfaceSize, 10f),
new Keyframe(atmoSize, 0f)
new Keyframe(info.Scale, 0f)
});
rainGO.GetComponent<PlanetaryVectionController>()._activeInSector = sector;
@ -39,7 +40,7 @@ namespace NewHorizons.Builder.Atmosphere
rainGO.SetActive(true);
}
if(hasSnow)
if(info.IsSnowing)
{
var snowGO = new GameObject("SnowEffects");
snowGO.transform.parent = effectsGO.transform;
@ -55,7 +56,7 @@ namespace NewHorizons.Builder.Atmosphere
{
new Keyframe(surfaceSize - 0.5f, 0),
new Keyframe(surfaceSize, 10f),
new Keyframe(atmoSize, 0f)
new Keyframe(info.Scale, 0f)
});
snowEmitter.GetComponent<PlanetaryVectionController>()._activeInSector = sector;

View File

@ -16,7 +16,7 @@ namespace NewHorizons.Builder.Atmosphere
{
GameObject fogGO = new GameObject("FogSphere");
fogGO.SetActive(false);
fogGO.transform.parent = body.transform;
fogGO.transform.parent = sector?.transform ?? body.transform;
fogGO.transform.localScale = Vector3.one;
// Going to copy from dark bramble

View File

@ -7,11 +7,11 @@ namespace NewHorizons.Builder.Atmosphere
{
static class SunOverrideBuilder
{
public static void Make(GameObject body, Sector sector, float surfaceSize, AtmosphereModule atmo)
public static void Make(GameObject body, Sector sector, AtmosphereModule atmo, float surfaceSize)
{
GameObject overrideGO = new GameObject("SunOverride");
overrideGO.SetActive(false);
overrideGO.transform.parent = body.transform;
overrideGO.transform.parent = sector?.transform ?? body.transform;
GiantsDeepSunOverrideVolume GDSOV = overrideGO.AddComponent<GiantsDeepSunOverrideVolume>();
GDSOV._sector = sector;

View File

@ -8,7 +8,7 @@ namespace NewHorizons.Builder.Atmosphere
{
static class VolumesBuilder
{
public static void Make(GameObject body, float innerRadius, float outerRadius, IPlanetConfig config)
public static void Make(GameObject body, float innerRadius, float outerRadius, bool useMiniMap)
{
GameObject volumesGO = new GameObject("Volumes");
volumesGO.SetActive(false);
@ -30,8 +30,8 @@ namespace NewHorizons.Builder.Atmosphere
PlanetoidRuleset PR = rulesetGO.AddComponent<PlanetoidRuleset>();
PR._altitudeFloor = innerRadius;
PR._altitudeCeiling = outerRadius;
PR._useMinimap = !config.Base.IsSatellite;
PR._useAltimeter = !config.Base.IsSatellite;
PR._useMinimap = useMiniMap;
PR._useAltimeter = useMiniMap;
EffectRuleset ER = rulesetGO.AddComponent<EffectRuleset>();
ER._type = EffectRuleset.BubbleType.Underwater;

View File

@ -12,9 +12,9 @@ namespace NewHorizons.Builder.Body
{
public static class CometTailBuilder
{
public static void Make(GameObject go, IPlanetConfig config, AstroObject primary)
public static void Make(GameObject go, Sector sector, IPlanetConfig config, AstroObject primary)
{
var cometTail = GameObject.Instantiate(GameObject.Find("Comet_Body/Sector_CO/Effects_CO/Effects_CO_TailMeshes"), go.transform);
var cometTail = GameObject.Instantiate(GameObject.Find("Comet_Body/Sector_CO/Effects_CO/Effects_CO_TailMeshes"), sector?.transform ?? go.transform);
cometTail.transform.localPosition = Vector3.zero;
cometTail.name = "CometTail";
cometTail.transform.localScale = Vector3.one * config.Base.SurfaceSize / 110;

View File

@ -5,10 +5,10 @@ namespace NewHorizons.Builder.Body
{
static class GeometryBuilder
{
public static void Make(GameObject body, float groundScale)
public static void Make(GameObject body, Sector sector, float groundScale)
{
GameObject groundGO = GameObject.CreatePrimitive(PrimitiveType.Sphere);
groundGO.transform.parent = body.transform;
groundGO.transform.parent = sector?.transform ?? body.transform;
groundGO.transform.localScale = new Vector3(groundScale, groundScale, groundScale);
groundGO.transform.localPosition = Vector3.zero;
groundGO.GetComponent<MeshFilter>().mesh = GameObject.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;

View File

@ -17,7 +17,7 @@ namespace NewHorizons.Builder.Body
{
public static Shader PlanetShader;
public static void Make(GameObject go, HeightMapModule module, IModBehaviour mod)
public static void Make(GameObject go, Sector sector, HeightMapModule module, IModBehaviour mod)
{
Texture2D heightMap, textureMap;
try
@ -35,7 +35,7 @@ namespace NewHorizons.Builder.Body
GameObject cubeSphere = new GameObject("CubeSphere");
cubeSphere.SetActive(false);
cubeSphere.transform.parent = go.transform;
cubeSphere.transform.parent = sector?.transform ?? go.transform;
cubeSphere.transform.rotation = Quaternion.Euler(90, 0, 0);
Mesh mesh = CubeSphere.Build(51, heightMap, module.MinHeight, module.MaxHeight, module.Stretch);

View File

@ -12,7 +12,7 @@ namespace NewHorizons.Builder.Body
{
static class LavaBuilder
{
public static void Make(GameObject body, Sector sector, OWRigidbody rb, LavaModule module)
public static void Make(GameObject go, Sector sector, OWRigidbody rb, LavaModule module)
{
var heightScale = module.Size;
if(module.Curve != null)
@ -27,7 +27,7 @@ namespace NewHorizons.Builder.Body
var moltenCore = new GameObject("MoltenCore");
moltenCore.SetActive(false);
moltenCore.transform.parent = body.transform;
moltenCore.transform.parent = sector?.transform ?? go.transform;
moltenCore.transform.localPosition = Vector3.zero;
moltenCore.transform.localScale = Vector3.one * module.Size;

View File

@ -11,10 +11,10 @@ namespace NewHorizons.Builder.Body
{
static class ProcGenBuilder
{
public static void Make(GameObject go, ProcGenModule module)
public static void Make(GameObject go, Sector sector, ProcGenModule module)
{
GameObject icosphere = new GameObject("Icosphere");
icosphere.transform.parent = go.transform;
icosphere.transform.parent = sector?.transform ?? go.transform;
icosphere.transform.rotation = Quaternion.Euler(90, 0, 0);
icosphere.transform.localPosition = Vector3.zero;

View File

@ -21,7 +21,7 @@ namespace NewHorizons.Builder.Body
public static Shader UnlitRingShader;
public static Shader UnlitRingShader1Pixel;
public static GameObject Make(GameObject body, RingModule ring, IModBehaviour mod)
public static GameObject Make(GameObject body, Sector sector, RingModule ring, IModBehaviour mod)
{
// Properly lit shader doesnt work yet
ring.Unlit = true;
@ -38,7 +38,7 @@ namespace NewHorizons.Builder.Body
}
var ringGO = new GameObject("Ring");
ringGO.transform.parent = body.transform;
ringGO.transform.parent = sector.transform ?? body.transform;
ringGO.transform.localPosition = Vector3.zero;
ringGO.transform.localRotation = Quaternion.Euler(0, 0, 0);
ringGO.transform.Rotate(ringGO.transform.TransformDirection(Vector3.up), ring.LongitudeOfAscendingNode);

View File

@ -56,7 +56,7 @@ namespace NewHorizons.Builder.Body
levelController._scaleCurve = curve;
}
sandGO.transform.parent = go.transform;
sandGO.transform.parent = sector?.transform ?? go.transform;
sandGO.transform.localPosition = Vector3.zero;
sandGO.transform.localScale = Vector3.one * module.Size * 2f;

View File

@ -23,14 +23,14 @@ namespace NewHorizons.Builder.Body
private static Shader blackHoleShader = null;
private static Shader whiteHoleShader = null;
public static void Make(GameObject body, Sector sector, OWRigidbody OWRB, IPlanetConfig config)
public static void Make(GameObject go, Sector sector, OWRigidbody OWRB, IPlanetConfig config)
{
// Backwards compatibility
if(config.Singularity == null)
{
if(config.Base.BlackHoleSize != 0)
{
MakeBlackHole(body, sector, Vector3.zero, config.Base.BlackHoleSize, true, null);
MakeBlackHole(go, sector, Vector3.zero, config.Base.BlackHoleSize, true, null);
}
return;
}
@ -53,10 +53,10 @@ namespace NewHorizons.Builder.Body
switch (polarity)
{
case Polarity.BlackHole:
newSingularity = MakeBlackHole(body, sector, localPosition, size, hasHazardVolume, config.Singularity.TargetStarSystem);
newSingularity = MakeBlackHole(go, sector, localPosition, size, hasHazardVolume, config.Singularity.TargetStarSystem);
break;
case Polarity.WhiteHole:
newSingularity = MakeWhiteHole(body, sector, OWRB, localPosition, size);
newSingularity = MakeWhiteHole(go, sector, OWRB, localPosition, size);
break;
}
@ -92,11 +92,11 @@ namespace NewHorizons.Builder.Body
}
}
public static GameObject MakeBlackHole(GameObject body, Sector sector, Vector3 localPosition, float size, bool hasDestructionVolume, string targetSolarSystem, bool makeAudio = true)
public static GameObject MakeBlackHole(GameObject go, Sector sector, Vector3 localPosition, float size, bool hasDestructionVolume, string targetSolarSystem, bool makeAudio = true)
{
var blackHole = new GameObject("BlackHole");
blackHole.SetActive(false);
blackHole.transform.parent = body.transform;
blackHole.transform.parent = sector?.transform ?? go.transform;
blackHole.transform.localPosition = localPosition;
var blackHoleRender = new GameObject("BlackHoleRender");
@ -167,7 +167,7 @@ namespace NewHorizons.Builder.Body
{
var whiteHole = new GameObject("WhiteHole");
whiteHole.SetActive(false);
whiteHole.transform.parent = body.transform;
whiteHole.transform.parent = sector?.transform ?? body.transform;
whiteHole.transform.localPosition = localPosition;
var whiteHoleRenderer = new GameObject("WhiteHoleRenderer");

View File

@ -17,14 +17,14 @@ namespace NewHorizons.Builder.Body
static class StarBuilder
{
public const float OuterRadiusRatio = 1.5f;
private static Texture2D _colorOverTime;
public static StarController Make(GameObject body, Sector sector, StarModule starModule)
public static StarController Make(GameObject go, Sector sector, StarModule starModule)
{
if (_colorOverTime == null) _colorOverTime = ImageUtilities.GetTexture(Main.Instance, "AssetBundle/StarColorOverTime.png");
var starGO = new GameObject("Star");
starGO.transform.parent = body.transform;
starGO.transform.parent = sector?.transform ?? go.transform;
var sunSurface = GameObject.Instantiate(GameObject.Find("Sun_Body/Sector_SUN/Geometry_SUN/Surface"), starGO.transform);
sunSurface.transform.localPosition = Vector3.zero;
@ -67,7 +67,7 @@ namespace NewHorizons.Builder.Body
if(starModule.HasAtmosphere)
{
var sunAtmosphere = GameObject.Instantiate(GameObject.Find("Sun_Body/Atmosphere_SUN"), body.transform);
var sunAtmosphere = GameObject.Instantiate(GameObject.Find("Sun_Body/Atmosphere_SUN"), go.transform);
sunAtmosphere.transform.localPosition = Vector3.zero;
sunAtmosphere.transform.localScale = Vector3.one;
sunAtmosphere.name = "Atmosphere_Star";
@ -157,7 +157,7 @@ namespace NewHorizons.Builder.Body
StarController starController = null;
if (starModule.SolarLuminosity != 0)
{
starController = body.AddComponent<StarController>();
starController = go.AddComponent<StarController>();
starController.Light = light;
starController.AmbientLight = ambientLight;
starController.FaceActiveCamera = faceActiveCamera;

View File

@ -11,14 +11,14 @@ namespace NewHorizons.Builder.Body
{
static class WaterBuilder
{
public static void Make(GameObject body, Sector sector, OWRigidbody rb, WaterModule module)
public static void Make(GameObject go, Sector sector, OWRigidbody rb, WaterModule module)
{
var waterSize = module.Size;
GameObject waterGO = new GameObject("Water");
waterGO.SetActive(false);
waterGO.layer = 15;
waterGO.transform.parent = body.transform;
waterGO.transform.parent = sector?.transform ?? go.transform;
waterGO.transform.localScale = new Vector3(waterSize, waterSize, waterSize);
var GDTSR = GameObject.Find("Ocean_GD").GetComponent<TessellatedSphereRenderer>();

View File

@ -8,9 +8,9 @@ namespace NewHorizons.Builder.General
{
static class AmbientLightBuilder
{
public static void Make(GameObject body, float scale)
public static void Make(GameObject body, Sector sector, float scale)
{
GameObject lightGO = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/AmbientLight_BH_Surface"), body.transform);
GameObject lightGO = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/AmbientLight_BH_Surface"), sector?.transform ?? body.transform);
lightGO.transform.localPosition = Vector3.zero;
lightGO.name = "Light";

View File

@ -15,7 +15,7 @@ namespace NewHorizons.Builder.Props
{
var original = GameObject.Find("TimberHearth_Body/Sector_TH/Interactables_TH/Geysers/Geyser_Village");
GameObject geyserGO = original.InstantiateInactive();
geyserGO.transform.parent = sector.transform;
geyserGO.transform.parent = sector?.transform ?? go.transform;
geyserGO.name = "Geyser";
var pos = ((Vector3)info.position);

View File

@ -33,7 +33,7 @@ namespace NewHorizons.Builder.Props
GameObject raftObject = _prefab.InstantiateInactive();
raftObject.name = "Raft_Body";
raftObject.transform.parent = sector.transform;
raftObject.transform.parent = sector?.transform ?? planetGO.transform;
raftObject.transform.localPosition = info.position;
raftObject.transform.localRotation = Quaternion.identity;

View File

@ -137,11 +137,11 @@ namespace NewHorizons.Builder.Props
}
}
public static void Make(GameObject body, Sector sector, SignalModule.SignalInfo info, IModBehaviour mod)
public static void Make(GameObject planetGO, Sector sector, SignalModule.SignalInfo info, IModBehaviour mod)
{
var signalGO = new GameObject($"Signal_{info.Name}");
signalGO.SetActive(false);
signalGO.transform.parent = body.transform;
signalGO.transform.parent = sector?.transform ?? planetGO.transform;
signalGO.transform.localPosition = info.Position != null ? (Vector3)info.Position : Vector3.zero;
signalGO.layer = LayerMask.NameToLayer("AdvancedEffectVolume");
@ -210,7 +210,7 @@ namespace NewHorizons.Builder.Props
var signalDetectionGO = new GameObject($"SignalDetectionTrigger_{info.Name}");
signalDetectionGO.SetActive(false);
signalDetectionGO.transform.parent = body.transform;
signalDetectionGO.transform.parent = sector?.transform ?? planetGO.transform;
signalDetectionGO.transform.localPosition = info.Position != null ? (Vector3)info.Position : Vector3.zero;
signalDetectionGO.layer = LayerMask.NameToLayer("AdvancedEffectVolume");

View File

@ -37,7 +37,8 @@ namespace NewHorizons.Builder.Props
launcherGO.SetActive(true);
// Have to null check else it breaks on reload configs
Main.Instance.ModHelper.Events.Unity.RunWhen(() => Main.IsSystemReady && meteorLauncher._meteorPool != null, () => {
Main.Instance.ModHelper.Events.Unity.RunWhen(() => Main.IsSystemReady && meteorLauncher._meteorPool != null, () =>
{
foreach (var meteor in meteorLauncher._meteorPool)
{
FixMeteor(meteor, info);

View File

@ -25,5 +25,13 @@ namespace NewHorizons.External
public bool HasOxygen { get; set; }
public bool HasAtmosphere { get; set; }
public MColor AtmosphereTint { get; set; }
public class AirInfo
{
public float Scale { get; set; }
public bool HasOxygen { get; set; }
public bool IsRaining { get; set; }
public bool IsSnowing { get; set; }
}
}
}

View File

@ -5,6 +5,7 @@ using NewHorizons.Builder.Orbital;
using NewHorizons.Builder.Props;
using NewHorizons.Components;
using NewHorizons.Components.Orbital;
using NewHorizons.External;
using NewHorizons.External.VariableSize;
using NewHorizons.Utility;
using System;
@ -119,9 +120,9 @@ namespace NewHorizons.Handlers
Logger.Log("Done loading bodies");
// I don't know what these do but they look really weird from a distance
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(PlanetDestroyer.RemoveAllProxies);
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(PlanetDestructionHandler.RemoveAllProxies);
if (Main.SystemDict[Main.Instance.CurrentStarSystem].Config.destroyStockPlanets) PlanetDestroyer.RemoveSolarSystem();
if (Main.SystemDict[Main.Instance.CurrentStarSystem].Config.destroyStockPlanets) PlanetDestructionHandler.RemoveSolarSystem();
}
public static bool LoadBody(NewHorizonsBody body, bool defaultPrimaryToSun = false)
@ -145,7 +146,7 @@ namespace NewHorizons.Handlers
if (body.Config.Destroy)
{
var ao = existingPlanet.GetComponent<AstroObject>();
if (ao != null) Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => PlanetDestroyer.RemoveBody(ao), 2);
if (ao != null) Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => PlanetDestructionHandler.RemoveBody(ao), 2);
else Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => existingPlanet.SetActive(false), 2);
}
else UpdateBody(body, existingPlanet);
@ -230,10 +231,8 @@ namespace NewHorizons.Handlers
var go = new GameObject(body.Config.Name.Replace(" ", "").Replace("'", "") + "_Body");
go.SetActive(false);
if (body.Config.Base.GroundSize != 0)
{
GeometryBuilder.Make(go, body.Config.Base.GroundSize);
}
var owRigidBody = RigidBodyBuilder.Make(go, body.Config);
var ao = AstroObjectBuilder.Make(go, primaryBody, body.Config);
var atmoSize = body.Config.Atmosphere != null ? body.Config.Atmosphere.Size : 0f;
float sphereOfInfluence = Mathf.Max(Mathf.Max(atmoSize, 50), body.Config.Base.SurfaceSize * 2f);
@ -243,8 +242,13 @@ namespace NewHorizons.Handlers
sphereOfInfluence = overrideSOI;
}
var owRigidBody = RigidBodyBuilder.Make(go, body.Config);
var ao = AstroObjectBuilder.Make(go, primaryBody, body.Config);
var sector = MakeSector.Make(go, owRigidBody, sphereOfInfluence * 2f);
ao._rootSector = sector;
if (body.Config.Base.GroundSize != 0)
{
GeometryBuilder.Make(go, sector, body.Config.Base.GroundSize);
}
if (body.Config.Base.SurfaceGravity != 0)
{
@ -263,22 +267,19 @@ namespace NewHorizons.Handlers
if (body.Config.Base.HasAmbientLight)
{
AmbientLightBuilder.Make(go, sphereOfInfluence);
AmbientLightBuilder.Make(go, sector, sphereOfInfluence);
}
var sector = MakeSector.Make(go, owRigidBody, sphereOfInfluence * 2f);
ao._rootSector = sector;
VolumesBuilder.Make(go, body.Config.Base.SurfaceSize, sphereOfInfluence, body.Config);
VolumesBuilder.Make(go, body.Config.Base.SurfaceSize, sphereOfInfluence, !body.Config.Base.IsSatellite);
if (body.Config.HeightMap != null)
{
HeightMapBuilder.Make(go, body.Config.HeightMap, body.Mod);
HeightMapBuilder.Make(go, sector, body.Config.HeightMap, body.Mod);
}
if (body.Config.ProcGen != null)
{
ProcGenBuilder.Make(go, body.Config.ProcGen);
ProcGenBuilder.Make(go, sector, body.Config.ProcGen);
}
if (body.Config.Star != null)
@ -330,13 +331,13 @@ namespace NewHorizons.Handlers
private static GameObject SharedGenerateBody(NewHorizonsBody body, GameObject go, Sector sector, OWRigidbody rb)
{
if (body.Config.Ring != null)
RingBuilder.Make(go, body.Config.Ring, body.Mod);
RingBuilder.Make(go, sector, body.Config.Ring, body.Mod);
if (body.Config.AsteroidBelt != null)
AsteroidBeltBuilder.Make(body.Config.Name, body.Config, body.Mod);
if (body.Config.Base.HasCometTail)
CometTailBuilder.Make(go, body.Config, go.GetComponent<AstroObject>().GetPrimaryBody());
CometTailBuilder.Make(go, sector, body.Config, go.GetComponent<AstroObject>().GetPrimaryBody());
// Backwards compatability
if (body.Config.Base.LavaSize != 0)
@ -366,21 +367,31 @@ namespace NewHorizons.Handlers
if (body.Config.Atmosphere != null)
{
AirBuilder.Make(go, body.Config.Atmosphere.Size, body.Config.Atmosphere.HasRain, body.Config.Atmosphere.HasOxygen);
var airInfo = new AtmosphereModule.AirInfo()
{
HasOxygen = body.Config.Atmosphere.HasOxygen,
IsRaining = body.Config.Atmosphere.HasRain,
IsSnowing = body.Config.Atmosphere.HasSnow,
Scale = body.Config.Atmosphere.Size
};
var surfaceSize = body.Config.Base.SurfaceSize;
AirBuilder.Make(go, sector, airInfo);
if (body.Config.Atmosphere.Cloud != null)
{
CloudsBuilder.Make(go, sector, body.Config.Atmosphere, body.Mod);
SunOverrideBuilder.Make(go, sector, body.Config.Base.SurfaceSize, body.Config.Atmosphere);
SunOverrideBuilder.Make(go, sector, body.Config.Atmosphere, surfaceSize);
}
if (body.Config.Atmosphere.HasRain || body.Config.Atmosphere.HasSnow)
EffectsBuilder.Make(go, sector, body.Config.Base.SurfaceSize, body.Config.Atmosphere.Size, body.Config.Atmosphere.HasRain, body.Config.Atmosphere.HasSnow);
EffectsBuilder.Make(go, sector, airInfo, surfaceSize);
if (body.Config.Atmosphere.FogSize != 0)
FogBuilder.Make(go, sector, body.Config.Atmosphere);
AtmosphereBuilder.Make(go, body.Config.Atmosphere, body.Config.Base.SurfaceSize);
AtmosphereBuilder.Make(go, sector, body.Config.Atmosphere, surfaceSize);
}
if (body.Config.Props != null)

View File

@ -9,9 +9,9 @@ using System.Threading.Tasks;
using UnityEngine;
using Logger = NewHorizons.Utility.Logger;
namespace NewHorizons.Builder.General
namespace NewHorizons.Handlers
{
static class PlanetDestroyer
static class PlanetDestructionHandler
{
private static readonly string[] _solarSystemBodies = new string[]
{

View File

@ -85,7 +85,7 @@ namespace NewHorizons.Handlers
heightMap.TextureMap = body.Config.Atmosphere.Cloud;
}
HeightMapBuilder.Make(titleScreenGO, heightMap, body.Mod);
HeightMapBuilder.Make(titleScreenGO, null, heightMap, body.Mod);
GameObject pivot = GameObject.Instantiate(GameObject.Find("Scene/Background/PlanetPivot"), GameObject.Find("Scene/Background").transform);
pivot.GetComponent<RotateTransform>()._degreesPerSecond = 10f;
@ -101,7 +101,7 @@ namespace NewHorizons.Handlers
newRing.InnerRadius = size * 1.2f;
newRing.OuterRadius = size * 2f;
newRing.Texture = body.Config.Ring.Texture;
var ring = RingBuilder.Make(titleScreenGO, newRing, body.Mod);
var ring = RingBuilder.Make(titleScreenGO, null, newRing, body.Mod);
titleScreenGO.transform.localScale = Vector3.one * 0.8f;
}