Player: Implement PlayerTrigger::isOnYoshiHackEnd and Util: Implement getPlayerPos (#845)

This commit is contained in:
emvivre 2026-01-05 21:31:05 +01:00 committed by GitHub
parent 78362d1c7f
commit d1a4c9ad95
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 28 additions and 12 deletions

View file

@ -129508,7 +129508,7 @@ Player/PlayerTrigger.o:
- offset: 0x492cd0
size: 12
label: _ZNK13PlayerTrigger16isOnYoshiHackEndEv
status: NotDecompiled
status: Matching
- offset: 0x492cdc
size: 12
label: _ZNK13PlayerTrigger24isOnCollisionExpandCheckEv
@ -157788,7 +157788,7 @@ Util/PlayerUtil.o:
- offset: 0x56f5fc
size: 28
label: _ZN2rs12getPlayerPosEPKN2al9LiveActorE
status: NotDecompiled
status: Matching
- offset: 0x56f618
size: 76
label: _ZN2rs16getPlayerHeadPosEPKN2al9LiveActorE

View file

@ -91,6 +91,10 @@ bool PlayerTrigger::isOn(EMaterialChangeTrigger flag) const {
return mMaterialChangeTrigger.isOnBit(flag);
}
bool PlayerTrigger::isOnYoshiHackEnd() const {
return mCollisionTrigger.isOn(ECollisionTrigger_val1024);
}
bool PlayerTrigger::tryGetRecMaterialCode(const char** dest) const {
if (!mRecMaterialTrigger)
return false;

View file

@ -6,37 +6,40 @@
class PlayerTrigger {
public:
enum ECollisionTrigger : u32 {
// used in PlayerStateHipDrop
// used in PlayerStateHipDrop::isLandTrigger
ECollisionTrigger_val1 = 1,
// used in PlayerStateDamageLife
// used in PlayerStateDamageLife::exeDead
ECollisionTrigger_val6 = 6,
// used in PlayerJudgeWallHitDown
// used in PlayerJudgeWallHitDown::judge
ECollisionTrigger_val9 = 9,
// used in PlayerTrigger::isOnYoshiHackEnd
ECollisionTrigger_val1024 = 1024,
};
enum EAttackSensorTrigger : u32 {
// used in PlayerCounterAfterCapCatch
// used in PlayerCounterAfterCapCatch::isCapCatch
EAttackSensorTrigger_val0 = 0,
};
enum EActionTrigger : u32 {
// used in PlayerStateHipDrop
// used in PlayerStateHipDrop::exeStart
EActionTrigger_val3 = 3,
// used in PlayerStateDamageLife
// used in PlayerStateDamageLife::appear
EActionTrigger_val6 = 6,
// used in PlayerJudgeForceLand
// used in PlayerJudgeForceLand::judge
EActionTrigger_val11 = 11,
// used in PlayerStateSquat
// used in PlayerStateSquat::appear
EActionTrigger_val12 = 12,
// used in PlayerJudgeWallCatch, PlayerJudgeWallKeep
// used in PlayerJudgeWallCatch::update, PlayerJudgeWallKeep::update
EActionTrigger_val30 = 30,
// used in PlayerCounterQuickTurnJump::isEnableTurnJump
EActionTrigger_QuickTurn = 34,
};
enum EReceiveSensorTrigger : u32 {};
enum EPreMovementTrigger : u32 {
// used in PlayerStateDamageLife
// used in PlayerStateDamageLife::appear
EPreMovementTrigger_val2 = 2,
};

9
src/Util/PlayerUtil.cpp Normal file
View file

@ -0,0 +1,9 @@
#include "Util/PlayerUtil.h"
#include "Library/LiveActor/ActorPoseUtil.h"
#include "Library/Player/PlayerUtil.h"
const sead::Vector3f& rs::getPlayerPos(const al::LiveActor* actor) {
const al::LiveActor* player = al::getPlayerActor(actor, 0);
return al::getTrans(player);
}