mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Merge pull request #173 from MegaPiggy/cloak
Many fixes, additions, and tweaks.
This commit is contained in:
commit
7ea29fcf6b
@ -1,4 +1,5 @@
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.Atmosphere
|
||||
{
|
||||
@ -16,7 +17,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
|
||||
if (atmosphereModule.useAtmosphereShader)
|
||||
{
|
||||
GameObject atmo = GameObject.Instantiate(GameObject.Find("TimberHearth_Body/Atmosphere_TH/AtmoSphere"), atmoGO.transform, true);
|
||||
GameObject atmo = GameObject.Instantiate(SearchUtilities.Find("TimberHearth_Body/Atmosphere_TH/AtmoSphere"), atmoGO.transform, true);
|
||||
atmo.transform.position = planetGO.transform.TransformPoint(Vector3.zero);
|
||||
atmo.transform.localScale = Vector3.one * atmosphereModule.size * 1.2f;
|
||||
foreach (var meshRenderer in atmo.GetComponentsInChildren<MeshRenderer>())
|
||||
|
||||
@ -21,7 +21,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
|
||||
public static void Make(GameObject planetGO, Sector sector, AtmosphereModule atmo, IModBehaviour mod)
|
||||
{
|
||||
if (_lightningPrefab == null) _lightningPrefab = GameObject.Find("GiantsDeep_Body/Sector_GD/Clouds_GD/LightningGenerator_GD");
|
||||
if (_lightningPrefab == null) _lightningPrefab = SearchUtilities.Find("GiantsDeep_Body/Sector_GD/Clouds_GD/LightningGenerator_GD");
|
||||
if (_colorRamp == null) _colorRamp = ImageUtilities.GetTexture(Main.Instance, "AssetBundle/textures/Clouds_Bottom_ramp.png");
|
||||
|
||||
GameObject cloudsMainGO = new GameObject("Clouds");
|
||||
@ -36,8 +36,8 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
cloudsBottomGO.transform.localScale = Vector3.one * atmo.clouds.innerCloudRadius;
|
||||
|
||||
TessellatedSphereRenderer bottomTSR = cloudsBottomGO.AddComponent<TessellatedSphereRenderer>();
|
||||
bottomTSR.tessellationMeshGroup = GameObject.Find("CloudsBottomLayer_QM").GetComponent<TessellatedSphereRenderer>().tessellationMeshGroup;
|
||||
var bottomTSRMaterials = GameObject.Find("CloudsBottomLayer_QM").GetComponent<TessellatedSphereRenderer>().sharedMaterials;
|
||||
bottomTSR.tessellationMeshGroup = SearchUtilities.Find("CloudsBottomLayer_QM").GetComponent<TessellatedSphereRenderer>().tessellationMeshGroup;
|
||||
var bottomTSRMaterials = SearchUtilities.Find("CloudsBottomLayer_QM").GetComponent<TessellatedSphereRenderer>().sharedMaterials;
|
||||
|
||||
// If they set a colour apply it to all the materials else keep the default QM one
|
||||
if (atmo.clouds.tint != null)
|
||||
@ -165,12 +165,12 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
cloudsTopGO.transform.localScale = Vector3.one * atmo.clouds.outerCloudRadius;
|
||||
|
||||
MeshFilter topMF = cloudsTopGO.AddComponent<MeshFilter>();
|
||||
topMF.mesh = GameObject.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;
|
||||
topMF.mesh = SearchUtilities.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;
|
||||
|
||||
MeshRenderer topMR = cloudsTopGO.AddComponent<MeshRenderer>();
|
||||
|
||||
if (_sphereShader == null) _sphereShader = Main.NHAssetBundle.LoadAsset<Shader>("Assets/Shaders/SphereTextureWrapper.shader");
|
||||
if (_gdCloudMaterials == null) _gdCloudMaterials = GameObject.Find("CloudsTopLayer_GD").GetComponent<MeshRenderer>().sharedMaterials;
|
||||
if (_gdCloudMaterials == null) _gdCloudMaterials = SearchUtilities.Find("CloudsTopLayer_GD").GetComponent<MeshRenderer>().sharedMaterials;
|
||||
var tempArray = new Material[2];
|
||||
|
||||
if (atmo.clouds.useBasicCloudShader)
|
||||
|
||||
@ -17,9 +17,9 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
fogGO.transform.localScale = Vector3.one;
|
||||
|
||||
// Going to copy from dark bramble
|
||||
var dbFog = GameObject.Find("DarkBramble_Body/Atmosphere_DB/FogLOD");
|
||||
var dbPlanetaryFogController = GameObject.Find("DarkBramble_Body/Atmosphere_DB/FogSphere_DB").GetComponent<PlanetaryFogController>();
|
||||
var brambleLODFog = GameObject.Find("DarkBramble_Body/Sector_DB/Proxy_DB/LOD_DB_VolumeticFog");
|
||||
var dbFog = SearchUtilities.Find("DarkBramble_Body/Atmosphere_DB/FogLOD");
|
||||
var dbPlanetaryFogController = SearchUtilities.Find("DarkBramble_Body/Atmosphere_DB/FogSphere_DB").GetComponent<PlanetaryFogController>();
|
||||
var brambleLODFog = SearchUtilities.Find("DarkBramble_Body/Sector_DB/Proxy_DB/LOD_DB_VolumeticFog");
|
||||
|
||||
MeshFilter MF = fogGO.AddComponent<MeshFilter>();
|
||||
MF.mesh = dbFog.GetComponent<MeshFilter>().mesh;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.Atmosphere
|
||||
{
|
||||
@ -6,7 +7,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
{
|
||||
private static readonly int FogColor = Shader.PropertyToID("_FogColor");
|
||||
|
||||
public static void Make(GameObject planetGO, PlanetConfig config, float sphereOfInfluence)
|
||||
public static void Make(GameObject planetGO, OWRigidbody owrb, PlanetConfig config, float sphereOfInfluence)
|
||||
{
|
||||
var innerRadius = config.Base.surfaceSize;
|
||||
|
||||
@ -37,7 +38,7 @@ namespace NewHorizons.Builder.Atmosphere
|
||||
|
||||
EffectRuleset ER = rulesetGO.AddComponent<EffectRuleset>();
|
||||
ER._type = EffectRuleset.BubbleType.Underwater;
|
||||
var gdRuleset = GameObject.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>();
|
||||
|
||||
ER._material = gdRuleset._material;
|
||||
|
||||
@ -48,6 +49,32 @@ 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);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Handlers;
|
||||
using NewHorizons.Utility;
|
||||
@ -34,7 +34,6 @@ namespace NewHorizons.Builder.Body
|
||||
hasMapMarker = false,
|
||||
surfaceGravity = 1,
|
||||
surfaceSize = size,
|
||||
hasReferenceFrame = false,
|
||||
gravityFallOff = GravityFallOff.InverseSquared
|
||||
};
|
||||
|
||||
@ -49,6 +48,11 @@ namespace NewHorizons.Builder.Body
|
||||
showOrbitLine = false
|
||||
};
|
||||
|
||||
config.ReferenceFrame = new ReferenceFrameModule()
|
||||
{
|
||||
hideInMap = true
|
||||
};
|
||||
|
||||
config.ProcGen = belt.procGen;
|
||||
if (config.ProcGen == null)
|
||||
{
|
||||
|
||||
@ -1,12 +1,30 @@
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using OWML.Common;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.Body
|
||||
{
|
||||
public static class CloakBuilder
|
||||
{
|
||||
public static void Make(GameObject planetGO, Sector sector, OWRigidbody OWRB, float radius)
|
||||
public static void Make(GameObject planetGO, Sector sector, OWRigidbody OWRB, CloakModule module, bool keepReferenceFrame, IModBehaviour mod)
|
||||
{
|
||||
var radius = module.radius;
|
||||
|
||||
AudioClip clip = null;
|
||||
if (module.audioClip != null) clip = SearchUtilities.FindResourceOfTypeAndName<AudioClip>(module.audioClip);
|
||||
else if (module.audioFilePath != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
clip = AudioUtilities.LoadAudio(mod.ModHelper.Manifest.ModFolderPath + "/" + module.audioFilePath);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Utility.Logger.LogError($"Couldn't load audio file {module.audioFilePath} : {e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
var cloak = SearchUtilities.Find("RingWorld_Body/CloakingField_IP");
|
||||
|
||||
var newCloak = GameObject.Instantiate(cloak, sector?.transform ?? planetGO.transform);
|
||||
@ -29,11 +47,23 @@ namespace NewHorizons.Builder.Body
|
||||
var cloakSectorController = newCloak.AddComponent<CloakSectorController>();
|
||||
cloakSectorController.Init(newCloak.GetComponent<CloakFieldController>(), planetGO);
|
||||
|
||||
var cloakAudioSource = newCloak.GetComponentInChildren<OWAudioSource>();
|
||||
cloakAudioSource._audioSource = cloakAudioSource.GetComponent<AudioSource>();
|
||||
cloakAudioSource._audioLibraryClip = AudioType.None;
|
||||
cloakAudioSource._clipArrayIndex = 0;
|
||||
cloakAudioSource._clipArrayLength = 0;
|
||||
cloakAudioSource._clipSelectionOnPlay = OWAudioSource.ClipSelectionOnPlay.MANUAL;
|
||||
cloakAudioSource.clip = clip;
|
||||
|
||||
newCloak.SetActive(true);
|
||||
cloakFieldController.enabled = true;
|
||||
|
||||
cloakSectorController.EnableCloak();
|
||||
|
||||
// To cloak from the start
|
||||
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(cloakSectorController.OnPlayerExit);
|
||||
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(clip != null ? cloakSectorController.TurnOnMusic : cloakSectorController.TurnOffMusic);
|
||||
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(keepReferenceFrame ? cloakSectorController.EnableReferenceFrameVolume : cloakSectorController.DisableReferenceFrameVolume);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.Body
|
||||
{
|
||||
@ -6,7 +7,7 @@ namespace NewHorizons.Builder.Body
|
||||
{
|
||||
public static void Make(GameObject planetGO, Sector sector, PlanetConfig config)
|
||||
{
|
||||
var cometTail = GameObject.Instantiate(GameObject.Find("Comet_Body/Sector_CO/Effects_CO/Effects_CO_TailMeshes"), sector?.transform ?? planetGO.transform);
|
||||
var cometTail = GameObject.Instantiate(SearchUtilities.Find("Comet_Body/Sector_CO/Effects_CO/Effects_CO_TailMeshes"), sector?.transform ?? planetGO.transform);
|
||||
cometTail.transform.position = planetGO.transform.position;
|
||||
cometTail.name = "CometTail";
|
||||
cometTail.transform.localScale = Vector3.one * config.Base.surfaceSize / 110;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using System.Runtime.Serialization;
|
||||
using System.Runtime.Serialization;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
@ -43,13 +43,13 @@ namespace NewHorizons.Builder.Body
|
||||
scaleRoot.transform.localPosition = Vector3.zero;
|
||||
scaleRoot.transform.localScale = new Vector3(1, 1, 1);
|
||||
|
||||
var proxyGO = GameObject.Instantiate(GameObject.Find("SandFunnel_Body/ScaleRoot/Proxy_SandFunnel"), scaleRoot.transform);
|
||||
var proxyGO = GameObject.Instantiate(SearchUtilities.Find("SandFunnel_Body/ScaleRoot/Proxy_SandFunnel"), scaleRoot.transform);
|
||||
proxyGO.name = "Proxy_Funnel";
|
||||
|
||||
var geoGO = GameObject.Instantiate(GameObject.Find("SandFunnel_Body/ScaleRoot/Geo_SandFunnel"), scaleRoot.transform);
|
||||
var geoGO = GameObject.Instantiate(SearchUtilities.Find("SandFunnel_Body/ScaleRoot/Geo_SandFunnel"), scaleRoot.transform);
|
||||
geoGO.name = "Geo_Funnel";
|
||||
|
||||
var volumesGO = GameObject.Instantiate(GameObject.Find("SandFunnel_Body/ScaleRoot/Volumes_SandFunnel"), scaleRoot.transform);
|
||||
var volumesGO = GameObject.Instantiate(SearchUtilities.Find("SandFunnel_Body/ScaleRoot/Volumes_SandFunnel"), scaleRoot.transform);
|
||||
volumesGO.name = "Volumes_Funnel";
|
||||
var sfv = volumesGO.GetComponentInChildren<SimpleFluidVolume>();
|
||||
var fluidVolume = sfv.gameObject;
|
||||
@ -63,7 +63,7 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
GameObject.Destroy(geoGO.transform.Find("Effects_HT_SandColumn/SandColumn_Interior").gameObject);
|
||||
|
||||
var waterMaterials = GameObject.Find("TimberHearth_Body/Sector_TH/Geometry_TH/Terrain_TH_Water_v3/Village_Upper_Water/Village_Upper_Water_Geo").GetComponent<MeshRenderer>().materials;
|
||||
var waterMaterials = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Geometry_TH/Terrain_TH_Water_v3/Village_Upper_Water/Village_Upper_Water_Geo").GetComponent<MeshRenderer>().materials;
|
||||
var materials = new Material[waterMaterials.Length];
|
||||
for (int i = 0; i < waterMaterials.Length; i++)
|
||||
{
|
||||
@ -111,7 +111,7 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
GameObject.Destroy(geoGO.transform.Find("Effects_HT_SandColumn/SandColumn_Interior").gameObject);
|
||||
|
||||
var lavaMaterial = new Material(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere").GetComponent<MeshRenderer>().material);
|
||||
var lavaMaterial = new Material(SearchUtilities.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere").GetComponent<MeshRenderer>().material);
|
||||
lavaMaterial.mainTextureOffset = new Vector2(0.1f, 0.2f);
|
||||
lavaMaterial.mainTextureScale = new Vector2(1f, 3f);
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine;
|
||||
using NewHorizons.Utility;
|
||||
namespace NewHorizons.Builder.Body
|
||||
{
|
||||
public static class GeometryBuilder
|
||||
@ -9,7 +10,7 @@ namespace NewHorizons.Builder.Body
|
||||
groundGO.transform.parent = sector?.transform ?? planetGO.transform;
|
||||
groundGO.transform.localScale = new Vector3(groundScale, groundScale, groundScale);
|
||||
groundGO.transform.position = planetGO.transform.position;
|
||||
groundGO.GetComponent<MeshFilter>().mesh = GameObject.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;
|
||||
groundGO.GetComponent<MeshFilter>().mesh = SearchUtilities.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;
|
||||
groundGO.GetComponent<SphereCollider>().radius = 1f;
|
||||
groundGO.SetActive(true);
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Builder.Body.Geometry;
|
||||
using NewHorizons.Builder.Body.Geometry;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using OWML.Common;
|
||||
@ -57,7 +57,8 @@ namespace NewHorizons.Builder.Body
|
||||
var cubeSphereMC = cubeSphere.AddComponent<MeshCollider>();
|
||||
cubeSphereMC.sharedMesh = mesh;
|
||||
|
||||
if (planetGO.GetComponent<ProxyShadowCasterSuperGroup>() != null) cubeSphere.AddComponent<ProxyShadowCaster>();
|
||||
var superGroup = planetGO.GetComponent<ProxyShadowCasterSuperGroup>();
|
||||
if (superGroup != null) cubeSphere.AddComponent<ProxyShadowCaster>()._superGroup = superGroup;
|
||||
|
||||
// Fix rotation in the end
|
||||
cubeSphere.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(90, 0, 0));
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using NewHorizons.Utility;
|
||||
using NewHorizons.External.Modules.VariableSize;
|
||||
|
||||
namespace NewHorizons.Builder.Body
|
||||
@ -28,7 +29,7 @@ namespace NewHorizons.Builder.Body
|
||||
moltenCore.transform.position = planetGO.transform.position;
|
||||
moltenCore.transform.localScale = Vector3.one * module.size;
|
||||
|
||||
var lavaSphere = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform);
|
||||
var lavaSphere = GameObject.Instantiate(SearchUtilities.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform);
|
||||
lavaSphere.transform.localScale = Vector3.one;
|
||||
lavaSphere.transform.name = "LavaSphere";
|
||||
lavaSphere.GetComponent<MeshRenderer>().material.SetFloat(HeightScale, heightScale);
|
||||
@ -37,7 +38,7 @@ namespace NewHorizons.Builder.Body
|
||||
var sectorCullGroup = lavaSphere.GetComponent<SectorCullGroup>();
|
||||
sectorCullGroup.SetSector(sector);
|
||||
|
||||
var moltenCoreProxy = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/MoltenCore_Proxy"), moltenCore.transform); ;
|
||||
var moltenCoreProxy = GameObject.Instantiate(SearchUtilities.Find("VolcanicMoon_Body/MoltenCore_VM/MoltenCore_Proxy"), moltenCore.transform); ;
|
||||
moltenCoreProxy.name = "MoltenCore_Proxy";
|
||||
|
||||
var proxyLavaSphere = moltenCoreProxy.transform.Find("LavaSphere (1)");
|
||||
@ -50,7 +51,7 @@ namespace NewHorizons.Builder.Body
|
||||
sectorProxy._renderers = new List<Renderer> { proxyLavaSphere.GetComponent<MeshRenderer>() };
|
||||
sectorProxy.SetSector(sector);
|
||||
|
||||
var destructionVolume = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/DestructionVolume"), moltenCore.transform);
|
||||
var destructionVolume = GameObject.Instantiate(SearchUtilities.Find("VolcanicMoon_Body/MoltenCore_VM/DestructionVolume"), moltenCore.transform);
|
||||
destructionVolume.GetComponent<SphereCollider>().radius = 1;
|
||||
destructionVolume.SetActive(true);
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Builder.Body.Geometry;
|
||||
using NewHorizons.Builder.Body.Geometry;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
@ -16,14 +16,14 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
|
||||
GameObject icosphere = new GameObject("Icosphere");
|
||||
icosphere.SetActive(false);
|
||||
icosphere.transform.parent = sector?.transform ?? planetGO.transform;
|
||||
icosphere.transform.rotation = Quaternion.Euler(90, 0, 0);
|
||||
icosphere.transform.position = planetGO.transform.position;
|
||||
|
||||
Mesh mesh = Icosphere.Build(4, module.scale, module.scale * 1.2f);
|
||||
|
||||
icosphere.AddComponent<MeshFilter>();
|
||||
icosphere.GetComponent<MeshFilter>().mesh = mesh;
|
||||
icosphere.AddComponent<MeshFilter>().mesh = mesh;
|
||||
|
||||
var cubeSphereMR = icosphere.AddComponent<MeshRenderer>();
|
||||
cubeSphereMR.material = new Material(Shader.Find("Standard"));
|
||||
@ -33,7 +33,10 @@ namespace NewHorizons.Builder.Body
|
||||
cubeSphereMC.sharedMesh = mesh;
|
||||
icosphere.transform.rotation = planetGO.transform.TransformRotation(Quaternion.Euler(90, 0, 0));
|
||||
|
||||
icosphere.AddComponent<ProxyShadowCaster>();
|
||||
var superGroup = planetGO.GetComponent<ProxyShadowCasterSuperGroup>();
|
||||
if (superGroup != null) icosphere.AddComponent<ProxyShadowCaster>()._superGroup = superGroup;
|
||||
|
||||
icosphere.SetActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Builder.Atmosphere;
|
||||
using NewHorizons.Builder.Atmosphere;
|
||||
using NewHorizons.Builder.Props;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components.SizeControllers;
|
||||
@ -176,7 +176,7 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
private static void MakeBlackHole(GameObject rootObject, float size)
|
||||
{
|
||||
if (_blackHolePrefab == null) _blackHolePrefab = GameObject.Find(_blackHolePath);
|
||||
if (_blackHolePrefab == null) _blackHolePrefab = SearchUtilities.Find(_blackHolePath);
|
||||
|
||||
var blackHoleShader = _blackHolePrefab.GetComponent<MeshRenderer>().material.shader;
|
||||
if (blackHoleShader == null) blackHoleShader = _blackHolePrefab.GetComponent<MeshRenderer>().sharedMaterial.shader;
|
||||
@ -201,7 +201,7 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
private static void MakeWhiteHole(GameObject rootObject, float size)
|
||||
{
|
||||
if (_whiteHolePrefab == null) _whiteHolePrefab = GameObject.Find(_whiteHolePath);
|
||||
if (_whiteHolePrefab == null) _whiteHolePrefab = SearchUtilities.Find(_whiteHolePath);
|
||||
|
||||
var whiteHoleShader = _whiteHolePrefab.GetComponent<MeshRenderer>().material.shader;
|
||||
if (whiteHoleShader == null) whiteHoleShader = _whiteHolePrefab.GetComponent<MeshRenderer>().sharedMaterial.shader;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Utility;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
using NewHorizons.External.Modules.VariableSize;
|
||||
|
||||
@ -11,7 +11,7 @@ namespace NewHorizons.Builder.Body
|
||||
var sandGO = new GameObject("Sand");
|
||||
sandGO.SetActive(false);
|
||||
|
||||
var sandSphere = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/SandSphere"), sandGO.transform);
|
||||
var sandSphere = GameObject.Instantiate(SearchUtilities.Find("TowerTwin_Body/SandSphere_Draining/SandSphere"), sandGO.transform);
|
||||
if (module.tint != null)
|
||||
{
|
||||
var oldMR = sandSphere.GetComponent<TessellatedSphereRenderer>();
|
||||
@ -28,13 +28,13 @@ namespace NewHorizons.Builder.Body
|
||||
sandMR.sharedMaterials[1].color = module.tint.ToColor();
|
||||
}
|
||||
|
||||
var collider = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/Collider"), sandGO.transform);
|
||||
var collider = GameObject.Instantiate(SearchUtilities.Find("TowerTwin_Body/SandSphere_Draining/Collider"), sandGO.transform);
|
||||
var sphereCollider = collider.GetComponent<SphereCollider>();
|
||||
collider.SetActive(true);
|
||||
|
||||
var occlusionSphere = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/OcclusionSphere"), sandGO.transform);
|
||||
var occlusionSphere = GameObject.Instantiate(SearchUtilities.Find("TowerTwin_Body/SandSphere_Draining/OcclusionSphere"), sandGO.transform);
|
||||
|
||||
var proxyShadowCasterGO = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/ProxyShadowCaster"), sandGO.transform);
|
||||
var proxyShadowCasterGO = GameObject.Instantiate(SearchUtilities.Find("TowerTwin_Body/SandSphere_Draining/ProxyShadowCaster"), sandGO.transform);
|
||||
var proxyShadowCaster = proxyShadowCasterGO.GetComponent<ProxyShadowCaster>();
|
||||
proxyShadowCaster.SetSuperGroup(sandGO.GetComponent<ProxyShadowCasterSuperGroup>());
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.Utility;
|
||||
using System;
|
||||
@ -88,10 +88,10 @@ namespace NewHorizons.Builder.Body
|
||||
blackHoleRender.transform.localScale = Vector3.one * size;
|
||||
|
||||
var meshFilter = blackHoleRender.AddComponent<MeshFilter>();
|
||||
meshFilter.mesh = GameObject.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleRenderer").GetComponent<MeshFilter>().mesh;
|
||||
meshFilter.mesh = SearchUtilities.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleRenderer").GetComponent<MeshFilter>().mesh;
|
||||
|
||||
var meshRenderer = blackHoleRender.AddComponent<MeshRenderer>();
|
||||
if (blackHoleShader == null) blackHoleShader = GameObject.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleRenderer").GetComponent<MeshRenderer>().sharedMaterial.shader;
|
||||
if (blackHoleShader == null) blackHoleShader = SearchUtilities.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleRenderer").GetComponent<MeshRenderer>().sharedMaterial.shader;
|
||||
meshRenderer.material = new Material(blackHoleShader);
|
||||
meshRenderer.material.SetFloat(Radius, size * 0.4f);
|
||||
meshRenderer.material.SetFloat(MaxDistortRadius, size * 0.95f);
|
||||
@ -100,7 +100,7 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
if (makeAudio)
|
||||
{
|
||||
var blackHoleAmbience = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleAmbience"), blackHole.transform);
|
||||
var blackHoleAmbience = GameObject.Instantiate(SearchUtilities.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleAmbience"), blackHole.transform);
|
||||
blackHoleAmbience.name = "BlackHoleAmbience";
|
||||
blackHoleAmbience.GetComponent<SectorAudioGroup>().SetSector(sector);
|
||||
|
||||
@ -109,7 +109,7 @@ namespace NewHorizons.Builder.Body
|
||||
blackHoleAudioSource.minDistance = size * 0.4f;
|
||||
blackHoleAmbience.transform.localPosition = Vector3.zero;
|
||||
|
||||
var blackHoleOneShot = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleEmissionOneShot"), blackHole.transform);
|
||||
var blackHoleOneShot = GameObject.Instantiate(SearchUtilities.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleEmissionOneShot"), blackHole.transform);
|
||||
var oneShotAudioSource = blackHoleOneShot.GetComponent<AudioSource>();
|
||||
oneShotAudioSource.maxDistance = size * 3f;
|
||||
oneShotAudioSource.minDistance = size * 0.4f;
|
||||
@ -137,7 +137,7 @@ namespace NewHorizons.Builder.Body
|
||||
}
|
||||
else
|
||||
{
|
||||
var blackHoleVolume = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleVolume"), blackHole.transform);
|
||||
var blackHoleVolume = GameObject.Instantiate(SearchUtilities.Find("BrittleHollow_Body/BlackHole_BH/BlackHoleVolume"), blackHole.transform);
|
||||
blackHoleVolume.name = "BlackHoleVolume";
|
||||
blackHoleVolume.GetComponent<SphereCollider>().radius = size * 0.4f;
|
||||
}
|
||||
@ -159,10 +159,10 @@ namespace NewHorizons.Builder.Body
|
||||
whiteHoleRenderer.transform.localScale = Vector3.one * size * 2.8f;
|
||||
|
||||
var meshFilter = whiteHoleRenderer.AddComponent<MeshFilter>();
|
||||
meshFilter.mesh = GameObject.Find("WhiteHole_Body/WhiteHoleVisuals/Singularity").GetComponent<MeshFilter>().mesh;
|
||||
meshFilter.mesh = SearchUtilities.Find("WhiteHole_Body/WhiteHoleVisuals/Singularity").GetComponent<MeshFilter>().mesh;
|
||||
|
||||
var meshRenderer = whiteHoleRenderer.AddComponent<MeshRenderer>();
|
||||
if (whiteHoleShader == null) whiteHoleShader = GameObject.Find("WhiteHole_Body/WhiteHoleVisuals/Singularity").GetComponent<MeshRenderer>().sharedMaterial.shader;
|
||||
if (whiteHoleShader == null) whiteHoleShader = SearchUtilities.Find("WhiteHole_Body/WhiteHoleVisuals/Singularity").GetComponent<MeshRenderer>().sharedMaterial.shader;
|
||||
meshRenderer.material = new Material(whiteHoleShader);
|
||||
meshRenderer.sharedMaterial.SetFloat(Radius, size * 0.4f);
|
||||
meshRenderer.sharedMaterial.SetFloat(DistortFadeDist, size);
|
||||
@ -170,14 +170,14 @@ namespace NewHorizons.Builder.Body
|
||||
meshRenderer.sharedMaterial.SetFloat(MassScale, -1);
|
||||
meshRenderer.sharedMaterial.SetColor(Color1, new Color(1.88f, 1.88f, 1.88f, 1f));
|
||||
|
||||
var ambientLight = GameObject.Instantiate(GameObject.Find("WhiteHole_Body/WhiteHoleVisuals/AmbientLight_WH"));
|
||||
var ambientLight = GameObject.Instantiate(SearchUtilities.Find("WhiteHole_Body/WhiteHoleVisuals/AmbientLight_WH"));
|
||||
ambientLight.transform.parent = whiteHole.transform;
|
||||
ambientLight.transform.localScale = Vector3.one;
|
||||
ambientLight.transform.localPosition = Vector3.zero;
|
||||
ambientLight.name = "AmbientLight";
|
||||
ambientLight.GetComponent<Light>().range = size * 7f;
|
||||
|
||||
GameObject whiteHoleVolumeGO = GameObject.Instantiate(GameObject.Find("WhiteHole_Body/WhiteHoleVolume"));
|
||||
GameObject whiteHoleVolumeGO = GameObject.Instantiate(SearchUtilities.Find("WhiteHole_Body/WhiteHoleVolume"));
|
||||
whiteHoleVolumeGO.transform.parent = whiteHole.transform;
|
||||
whiteHoleVolumeGO.transform.localPosition = Vector3.zero;
|
||||
whiteHoleVolumeGO.transform.localScale = Vector3.one;
|
||||
@ -205,13 +205,13 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
if (makeZeroGVolume)
|
||||
{
|
||||
var zeroGVolume = GameObject.Instantiate(GameObject.Find("WhiteHole_Body/ZeroGVolume"), whiteHole.transform);
|
||||
var zeroGVolume = GameObject.Instantiate(SearchUtilities.Find("WhiteHole_Body/ZeroGVolume"), whiteHole.transform);
|
||||
zeroGVolume.name = "ZeroGVolume";
|
||||
zeroGVolume.transform.localPosition = Vector3.zero;
|
||||
zeroGVolume.GetComponent<SphereCollider>().radius = size * 10f;
|
||||
zeroGVolume.GetComponent<ZeroGVolume>()._attachedBody = OWRB;
|
||||
|
||||
var rulesetVolume = GameObject.Instantiate(GameObject.Find("WhiteHole_Body/Sector_WhiteHole/RulesetVolumes_WhiteHole"), planetGO.transform);
|
||||
var rulesetVolume = GameObject.Instantiate(SearchUtilities.Find("WhiteHole_Body/Sector_WhiteHole/RulesetVolumes_WhiteHole"), planetGO.transform);
|
||||
rulesetVolume.name = "RulesetVolume";
|
||||
rulesetVolume.transform.localPosition = Vector3.zero;
|
||||
rulesetVolume.transform.localScale = Vector3.one * size / 100f;
|
||||
|
||||
@ -23,7 +23,7 @@ namespace NewHorizons.Builder.Body
|
||||
{
|
||||
var starGO = MakeStarGraphics(planetGO, sector, starModule);
|
||||
|
||||
var sunAudio = Object.Instantiate(GameObject.Find("Sun_Body/Sector_SUN/Audio_SUN"), starGO.transform);
|
||||
var sunAudio = Object.Instantiate(SearchUtilities.Find("Sun_Body/Sector_SUN/Audio_SUN"), starGO.transform);
|
||||
sunAudio.transform.localPosition = Vector3.zero;
|
||||
sunAudio.transform.localScale = Vector3.one;
|
||||
sunAudio.transform.Find("SurfaceAudio_Sun").GetComponent<AudioSource>().maxDistance = starModule.size * 2f;
|
||||
@ -36,7 +36,7 @@ namespace NewHorizons.Builder.Body
|
||||
GameObject sunAtmosphere = null;
|
||||
if (starModule.hasAtmosphere)
|
||||
{
|
||||
sunAtmosphere = Object.Instantiate(GameObject.Find("Sun_Body/Atmosphere_SUN"), starGO.transform);
|
||||
sunAtmosphere = Object.Instantiate(SearchUtilities.Find("Sun_Body/Atmosphere_SUN"), starGO.transform);
|
||||
sunAtmosphere.transform.position = planetGO.transform.position;
|
||||
sunAtmosphere.transform.localScale = Vector3.one * OuterRadiusRatio;
|
||||
sunAtmosphere.name = "Atmosphere_Star";
|
||||
@ -59,17 +59,17 @@ namespace NewHorizons.Builder.Body
|
||||
fog.lodFadeDistance = fog.fogRadius * (StarBuilder.OuterRadiusRatio - 1f);
|
||||
}
|
||||
|
||||
var ambientLightGO = Object.Instantiate(GameObject.Find("Sun_Body/AmbientLight_SUN"), starGO.transform);
|
||||
var ambientLightGO = Object.Instantiate(SearchUtilities.Find("Sun_Body/AmbientLight_SUN"), starGO.transform);
|
||||
ambientLightGO.transform.localPosition = Vector3.zero;
|
||||
ambientLightGO.name = "AmbientLight_Star";
|
||||
|
||||
var heatVolume = Object.Instantiate(GameObject.Find("Sun_Body/Sector_SUN/Volumes_SUN/HeatVolume"), starGO.transform);
|
||||
var heatVolume = Object.Instantiate(SearchUtilities.Find("Sun_Body/Sector_SUN/Volumes_SUN/HeatVolume"), starGO.transform);
|
||||
heatVolume.transform.localPosition = Vector3.zero;
|
||||
heatVolume.transform.localScale = Vector3.one;
|
||||
heatVolume.GetComponent<SphereShape>().radius = 1f;
|
||||
heatVolume.name = "HeatVolume";
|
||||
|
||||
var deathVolume = Object.Instantiate(GameObject.Find("Sun_Body/Sector_SUN/Volumes_SUN/ScaledVolumesRoot/DestructionFluidVolume"), starGO.transform);
|
||||
var deathVolume = Object.Instantiate(SearchUtilities.Find("Sun_Body/Sector_SUN/Volumes_SUN/ScaledVolumesRoot/DestructionFluidVolume"), starGO.transform);
|
||||
deathVolume.transform.localPosition = Vector3.zero;
|
||||
deathVolume.transform.localScale = Vector3.one;
|
||||
deathVolume.GetComponent<SphereCollider>().radius = 1f;
|
||||
@ -85,8 +85,9 @@ namespace NewHorizons.Builder.Body
|
||||
sunLight.transform.localScale = Vector3.one;
|
||||
|
||||
var light = sunLight.AddComponent<Light>();
|
||||
light.CopyPropertiesFrom(GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<Light>());
|
||||
light.CopyPropertiesFrom(SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<Light>());
|
||||
light.intensity *= starModule.solarLuminosity;
|
||||
light.range = starModule.lightRadius;
|
||||
light.range *= Mathf.Sqrt(starModule.solarLuminosity);
|
||||
|
||||
Color lightColour = light.color;
|
||||
@ -96,12 +97,12 @@ namespace NewHorizons.Builder.Body
|
||||
ambientLight.color = lightColour;
|
||||
|
||||
var faceActiveCamera = sunLight.AddComponent<FaceActiveCamera>();
|
||||
faceActiveCamera.CopyPropertiesFrom(GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<FaceActiveCamera>());
|
||||
faceActiveCamera.CopyPropertiesFrom(SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<FaceActiveCamera>());
|
||||
var csmTextureCacher = sunLight.AddComponent<CSMTextureCacher>();
|
||||
csmTextureCacher.CopyPropertiesFrom(GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<CSMTextureCacher>());
|
||||
csmTextureCacher.CopyPropertiesFrom(SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<CSMTextureCacher>());
|
||||
csmTextureCacher._light = light;
|
||||
var proxyShadowLight = sunLight.AddComponent<ProxyShadowLight>();
|
||||
proxyShadowLight.CopyPropertiesFrom(GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<ProxyShadowLight>());
|
||||
proxyShadowLight.CopyPropertiesFrom(SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<ProxyShadowLight>());
|
||||
proxyShadowLight._light = light;
|
||||
|
||||
StarController starController = null;
|
||||
@ -133,11 +134,11 @@ namespace NewHorizons.Builder.Body
|
||||
// It fucking insists on this existing and its really annoying
|
||||
var supernovaVolume = new GameObject("SupernovaVolumePlaceholder");
|
||||
supernovaVolume.transform.SetParent(starGO.transform);
|
||||
supernova._supernovaVolume = supernovaVolume.AddComponent<SupernovaDestructionVolume>();
|
||||
var sphere = supernovaVolume.AddComponent<SphereCollider>();
|
||||
sphere.radius = 0f;
|
||||
sphere.isTrigger = true;
|
||||
supernovaVolume.AddComponent<OWCollider>();
|
||||
supernova._supernovaVolume = supernovaVolume.AddComponent<SupernovaDestructionVolume>();
|
||||
|
||||
return starController;
|
||||
}
|
||||
@ -148,6 +149,8 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
var supernova = MakeSupernova(starGO, starModule);
|
||||
|
||||
supernova._belongsToProxySun = true;
|
||||
|
||||
starGO.SetActive(false);
|
||||
var controller = starGO.AddComponent<StarEvolutionController>();
|
||||
if (starModule.curve != null) controller.scaleCurve = starModule.GetAnimationCurve();
|
||||
@ -170,12 +173,12 @@ namespace NewHorizons.Builder.Body
|
||||
var starGO = new GameObject("Star");
|
||||
starGO.transform.parent = sector?.transform ?? rootObject.transform;
|
||||
|
||||
var sunSurface = Object.Instantiate(GameObject.Find("Sun_Body/Sector_SUN/Geometry_SUN/Surface"), starGO.transform);
|
||||
var sunSurface = Object.Instantiate(SearchUtilities.Find("Sun_Body/Sector_SUN/Geometry_SUN/Surface"), starGO.transform);
|
||||
sunSurface.transform.position = rootObject.transform.position;
|
||||
sunSurface.transform.localScale = Vector3.one;
|
||||
sunSurface.name = "Surface";
|
||||
|
||||
var solarFlareEmitter = Object.Instantiate(GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SolarFlareEmitter"), starGO.transform);
|
||||
var solarFlareEmitter = Object.Instantiate(SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SolarFlareEmitter"), starGO.transform);
|
||||
solarFlareEmitter.transform.localPosition = Vector3.zero;
|
||||
solarFlareEmitter.transform.localScale = Vector3.one;
|
||||
solarFlareEmitter.name = "SolarFlareEmitter";
|
||||
@ -202,7 +205,7 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
var colour = starModule.tint.ToColor();
|
||||
|
||||
var sun = GameObject.Find("Sun_Body");
|
||||
var sun = SearchUtilities.Find("Sun_Body");
|
||||
var mainSequenceMaterial = sun.GetComponent<SunController>()._startSurfaceMaterial;
|
||||
var giantMaterial = sun.GetComponent<SunController>()._endSurfaceMaterial;
|
||||
|
||||
@ -228,7 +231,7 @@ namespace NewHorizons.Builder.Body
|
||||
|
||||
private static SupernovaEffectController MakeSupernova(GameObject starGO, StarModule starModule)
|
||||
{
|
||||
var supernovaGO = GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/Supernova").InstantiateInactive();
|
||||
var supernovaGO = SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/Supernova").InstantiateInactive();
|
||||
supernovaGO.transform.SetParent(starGO.transform);
|
||||
supernovaGO.transform.localPosition = Vector3.zero;
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components.SizeControllers;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
@ -19,7 +19,7 @@ namespace NewHorizons.Builder.Body
|
||||
waterGO.transform.parent = sector?.transform ?? planetGO.transform;
|
||||
waterGO.transform.localScale = new Vector3(waterSize, waterSize, waterSize);
|
||||
|
||||
var GDTSR = GameObject.Find("Ocean_GD").GetComponent<TessellatedSphereRenderer>();
|
||||
var GDTSR = SearchUtilities.Find("Ocean_GD").GetComponent<TessellatedSphereRenderer>();
|
||||
|
||||
TessellatedSphereRenderer TSR = waterGO.AddComponent<TessellatedSphereRenderer>();
|
||||
TSR.tessellationMeshGroup = ScriptableObject.CreateInstance<MeshGroup>();
|
||||
@ -30,7 +30,7 @@ namespace NewHorizons.Builder.Body
|
||||
TSR.tessellationMeshGroup.variants[i] = mesh;
|
||||
}
|
||||
|
||||
var GDSharedMaterials = GameObject.Find("Ocean_GD").GetComponent<TessellatedSphereLOD>()._lowAltitudeMaterials;
|
||||
var GDSharedMaterials = SearchUtilities.Find("Ocean_GD").GetComponent<TessellatedSphereLOD>()._lowAltitudeMaterials;
|
||||
var tempArray = new Material[GDSharedMaterials.Length];
|
||||
for (int i = 0; i < GDSharedMaterials.Length; i++)
|
||||
{
|
||||
@ -87,7 +87,7 @@ namespace NewHorizons.Builder.Body
|
||||
fluidVolume._radius = waterSize;
|
||||
fluidVolume._layer = LayerMask.NameToLayer("BasicEffectVolume");
|
||||
|
||||
var fogGO = GameObject.Instantiate(GameObject.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/OceanFog"), waterGO.transform);
|
||||
var fogGO = GameObject.Instantiate(SearchUtilities.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Effects_GDInterior/OceanFog"), waterGO.transform);
|
||||
fogGO.name = "OceanFog";
|
||||
fogGO.transform.localPosition = Vector3.zero;
|
||||
fogGO.transform.localScale = Vector3.one;
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine;
|
||||
using NewHorizons.Utility;
|
||||
namespace NewHorizons.Builder.General
|
||||
{
|
||||
public static class AmbientLightBuilder
|
||||
{
|
||||
public static void Make(GameObject planetGO, Sector sector, float scale, float intensity)
|
||||
{
|
||||
GameObject lightGO = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/AmbientLight_BH_Surface"), sector?.transform ?? planetGO.transform);
|
||||
GameObject lightGO = GameObject.Instantiate(SearchUtilities.Find("BrittleHollow_Body/AmbientLight_BH_Surface"), sector?.transform ?? planetGO.transform);
|
||||
lightGO.transform.position = planetGO.transform.position;
|
||||
lightGO.name = "Light";
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components.Orbital;
|
||||
using NewHorizons.Components.Orbital;
|
||||
using NewHorizons.External.Configs;
|
||||
using UnityEngine;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
@ -31,6 +31,8 @@ namespace NewHorizons.Builder.General
|
||||
|
||||
fluidDetector._collider = sphereCollider;
|
||||
|
||||
OWRB.RegisterAttachedFluidDetector(fluidDetector);
|
||||
|
||||
// Could copy the splash from the interloper as well some day
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Modules;
|
||||
using UnityEngine;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
@ -6,7 +6,7 @@ namespace NewHorizons.Builder.General
|
||||
{
|
||||
public static class GravityBuilder
|
||||
{
|
||||
public static GravityVolume Make(GameObject planetGO, AstroObject ao, PlanetConfig config)
|
||||
public static GravityVolume Make(GameObject planetGO, AstroObject ao, OWRigidbody owrb, PlanetConfig config)
|
||||
{
|
||||
var exponent = config.Base.gravityFallOff == GravityFallOff.Linear ? 1f : 2f;
|
||||
var GM = config.Base.surfaceGravity * Mathf.Pow(config.Base.surfaceSize, exponent);
|
||||
@ -60,6 +60,7 @@ namespace NewHorizons.Builder.General
|
||||
gravityGO.SetActive(true);
|
||||
|
||||
ao._gravityVolume = gravityVolume;
|
||||
owrb.RegisterAttachedGravityVolume(gravityVolume);
|
||||
|
||||
return gravityVolume;
|
||||
}
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Modules;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.General
|
||||
{
|
||||
public static class RFVolumeBuilder
|
||||
{
|
||||
public static void Make(GameObject planetGO, OWRigidbody owRigidBody, float sphereOfInfluence)
|
||||
public static void Make(GameObject planetGO, OWRigidbody owrb, float sphereOfInfluence, ReferenceFrameModule module)
|
||||
{
|
||||
var rfGO = new GameObject("RFVolume");
|
||||
rfGO.transform.parent = planetGO.transform;
|
||||
@ -18,8 +19,10 @@ namespace NewHorizons.Builder.General
|
||||
|
||||
var RFV = rfGO.AddComponent<ReferenceFrameVolume>();
|
||||
|
||||
var RV = new ReferenceFrame(owRigidBody);
|
||||
RV._minSuitTargetDistance = sphereOfInfluence;
|
||||
var minTargetDistance = module.targetWhenClose ? 0 : sphereOfInfluence;
|
||||
|
||||
var RV = new ReferenceFrame(owrb);
|
||||
RV._minSuitTargetDistance = minTargetDistance;
|
||||
RV._maxTargetDistance = 0;
|
||||
RV._autopilotArrivalDistance = 2.0f * sphereOfInfluence;
|
||||
RV._autoAlignmentDistance = sphereOfInfluence * 1.5f;
|
||||
@ -28,15 +31,17 @@ namespace NewHorizons.Builder.General
|
||||
RV._matchAngularVelocity = true;
|
||||
RV._minMatchAngularVelocityDistance = 70;
|
||||
RV._maxMatchAngularVelocityDistance = 400;
|
||||
RV._bracketsRadius = sphereOfInfluence;
|
||||
RV._bracketsRadius = module.bracketRadius > -1 ? module.bracketRadius : sphereOfInfluence;
|
||||
|
||||
RFV._referenceFrame = RV;
|
||||
RFV._minColliderRadius = sphereOfInfluence;
|
||||
RFV._maxColliderRadius = sphereOfInfluence * 2f;
|
||||
RFV._minColliderRadius = minTargetDistance;
|
||||
RFV._maxColliderRadius = module.maxTargetDistance > -1 ? module.maxTargetDistance : sphereOfInfluence * 2f;
|
||||
RFV._isPrimaryVolume = true;
|
||||
RFV._isCloseRangeVolume = false;
|
||||
|
||||
rfGO.SetActive(true);
|
||||
owrb.SetAttachedReferenceFrameVolume(RFV);
|
||||
|
||||
rfGO.SetActive(!module.hideInMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.General
|
||||
{
|
||||
@ -18,7 +19,6 @@ namespace NewHorizons.Builder.General
|
||||
rigidBody.collisionDetectionMode = CollisionDetectionMode.Discrete;
|
||||
|
||||
KinematicRigidbody kinematicRigidBody = body.AddComponent<KinematicRigidbody>();
|
||||
kinematicRigidBody.centerOfMass = Vector3.zero;
|
||||
|
||||
OWRigidbody owRigidBody = body.AddComponent<OWRigidbody>();
|
||||
owRigidBody._kinematicSimulation = true;
|
||||
@ -27,7 +27,7 @@ namespace NewHorizons.Builder.General
|
||||
owRigidBody._maintainOriginalCenterOfMass = true;
|
||||
owRigidBody._rigidbody = rigidBody;
|
||||
owRigidBody._kinematicRigidbody = kinematicRigidBody;
|
||||
owRigidBody._origParent = GameObject.Find("SolarSystemRoot").transform;
|
||||
owRigidBody._origParent = SearchUtilities.Find("SolarSystemRoot").transform;
|
||||
owRigidBody.EnableKinematicSimulation();
|
||||
owRigidBody.MakeKinematic();
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.General
|
||||
{
|
||||
@ -27,6 +27,7 @@ namespace NewHorizons.Builder.General
|
||||
S._subsectors = new List<Sector>();
|
||||
|
||||
sectorGO.SetActive(true);
|
||||
S.enabled = true;
|
||||
|
||||
return S;
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
namespace NewHorizons.Builder.General
|
||||
@ -18,8 +19,9 @@ namespace NewHorizons.Builder.General
|
||||
spawnGO.transform.localPosition = module.playerSpawnPoint;
|
||||
|
||||
playerSpawn = spawnGO.AddComponent<SpawnPoint>();
|
||||
|
||||
if(module.playerSpawnRotation != null)
|
||||
playerSpawn._triggerVolumes = new OWTriggerVolume[0];
|
||||
|
||||
if (module.playerSpawnRotation != null)
|
||||
{
|
||||
spawnGO.transform.rotation = Quaternion.Euler(module.playerSpawnRotation);
|
||||
}
|
||||
@ -40,8 +42,9 @@ namespace NewHorizons.Builder.General
|
||||
|
||||
var spawnPoint = spawnGO.AddComponent<SpawnPoint>();
|
||||
spawnPoint._isShipSpawn = true;
|
||||
spawnPoint._triggerVolumes = new OWTriggerVolume[0];
|
||||
|
||||
var ship = GameObject.Find("Ship_Body");
|
||||
var ship = SearchUtilities.Find("Ship_Body");
|
||||
ship.transform.position = spawnPoint.transform.position;
|
||||
|
||||
if(module.shipSpawnRotation != null)
|
||||
@ -67,6 +70,7 @@ namespace NewHorizons.Builder.General
|
||||
playerSpawnGO.transform.localPosition = new Vector3(0, 0, 0);
|
||||
|
||||
playerSpawn = playerSpawnGO.AddComponent<SpawnPoint>();
|
||||
playerSpawn._triggerVolumes = new OWTriggerVolume[0];
|
||||
playerSpawnGO.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
}
|
||||
}
|
||||
@ -89,7 +93,7 @@ namespace NewHorizons.Builder.General
|
||||
Locator.GetPlayerTransform().GetComponent<PlayerSpacesuit>().SuitUp(false, true, true);
|
||||
|
||||
// Make the ship act as if the player took the suit
|
||||
var spv = GameObject.Find("Ship_Body/Module_Supplies/Systems_Supplies/ExpeditionGear")?.GetComponent<SuitPickupVolume>();
|
||||
var spv = SearchUtilities.Find("Ship_Body/Module_Supplies/Systems_Supplies/ExpeditionGear")?.GetComponent<SuitPickupVolume>();
|
||||
|
||||
if (spv == null) return;
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components.Orbital;
|
||||
using NewHorizons.Components.Orbital;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Handlers;
|
||||
@ -59,7 +59,7 @@ namespace NewHorizons.Builder.Orbital
|
||||
fakeMassConfig.name = config.name + "_FakeBarycenterMass";
|
||||
fakeMassConfig.Base.sphereOfInfluence = 0;
|
||||
fakeMassConfig.Base.hasMapMarker = false;
|
||||
fakeMassConfig.Base.hasReferenceFrame = false;
|
||||
fakeMassConfig.ReferenceFrame.hideInMap = true;
|
||||
|
||||
fakeMassConfig.Orbit = new OrbitModule();
|
||||
fakeMassConfig.Orbit.CopyPropertiesFrom(config.Orbit);
|
||||
|
||||
@ -62,6 +62,11 @@ namespace NewHorizons.Builder.Props
|
||||
detailGO = newDetailGO;
|
||||
}
|
||||
|
||||
if (detail.rename != null)
|
||||
{
|
||||
detailGO.name = detail.rename;
|
||||
}
|
||||
|
||||
detailInfoToCorrespondingSpawnedGameObject[detail] = detailGO;
|
||||
}
|
||||
|
||||
@ -145,7 +150,7 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
torchItem.enabled = true;
|
||||
torchItem.mindProjectorTrigger.enabled = true;
|
||||
torchItem.mindSlideProjector._mindProjectorImageEffect = GameObject.Find("Player_Body/PlayerCamera").GetComponent<MindProjectorImageEffect>();
|
||||
torchItem.mindSlideProjector._mindProjectorImageEffect = SearchUtilities.Find("Player_Body/PlayerCamera").GetComponent<MindProjectorImageEffect>();
|
||||
}
|
||||
|
||||
// fix campfires
|
||||
@ -178,6 +183,7 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
try
|
||||
{
|
||||
if (component == null) return;
|
||||
if (component is Animator animator) animator.enabled = true;
|
||||
else if (component is Collider collider) collider.enabled = true;
|
||||
else if (component is Renderer renderer) renderer.enabled = true;
|
||||
@ -200,7 +206,7 @@ namespace NewHorizons.Builder.Props
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.LogWarning($"Exception when modifying component [{component.GetType().Name}] on [{planetGO.name}] : {e.Message}, {e.StackTrace}");
|
||||
Logger.LogWarning($"Exception when modifying component [{component.GetType().Name}] on [{planetGO.name}] for prop [{prefab.name}] : {e.GetType().FullName} {e.Message} {e.StackTrace}");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.Props
|
||||
@ -7,7 +7,7 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
public static void Make(GameObject planetGO, Sector sector, PropModule.GeyserInfo info)
|
||||
{
|
||||
var original = GameObject.Find("TimberHearth_Body/Sector_TH/Interactables_TH/Geysers/Geyser_Village");
|
||||
var original = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Interactables_TH/Geysers/Geyser_Village");
|
||||
GameObject geyserGO = original.InstantiateInactive();
|
||||
geyserGO.transform.parent = sector?.transform ?? planetGO.transform;
|
||||
geyserGO.name = "Geyser";
|
||||
|
||||
@ -51,18 +51,18 @@ namespace NewHorizons.Builder.Props
|
||||
_ghostArcPrefabs.Add(arc);
|
||||
}
|
||||
|
||||
_scrollPrefab = GameObject.Find("BrittleHollow_Body/Sector_BH/Sector_NorthHemisphere/Sector_NorthPole/Sector_HangingCity/Sector_HangingCity_District2/Interactables_HangingCity_District2/Prefab_NOM_Scroll").InstantiateInactive();
|
||||
_scrollPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_NorthHemisphere/Sector_NorthPole/Sector_HangingCity/Sector_HangingCity_District2/Interactables_HangingCity_District2/Prefab_NOM_Scroll").InstantiateInactive();
|
||||
_scrollPrefab.name = "Prefab_NOM_Scroll";
|
||||
|
||||
_computerPrefab = GameObject.Find("VolcanicMoon_Body/Sector_VM/Interactables_VM/Prefab_NOM_Computer").InstantiateInactive();
|
||||
_computerPrefab = SearchUtilities.Find("VolcanicMoon_Body/Sector_VM/Interactables_VM/Prefab_NOM_Computer").InstantiateInactive();
|
||||
_computerPrefab.name = "Prefab_NOM_Computer";
|
||||
_computerPrefab.transform.rotation = Quaternion.identity;
|
||||
|
||||
_cairnPrefab = GameObject.Find("BrittleHollow_Body/Sector_BH/Sector_Crossroads/Interactables_Crossroads/Trailmarkers/Prefab_NOM_BH_Cairn_Arc (1)").InstantiateInactive();
|
||||
_cairnPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_Crossroads/Interactables_Crossroads/Trailmarkers/Prefab_NOM_BH_Cairn_Arc (1)").InstantiateInactive();
|
||||
_cairnPrefab.name = "Prefab_NOM_Cairn";
|
||||
_cairnPrefab.transform.rotation = Quaternion.identity;
|
||||
|
||||
_recorderPrefab = GameObject.Find("Comet_Body/Prefab_NOM_Shuttle/Sector_NomaiShuttleInterior/Interactibles_NomaiShuttleInterior/Prefab_NOM_Recorder").InstantiateInactive();
|
||||
_recorderPrefab = SearchUtilities.Find("Comet_Body/Prefab_NOM_Shuttle/Sector_NomaiShuttleInterior/Interactibles_NomaiShuttleInterior/Prefab_NOM_Recorder").InstantiateInactive();
|
||||
_recorderPrefab.name = "Prefab_NOM_Recorder";
|
||||
_recorderPrefab.transform.rotation = Quaternion.identity;
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
if (_slideReelPrefab == null)
|
||||
{
|
||||
_slideReelPrefab = GameObject.Find("RingWorld_Body/Sector_RingInterior/Sector_Zone1/Sector_SlideBurningRoom_Zone1/Interactables_SlideBurningRoom_Zone1/Prefab_IP_SecretAlcove/RotationPivot/SlideReelSocket/Prefab_IP_Reel_1_LibraryPath")?.gameObject?.InstantiateInactive();
|
||||
_slideReelPrefab = SearchUtilities.Find("RingWorld_Body/Sector_RingInterior/Sector_Zone1/Sector_SlideBurningRoom_Zone1/Interactables_SlideBurningRoom_Zone1/Prefab_IP_SecretAlcove/RotationPivot/SlideReelSocket/Prefab_IP_Reel_1_LibraryPath")?.gameObject?.InstantiateInactive();
|
||||
if (_slideReelPrefab == null)
|
||||
{
|
||||
Logger.LogWarning($"Tried to make a slide reel but couldn't. Do you have the DLC installed?");
|
||||
@ -139,7 +139,7 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
if (_autoPrefab == null)
|
||||
{
|
||||
_autoPrefab = GameObject.Find("RingWorld_Body/Sector_RingInterior/Sector_Zone4/Sector_BlightedShore/Sector_JammingControlRoom_Zone4/Interactables_JammingControlRoom_Zone4/AutoProjector_SignalJammer/Prefab_IP_AutoProjector_SignalJammer")?.gameObject?.InstantiateInactive();
|
||||
_autoPrefab = SearchUtilities.Find("RingWorld_Body/Sector_RingInterior/Sector_Zone4/Sector_BlightedShore/Sector_JammingControlRoom_Zone4/Interactables_JammingControlRoom_Zone4/AutoProjector_SignalJammer/Prefab_IP_AutoProjector_SignalJammer")?.gameObject?.InstantiateInactive();
|
||||
if (_autoPrefab == null)
|
||||
{
|
||||
Logger.LogWarning($"Tried to make a auto projector but couldn't. Do you have the DLC installed?");
|
||||
@ -261,7 +261,7 @@ namespace NewHorizons.Builder.Props
|
||||
//
|
||||
|
||||
var mindSlideProjector = standingTorch.GetComponent<MindSlideProjector>();
|
||||
mindSlideProjector._mindProjectorImageEffect = GameObject.Find("Player_Body/PlayerCamera").GetComponent<MindProjectorImageEffect>();
|
||||
mindSlideProjector._mindProjectorImageEffect = SearchUtilities.Find("Player_Body/PlayerCamera").GetComponent<MindProjectorImageEffect>();
|
||||
|
||||
// setup for visually supporting async texture loading
|
||||
mindSlideProjector.enabled = false;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Configs;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using OWML.Common;
|
||||
@ -44,7 +44,7 @@ namespace NewHorizons.Builder.Props
|
||||
|
||||
GameObject prefab;
|
||||
if (propInfo.assetBundle != null) prefab = AssetBundleUtilities.LoadPrefab(propInfo.assetBundle, propInfo.path, mod);
|
||||
else prefab = GameObject.Find(propInfo.path);
|
||||
else prefab = SearchUtilities.Find(propInfo.path);
|
||||
for (int i = 0; i < propInfo.count; i++)
|
||||
{
|
||||
var randomInd = (int)Random.Range(0, points.Count - 1);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using OWML.Common;
|
||||
@ -192,7 +192,7 @@ namespace NewHorizons.Builder.Props
|
||||
source.rolloffMode = AudioRolloffMode.Custom;
|
||||
|
||||
if (_customCurve == null)
|
||||
_customCurve = GameObject.Find("Moon_Body/Sector_THM/Characters_THM/Villager_HEA_Esker/Signal_Whistling").GetComponent<AudioSource>().GetCustomCurve(AudioSourceCurveType.CustomRolloff);
|
||||
_customCurve = SearchUtilities.Find("Moon_Body/Sector_THM/Characters_THM/Villager_HEA_Esker/Signal_Whistling").GetComponent<AudioSource>().GetCustomCurve(AudioSourceCurveType.CustomRolloff);
|
||||
|
||||
source.SetCustomCurve(AudioSourceCurveType.CustomRolloff, _customCurve);
|
||||
// If it can be heard regularly then we play it immediately
|
||||
|
||||
@ -26,17 +26,17 @@ namespace NewHorizons.Builder.Props
|
||||
{
|
||||
if (_upPrefab == null)
|
||||
{
|
||||
_upPrefab = GameObject.Find("BrittleHollow_Body/Sector_BH/Sector_SouthHemisphere/Sector_SouthPole/Sector_Observatory/Interactables_Observatory/MockUpTornado").InstantiateInactive();
|
||||
_upPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_SouthHemisphere/Sector_SouthPole/Sector_Observatory/Interactables_Observatory/MockUpTornado").InstantiateInactive();
|
||||
_upPrefab.name = "Tornado_Up_Prefab";
|
||||
}
|
||||
if (_downPrefab == null)
|
||||
{
|
||||
_downPrefab = GameObject.Find("BrittleHollow_Body/Sector_BH/Sector_SouthHemisphere/Sector_SouthPole/Sector_Observatory/Interactables_Observatory/MockDownTornado").InstantiateInactive();
|
||||
_downPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_SouthHemisphere/Sector_SouthPole/Sector_Observatory/Interactables_Observatory/MockDownTornado").InstantiateInactive();
|
||||
_downPrefab.name = "Tornado_Down_Prefab";
|
||||
}
|
||||
if (_hurricanePrefab == null)
|
||||
{
|
||||
_hurricanePrefab = GameObject.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Tornadoes_GDInterior/Hurricane/").InstantiateInactive();
|
||||
_hurricanePrefab = SearchUtilities.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Tornadoes_GDInterior/Hurricane/").InstantiateInactive();
|
||||
// For some reason they put the hurricane at the origin and offset all its children (450)
|
||||
// Increasing by 40 will keep the bottom above the ground
|
||||
foreach (Transform child in _hurricanePrefab.transform)
|
||||
@ -50,7 +50,7 @@ namespace NewHorizons.Builder.Props
|
||||
}
|
||||
if (_soundPrefab == null)
|
||||
{
|
||||
_soundPrefab = GameObject.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Tornadoes_GDInterior/SouthernTornadoes/DownTornado_Pivot/DownTornado/AudioRail").InstantiateInactive();
|
||||
_soundPrefab = SearchUtilities.Find("GiantsDeep_Body/Sector_GD/Sector_GDInterior/Tornadoes_GDInterior/SouthernTornadoes/DownTornado_Pivot/DownTornado/AudioRail").InstantiateInactive();
|
||||
_soundPrefab.name = "AudioRail_Prefab";
|
||||
}
|
||||
if (_mainTexture == null)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Builder.Props
|
||||
@ -12,7 +12,7 @@ namespace NewHorizons.Builder.Props
|
||||
|
||||
public static void Make(GameObject planetGO, Sector sector, PropModule.VolcanoInfo info)
|
||||
{
|
||||
var prefab = GameObject.Find("VolcanicMoon_Body/Sector_VM/Effects_VM/VolcanoPivot (2)/MeteorLauncher");
|
||||
var prefab = SearchUtilities.Find("VolcanicMoon_Body/Sector_VM/Effects_VM/VolcanoPivot (2)/MeteorLauncher");
|
||||
|
||||
var launcherGO = prefab.InstantiateInactive();
|
||||
launcherGO.transform.parent = sector.transform;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.External.Modules;
|
||||
using NewHorizons.Handlers;
|
||||
using NewHorizons.Utility;
|
||||
@ -16,7 +16,7 @@ namespace NewHorizons.Builder.ShipLog
|
||||
#region General
|
||||
public static ShipLogAstroObject[][] ConstructMapMode(string systemName, GameObject transformParent, ShipLogAstroObject[][] currentNav, int layer)
|
||||
{
|
||||
Material greyScaleMaterial = GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/TimberHearth/Sprite").GetComponent<Image>().material;
|
||||
Material greyScaleMaterial = SearchUtilities.Find(ShipLogHandler.PAN_ROOT_PATH + "/TimberHearth/Sprite").GetComponent<Image>().material;
|
||||
List<NewHorizonsBody> bodies = Main.BodyDict[systemName].Where(
|
||||
b => !(b.Config.ShipLog?.mapMode?.remove ?? false) && !b.Config.isQuantumState
|
||||
).ToList();
|
||||
@ -99,6 +99,8 @@ namespace NewHorizons.Builder.ShipLog
|
||||
{
|
||||
const float unviewedIconOffset = 15;
|
||||
|
||||
Logger.Log($"Adding ship log astro object for {body.Config.name}");
|
||||
|
||||
GameObject unviewedReference = SearchUtilities.CachedFind(ShipLogHandler.PAN_ROOT_PATH + "/TimberHearth/UnviewedIcon");
|
||||
|
||||
ShipLogAstroObject astroObject = gameObject.AddComponent<ShipLogAstroObject>();
|
||||
@ -235,6 +237,12 @@ namespace NewHorizons.Builder.ShipLog
|
||||
{
|
||||
GameObject newMapModeGO = CreateMapModeGameObject(body, transformParent, layer, body.Config.ShipLog?.mapMode?.manualPosition);
|
||||
ShipLogAstroObject newAstroObject = AddShipLogAstroObject(newMapModeGO, body, greyScaleMaterial, layer);
|
||||
if (body.Config.FocalPoint != null)
|
||||
{
|
||||
newAstroObject._imageObj.GetComponent<Image>().enabled = false;
|
||||
newAstroObject._outlineObj.GetComponent<Image>().enabled = false;
|
||||
newAstroObject._unviewedObj.GetComponent<Image>().enabled = false;
|
||||
}
|
||||
MakeDetails(body, newMapModeGO.transform, greyScaleMaterial);
|
||||
Vector2 navigationPosition = body.Config.ShipLog?.mapMode?.manualNavigationPosition;
|
||||
navMatrix[(int)navigationPosition.y][(int)navigationPosition.x] = newAstroObject;
|
||||
@ -251,12 +259,12 @@ namespace NewHorizons.Builder.ShipLog
|
||||
navMatrix[navIndex[0]][navIndex[1]] = null;
|
||||
if (astroObject.GetID() == "CAVE_TWIN" || astroObject.GetID() == "TOWER_TWIN")
|
||||
{
|
||||
GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + "SandFunnel").SetActive(false);
|
||||
SearchUtilities.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + "SandFunnel").SetActive(false);
|
||||
}
|
||||
}
|
||||
else if (name == "SandFunnel")
|
||||
{
|
||||
GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + "SandFunnel").SetActive(false);
|
||||
SearchUtilities.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + "SandFunnel").SetActive(false);
|
||||
}
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
@ -380,7 +388,7 @@ namespace NewHorizons.Builder.ShipLog
|
||||
return new MapModeObject();
|
||||
}
|
||||
|
||||
private static List<MapModeObject> ConstructChildrenNodes(MapModeObject parent, List<NewHorizonsBody> searchList, string secondaryName = "")
|
||||
private static List<MapModeObject> ConstructChildrenNodes(MapModeObject parent, List<NewHorizonsBody> searchList, string secondaryName = "", string focalPointName = "")
|
||||
{
|
||||
List<MapModeObject> children = new List<MapModeObject>();
|
||||
int newX = parent.x;
|
||||
@ -388,7 +396,7 @@ namespace NewHorizons.Builder.ShipLog
|
||||
int newLevel = parent.level + 1;
|
||||
MapModeObject lastSibling = parent;
|
||||
|
||||
foreach (NewHorizonsBody body in searchList.Where(b => b.Config.Orbit.primaryBody == parent.mainBody.Config.name || b.Config.name == secondaryName))
|
||||
foreach (NewHorizonsBody body in searchList.Where(b => b.Config.Orbit.primaryBody == parent.mainBody.Config.name || (b.Config.Orbit.primaryBody == focalPointName && b.Config.name != parent.mainBody.Config.name) || b.Config.name == secondaryName))
|
||||
{
|
||||
bool even = newLevel % 2 == 0;
|
||||
newX = even ? newX : newX + 1;
|
||||
@ -403,13 +411,15 @@ namespace NewHorizons.Builder.ShipLog
|
||||
lastSibling = lastSibling
|
||||
};
|
||||
string newSecondaryName = "";
|
||||
string newFocalPointName = "";
|
||||
if (body.Config.FocalPoint != null)
|
||||
{
|
||||
newFocalPointName = body.Config.name;
|
||||
newNode.mainBody = searchList.Find(b => b.Config.name == body.Config.FocalPoint.primary);
|
||||
newSecondaryName = searchList.Find(b => b.Config.name == body.Config.FocalPoint.secondary).Config.name;
|
||||
}
|
||||
|
||||
newNode.children = ConstructChildrenNodes(newNode, searchList, newSecondaryName);
|
||||
newNode.children = ConstructChildrenNodes(newNode, searchList, newSecondaryName, newFocalPointName);
|
||||
if (even)
|
||||
{
|
||||
newY += newNode.branch_height;
|
||||
@ -481,7 +491,7 @@ namespace NewHorizons.Builder.ShipLog
|
||||
GameObject newNodeGO = CreateMapModeGameObject(node.mainBody, parent, layer, position);
|
||||
ShipLogAstroObject astroObject = AddShipLogAstroObject(newNodeGO, node.mainBody, greyScaleMaterial, layer);
|
||||
if (node.mainBody.Config.FocalPoint != null)
|
||||
{
|
||||
{
|
||||
astroObject._imageObj.GetComponent<Image>().enabled = false;
|
||||
astroObject._outlineObj.GetComponent<Image>().enabled = false;
|
||||
astroObject._unviewedObj.GetComponent<Image>().enabled = false;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Components
|
||||
@ -12,6 +12,10 @@ namespace NewHorizons.Components
|
||||
|
||||
private List<Renderer> _renderers = null;
|
||||
|
||||
internal static bool isPlayerInside = false;
|
||||
internal static bool isProbeInside = false;
|
||||
internal static bool isShipInside = false;
|
||||
|
||||
public void Init(CloakFieldController cloak, GameObject root)
|
||||
{
|
||||
_cloak = cloak;
|
||||
@ -20,9 +24,17 @@ namespace NewHorizons.Components
|
||||
// Lets just clear these off idc
|
||||
_cloak.OnPlayerEnter = new OWEvent();
|
||||
_cloak.OnPlayerExit = new OWEvent();
|
||||
_cloak.OnProbeEnter = new OWEvent();
|
||||
_cloak.OnProbeExit = new OWEvent();
|
||||
_cloak.OnShipEnter = new OWEvent();
|
||||
_cloak.OnShipExit = new OWEvent();
|
||||
|
||||
_cloak.OnPlayerEnter += OnPlayerEnter;
|
||||
_cloak.OnPlayerExit += OnPlayerExit;
|
||||
_cloak.OnProbeEnter += OnProbeEnter;
|
||||
_cloak.OnProbeExit += OnProbeExit;
|
||||
_cloak.OnShipEnter += OnShipEnter;
|
||||
_cloak.OnShipExit += OnShipExit;
|
||||
|
||||
_isInitialized = true;
|
||||
}
|
||||
@ -49,6 +61,9 @@ namespace NewHorizons.Components
|
||||
{
|
||||
renderer.forceRenderingOff = false;
|
||||
}
|
||||
|
||||
isPlayerInside = true;
|
||||
GlobalMessenger.FireEvent("PlayerEnterCloakField");
|
||||
}
|
||||
|
||||
public void OnPlayerExit()
|
||||
@ -59,6 +74,56 @@ namespace NewHorizons.Components
|
||||
{
|
||||
renderer.forceRenderingOff = true;
|
||||
}
|
||||
|
||||
isPlayerInside = false;
|
||||
GlobalMessenger.FireEvent("PlayerExitCloakField");
|
||||
}
|
||||
|
||||
public void OnProbeEnter()
|
||||
{
|
||||
isProbeInside = true;
|
||||
GlobalMessenger.FireEvent("ProbeEnterCloakField");
|
||||
}
|
||||
|
||||
public void OnProbeExit()
|
||||
{
|
||||
isProbeInside = false;
|
||||
GlobalMessenger.FireEvent("ProbeExitCloakField");
|
||||
}
|
||||
|
||||
public void OnShipEnter()
|
||||
{
|
||||
isShipInside = true;
|
||||
GlobalMessenger.FireEvent("ShipEnterCloakField");
|
||||
}
|
||||
|
||||
public void OnShipExit()
|
||||
{
|
||||
isShipInside = false;
|
||||
GlobalMessenger.FireEvent("ShipExitCloakField");
|
||||
}
|
||||
|
||||
public void EnableCloak()
|
||||
{
|
||||
SunLightController.RegisterSunOverrider(_cloak, 900);
|
||||
_cloak._cloakSphereRenderer.SetActivation(true);
|
||||
Shader.EnableKeyword("_CLOAKINGFIELDENABLED");
|
||||
_cloak._cloakVisualsEnabled = true;
|
||||
}
|
||||
|
||||
public void DisableCloak()
|
||||
{
|
||||
SunLightController.UnregisterSunOverrider(_cloak);
|
||||
_cloak._cloakSphereRenderer.SetActivation(false);
|
||||
Shader.DisableKeyword("_CLOAKINGFIELDENABLED");
|
||||
_cloak._cloakVisualsEnabled = false;
|
||||
}
|
||||
|
||||
public void SetReferenceFrameVolumeActive(bool active) => _cloak._referenceFrameVolume.gameObject.SetActive(active);
|
||||
public void EnableReferenceFrameVolume() => SetReferenceFrameVolumeActive(true);
|
||||
public void DisableReferenceFrameVolume() => SetReferenceFrameVolumeActive(false);
|
||||
|
||||
public void TurnOnMusic() => _cloak._hasTriggeredMusic = false;
|
||||
public void TurnOffMusic() => _cloak._hasTriggeredMusic = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Handlers;
|
||||
using NewHorizons.Handlers;
|
||||
using NewHorizons.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -99,7 +99,7 @@ namespace NewHorizons.Components
|
||||
{
|
||||
if (_cardTemplate == null)
|
||||
{
|
||||
var panRoot = GameObject.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/DetectiveMode/ScaleRoot/PanRoot");
|
||||
var panRoot = SearchUtilities.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/DetectiveMode/ScaleRoot/PanRoot");
|
||||
_cardTemplate = GameObject.Instantiate(panRoot.GetComponentInChildren<ShipLogEntryCard>().gameObject);
|
||||
_cardTemplate.SetActive(false);
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using NewHorizons.Builder.General;
|
||||
using NewHorizons.Builder.General;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
namespace NewHorizons.Components
|
||||
@ -26,8 +27,8 @@ namespace NewHorizons.Components
|
||||
|
||||
public void Init()
|
||||
{
|
||||
_blackHolePrefab = GameObject.Find(_blackHolePath);
|
||||
_whiteHolePrefab = GameObject.Find(_whiteHolePath);
|
||||
_blackHolePrefab = SearchUtilities.Find(_blackHolePath);
|
||||
_whiteHolePrefab = SearchUtilities.Find(_whiteHolePath);
|
||||
}
|
||||
|
||||
public void Start()
|
||||
@ -183,7 +184,7 @@ namespace NewHorizons.Components
|
||||
// For some reason warping into the ship makes you suffocate while in the ship
|
||||
if (_wearingSuit) resources.OnSuitUp();
|
||||
var o2Volume = Locator.GetShipBody().GetComponent<OxygenVolume>();
|
||||
var atmoVolume = GameObject.Find("Ship_Body/Volumes/ShipAtmosphereVolume").GetComponent<SimpleFluidVolume>();
|
||||
var atmoVolume = SearchUtilities.Find("Ship_Body/Volumes/ShipAtmosphereVolume").GetComponent<SimpleFluidVolume>();
|
||||
|
||||
resources._cameraFluidDetector.AddVolume(atmoVolume);
|
||||
resources._cameraFluidDetector.OnVolumeAdded(atmoVolume);
|
||||
|
||||
@ -199,8 +199,8 @@ namespace NewHorizons.Components.SizeControllers
|
||||
supernova.enabled = true;
|
||||
_isSupernova = true;
|
||||
_supernovaStartTime = Time.time;
|
||||
atmosphere.SetActive(false);
|
||||
_destructionVolume._deathType = DeathType.Supernova;
|
||||
if (atmosphere != null) atmosphere.SetActive(false);
|
||||
if (_destructionVolume != null) _destructionVolume._deathType = DeathType.Supernova;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
21
NewHorizons/External/Configs/PlanetConfig.cs
vendored
21
NewHorizons/External/Configs/PlanetConfig.cs
vendored
@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using NewHorizons.External.Modules;
|
||||
@ -45,6 +45,11 @@ namespace NewHorizons.External.Configs
|
||||
|
||||
#endregion Obsolete
|
||||
|
||||
/// <summary>
|
||||
/// Add a cloaking field to this planet
|
||||
/// </summary>
|
||||
public CloakModule Cloak;
|
||||
|
||||
/// <summary>
|
||||
/// `true` if you want to delete this planet
|
||||
/// </summary>
|
||||
@ -96,6 +101,11 @@ namespace NewHorizons.External.Configs
|
||||
/// </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>
|
||||
@ -157,6 +167,7 @@ namespace NewHorizons.External.Configs
|
||||
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()
|
||||
@ -190,8 +201,16 @@ namespace NewHorizons.External.Configs
|
||||
|
||||
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)
|
||||
|
||||
10
NewHorizons/External/Configs/StarSystemConfig.cs
vendored
10
NewHorizons/External/Configs/StarSystemConfig.cs
vendored
@ -51,6 +51,16 @@ namespace NewHorizons.External.Configs
|
||||
/// </summary>
|
||||
public bool startHere;
|
||||
|
||||
/// <summary>
|
||||
/// Name of an existing AudioClip in the game that will play when travelling in space.
|
||||
/// </summary>
|
||||
public string travelAudioClip;
|
||||
|
||||
/// <summary>
|
||||
/// Relative filepath to the .wav file to use as the audio. Mutually exclusive with travelAudioClip.
|
||||
/// </summary>
|
||||
public string travelAudioFilePath;
|
||||
|
||||
public class NomaiCoordinates
|
||||
{
|
||||
public int[] x;
|
||||
|
||||
24
NewHorizons/External/Modules/BaseModule.cs
vendored
24
NewHorizons/External/Modules/BaseModule.cs
vendored
@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.Serialization;
|
||||
using NewHorizons.Utility;
|
||||
@ -30,12 +30,6 @@ namespace NewHorizons.External.Modules
|
||||
/// </summary>
|
||||
public bool centerOfSolarSystem;
|
||||
|
||||
/// <summary>
|
||||
/// Radius of the cloaking field around the planet. It's a bit finicky so experiment with different values. If you
|
||||
/// don't want a cloak, leave this as 0.
|
||||
/// </summary>
|
||||
public float cloakRadius;
|
||||
|
||||
/// <summary>
|
||||
/// If it has a comet tail, it'll be oriented according to these Euler angles.
|
||||
/// </summary>
|
||||
@ -62,11 +56,6 @@ namespace NewHorizons.External.Modules
|
||||
/// </summary>
|
||||
public bool hasMapMarker;
|
||||
|
||||
/// <summary>
|
||||
/// Allows the object to be targeted on the map.
|
||||
/// </summary>
|
||||
[DefaultValue(true)] public bool hasReferenceFrame = true;
|
||||
|
||||
/// <summary>
|
||||
/// Can this planet survive entering a star?
|
||||
/// </summary>
|
||||
@ -92,6 +81,11 @@ 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;
|
||||
|
||||
#region Obsolete
|
||||
|
||||
[Obsolete("IsSatellite is deprecated, please use ShowMinimap instead")]
|
||||
@ -112,6 +106,12 @@ namespace NewHorizons.External.Modules
|
||||
[Obsolete("HasAmbientLight is deprecated, please use AmbientLight instead")]
|
||||
public bool hasAmbientLight;
|
||||
|
||||
[Obsolete("HasReferenceFrame is deprecated, please use ReferenceModule instead")]
|
||||
[DefaultValue(true)] public bool hasReferenceFrame = true;
|
||||
|
||||
[Obsolete("CloakRadius is deprecated, please use CloakModule instead")]
|
||||
public float cloakRadius;
|
||||
|
||||
#endregion Obsolete
|
||||
}
|
||||
}
|
||||
29
NewHorizons/External/Modules/CloakModule.cs
vendored
Normal file
29
NewHorizons/External/Modules/CloakModule.cs
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.Serialization;
|
||||
using NewHorizons.Utility;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace NewHorizons.External.Modules
|
||||
{
|
||||
[JsonObject]
|
||||
public class CloakModule
|
||||
{
|
||||
/// <summary>
|
||||
/// Radius of the cloaking field around the planet. It's a bit finicky so experiment with different values. If you
|
||||
/// don't want a cloak, leave this as 0.
|
||||
/// </summary>
|
||||
public float radius;
|
||||
|
||||
/// <summary>
|
||||
/// Name of an existing AudioClip in the game that will play when entering the cloaking field.
|
||||
/// </summary>
|
||||
public string audioClip;
|
||||
|
||||
/// <summary>
|
||||
/// Relative filepath to the .wav file to use as the audio. Mutually exclusive with audioClip.
|
||||
/// </summary>
|
||||
public string audioFilePath;
|
||||
}
|
||||
}
|
||||
5
NewHorizons/External/Modules/PropModule.cs
vendored
5
NewHorizons/External/Modules/PropModule.cs
vendored
@ -113,6 +113,11 @@ namespace NewHorizons.External.Modules
|
||||
[JsonObject]
|
||||
public class DetailInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// An optional rename of the detail
|
||||
/// </summary>
|
||||
public string rename;
|
||||
|
||||
/// <summary>
|
||||
/// Do we override rotation and try to automatically align this object to stand upright on the body's surface?
|
||||
/// </summary>
|
||||
|
||||
33
NewHorizons/External/Modules/ReferenceFrameModule.cs
vendored
Normal file
33
NewHorizons/External/Modules/ReferenceFrameModule.cs
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.Serialization;
|
||||
using NewHorizons.Utility;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace NewHorizons.External.Modules
|
||||
{
|
||||
[JsonObject]
|
||||
public class ReferenceFrameModule
|
||||
{
|
||||
/// <summary>
|
||||
/// Stop the object from being targeted on the map.
|
||||
/// </summary>
|
||||
public bool hideInMap;
|
||||
|
||||
/// <summary>
|
||||
/// Radius of the brackets that show up when you target this. Defaults to the sphereOfInfluence.
|
||||
/// </summary>
|
||||
[DefaultValue(-1)] public float bracketRadius = -1;
|
||||
|
||||
/// <summary>
|
||||
/// If it should be targetable even when super close.
|
||||
/// </summary>
|
||||
public bool targetWhenClose;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum distance that the reference frame can be targeted from. Defaults to double the sphereOfInfluence.
|
||||
/// </summary>
|
||||
[DefaultValue(-1)] public float maxTargetDistance = -1;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using NewHorizons.Utility;
|
||||
using Newtonsoft.Json;
|
||||
@ -55,5 +55,11 @@ namespace NewHorizons.External.Modules.VariableSize
|
||||
/// Colour of the star.
|
||||
/// </summary>
|
||||
public MColor tint;
|
||||
|
||||
/// <summary>
|
||||
/// How far the light from the star can reach.
|
||||
/// </summary>
|
||||
[DefaultValue(50000f)] [Range(0f, double.MaxValue)]
|
||||
public float lightRadius = 50000f;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Builder.Atmosphere;
|
||||
using NewHorizons.Builder.Atmosphere;
|
||||
using NewHorizons.Builder.Body;
|
||||
using NewHorizons.Builder.General;
|
||||
using NewHorizons.Builder.Orbital;
|
||||
@ -33,13 +33,13 @@ namespace NewHorizons.Handlers
|
||||
|
||||
// Set up stars
|
||||
// Need to manage this when there are multiple stars
|
||||
var sun = GameObject.Find("Sun_Body");
|
||||
var sun = SearchUtilities.Find("Sun_Body");
|
||||
var starController = sun.AddComponent<StarController>();
|
||||
starController.Light = GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<Light>();
|
||||
starController.AmbientLight = GameObject.Find("Sun_Body/AmbientLight_SUN").GetComponent<Light>();
|
||||
starController.FaceActiveCamera = GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<FaceActiveCamera>();
|
||||
starController.CSMTextureCacher = GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<CSMTextureCacher>();
|
||||
starController.ProxyShadowLight = GameObject.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<ProxyShadowLight>();
|
||||
starController.Light = SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<Light>();
|
||||
starController.AmbientLight = SearchUtilities.Find("Sun_Body/AmbientLight_SUN").GetComponent<Light>();
|
||||
starController.FaceActiveCamera = SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<FaceActiveCamera>();
|
||||
starController.CSMTextureCacher = SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<CSMTextureCacher>();
|
||||
starController.ProxyShadowLight = SearchUtilities.Find("Sun_Body/Sector_SUN/Effects_SUN/SunLight").GetComponent<ProxyShadowLight>();
|
||||
starController.Intensity = 0.9859f;
|
||||
starController.SunColor = new Color(1f, 0.8845f, 0.6677f, 1f);
|
||||
|
||||
@ -137,7 +137,7 @@ namespace NewHorizons.Handlers
|
||||
catch (Exception)
|
||||
{
|
||||
if (body?.Config?.name == null) Logger.LogError($"How is there no name for {body}");
|
||||
else existingPlanet = GameObject.Find(body.Config.name.Replace(" ", "") + "_Body");
|
||||
else existingPlanet = SearchUtilities.Find(body.Config.name.Replace(" ", "") + "_Body", false);
|
||||
}
|
||||
|
||||
if (existingPlanet != null)
|
||||
@ -252,7 +252,7 @@ namespace NewHorizons.Handlers
|
||||
{
|
||||
foreach (var child in body.Config.removeChildren)
|
||||
{
|
||||
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => GameObject.Find(go.name + "/" + child)?.SetActive(false), 2);
|
||||
Main.Instance.ModHelper.Events.Unity.FireInNUpdates(() => SearchUtilities.Find(go.name + "/" + child)?.SetActive(false), 2);
|
||||
}
|
||||
}
|
||||
|
||||
@ -303,20 +303,17 @@ namespace NewHorizons.Handlers
|
||||
|
||||
if (body.Config.Base.surfaceGravity != 0)
|
||||
{
|
||||
GravityBuilder.Make(go, ao, body.Config);
|
||||
GravityBuilder.Make(go, ao, owRigidBody, body.Config);
|
||||
}
|
||||
|
||||
if (body.Config.Base.hasReferenceFrame)
|
||||
{
|
||||
RFVolumeBuilder.Make(go, owRigidBody, sphereOfInfluence);
|
||||
}
|
||||
RFVolumeBuilder.Make(go, owRigidBody, sphereOfInfluence, body.Config.ReferenceFrame);
|
||||
|
||||
if (body.Config.Base.hasMapMarker)
|
||||
{
|
||||
MarkerBuilder.Make(go, body.Config.name, body.Config);
|
||||
}
|
||||
|
||||
VolumesBuilder.Make(go, body.Config, sphereOfInfluence);
|
||||
VolumesBuilder.Make(go, owRigidBody, body.Config, sphereOfInfluence);
|
||||
|
||||
if (body.Config.FocalPoint != null)
|
||||
{
|
||||
@ -483,9 +480,9 @@ namespace NewHorizons.Handlers
|
||||
}
|
||||
|
||||
// Has to go last probably
|
||||
if (body.Config.Base.cloakRadius != 0f)
|
||||
if (body.Config.Cloak != null && body.Config.Cloak.radius != 0f)
|
||||
{
|
||||
CloakBuilder.Make(go, sector, rb, body.Config.Base.cloakRadius);
|
||||
CloakBuilder.Make(go, sector, rb, body.Config.Cloak, !body.Config.ReferenceFrame.hideInMap, body.Mod);
|
||||
}
|
||||
|
||||
return go;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Utility;
|
||||
using OWML.Utils;
|
||||
using System;
|
||||
@ -33,7 +33,7 @@ namespace NewHorizons.Handlers
|
||||
public static void RemoveSolarSystem()
|
||||
{
|
||||
// Stop the sun from killing the player
|
||||
var sunVolumes = GameObject.Find("Sun_Body/Sector_SUN/Volumes_SUN");
|
||||
var sunVolumes = SearchUtilities.Find("Sun_Body/Sector_SUN/Volumes_SUN");
|
||||
sunVolumes.SetActive(false);
|
||||
|
||||
foreach (var name in _solarSystemBodies)
|
||||
@ -82,11 +82,11 @@ namespace NewHorizons.Handlers
|
||||
break;
|
||||
case AstroObject.Name.CaveTwin:
|
||||
case AstroObject.Name.TowerTwin:
|
||||
DisableBody(GameObject.Find("FocalBody"), delete);
|
||||
DisableBody(GameObject.Find("SandFunnel_Body"), delete);
|
||||
DisableBody(SearchUtilities.Find("FocalBody"), delete);
|
||||
DisableBody(SearchUtilities.Find("SandFunnel_Body"), delete);
|
||||
break;
|
||||
case AstroObject.Name.MapSatellite:
|
||||
DisableBody(GameObject.Find("MapSatellite_Body"), delete);
|
||||
DisableBody(SearchUtilities.Find("MapSatellite_Body"), delete);
|
||||
break;
|
||||
case AstroObject.Name.GiantsDeep:
|
||||
// Might prevent leftover jellyfish from existing
|
||||
@ -100,7 +100,7 @@ namespace NewHorizons.Handlers
|
||||
break;
|
||||
case AstroObject.Name.TimberHearth:
|
||||
// Always just fucking kill this one to stop THE WARP BUG!!!
|
||||
DisableBody(GameObject.Find("StreamingGroup_TH"), true);
|
||||
DisableBody(SearchUtilities.Find("StreamingGroup_TH"), true);
|
||||
|
||||
foreach (var obj in GameObject.FindObjectsOfType<DayNightTracker>())
|
||||
{
|
||||
@ -229,8 +229,8 @@ namespace NewHorizons.Handlers
|
||||
{
|
||||
if (name.Equals("TowerTwin")) name = "AshTwin";
|
||||
if (name.Equals("CaveTwin")) name = "EmberTwin";
|
||||
var distantProxy = GameObject.Find(name + "_DistantProxy");
|
||||
var distantProxyClone = GameObject.Find(name + "_DistantProxy(Clone)");
|
||||
var distantProxy = SearchUtilities.Find(name + "_DistantProxy", false);
|
||||
var distantProxyClone = SearchUtilities.Find(name + "_DistantProxy(Clone)", false);
|
||||
|
||||
if (distantProxy != null) GameObject.Destroy(distantProxy.gameObject);
|
||||
if (distantProxyClone != null) GameObject.Destroy(distantProxyClone.gameObject);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Utility;
|
||||
using NewHorizons.Utility;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
@ -26,7 +26,7 @@ namespace NewHorizons.Handlers
|
||||
_entryIDsToNHBody = new Dictionary<string, NewHorizonsBody>();
|
||||
_nhBodyToAstroIDs = new Dictionary<NewHorizonsBody, string>();
|
||||
|
||||
List<GameObject> gameObjects = SearchUtilities.GetAllChildren(GameObject.Find(PAN_ROOT_PATH));
|
||||
List<GameObject> gameObjects = SearchUtilities.GetAllChildren(SearchUtilities.Find(PAN_ROOT_PATH));
|
||||
_vanillaBodies = gameObjects.ConvertAll(g => g.name).ToArray();
|
||||
_vanillaBodyIDs = gameObjects.ConvertAll(g => g.GetComponent<ShipLogAstroObject>()?.GetID()).ToArray();
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Utility;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
@ -18,7 +18,7 @@ namespace NewHorizons.Handlers
|
||||
{
|
||||
_systems = systems;
|
||||
|
||||
var shipLogRoot = GameObject.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas");
|
||||
var shipLogRoot = SearchUtilities.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas");
|
||||
|
||||
var starChartLog = new GameObject("StarChartMode");
|
||||
starChartLog.SetActive(false);
|
||||
@ -29,7 +29,7 @@ namespace NewHorizons.Handlers
|
||||
|
||||
ShipLogStarChartMode = starChartLog.AddComponent<ShipLogStarChartMode>();
|
||||
|
||||
var reticleImage = GameObject.Instantiate(GameObject.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/DetectiveMode/ReticleImage (1)/"), starChartLog.transform);
|
||||
var reticleImage = GameObject.Instantiate(SearchUtilities.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/DetectiveMode/ReticleImage (1)/"), starChartLog.transform);
|
||||
|
||||
var scaleRoot = new GameObject("ScaleRoot");
|
||||
scaleRoot.transform.parent = starChartLog.transform;
|
||||
@ -45,7 +45,7 @@ namespace NewHorizons.Handlers
|
||||
|
||||
var centerPromptList = shipLogRoot.transform.Find("ScreenPromptListScaleRoot/ScreenPromptList_Center")?.GetComponent<ScreenPromptList>();
|
||||
var upperRightPromptList = shipLogRoot.transform.Find("ScreenPromptListScaleRoot/ScreenPromptList_UpperRight")?.GetComponent<ScreenPromptList>();
|
||||
var oneShotSource = GameObject.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/OneShotAudio_ShipLog")?.GetComponent<OWAudioSource>();
|
||||
var oneShotSource = SearchUtilities.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/OneShotAudio_ShipLog")?.GetComponent<OWAudioSource>();
|
||||
|
||||
_starSystemToFactID = new Dictionary<string, string>();
|
||||
_factIDToStarSystem = new Dictionary<string, string>();
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Builder.StarSystem;
|
||||
using NewHorizons.Builder.StarSystem;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
@ -9,7 +9,7 @@ namespace NewHorizons.Handlers
|
||||
{
|
||||
public static void LoadSystem(NewHorizonsSystem system)
|
||||
{
|
||||
var skybox = GameObject.Find("Skybox/Starfield");
|
||||
var skybox = SearchUtilities.Find("Skybox/Starfield");
|
||||
|
||||
if (system.Config.skybox?.destroyStarField ?? false)
|
||||
{
|
||||
@ -26,6 +26,30 @@ namespace NewHorizons.Handlers
|
||||
var timeLoopController = new GameObject("TimeLoopController");
|
||||
timeLoopController.AddComponent<TimeLoopController>();
|
||||
}
|
||||
|
||||
AudioClip clip = null;
|
||||
if (system.Config.travelAudioClip != null) clip = SearchUtilities.FindResourceOfTypeAndName<AudioClip>(system.Config.travelAudioClip);
|
||||
else if (system.Config.travelAudioFilePath != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
clip = AudioUtilities.LoadAudio(system.Mod.ModHelper.Manifest.ModFolderPath + "/" + system.Config.travelAudioFilePath);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Utility.Logger.LogError($"Couldn't load audio file {system.Config.travelAudioFilePath} : {e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
if (clip != null)
|
||||
{
|
||||
var travelSource = Locator.GetGlobalMusicController()._travelSource;
|
||||
travelSource._audioLibraryClip = AudioType.None;
|
||||
travelSource._clipArrayIndex = 0;
|
||||
travelSource._clipArrayLength = 0;
|
||||
travelSource._clipSelectionOnPlay = OWAudioSource.ClipSelectionOnPlay.MANUAL;
|
||||
travelSource.clip = clip;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ namespace NewHorizons.Handlers
|
||||
{
|
||||
public static void InitSubtitles()
|
||||
{
|
||||
GameObject subtitleContainer = GameObject.Find("TitleMenu/TitleCanvas/TitleLayoutGroup/Logo_EchoesOfTheEye");
|
||||
GameObject subtitleContainer = SearchUtilities.Find("TitleMenu/TitleCanvas/TitleLayoutGroup/Logo_EchoesOfTheEye");
|
||||
|
||||
if (subtitleContainer == null)
|
||||
{
|
||||
@ -60,11 +60,11 @@ namespace NewHorizons.Handlers
|
||||
body3.transform.localRotation = Quaternion.Euler(10f, 0f, 0f);
|
||||
}
|
||||
|
||||
GameObject.Find("Scene/Background/PlanetPivot/Prefab_HEA_Campfire").SetActive(false);
|
||||
GameObject.Find("Scene/Background/PlanetPivot/PlanetRoot").SetActive(false);
|
||||
SearchUtilities.Find("Scene/Background/PlanetPivot/Prefab_HEA_Campfire").SetActive(false);
|
||||
SearchUtilities.Find("Scene/Background/PlanetPivot/PlanetRoot").SetActive(false);
|
||||
|
||||
var lightGO = new GameObject("Light");
|
||||
lightGO.transform.parent = GameObject.Find("Scene/Background").transform;
|
||||
lightGO.transform.parent = SearchUtilities.Find("Scene/Background").transform;
|
||||
lightGO.transform.localPosition = new Vector3(-47.9203f, 145.7596f, 43.1802f);
|
||||
var light = lightGO.AddComponent<Light>();
|
||||
light.color = new Color(1f, 1f, 1f, 1f);
|
||||
@ -98,7 +98,7 @@ namespace NewHorizons.Handlers
|
||||
|
||||
HeightMapBuilder.Make(titleScreenGO, null, heightMap, body.Mod);
|
||||
|
||||
GameObject pivot = GameObject.Instantiate(GameObject.Find("Scene/Background/PlanetPivot"), GameObject.Find("Scene/Background").transform);
|
||||
GameObject pivot = GameObject.Instantiate(SearchUtilities.Find("Scene/Background/PlanetPivot"), SearchUtilities.Find("Scene/Background").transform);
|
||||
pivot.GetComponent<RotateTransform>()._degreesPerSecond = 10f;
|
||||
foreach (Transform child in pivot.transform)
|
||||
{
|
||||
|
||||
@ -116,7 +116,10 @@ namespace NewHorizons
|
||||
public void Start()
|
||||
{
|
||||
// Patches
|
||||
Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly());
|
||||
Harmony harmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly());
|
||||
harmony.Patch(typeof(CloakFieldController).GetMethod("get_" + nameof(CloakFieldController.isPlayerInsideCloak), BindingFlags.Public | BindingFlags.Instance), postfix: new HarmonyMethod(typeof(Patches.LocatorPatches).GetMethod(nameof(Patches.LocatorPatches.CloakFieldController_isPlayerInsideCloak), BindingFlags.Static | BindingFlags.Public)));
|
||||
harmony.Patch(typeof(CloakFieldController).GetMethod("get_" + nameof(CloakFieldController.isProbeInsideCloak), BindingFlags.Public | BindingFlags.Instance), postfix: new HarmonyMethod(typeof(Patches.LocatorPatches).GetMethod(nameof(Patches.LocatorPatches.CloakFieldController_isProbeInsideCloak), BindingFlags.Static | BindingFlags.Public)));
|
||||
harmony.Patch(typeof(CloakFieldController).GetMethod("get_" + nameof(CloakFieldController.isShipInsideCloak), BindingFlags.Public | BindingFlags.Instance), postfix: new HarmonyMethod(typeof(Patches.LocatorPatches).GetMethod(nameof(Patches.LocatorPatches.CloakFieldController_isShipInsideCloak), BindingFlags.Static | BindingFlags.Public)));
|
||||
|
||||
OnChangeStarSystem = new StarSystemEvent();
|
||||
OnStarSystemLoaded = new StarSystemEvent();
|
||||
@ -158,7 +161,14 @@ namespace NewHorizons
|
||||
private static void OnWakeUp()
|
||||
{
|
||||
IsSystemReady = true;
|
||||
Instance.OnStarSystemLoaded?.Invoke(Instance.CurrentStarSystem);
|
||||
try
|
||||
{
|
||||
Instance.OnStarSystemLoaded?.Invoke(Instance.CurrentStarSystem);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.LogError($"Exception thrown when invoking star system loaded event with parameter [{Instance.CurrentStarSystem}] : {e.GetType().FullName} {e.Message} {e.StackTrace}");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSceneUnloaded(Scene scene)
|
||||
@ -189,7 +199,7 @@ namespace NewHorizons
|
||||
}
|
||||
launchController.enabled = false;
|
||||
}
|
||||
var nomaiProbe = GameObject.Find("NomaiProbe_Body");
|
||||
var nomaiProbe = SearchUtilities.Find("NomaiProbe_Body");
|
||||
if (nomaiProbe != null) nomaiProbe.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
@ -220,7 +230,7 @@ namespace NewHorizons
|
||||
|
||||
if (_ship != null)
|
||||
{
|
||||
_ship = GameObject.Find("Ship_Body").InstantiateInactive();
|
||||
_ship = SearchUtilities.Find("Ship_Body").InstantiateInactive();
|
||||
DontDestroyOnLoad(_ship);
|
||||
}
|
||||
|
||||
@ -237,7 +247,7 @@ namespace NewHorizons
|
||||
// Warp drive
|
||||
StarChartHandler.Init(SystemDict.Values.ToArray());
|
||||
HasWarpDrive = StarChartHandler.CanWarp();
|
||||
_shipWarpController = GameObject.Find("Ship_Body").AddComponent<ShipWarpController>();
|
||||
_shipWarpController = SearchUtilities.Find("Ship_Body").AddComponent<ShipWarpController>();
|
||||
_shipWarpController.Init();
|
||||
if (HasWarpDrive == true) EnableWarpDrive();
|
||||
|
||||
@ -250,7 +260,7 @@ namespace NewHorizons
|
||||
if (map != null) map._maxPanDistance = FurthestOrbit * 1.5f;
|
||||
|
||||
// Fix the map satellite
|
||||
GameObject.Find("HearthianMapSatellite_Body").AddComponent<MapSatelliteOrbitFix>();
|
||||
SearchUtilities.Find("HearthianMapSatellite_Body", false).AddComponent<MapSatelliteOrbitFix>();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
63
NewHorizons/Patches/HUDPatches.cs
Normal file
63
NewHorizons/Patches/HUDPatches.cs
Normal file
@ -0,0 +1,63 @@
|
||||
using HarmonyLib;
|
||||
|
||||
namespace NewHorizons.Patches
|
||||
{
|
||||
[HarmonyPatch]
|
||||
public static class HUDPatches
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(HUDMarker), nameof(HUDMarker.Awake))]
|
||||
public static void HUDMarker_Awake(HUDMarker __instance)
|
||||
{
|
||||
GlobalMessenger.AddListener("PlayerEnterCloakField", __instance.OnPlayerEnterCloakField);
|
||||
GlobalMessenger.AddListener("PlayerExitCloakField", __instance.OnPlayerExitCloakField);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(HUDMarker), nameof(HUDMarker.OnDestroy))]
|
||||
public static void HUDMarker_OnDestroy(HUDMarker __instance)
|
||||
{
|
||||
GlobalMessenger.RemoveListener("PlayerEnterCloakField", __instance.OnPlayerEnterCloakField);
|
||||
GlobalMessenger.RemoveListener("PlayerExitCloakField", __instance.OnPlayerExitCloakField);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ProbeHUDMarker), nameof(ProbeHUDMarker.Awake))]
|
||||
public static void ProbeHUDMarker_Awake(ProbeHUDMarker __instance)
|
||||
{
|
||||
GlobalMessenger.AddListener("ProbeEnterCloakField", __instance.RefreshOwnVisibility);
|
||||
GlobalMessenger.AddListener("ProbeExitCloakField", __instance.RefreshOwnVisibility);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ProbeHUDMarker), nameof(ProbeHUDMarker.OnDestroy))]
|
||||
public static void ProbeHUDMarker_OnDestroy(ProbeHUDMarker __instance)
|
||||
{
|
||||
GlobalMessenger.RemoveListener("ProbeEnterCloakField", __instance.RefreshOwnVisibility);
|
||||
GlobalMessenger.RemoveListener("ProbeExitCloakField", __instance.RefreshOwnVisibility);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ShipHUDMarker), nameof(ShipHUDMarker.Awake))]
|
||||
public static void ShipHUDMarker_Awake(ShipHUDMarker __instance)
|
||||
{
|
||||
GlobalMessenger.AddListener("ShipEnterCloakField", __instance.RefreshOwnVisibility);
|
||||
GlobalMessenger.AddListener("ShipExitCloakField", __instance.RefreshOwnVisibility);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ShipHUDMarker), nameof(ShipHUDMarker.OnDestroy))]
|
||||
public static void ShipHUDMarker_OnDestroy(ShipHUDMarker __instance)
|
||||
{
|
||||
GlobalMessenger.RemoveListener("ShipEnterCloakField", __instance.RefreshOwnVisibility);
|
||||
GlobalMessenger.RemoveListener("ShipExitCloakField", __instance.RefreshOwnVisibility);
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(ProbeCamera), nameof(ProbeCamera.HasInterference))]
|
||||
public static void ProbeCamera_HasInterference(ProbeCamera __instance, ref bool __result)
|
||||
{
|
||||
__result = __result || Components.CloakSectorController.isPlayerInside != Components.CloakSectorController.isProbeInside;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
using HarmonyLib;
|
||||
using HarmonyLib;
|
||||
namespace NewHorizons.Patches
|
||||
{
|
||||
[HarmonyPatch]
|
||||
@ -10,5 +10,20 @@ namespace NewHorizons.Patches
|
||||
{
|
||||
return Locator._cloakFieldController == null;
|
||||
}
|
||||
|
||||
public static void CloakFieldController_isPlayerInsideCloak(CloakFieldController __instance, ref bool __result)
|
||||
{
|
||||
__result = __result || Components.CloakSectorController.isPlayerInside;
|
||||
}
|
||||
|
||||
public static void CloakFieldController_isProbeInsideCloak(CloakFieldController __instance, ref bool __result)
|
||||
{
|
||||
__result = __result || Components.CloakSectorController.isProbeInside;
|
||||
}
|
||||
|
||||
public static void CloakFieldController_isShipInsideCloak(CloakFieldController __instance, ref bool __result)
|
||||
{
|
||||
__result = __result || Components.CloakSectorController.isShipInside;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using HarmonyLib;
|
||||
using HarmonyLib;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace NewHorizons.Patches
|
||||
@ -43,5 +43,12 @@ namespace NewHorizons.Patches
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(ReferenceFrameTracker), nameof(ReferenceFrameTracker.UntargetReferenceFrame), new System.Type[] { typeof(bool) })]
|
||||
public static bool ReferenceFrameTracker_UntargetReferenceFrame(ReferenceFrameTracker __instance, bool playAudio)
|
||||
{
|
||||
return __instance != null && __instance._hasTarget && __instance._currentReferenceFrame != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using HarmonyLib;
|
||||
using HarmonyLib;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
namespace NewHorizons.Patches
|
||||
{
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using HarmonyLib;
|
||||
using HarmonyLib;
|
||||
using NewHorizons.Builder.ShipLog;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Handlers;
|
||||
@ -135,8 +135,8 @@ namespace NewHorizons.Patches
|
||||
[HarmonyPatch(typeof(ShipLogMapMode), nameof(ShipLogMapMode.Initialize))]
|
||||
public static void ShipLogMapMode_Initialize(ShipLogMapMode __instance)
|
||||
{
|
||||
GameObject panRoot = GameObject.Find(ShipLogHandler.PAN_ROOT_PATH);
|
||||
GameObject sunObject = GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/Sun");
|
||||
GameObject panRoot = SearchUtilities.Find(ShipLogHandler.PAN_ROOT_PATH);
|
||||
GameObject sunObject = SearchUtilities.Find(ShipLogHandler.PAN_ROOT_PATH + "/Sun");
|
||||
ShipLogAstroObject[][] navMatrix = MapModeBuilder.ConstructMapMode(Main.Instance.CurrentStarSystem, panRoot, __instance._astroObjects, sunObject.layer);
|
||||
if (navMatrix == null || navMatrix.Length <= 1)
|
||||
{
|
||||
@ -151,9 +151,9 @@ namespace NewHorizons.Patches
|
||||
List<GameObject> delete = SearchUtilities.GetAllChildren(panRoot).Where(g => g.name.Contains("_ShipLog") == false).ToList();
|
||||
foreach (GameObject gameObject in delete)
|
||||
{
|
||||
Object.Destroy(GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + gameObject.name));
|
||||
Object.Destroy(SearchUtilities.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + gameObject.name));
|
||||
}
|
||||
if (GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + "SandFunnel") == null)
|
||||
if (SearchUtilities.Find(ShipLogHandler.PAN_ROOT_PATH + "/" + "SandFunnel") == null)
|
||||
{
|
||||
__instance._sandFunnel = __instance.gameObject.AddComponent<ShipLogSandFunnel>();
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using HarmonyLib;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Patches
|
||||
{
|
||||
@ -40,5 +40,26 @@ namespace NewHorizons.Patches
|
||||
__instance._audioSource.SetLocalVolume(num * num * __instance._fade);
|
||||
return false;
|
||||
}
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(SunProxyEffectController), nameof(SunProxyEffectController.UpdateScales))]
|
||||
public static bool SunProxyEffectController_UpdateScales(SunProxyEffectController __instance)
|
||||
{
|
||||
return __instance != null && __instance._surface != null && __instance._fog != null && __instance._fogMaterial != null && __instance._solarFlareEmitter != null && __instance._atmosphere != null;
|
||||
}
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(SunProxyEffectController), nameof(SunProxyEffectController.UpdateAtmosphereRadii))]
|
||||
public static bool SunProxyEffectController_UpdateAtmosphereRadii(SunProxyEffectController __instance)
|
||||
{
|
||||
return __instance != null && __instance.transform != null && __instance.transform.parent != null && __instance._atmosphereMaterial != null;
|
||||
}
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(VanishVolume), nameof(VanishVolume.Shrink))]
|
||||
public static bool VanishVolume_Shrink(VanishVolume __instance, OWRigidbody bodyToShrink)
|
||||
{
|
||||
return __instance != null && __instance.transform != null && __instance._shrinkingBodies != null && __instance._shrinkingBodyLocationData != null && bodyToShrink != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using HarmonyLib;
|
||||
using HarmonyLib;
|
||||
using NewHorizons.Handlers;
|
||||
using NewHorizons.Utility;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Patches
|
||||
{
|
||||
@ -14,7 +15,7 @@ namespace NewHorizons.Patches
|
||||
|
||||
var newPrompt = TranslationHandler.GetTranslation("INTERSTELLAR_MODE", TranslationHandler.TextType.UI);
|
||||
__instance._detectiveModePrompt.SetText(newPrompt);
|
||||
var text = GameObject.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/ScreenPromptListScaleRoot/ScreenPromptList_UpperRight/ScreenPrompt/Text").GetComponent<UnityEngine.UI.Text>();
|
||||
var text = SearchUtilities.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/ScreenPromptListScaleRoot/ScreenPromptList_UpperRight/ScreenPrompt/Text").GetComponent<UnityEngine.UI.Text>();
|
||||
text.text = newPrompt;
|
||||
}
|
||||
|
||||
|
||||
@ -30,6 +30,10 @@
|
||||
"type": "boolean",
|
||||
"description": "Should this planet ever be shown on the title screen?"
|
||||
},
|
||||
"Cloak": {
|
||||
"description": "Add a cloaking field to this planet",
|
||||
"$ref": "#/definitions/CloakModule"
|
||||
},
|
||||
"destroy": {
|
||||
"type": "boolean",
|
||||
"description": "`true` if you want to delete this planet"
|
||||
@ -285,6 +289,25 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"CloakModule": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"radius": {
|
||||
"type": "number",
|
||||
"description": "Radius of the cloaking field around the planet. It's a bit finicky so experiment with different values. If you\ndon't want a cloak, leave this as 0.",
|
||||
"format": "float"
|
||||
},
|
||||
"audioClip": {
|
||||
"type": "string",
|
||||
"description": "Name of an existing AudioClip in the game that will play when entering the cloaking field."
|
||||
},
|
||||
"audioFilePath": {
|
||||
"type": "string",
|
||||
"description": "Relative filepath to the .wav file to use as the audio. Mutually exclusive with audioClip."
|
||||
}
|
||||
}
|
||||
},
|
||||
"CloudInfo": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@ -384,11 +407,6 @@
|
||||
"type": "boolean",
|
||||
"description": "Set this to true if you are replacing the sun with a different body. Only one object in a star system should ever\nhave this set to true."
|
||||
},
|
||||
"cloakRadius": {
|
||||
"type": "number",
|
||||
"description": "Radius of the cloaking field around the planet. It's a bit finicky so experiment with different values. If you\ndon't want a cloak, leave this as 0.",
|
||||
"format": "float"
|
||||
},
|
||||
"cometTailRotation": {
|
||||
"description": "If it has a comet tail, it'll be oriented according to these Euler angles.",
|
||||
"$ref": "#/definitions/MVector3"
|
||||
@ -410,11 +428,6 @@
|
||||
"type": "boolean",
|
||||
"description": "If the body should have a marker on the map screen."
|
||||
},
|
||||
"hasReferenceFrame": {
|
||||
"type": "boolean",
|
||||
"description": "Allows the object to be targeted on the map.",
|
||||
"default": true
|
||||
},
|
||||
"invulnerableToSun": {
|
||||
"type": "boolean",
|
||||
"description": "Can this planet survive entering a star?"
|
||||
@ -438,6 +451,37 @@
|
||||
"type": "number",
|
||||
"description": "A scale height used for a number of things. Should be the approximate radius of the body.",
|
||||
"format": "float"
|
||||
},
|
||||
"zeroGravityRadius": {
|
||||
"type": "number",
|
||||
"description": "Radius of the zero gravity sphere. This sphere will make gravity no longer affect you while you are inside it. Useful for satellites.",
|
||||
"format": "float"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReferenceFrameModule": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"hideInMap": {
|
||||
"type": "boolean",
|
||||
"description": "Stop the object from being targeted on the map."
|
||||
},
|
||||
"bracketRadius": {
|
||||
"type": "number",
|
||||
"description": "Radius of the brackets that show up when you target this. Defaults to the sphereOfInfluence.",
|
||||
"format": "float",
|
||||
"default": -1
|
||||
},
|
||||
"targetWhenClose": {
|
||||
"type": "boolean",
|
||||
"description": "If it should be targetable even when super close."
|
||||
},
|
||||
"maxTargetDistance": {
|
||||
"type": "number",
|
||||
"description": "The maximum distance that the reference frame can be targeted from. Defaults to double the sphereOfInfluence.",
|
||||
"format": "float",
|
||||
"default": -1
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -775,6 +819,10 @@
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"rename": {
|
||||
"type": "string",
|
||||
"description": "An optional rename of the detail"
|
||||
},
|
||||
"alignToNormal": {
|
||||
"type": "boolean",
|
||||
"description": "Do we override rotation and try to automatically align this object to stand upright on the body's surface?"
|
||||
@ -1730,6 +1778,13 @@
|
||||
"tint": {
|
||||
"description": "Colour of the star.",
|
||||
"$ref": "#/definitions/MColor"
|
||||
},
|
||||
"lightRadius": {
|
||||
"type": "number",
|
||||
"description": "How far the light from the star can reach.",
|
||||
"format": "float",
|
||||
"default": 50000.0,
|
||||
"minimum": 0.0
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -38,6 +38,14 @@
|
||||
"type": "boolean",
|
||||
"description": "Set to `true` if you want to spawn here after dying, not Timber Hearth. You can still warp back to the main star\nsystem."
|
||||
},
|
||||
"travelAudioClip": {
|
||||
"type": "string",
|
||||
"description": "Name of an existing AudioClip in the game that will play when travelling in space."
|
||||
},
|
||||
"travelAudioFilePath": {
|
||||
"type": "string",
|
||||
"description": "Relative filepath to the .wav file to use as the audio. Mutually exclusive with travelAudioClip."
|
||||
},
|
||||
"$schema": {
|
||||
"type": "string",
|
||||
"description": "The schema to validate with"
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
namespace NewHorizons.Utility
|
||||
@ -97,35 +97,35 @@ namespace NewHorizons.Utility
|
||||
switch (primary._name)
|
||||
{
|
||||
case AstroObject.Name.TowerTwin:
|
||||
otherChildren.Add(GameObject.Find("TimeLoopRing_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("TimeLoopRing_Body"));
|
||||
break;
|
||||
case AstroObject.Name.ProbeCannon:
|
||||
otherChildren.Add(GameObject.Find("NomaiProbe_Body"));
|
||||
otherChildren.Add(GameObject.Find("CannonMuzzle_Body"));
|
||||
otherChildren.Add(GameObject.Find("FakeCannonMuzzle_Body (1)"));
|
||||
otherChildren.Add(GameObject.Find("CannonBarrel_Body"));
|
||||
otherChildren.Add(GameObject.Find("FakeCannonBarrel_Body (1)"));
|
||||
otherChildren.Add(GameObject.Find("Debris_Body (1)"));
|
||||
otherChildren.Add(SearchUtilities.Find("NomaiProbe_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("CannonMuzzle_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("FakeCannonMuzzle_Body (1)"));
|
||||
otherChildren.Add(SearchUtilities.Find("CannonBarrel_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("FakeCannonBarrel_Body (1)"));
|
||||
otherChildren.Add(SearchUtilities.Find("Debris_Body (1)"));
|
||||
break;
|
||||
case AstroObject.Name.GiantsDeep:
|
||||
otherChildren.Add(GameObject.Find("BrambleIsland_Body"));
|
||||
otherChildren.Add(GameObject.Find("GabbroIsland_Body"));
|
||||
otherChildren.Add(GameObject.Find("QuantumIsland_Body"));
|
||||
otherChildren.Add(GameObject.Find("StatueIsland_Body"));
|
||||
otherChildren.Add(GameObject.Find("ConstructionYardIsland_Body"));
|
||||
otherChildren.Add(GameObject.Find("GabbroShip_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("BrambleIsland_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("GabbroIsland_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("QuantumIsland_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("StatueIsland_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("ConstructionYardIsland_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("GabbroShip_Body"));
|
||||
break;
|
||||
case AstroObject.Name.WhiteHole:
|
||||
otherChildren.Add(GameObject.Find("WhiteholeStation_Body"));
|
||||
otherChildren.Add(GameObject.Find("WhiteholeStationSuperstructure_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("WhiteholeStation_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("WhiteholeStationSuperstructure_Body"));
|
||||
break;
|
||||
case AstroObject.Name.TimberHearth:
|
||||
otherChildren.Add(GameObject.Find("MiningRig_Body"));
|
||||
otherChildren.Add(GameObject.Find("Ship_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("MiningRig_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("Ship_Body"));
|
||||
break;
|
||||
case AstroObject.Name.DreamWorld:
|
||||
otherChildren.Add(GameObject.Find("BackRaft_Body"));
|
||||
otherChildren.Add(GameObject.Find("SealRaft_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("BackRaft_Body"));
|
||||
otherChildren.Add(SearchUtilities.Find("SealRaft_Body"));
|
||||
break;
|
||||
// For some dumb reason the sun station doesn't use AstroObject.Name.SunStation
|
||||
case AstroObject.Name.CustomString:
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
namespace NewHorizons.Utility.DebugUtilities
|
||||
@ -33,6 +33,7 @@ namespace NewHorizons.Utility.DebugUtilities
|
||||
internal void PrintRaycast()
|
||||
{
|
||||
DebugRaycastData data = Raycast();
|
||||
|
||||
var posText = $"{{\"x\": {data.pos.x}, \"y\": {data.pos.y}, \"z\": {data.pos.z}}}";
|
||||
var normText = $"{{\"x\": {data.norm.x}, \"y\": {data.norm.y}, \"z\": {data.norm.z}}}";
|
||||
|
||||
@ -40,13 +41,16 @@ namespace NewHorizons.Utility.DebugUtilities
|
||||
if(_normalSphere1 != null) GameObject.Destroy(_normalSphere1);
|
||||
if(_normalSphere2 != null) GameObject.Destroy(_normalSphere2);
|
||||
|
||||
_surfaceSphere = AddDebugShape.AddSphere(data.hitObject, 0.1f, Color.green);
|
||||
_normalSphere1 = AddDebugShape.AddSphere(data.hitObject, 0.01f, Color.red);
|
||||
_normalSphere2 = AddDebugShape.AddSphere(data.hitObject, 0.01f, Color.red);
|
||||
if (data.hitObject != null)
|
||||
{
|
||||
_surfaceSphere = AddDebugShape.AddSphere(data.hitObject, 0.1f, Color.green);
|
||||
_normalSphere1 = AddDebugShape.AddSphere(data.hitObject, 0.01f, Color.red);
|
||||
_normalSphere2 = AddDebugShape.AddSphere(data.hitObject, 0.01f, Color.red);
|
||||
|
||||
_surfaceSphere.transform.localPosition = data.pos;
|
||||
_normalSphere1.transform.localPosition = data.pos + data.norm * 0.5f;
|
||||
_normalSphere2.transform.localPosition = data.pos + data.norm;
|
||||
_surfaceSphere.transform.localPosition = data.pos;
|
||||
_normalSphere1.transform.localPosition = data.pos + data.norm * 0.5f;
|
||||
_normalSphere2.transform.localPosition = data.pos + data.norm;
|
||||
}
|
||||
|
||||
Logger.Log($"Raycast hit \"position\": {posText}, \"normal\": {normText} on [{data.bodyName}] at [{data.bodyPath}]");
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
using NewHorizons.Handlers;
|
||||
using NewHorizons.Handlers;
|
||||
using OWML.Common;
|
||||
using OWML.Common.Menus;
|
||||
using System;
|
||||
@ -45,7 +45,7 @@ namespace NewHorizons.Utility.DebugUtilities
|
||||
Logger.LogWarning("Error While Reloading");
|
||||
}
|
||||
|
||||
GameObject.Find("/PauseMenu/PauseMenuManagers").GetComponent<PauseMenuManager>().OnSkipToNextTimeLoop();
|
||||
SearchUtilities.Find("/PauseMenu/PauseMenuManagers").GetComponent<PauseMenuManager>().OnSkipToNextTimeLoop();
|
||||
|
||||
Main.Instance.ChangeCurrentStarSystem(Main.Instance.CurrentStarSystem);
|
||||
|
||||
|
||||
@ -129,7 +129,7 @@ namespace NewHorizons.Utility
|
||||
return null;
|
||||
}
|
||||
|
||||
public static GameObject Find(string path)
|
||||
public static GameObject Find(string path, bool warn = true)
|
||||
{
|
||||
if (CachedGameObjects.ContainsKey(path))
|
||||
{
|
||||
@ -150,7 +150,7 @@ namespace NewHorizons.Utility
|
||||
var t = root?.transform;
|
||||
if (t == null)
|
||||
{
|
||||
Logger.LogWarning($"Couldn't find root object in path ({names[0]})");
|
||||
if (warn) Logger.LogWarning($"Couldn't find root object in path ({names[0]})");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -162,7 +162,7 @@ namespace NewHorizons.Utility
|
||||
{
|
||||
foreach (Transform c in t.GetComponentsInChildren<Transform>(true))
|
||||
{
|
||||
if (t.name.Equals(names[i]))
|
||||
if (c.name.Equals(names[i]))
|
||||
{
|
||||
child = c;
|
||||
break;
|
||||
@ -172,7 +172,7 @@ namespace NewHorizons.Utility
|
||||
|
||||
if (child == null)
|
||||
{
|
||||
Logger.LogWarning($"Couldn't find object in path ({names[i]})");
|
||||
if (warn) Logger.LogWarning($"Couldn't find object in path ({names[i]})");
|
||||
t = null;
|
||||
break;
|
||||
}
|
||||
@ -187,7 +187,7 @@ namespace NewHorizons.Utility
|
||||
if (go == null)
|
||||
{
|
||||
var name = names.Last();
|
||||
Logger.LogWarning($"Couldn't find object {path}, will look for potential matches for name {name}");
|
||||
if (warn) Logger.LogWarning($"Couldn't find object {path}, will look for potential matches for name {name}");
|
||||
go = FindObjectOfTypeAndName<GameObject>(name);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user