mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
Merge 92e33f95bb into b30105638f
This commit is contained in:
commit
8fd8cc1980
|
|
@ -75869,59 +75869,59 @@ MapObj/MeganePartsState.o:
|
|||
label:
|
||||
- _ZN16MeganePartsStateC1EPN2al9LiveActorE
|
||||
- _ZN16MeganePartsStateC2EPN2al9LiveActorE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bcf00
|
||||
size: 60
|
||||
label: _ZN16MeganePartsState6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bcf3c
|
||||
size: 156
|
||||
label: _ZN16MeganePartsState6updateEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bcfd8
|
||||
size: 84
|
||||
label: _ZN16MeganePartsState7exeHideEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bd02c
|
||||
size: 288
|
||||
label: _ZN16MeganePartsState5exeOnEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bd14c
|
||||
size: 172
|
||||
label: _ZN16MeganePartsState11updateAlphaEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bd1f8
|
||||
size: 68
|
||||
label: _ZN16MeganePartsState7exeShowEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bd23c
|
||||
size: 268
|
||||
label: _ZN16MeganePartsState6exeOffEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x2bd348
|
||||
size: 36
|
||||
label: _ZN16MeganePartsStateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x2bd36c
|
||||
size: 88
|
||||
label: _ZNK12_GLOBAL__N_123MeganePartsStateNrvHide7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x2bd3c4
|
||||
size: 8
|
||||
label: _ZNK12_GLOBAL__N_121MeganePartsStateNrvOn7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x2bd3cc
|
||||
size: 8
|
||||
label: _ZNK12_GLOBAL__N_122MeganePartsStateNrvOff7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x2bd3d4
|
||||
size: 68
|
||||
label: _ZNK12_GLOBAL__N_123MeganePartsStateNrvShow7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
MapObj/Mirror.o:
|
||||
'.text':
|
||||
|
|
|
|||
91
src/MapObj/MeganePartsState.cpp
Normal file
91
src/MapObj/MeganePartsState.cpp
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
#include "MapObj/MeganePartsState.h"
|
||||
|
||||
#include "Library/LiveActor/ActorModelFunction.h"
|
||||
#include "Library/LiveActor/ActorPoseUtil.h"
|
||||
#include "Library/LiveActor/LiveActorFunction.h"
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
|
||||
#include "Util/PlayerUtil.h"
|
||||
|
||||
namespace {
|
||||
NERVE_IMPL(MeganePartsState, Hide);
|
||||
NERVE_IMPL(MeganePartsState, On);
|
||||
NERVE_IMPL(MeganePartsState, Off);
|
||||
NERVE_IMPL(MeganePartsState, Show);
|
||||
|
||||
NERVES_MAKE_STRUCT(MeganePartsState, Hide, On, Off, Show);
|
||||
} // namespace
|
||||
|
||||
MeganePartsState::MeganePartsState(al::LiveActor* actor)
|
||||
: al::ActorStateBase("メガネーパーツ状態", actor) {
|
||||
initNerve(&NrvMeganePartsState.Hide, 0);
|
||||
}
|
||||
|
||||
void MeganePartsState::appear() {
|
||||
al::setMaterialProgrammable(mActor);
|
||||
al::hideModelIfShow(mActor);
|
||||
al::NerveStateBase::appear();
|
||||
al::setNerve(this, &NrvMeganePartsState.Hide);
|
||||
}
|
||||
|
||||
bool MeganePartsState::update() {
|
||||
s32 subActorNum = al::getSubActorNum(mActor);
|
||||
for (s32 i = 0; i < subActorNum; i++)
|
||||
al::setTrans(al::getSubActor(mActor, i), al::getTrans(mActor));
|
||||
|
||||
al::setModelMaterialParameterF32(mActor, al::getMaterialName(mActor, 0), "const_single0",
|
||||
mAlpha);
|
||||
|
||||
return al::NerveStateBase::update();
|
||||
}
|
||||
|
||||
void MeganePartsState::exeHide() {
|
||||
if (al::isFirstStep(this))
|
||||
al::hideModelIfShow(mActor);
|
||||
|
||||
if (rs::isPlayerEnableToSeeOddSpace(mActor))
|
||||
al::setNerve(this, &NrvMeganePartsState.On);
|
||||
}
|
||||
|
||||
void MeganePartsState::exeOn() {
|
||||
if (al::isFirstStep(this))
|
||||
al::showModelIfHide(mActor);
|
||||
|
||||
mAlpha = sead::Mathf::min(mAlpha + (1.0f / 15.0f), 1.0f);
|
||||
if (!rs::isPlayerEnableToSeeOddSpace(mActor)) {
|
||||
al::setNerve(this, &NrvMeganePartsState.Off);
|
||||
return;
|
||||
}
|
||||
|
||||
updateAlpha();
|
||||
if (mAlpha == 1.0f)
|
||||
al::setNerve(this, &NrvMeganePartsState.Show);
|
||||
}
|
||||
|
||||
void MeganePartsState::updateAlpha() {
|
||||
if (!al::isExistSubActorKeeper(mActor))
|
||||
return;
|
||||
|
||||
f32 alpha = sead::Mathf::clamp((mAlpha - (7.0f / 15.0f)) / (8.0f / 15.0f), 0.0f, 1.0f);
|
||||
s32 subActorNum = al::getSubActorNum(mActor);
|
||||
for (s32 i = 0; i < subActorNum; i++)
|
||||
al::setModelAlphaMask(al::getSubActor(mActor, i), alpha);
|
||||
}
|
||||
|
||||
void MeganePartsState::exeShow() {
|
||||
if (!rs::isPlayerEnableToSeeOddSpace(mActor))
|
||||
al::setNerve(this, &NrvMeganePartsState.Off);
|
||||
}
|
||||
|
||||
void MeganePartsState::exeOff() {
|
||||
mAlpha = sead::Mathf::clampMin(mAlpha - (1.0f / 15.0f), 0.0f);
|
||||
if (rs::isPlayerEnableToSeeOddSpace(mActor)) {
|
||||
al::setNerve(this, &NrvMeganePartsState.On);
|
||||
return;
|
||||
}
|
||||
|
||||
updateAlpha();
|
||||
if (mAlpha == 0.0f)
|
||||
al::setNerve(this, &NrvMeganePartsState.Hide);
|
||||
}
|
||||
28
src/MapObj/MeganePartsState.h
Normal file
28
src/MapObj/MeganePartsState.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
#include "Library/Nerve/NerveStateBase.h"
|
||||
|
||||
namespace al {
|
||||
class LiveActor;
|
||||
} // namespace al
|
||||
|
||||
class MeganePartsState : public al::ActorStateBase {
|
||||
public:
|
||||
MeganePartsState(al::LiveActor* actor);
|
||||
|
||||
void appear() override;
|
||||
bool update() override;
|
||||
|
||||
void exeHide();
|
||||
void exeOn();
|
||||
void updateAlpha();
|
||||
void exeShow();
|
||||
void exeOff();
|
||||
|
||||
private:
|
||||
f32 mAlpha = 0.0f;
|
||||
};
|
||||
|
||||
static_assert(sizeof(MeganePartsState) == 0x28);
|
||||
Loading…
Reference in a new issue