CScriptSpiderBallWaypoint progress (#26)

This commit is contained in:
2025-09-28 14:16:38 -07:00
committed by GitHub
parent 00c1024f98
commit ab1f33c245
2 changed files with 254 additions and 8 deletions

View File

@@ -5,18 +5,36 @@
class CScriptSpiderBallWaypoint : public CActor {
public:
CScriptSpiderBallWaypoint(TUniqueId, const rstl::string&, const CEntityInfo&,
const CTransform4f& xf, const bool active, uint w1);
void ClearWaypoints();
void BuildWaypointListAndBounds(CStateManager& mgr);
private:
enum ECheckActiveWaypoint {
kCAW_Check,
kCAW_SkipCheck,
};
CScriptSpiderBallWaypoint(TUniqueId, const rstl::string&, const CEntityInfo&,
const CTransform4f& xf, const bool active, uint w1);
~CScriptSpiderBallWaypoint();
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
void ClearWaypoints();
void BuildWaypointListAndBounds(CStateManager& mgr);
void AddPreviousWaypoint(TUniqueId uid);
void AddPointToTouchBounds(const CVector3f& point);
TUniqueId NextWaypoint(const CStateManager& mgr, ECheckActiveWaypoint check) const;
TUniqueId PreviousWaypoint(const CStateManager& mgr, ECheckActiveWaypoint check) const;
void GetClosestPointAlongWaypoints(CStateManager& mgr, const CVector3f& ballPos,
float maxPointToBallDist,
const CScriptSpiderBallWaypoint** closestWaypoint,
CVector3f& closestPoint, CVector3f& deltaBetweenPoints,
float deltaBetweenInterpPoints,
CVector3f& interpDeltaBetweenPoints) const;
void AddToRenderer(const CFrustumPlanes& frustum, const CStateManager& mgr) const override;
void Accept(IVisitor& visitor) override;
void Render(const CStateManager& mgr) const override;
rstl::optional_object< CAABox > GetTouchBounds() const override;
private:
uint xe8_;
rstl::vector< TUniqueId > xec_waypoints;
rstl::optional_object< CAABox > xfc_aabox;