This commit is contained in:
guymakinggames 2026-04-23 04:58:19 +00:00 committed by GitHub
commit 7ac21c13a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 84 additions and 8 deletions

View file

@ -50617,27 +50617,27 @@ Item/ShineFukankunWatchObj.o:
- offset: 0x1d5f04
size: 124
label: _ZN21ShineFukankunWatchObjC2EPKc
status: NotDecompiled
status: Matching
- offset: 0x1d5f80
size: 136
label: _ZN21ShineFukankunWatchObjC1EPKc
status: NotDecompiled
status: Matching
- offset: 0x1d6008
size: 188
label: _ZN21ShineFukankunWatchObj4initERKN2al13ActorInitInfoE
status: NotDecompiled
status: Matching
- offset: 0x1d60c4
size: 20
label: _ZN21ShineFukankunWatchObj18initAfterPlacementEv
status: NotDecompiled
status: Matching
- offset: 0x1d60d8
size: 140
label: _ZN21ShineFukankunWatchObj7exeWaitEv
status: NotDecompiled
status: Matching
- offset: 0x1d6164
size: 144
label: _ZNK12_GLOBAL__N_128ShineFukankunWatchObjNrvWait7executeEPN2al11NerveKeeperE
status: NotDecompiled
status: Matching
guess: true
Item/ShineInfo.o:
'.text':
@ -135376,7 +135376,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4bbb5c
size: 52
label: _ZN2al19createActorFunctionI21ShineFukankunWatchObjEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4bbb90
size: 52

View file

@ -0,0 +1,55 @@
#include "Item/ShineFukankunWatchObj.h"
#include <math/seadMatrix.h>
#include <math/seadVector.h>
#include "Library/LiveActor/ActorClippingFunction.h"
#include "Library/LiveActor/ActorInitFunction.h"
#include "Library/LiveActor/ActorInitUtil.h"
#include "Library/LiveActor/ActorPoseUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Item/Shine.h"
#include "MapObj/FukankunZoomTargetFunction.h"
#include "Util/ItemUtil.h"
namespace {
NERVE_IMPL(ShineFukankunWatchObj, Wait);
NERVES_MAKE_NOSTRUCT(ShineFukankunWatchObj, Wait);
} // namespace
ShineFukankunWatchObj::ShineFukankunWatchObj(const char* name) : al::LiveActor(name) {}
void ShineFukankunWatchObj::init(const al::ActorInitInfo& info) {
al::initActorSceneInfo(this, info);
al::initActorPoseTQSV(this);
al::initActorSRT(this, info);
al::initExecutorWatchObj(this, info);
al::initActorClipping(this, info);
al::setClippingInfo(this, 500.0f, nullptr);
al::initNerve(this, &Wait, 0);
FukankunZoomTargetFunction::declareUseFukankunZoomTargetActor(this);
mShine = rs::initShineByPlacementInfo(info);
mShine->initAppearDemoFromHost(info, al::getTrans(this));
makeActorAlive();
}
void ShineFukankunWatchObj::initAfterPlacement() {
return FukankunZoomTargetFunction::registerFukankunZoomTargetActor(
this, 0, sead::Vector3f::zero, nullptr);
}
void ShineFukankunWatchObj::exeWait() {
if (FukankunZoomTargetFunction::getWatchCount(this) >= 121) {
const sead::Matrix34f* linkedShineMtx = nullptr;
if (FukankunZoomTargetFunction::tryGetActiveFukankunLinkedShineMtx(&linkedShineMtx, this)) {
sead::Vector3f linkedShinePos;
linkedShineMtx->getTranslation(linkedShinePos);
mShine->appearWarp(al::getTrans(this), linkedShinePos);
kill();
}
}
}

View file

@ -0,0 +1,20 @@
#pragma once
#include "Library/LiveActor/LiveActor.h"
class Shine;
class ShineFukankunWatchObj : public al::LiveActor {
public:
ShineFukankunWatchObj(const char* name);
void init(const al::ActorInitInfo& info) override;
void initAfterPlacement() override;
void exeWait();
private:
Shine* mShine = nullptr;
};
static_assert(sizeof(ShineFukankunWatchObj) == 0x110);

View file

@ -66,6 +66,7 @@
#include "Item/LifeMaxUpItem2D.h"
#include "Item/LifeUpItem.h"
#include "Item/LifeUpItem2D.h"
#include "Item/ShineFukankunWatchObj.h"
#include "MapObj/AllDeadWatcherWithShine.h"
#include "MapObj/AnagramAlphabet.h"
#include "MapObj/BlockEmpty2D.h"
@ -537,7 +538,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"ShineWithAppearCamera", nullptr},
{"ShineChipWatcher", nullptr},
{"ShineDot", nullptr},
{"ShineFukankunWatchObj", nullptr},
{"ShineFukankunWatchObj", al::createActorFunction<ShineFukankunWatchObj>},
{"ShineTowerRocket", al::createActorFunction<ShineTowerRocket>},
{"ShopBgmPlayer", nullptr},
{"ShopMark", nullptr},