Submerge dark matter (#504)

## Improvements
- Ghost matter from detail props and from HazardVolumes now should be
deactivated when going underwater.
This commit is contained in:
Will Corby 2023-01-21 22:57:04 -08:00 committed by GitHub
commit d6479df127
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 1 deletions

View File

@ -39,7 +39,7 @@ namespace NewHorizons.Builder.Body
if (_oceanAmbientLight == null) _oceanAmbientLight = SearchUtilities.Find("Ocean_GD").GetComponent<OceanLODController>()._ambientLight.gameObject.InstantiateInactive().Rename("OceanAmbientLight").DontDestroyOnLoad();
}
public static void Make(GameObject planetGO, Sector sector, OWRigidbody rb, WaterModule module)
public static RadialFluidVolume Make(GameObject planetGO, Sector sector, OWRigidbody rb, WaterModule module)
{
InitPrefabs();
@ -148,6 +148,8 @@ namespace NewHorizons.Builder.Body
waterGO.transform.position = planetGO.transform.position;
waterGO.SetActive(true);
return fluidVolume;
}
}
}

View File

@ -312,6 +312,12 @@ namespace NewHorizons.Builder.Props
if (probeVisuals != null) probeVisuals.gameObject.SetActive(true);
}
if (component is DarkMatterSubmergeController submergeController)
{
var water = planetGO.GetComponentsInChildren<RadialFluidVolume>().FirstOrDefault(x => x._fluidType == FluidVolume.Type.WATER);
submergeController._fluidDetector?.SetDetectableFluid(water);
}
// Fix anglerfish speed on orbiting planets
if (component is AnglerfishController angler)
{

View File

@ -62,6 +62,24 @@ namespace NewHorizons.Builder.Volumes
var visorFrostEffectVolume = go.AddComponent<VisorFrostEffectVolume>();
visorFrostEffectVolume._frostRate = 0.5f;
visorFrostEffectVolume._maxFrost = 0.91f;
var water = planetGO.GetComponentsInChildren<RadialFluidVolume>().FirstOrDefault(x => x._fluidType == FluidVolume.Type.WATER);
if (water != null)
{
var submerge = go.AddComponent<DarkMatterSubmergeController>();
submerge._activeWhenSubmerged = false;
submerge._effectVolumes = new EffectVolume[] { hazardVolume, visorFrostEffectVolume };
// THERE ARE NO RENDERERS??? RUH ROH!!!
var detectorGO = new GameObject("ConstantFluidDetector");
detectorGO.transform.parent = go.transform;
detectorGO.transform.localPosition = Vector3.zero;
detectorGO.layer = LayerMask.NameToLayer("BasicDetector");
var detector = detectorGO.AddComponent<ConstantFluidDetector>();
detector.SetDetectableFluid(water);
submerge._fluidDetector = detector;
}
}
else if (info.type == VolumesModule.HazardVolumeInfo.HazardType.ELECTRICITY)
{