1#pragma once
2
3#include <basis/seadTypes.h>
4#include <math/seadVector.h>
5
6namespace al {
7class HitSensor;
8class LiveActor;
9class SensorMsg;
10} // namespace al
11
12class IUsePlayerCollision;
13
14class PlayerPushReceiver {
15public:
16 PlayerPushReceiver(const al::LiveActor*);
17
18 void clear();
19 bool receivePushMsg(const al::SensorMsg*, const al::HitSensor*, const al::HitSensor*, f32);
20 bool receivePushMsgHacker(const al::SensorMsg*, const al::HitSensor*, const al::HitSensor*, f32,
21 bool);
22 bool receivePushMsgYoshiNpc(const al::SensorMsg*, const al::HitSensor*, const al::HitSensor*,
23 f32);
24 bool receivePushMsgCap(const al::SensorMsg*, const al::HitSensor*, const al::HitSensor*, f32);
25 bool receivePushMsgGrowPlant(const al::SensorMsg*, const al::HitSensor*, const al::HitSensor*,
26 f32);
27 bool receiveCollidePushMsg(const al::SensorMsg*);
28 void receiveForceDirect(const sead::Vector3f&);
29 void cutPushVec(const sead::Vector3f&);
30 void calcPushVec(sead::Vector3f*) const;
31 void calcOnlyCollidePushVec(sead::Vector3f*) const;
32 void calcPushedVelocity(sead::Vector3f*, const sead::Vector3f&) const;
33 void calcPushedVelocityCommon(sead::Vector3f*, const sead::Vector3f&,
34 const sead::Vector3f&) const;
35 void calcPushedVelocityWithCollide(sead::Vector3f*, const sead::Vector3f&,
36 const IUsePlayerCollision*, f32) const;
37
38private:
39 al::LiveActor* mActor;
40 sead::Vector3f _8;
41 sead::Vector3f _14;
42 sead::Vector3f _20;
43 sead::Vector3f _2c;
44};
45
46static_assert(sizeof(PlayerPushReceiver) == 0x38);
47