mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
Merge 70f176c2e5 into b30105638f
This commit is contained in:
commit
e23f7e72f6
|
|
@ -72135,37 +72135,37 @@ MapObj/GrowSeedStateRevival.o:
|
|||
label:
|
||||
- _ZN20GrowSeedStateRevivalC1EPKcPN2al9LiveActorEPN4sead4QuatIfEE
|
||||
- _ZN20GrowSeedStateRevivalC2EPKcPN2al9LiveActorEPN4sead4QuatIfEE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x29981c
|
||||
size: 60
|
||||
label: _ZN20GrowSeedStateRevival6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x299858
|
||||
size: 16
|
||||
label: _ZN20GrowSeedStateRevival4killEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x299868
|
||||
size: 152
|
||||
label: _ZN20GrowSeedStateRevival14exeRevivalWaitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x299900
|
||||
size: 72
|
||||
label: _ZN20GrowSeedStateRevival10exeRevivalEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x299948
|
||||
size: 36
|
||||
label: _ZN20GrowSeedStateRevivalD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x29996c
|
||||
size: 8
|
||||
label: _ZNK12_GLOBAL__N_134GrowSeedStateRevivalNrvRevivalWait7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x299974
|
||||
size: 72
|
||||
label: _ZNK12_GLOBAL__N_130GrowSeedStateRevivalNrvRevival7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
MapObj/GrowSeedStateWait.o:
|
||||
'.text':
|
||||
|
|
|
|||
63
src/MapObj/GrowSeedStateRevival.cpp
Normal file
63
src/MapObj/GrowSeedStateRevival.cpp
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#include "MapObj/GrowSeedStateRevival.h"
|
||||
|
||||
#include "Library/LiveActor/ActorActionFunction.h"
|
||||
#include "Library/LiveActor/ActorClippingFunction.h"
|
||||
#include "Library/LiveActor/ActorFlagFunction.h"
|
||||
#include "Library/LiveActor/ActorModelFunction.h"
|
||||
#include "Library/LiveActor/ActorMovementFunction.h"
|
||||
#include "Library/LiveActor/ActorPoseUtil.h"
|
||||
#include "Library/LiveActor/ActorSensorUtil.h"
|
||||
#include "Library/LiveActor/LiveActor.h"
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
|
||||
#include "MapObj/GrowSeedUtil.h"
|
||||
|
||||
namespace {
|
||||
NERVE_IMPL(GrowSeedStateRevival, RevivalWait);
|
||||
NERVE_IMPL(GrowSeedStateRevival, Revival);
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(GrowSeedStateRevival, RevivalWait, Revival);
|
||||
} // namespace
|
||||
|
||||
GrowSeedStateRevival::GrowSeedStateRevival(const char* name, al::LiveActor* actor,
|
||||
sead::Quatf* quat)
|
||||
: al::ActorStateBase(name, actor), mRevivalQuat(quat) {
|
||||
mRevivalTrans.set(al::getTrans(mActor));
|
||||
|
||||
initNerve(&RevivalWait, 0);
|
||||
}
|
||||
|
||||
void GrowSeedStateRevival::appear() {
|
||||
al::NerveStateBase::appear();
|
||||
al::invalidateClipping(mActor);
|
||||
al::invalidateHitSensors(mActor);
|
||||
al::setNerve(this, &RevivalWait);
|
||||
}
|
||||
|
||||
void GrowSeedStateRevival::kill() {
|
||||
al::NerveStateBase::kill();
|
||||
al::validateHitSensors(mActor);
|
||||
}
|
||||
|
||||
void GrowSeedStateRevival::exeRevivalWait() {
|
||||
if (al::isFirstStep(mActor)) {
|
||||
al::hideModelIfShow(mActor);
|
||||
al::setVelocityZero(mActor);
|
||||
al::offCollide(mActor);
|
||||
}
|
||||
|
||||
if (al::isGreaterEqualStep(mActor, 300)) {
|
||||
al::setTrans(mActor, mRevivalTrans);
|
||||
mRevivalQuat->set(sead::Quatf::unit);
|
||||
GrowSeedUtil::rotateRandom(mRevivalQuat);
|
||||
al::setNerve(this, &Revival);
|
||||
}
|
||||
}
|
||||
|
||||
void GrowSeedStateRevival::exeRevival() {
|
||||
al::showModelIfHide(mActor);
|
||||
al::startHitReaction(mActor, "復活");
|
||||
al::onCollide(mActor);
|
||||
kill();
|
||||
}
|
||||
27
src/MapObj/GrowSeedStateRevival.h
Normal file
27
src/MapObj/GrowSeedStateRevival.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#pragma once
|
||||
|
||||
#include <math/seadQuat.h>
|
||||
#include <math/seadVector.h>
|
||||
|
||||
#include "Library/Nerve/NerveStateBase.h"
|
||||
|
||||
namespace al {
|
||||
class LiveActor;
|
||||
} // namespace al
|
||||
|
||||
class GrowSeedStateRevival : public al::ActorStateBase {
|
||||
public:
|
||||
GrowSeedStateRevival(const char* name, al::LiveActor* actor, sead::Quatf* quat);
|
||||
|
||||
void appear() override;
|
||||
void kill() override;
|
||||
|
||||
void exeRevivalWait();
|
||||
void exeRevival();
|
||||
|
||||
private:
|
||||
sead::Vector3f mRevivalTrans = sead::Vector3f::zero;
|
||||
sead::Quatf* mRevivalQuat;
|
||||
};
|
||||
|
||||
static_assert(sizeof(GrowSeedStateRevival) == 0x38);
|
||||
30
src/MapObj/GrowSeedUtil.h
Normal file
30
src/MapObj/GrowSeedUtil.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
#include <math/seadQuat.h>
|
||||
#include <math/seadVector.h>
|
||||
|
||||
namespace al {
|
||||
class HitSensor;
|
||||
class LiveActor;
|
||||
} // namespace al
|
||||
|
||||
class GrowSeedStateWait;
|
||||
|
||||
namespace GrowSeedUtil {
|
||||
|
||||
const char* getGuideLabelName();
|
||||
bool isInDeathArea(const al::LiveActor*);
|
||||
void throwToDirection(al::LiveActor*, const sead::Vector3f&, f32);
|
||||
void throwFromPlayer(al::LiveActor*, f32, f32);
|
||||
f32 getPlantPartsAddRadius();
|
||||
void rotateRandom(sead::Quatf*);
|
||||
void rotateRandomY(sead::Quatf*);
|
||||
void setVelocityForBlow(al::LiveActor*, al::HitSensor*, al::HitSensor*, f32, f32, f32);
|
||||
void setVelocityForReflect(al::LiveActor*, f32, f32);
|
||||
bool checkStrikeArrowBetweenPlayer(al::LiveActor*);
|
||||
bool tryEmitEffectWaterSurface(bool, sead::Vector3f*, al::LiveActor*);
|
||||
void prepareKillByShineGet(al::LiveActor*, const sead::Vector3f&);
|
||||
bool isEnableSeedAttackSpeed(const al::LiveActor*, GrowSeedStateWait*, GrowSeedStateWait*, f32);
|
||||
|
||||
} // namespace GrowSeedUtil
|
||||
Loading…
Reference in a new issue