prime/include/MetroidPrime/ScriptObjects/CScriptSpiderBallWaypoint.hpp

44 lines
1.7 KiB
C++

#ifndef _CSCRIPTSPIDERBALLWAYPOINT
#define _CSCRIPTSPIDERBALLWAYPOINT
#include "MetroidPrime/CActor.hpp"
class CScriptSpiderBallWaypoint : public CActor {
public:
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;
};
#endif // _CSCRIPTSPIDERBALLWAYPOINT