Allow rafts to be added to Giant's Deep

This commit is contained in:
Noah Pilarski 2022-10-08 17:47:31 -04:00
parent ed5052c169
commit fd2f839d90
2 changed files with 12 additions and 2 deletions

View File

@ -43,8 +43,9 @@ namespace NewHorizons.Builder.Props
// Detectors
var fluidDetector = raftObject.transform.Find("Detector_Raft").GetComponent<RaftFluidDetector>();
var waterVolume = planetGO.GetComponentInChildren<NHFluidVolume>();
var waterVolume = (FluidVolume)planetGO.GetComponentInChildren<NHFluidVolume>() ?? planetGO.GetComponentInChildren<SphereOceanFluidVolume>();
fluidDetector._alignmentFluid = waterVolume;
fluidDetector._buoyancy.checkAgainstWaves = true;
// Light sensors
foreach (var lightSensor in raftObject.GetComponentsInChildren<SingleLightSensor>())

View File

@ -84,7 +84,7 @@ namespace NewHorizons.Patches
[HarmonyPatch(typeof(AlignToSurfaceFluidDetector), "ManagedFixedUpdate")]
public static bool AlignToSurfaceFluidDetector_ManagedFixedUpdate(AlignToSurfaceFluidDetector __instance)
{
if (!(__instance._alignmentFluid is NHFluidVolume)) return true;
if (!(__instance._alignmentFluid is NHFluidVolume || __instance._alignmentFluid is SphereOceanFluidVolume)) return true;
// Mostly copy pasting from the AlignWithDirection class
AsymmetricFluidDetector_ManagedFixedUpdate(__instance);
@ -104,5 +104,14 @@ namespace NewHorizons.Patches
return false;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(FluidVolume), "GetDepthAtPosition")]
public static bool SphereOceanFluidVolume_GetDepthAtPosition(SphereOceanFluidVolume __instance, ref float __result, Vector3 worldPosition)
{
Vector3 vector = __instance.transform.InverseTransformPoint(worldPosition);
__result = Mathf.Sqrt(vector.x * vector.x + vector.z * vector.z + vector.y * vector.y) - __instance._radius;
return false;
}
}
}