1#pragma once
2
3#include "Library/LiveActor/LiveActor.h"
4
5namespace al {
6class ParabolicPath;
7}
8
9class PackunPoisonBall : public al::LiveActor {
10public:
11 PackunPoisonBall(al::LiveActor* parent, bool isBig);
12
13 void init(const al::ActorInitInfo& info) override;
14 void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
15 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
16 al::HitSensor* self) override;
17 void appear() override;
18
19 void killBySwitch();
20 void setParam(const sead::Vector3f& trans, const sead::Quatf& quat, bool isHack, f32 shootDist,
21 f32 shootHorizontalSpeed, f32 shootHeight);
22
23 void exeMove();
24 void exeFall();
25 void exePaint();
26
27private:
28 al::LiveActor* mParent;
29 bool mIsBig;
30 al::ParabolicPath* mParabolicPath;
31 s32 mParabolicPathTime = 0;
32 sead::Vector3f mTrans = sead::Vector3f::zero;
33 bool mIsHack = false;
34 f32 mPaintAngle = 0.0f;
35 f32 mShootDist = 200.0f;
36 f32 mShootHorizontalSpeed = 8.0f;
37 f32 mShootHeight = 50.0f;
38 sead::Matrix34f mEffectCollidedWallMtx = sead::Matrix34f::ident;
39};
40
41static_assert(sizeof(PackunPoisonBall) == 0x178);
42