diff --git a/NewHorizons/Builder/Body/CloakBuilder.cs b/NewHorizons/Builder/Body/CloakBuilder.cs index ccdee273..30ad35e6 100644 --- a/NewHorizons/Builder/Body/CloakBuilder.cs +++ b/NewHorizons/Builder/Body/CloakBuilder.cs @@ -44,14 +44,21 @@ namespace NewHorizons.Builder.Body Object.Destroy(newCloak.GetComponent()); var cloakFieldController = newCloak.GetComponent(); - cloakFieldController._cloakScaleDist = radius * 2000 / 3000f; - cloakFieldController._farCloakRadius = radius * 500 / 3000f; - cloakFieldController._innerCloakRadius = radius * 900 / 3000f; - cloakFieldController._nearCloakRadius = radius * 800 / 3000f; + cloakFieldController._cloakScaleDist = module.cloakScaleDist ?? (radius * 2000 / 3000f); + cloakFieldController._farCloakRadius = module.farCloakRadius ?? (radius * 500 / 3000f); + cloakFieldController._innerCloakRadius = module.innerCloakRadius ?? (radius * 900 / 3000f); + cloakFieldController._nearCloakRadius = module.nearCloakRadius ?? (radius * 800 / 3000f); cloakFieldController._referenceFrameVolume = OWRB._attachedRFVolume; cloakFieldController._exclusionSector = null; - cloakFieldController._cloakSphereVolume = (sector?.transform ?? planetGO.transform).GetComponentInChildren(); + + var cloakVolumeObj = new GameObject("CloakVolume"); + cloakVolumeObj.transform.parent = planetGO.transform; + cloakVolumeObj.transform.localPosition = Vector3.zero; + var cloakVolume = cloakVolumeObj.AddComponent(); + cloakVolume.radius = module.farCloakRadius ?? (radius * 500 / 3000f); + + cloakFieldController._cloakSphereVolume = cloakVolumeObj.AddComponent(); cloakFieldController._ringworldFadeRenderers = new OWRenderer[0]; var cloakSectorController = newCloak.AddComponent(); diff --git a/NewHorizons/External/Modules/CloakModule.cs b/NewHorizons/External/Modules/CloakModule.cs index 83d52012..b0d9a379 100644 --- a/NewHorizons/External/Modules/CloakModule.cs +++ b/NewHorizons/External/Modules/CloakModule.cs @@ -7,11 +7,24 @@ namespace NewHorizons.External.Modules public class CloakModule { /// - /// 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. + /// Radius of the cloaking field around the planet. For the Stranger this is 3000 /// public float radius; + /// + /// Not sure what this is. For the Stranger it is 2000. Optional (will default to be proportional to the cloak radius). + /// + public float? cloakScaleDist; + + /// Not sure what this is. For the Stranger it is 900. Optional (will default to be proportional to the cloak radius). + public float? innerCloakRadius; + + /// Not sure what this is. For the Stranger it is 800. Optional (will default to be proportional to the cloak radius). + public float? nearCloakRadius; + + /// Not sure what this is. For the Stranger it is 500. Optional (will default to be proportional to the cloak radius). + public float? farCloakRadius; + [Obsolete("audioClip is deprecated, please use audio instead")] public string audioClip;