#pragma once #include "CWeapon.hpp" #include "CToken.hpp" namespace urde { class CElementGen; class CBomb : public CWeapon { zeus::CVector3f x158_velocity; zeus::CVector3f x164_acceleration; zeus::CVector3f x170_prevLocation; float x17c_fuseTime; std::unique_ptr x180_particle1; std::unique_ptr x184_particle2; TUniqueId x188_lightId = kInvalidUniqueId; const CGenDescription* x18c_particle2Obj; bool x190_24_isNotDetonated : 1; bool x190_25_beingDragged : 1; bool x190_26_disableFuse : 1; public: CBomb(const TCachedToken& particle1, const TCachedToken& particle2, TUniqueId uid, TAreaId aid, TUniqueId playerId, float f1, const zeus::CTransform& xf, const CDamageInfo& dInfo); void Accept(IVisitor&) override; void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override; void Think(float, CStateManager&) override; void AddToRenderer(const zeus::CFrustum&, const CStateManager&) const override; void Render(const CStateManager&) const override {} void Touch(CActor&, CStateManager&) override; void Explode(const zeus::CVector3f&, CStateManager&); void UpdateLight(float, CStateManager&); std::optional GetTouchBounds() const override; void SetVelocityWR(const zeus::CVector3f& vel) { x158_velocity = vel; } void SetConstantAccelerationWR(const zeus::CVector3f& acc) { x164_acceleration = acc; } void SetFuseDisabled(bool b) { x190_26_disableFuse = false; } void SetIsBeingDragged(bool b) { x190_25_beingDragged = b; } bool IsBeingDragged() const { return x190_25_beingDragged; } }; } // namespace urde