#ifndef D_A_OBJ_TORNADO2_H
#define D_A_OBJ_TORNADO2_H

#include "f_op/f_op_actor_mng.h"
#include "d/d_cc_d.h"

/**
 * @ingroup actors-objects
 * @class daObjTrnd2_c
 * @brief Strong Wind Column
 *
 * @details
 *
 */
class daObjTrnd2_c : public fopAc_ac_c {
public:
    void setPntWind();
    void cutPntWind();
    void movePntWind();
    void setCpsInfo();
    void initBaseMtx();
    void setBaseMtx();
    int Create();
    int create();
    int execute();
    void setParticle();
    void endParticle();
    void startParticle();
    void stopParticle();
    int draw();
    int _delete();

    f32 getTargetLength() { return mTargetLength; }
    f32 getNowLength() { return mNowLength; }
    Vec& getWindEndPos() { return mWindCps.mEnd; }
    u32 getPower() { return fopAcM_GetParamBit(this, 8, 8); }
    u32 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
    u32 getSwType() { return fopAcM_GetParamBit(this, 16, 4); }
    u32 getOffTime() { return fopAcM_GetParamBit(this, 20, 4); }
    u32 getOnTime() { return fopAcM_GetParamBit(this, 24, 4); }
    u32 getScale() { return fopAcM_GetParamBit(this, 28, 1); }

    /* 0x568 */ dCcD_Stts mStts;
    /* 0x5A4 */ dCcD_Cps mCps;
    /* 0x6E8 */ cM3dGCpsS mWindCps;
    /* 0x704 */ f32 mNowLength;
    /* 0x708 */ Mtx mMtx;
    /* 0x738 */ f32 mTargetLength;
    /* 0x73C */ WIND_INFLUENCE mWindInfluence;
    /* 0x768 */ f32 mDefaultRadius;
    /* 0x76C */ f32 mDefaultLength;
    /* 0x770 */ s32 mTimer;
    /* 0x774 */ f32 mWindPower;
    /* 0x778 */ bool mColumnOn;
    /* 0x778 */ JPABaseEmitter* mParticles[3];
};

STATIC_ASSERT(sizeof(daObjTrnd2_c) == 0x788);

#endif /* D_A_OBJ_TORNADO2_H */
