#pragma once #include "CoreMinimal.h" /** * The carrier's hull as an analytic solid (DESIGN_UE.md sections 4.3 and 5.3, "ICarrierHullShape::PushOut"). The blockout hull has no * physics collision, so Tenders and swimmers ask this instead: a body of revolution about the X axis with radius HullRadius(x), * closed at x = +-60, with the moon-pool shaft as an opening when bOpenPool is set. Carrier-local METRES. */ namespace Descent::Carrier { /** Approximate signed distance to the hull solid (negative inside). With bOpenPool the pool shaft column is free water. */ THEDESCENT_API double HullDistance(const FVector& LocalM, bool bOpenPool); /** Moves a sphere out of the hull. True if it moved; OutNormal is the outward direction it was pushed along. */ THEDESCENT_API bool HullPushOut(FVector& InOutLocalM, double RadiusM, bool bOpenPool, FVector* OutNormal = nullptr); /** True inside the pool shaft's column of water: the pool rectangle, below the pool surface. */ THEDESCENT_API bool InPoolShaft(const FVector& LocalM); }