#ifndef _CSCRIPTAIJUMPPOINT
#define _CSCRIPTAIJUMPPOINT

#include "MetroidPrime/CActor.hpp"

class CScriptAiJumpPoint : public CActor {
private:
  float xe8_apex;
  rstl::optional_object<CAABox> xec_touchBounds;
  bool x108_24_inUse : 1;
  TUniqueId x10a_occupant;
  TUniqueId x10c_currentWaypoint;
  TUniqueId x10e_nextWaypoint;
  float x110_timeRemaining;

public:
  CScriptAiJumpPoint(TUniqueId, const rstl::string&, const CEntityInfo&, const CTransform4f&, bool,
                     float);
  ~CScriptAiJumpPoint();
  
  void Accept(IVisitor& visitor) override;
  void Think(float, CStateManager&) override;
  void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override;
  void AddToRenderer(const CFrustumPlanes&, const CStateManager&) const override;
  void Render(const CStateManager&) const override;
  rstl::optional_object< CAABox > GetTouchBounds() const override;
  bool GetInUse(TUniqueId uid) const;
  TUniqueId GetJumpPoint() const { return x10c_currentWaypoint; }
  TUniqueId GetJumpTarget() const { return x10e_nextWaypoint; }
  float GetJumpApex() const { return xe8_apex; }
};

#endif // _CSCRIPTAIJUMPPOINT
