| 1 | #pragma once |
| 2 | |
| 3 | #include <basis/seadTypes.h> |
| 4 | #include <math/seadVector.h> |
| 5 | |
| 6 | namespace al { |
| 7 | class HitSensor; |
| 8 | class LiveActor; |
| 9 | class SensorMsg; |
| 10 | } // namespace al |
| 11 | |
| 12 | class IUsePlayerCollision; |
| 13 | |
| 14 | class PlayerPushReceiver { |
| 15 | public: |
| 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 | |
| 38 | private: |
| 39 | al::LiveActor* mActor; |
| 40 | sead::Vector3f _8; |
| 41 | sead::Vector3f _14; |
| 42 | sead::Vector3f _20; |
| 43 | sead::Vector3f _2c; |
| 44 | }; |
| 45 | |
| 46 | static_assert(sizeof(PlayerPushReceiver) == 0x38); |
| 47 | |