Scene: Add more actors to ProjectActorFactory (#902)

This commit is contained in:
Narr the Reg 2026-02-13 05:52:16 -06:00 committed by GitHub
parent 994b254fbc
commit 08d592a579
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 120 additions and 44 deletions

View file

@ -133530,7 +133530,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b5f8c
size: 52
label: _ZN2al19createActorFunctionI23AllDeadWatcherWithShineEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b5fc0
size: 52
@ -133775,7 +133775,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b6c00
size: 52
label: _ZN2al19createActorFunctionINS_16CameraRailHolderEEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b6c34
size: 52
@ -133785,7 +133785,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b6c68
size: 52
label: _ZN2al19createActorFunctionINS_16CameraWatchPointEEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b6c9c
size: 52
@ -133850,7 +133850,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b6f14
size: 56
label: _ZN2al19createActorFunctionI9CapHangerEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b6f4c
size: 52
@ -134060,7 +134060,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b780c
size: 52
label: _ZN2al19createActorFunctionI14CoinStackGroupEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b7840
size: 52
@ -134225,7 +134225,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b7ec0
size: 52
label: _ZN2al19createActorFunctionINS_9EffectObjEEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b7ef4
size: 52
@ -134235,22 +134235,22 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b7f28
size: 52
label: _ZN2al19createActorFunctionINS_19EffectObjCameraEmitEEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b7f5c
size: 52
label: _ZN2al19createActorFunctionINS_21EffectObjFollowCameraEEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b7f90
size: 52
label: _ZN2al19createActorFunctionINS_26EffectObjFollowCameraLimitEEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b7fc4
size: 52
label: _ZN2al19createActorFunctionINS_17EffectObjIntervalEEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b7ff8
size: 52
@ -134265,7 +134265,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b8060
size: 52
label: _ZN2al19createActorFunctionI12ElectricWireEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b8094
size: 52
@ -134555,7 +134555,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b8ce8
size: 52
label: _ZN2al19createActorFunctionI13HipDropSwitchEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b8d1c
size: 52
@ -134700,7 +134700,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b93bc
size: 52
label: _ZN2al19createActorFunctionI9KoopaShipEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b93f0
size: 52
@ -134725,7 +134725,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b94c0
size: 52
label: _ZN2al19createActorFunctionI10KuriboMiniEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b94f4
size: 52
@ -134800,7 +134800,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4b97cc
size: 52
label: _ZN2al19createActorFunctionI6MeganeEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4b9800
size: 52
@ -135180,7 +135180,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4baed0
size: 52
label: _ZN2al19createActorFunctionI15RaceAudienceNpcEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4baf04
size: 52
@ -135385,7 +135385,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4bbb90
size: 52
label: _ZN2al19createActorFunctionI16ShineTowerRocketEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4bbbc4
size: 52
@ -135720,7 +135720,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4bc9c8
size: 52
label: _ZN2al19createActorFunctionI14VolleyballBaseEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4bc9fc
size: 52
@ -135730,7 +135730,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4bca30
size: 52
label: _ZN2al19createActorFunctionI13VolleyballNpcEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4bca64
size: 52
@ -135800,7 +135800,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4bcd08
size: 52
label: _ZN2al19createActorFunctionI13WorldWarpHoleEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4bcd3c
size: 52
@ -135990,7 +135990,7 @@ Scene/ProjectActorFactory.o:
- offset: 0x4bd4c0
size: 52
label: _ZN2al19createActorFunctionI5YoshiEEPNS_9LiveActorEPKc
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4bd4f4
size: 52

View file

@ -12,7 +12,7 @@ class SensorMsg;
class CapHanger : public al::LiveActor {
public:
CapHanger(const char*, bool);
CapHanger(const char*, bool = false);
void init(const al::ActorInitInfo& info) override;
void initItem(s32, s32, const al::ActorInitInfo&);
void switchOn();

View file

@ -1,14 +1,69 @@
#pragma once
#include <basis/seadTypes.h>
#include <math/seadVector.h>
#include "Library/LiveActor/LiveActor.h"
#include "Library/Rail/VertexGraph.h"
namespace al {
struct ActorInitInfo;
class HitSensor;
class SensorMsg;
} // namespace al
class ElectricWireVertex;
class ElectricWire : public al::LiveActor {
public:
ElectricWire(const char*);
void init(const al::ActorInitInfo& info) override;
bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
al::HitSensor* self) override;
void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
void initAfterPlacement() override;
void control() override;
bool tryCreateElectricWireLinks(al::LiveActor**, al::LiveActor*, const al::ActorInitInfo&,
const char*, s32);
void createGraph(const al::ActorInitInfo&);
void switchStartOn();
void tryUpdateDisplayModel();
ElectricWireVertex* searchAliveKeeperGraphVertexBySensor(const al::HitSensor*);
void endCapture(const sead::Vector3f*, const sead::Vector3f*, bool, bool);
void afterSpringMovement();
void springMovement();
void exeHackEnd();
void exeStandby();
void exeCaptureWait();
void exeCaptureStart();
void exeCaptureHackStart();
bool trySwitchMoveEndCamera(const ElectricWireVertex*);
void exeSwitchRail();
void trySetPoseGraphMoveDir(f32);
const char* getMoveActionName() const;
const char* getMoveAttackableActionName() const;
const char* getSparkActionName() const;
void exeTurnFrontStartDemo();
void exeMove();
bool checkMovableInputAndNextNerve();
f32 checkEnableMoveByGraph(const al::Graph::PosVertex**, const sead::Vector2f&,
const al::LiveActor*, const al::Graph::PosVertex*);
ElectricWireVertex* checkMovableInputNextByGraph(bool*, const al::Graph::PosVertex*,
const sead::Vector2f&);
void exeMoveEnd();
void onMoveEndEnd();
void exeLightning();
void exeLightningEnd();
void exeLightningEndToMove();
void addDemoActorElectricWirePartsAll();
bool isElectricWireRadio() { return mIsElectricWireRadio; }
private:
char pad1[0x1a1];
char filler_108[0x1a1];
bool mIsElectricWireRadio;
char filler_2aa[0x58];
};
static_assert(sizeof(ElectricWire) == 0x308);

View file

@ -26,6 +26,13 @@
#include "Library/MapObj/WheelMapParts.h"
#include "Library/MapObj/WobbleMapParts.h"
#include "Library/Obj/AllDeadWatcher.h"
#include "Library/Obj/CameraRailHolder.h"
#include "Library/Obj/CameraWatchPoint.h"
#include "Library/Obj/EffectObj.h"
#include "Library/Obj/EffectObjCameraEmit.h"
#include "Library/Obj/EffectObjFollowCamera.h"
#include "Library/Obj/EffectObjFollowCameraLimit.h"
#include "Library/Obj/EffectObjInterval.h"
#include "Boss/BarrierField.h"
#include "Boss/BossForest/BossForestWander.h"
@ -34,6 +41,8 @@
#include "Enemy/Gamane.h"
#include "Enemy/KaronWing.h"
#include "Enemy/Kuribo2D.h"
#include "Enemy/KuriboMini.h"
#include "Enemy/Megane.h"
#include "Enemy/Mummy.h"
#include "Enemy/Nokonoko2D.h"
#include "Enemy/Pecho.h"
@ -49,19 +58,25 @@
#include "Item/CoinCollect2D.h"
#include "Item/CoinLead.h"
#include "Item/CoinRail.h"
#include "Item/CoinStackGroup.h"
#include "Item/LifeMaxUpItem.h"
#include "Item/LifeMaxUpItem2D.h"
#include "Item/LifeUpItem.h"
#include "Item/LifeUpItem2D.h"
#include "MapObj/AllDeadWatcherWithShine.h"
#include "MapObj/AnagramAlphabet.h"
#include "MapObj/CapBomb.h"
#include "MapObj/CapHanger.h"
#include "MapObj/CapSwitch.h"
#include "MapObj/ChurchDoor.h"
#include "MapObj/CitySignal.h"
#include "MapObj/CoinCollectHintObj.h"
#include "MapObj/Doshi.h"
#include "MapObj/ElectricWire/ElectricWire.h"
#include "MapObj/FireDrum2D.h"
#include "MapObj/HackFork.h"
#include "MapObj/HipDropSwitch.h"
#include "MapObj/KoopaShip.h"
#include "MapObj/LavaPan.h"
#include "MapObj/MeganeMapParts.h"
#include "MapObj/MoonBasementSlideObj.h"
@ -70,6 +85,7 @@
#include "MapObj/PoleGrabCeil.h"
#include "MapObj/RouletteSwitch.h"
#include "MapObj/SaveFlagCheckObj.h"
#include "MapObj/ShineTowerRocket.h"
#include "MapObj/SignBoardDanger.h"
#include "MapObj/Souvenir.h"
#include "MapObj/StageSwitchSelector.h"
@ -78,13 +94,18 @@
#include "MapObj/TrampleSwitchTimer.h"
#include "MapObj/TransparentWall.h"
#include "MapObj/TreasureBoxKey.h"
#include "MapObj/VolleyballBase.h"
#include "MapObj/VolleyballNet.h"
#include "MapObj/WeightSwitch.h"
#include "MapObj/WorldMapEarth.h"
#include "MapObj/WorldWarpHole.h"
#include "Npc/Bird.h"
#include "Npc/BirdPlayerGlideCtrl.h"
#include "Npc/KuriboGirl.h"
#include "Npc/RaceAudienceNpc.h"
#include "Npc/VocalMike.h"
#include "Npc/VolleyballNpc.h"
#include "Player/Yoshi.h"
const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[] = {
{"AchievementNpc", nullptr},
@ -92,7 +113,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"AirBubbleGenerator", nullptr},
{"AirCurrent", nullptr},
{"AllDeadWatcher", al::createActorFunction<al::AllDeadWatcher>},
{"AllDeadWatcherWithShine", nullptr},
{"AllDeadWatcherWithShine", al::createActorFunction<AllDeadWatcherWithShine>},
{"AmiiboHelpNpc", nullptr},
{"AmiiboNpc", nullptr},
{"AnagramAlphabet", al::createActorFunction<AnagramAlphabet>},
@ -151,9 +172,9 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"CageBreakable", nullptr},
{"CameraDemoGateMapParts", nullptr},
{"CameraDemoKeyMoveMapParts", nullptr},
{"CameraRailHolder", nullptr},
{"CameraRailHolder", al::createActorFunction<al::CameraRailHolder>},
{"CameraSub", nullptr},
{"CameraWatchPoint", nullptr},
{"CameraWatchPoint", al::createActorFunction<al::CameraWatchPoint>},
{"Candlestand", nullptr},
{"CandlestandFire", nullptr},
{"CandlestandInitializer", nullptr},
@ -168,7 +189,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"CapCatapult", nullptr},
{"CapFlower", nullptr},
{"CapFlowerGroup", nullptr},
{"CapHanger", nullptr},
{"CapHanger", al::createActorFunction<CapHanger>},
{"CapMessageAfterInformation", nullptr},
{"CapRack", nullptr},
{"CapRackTimer", nullptr},
@ -213,7 +234,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"CoinLead", al::createActorFunction<CoinLead>},
{"CoinRail", al::createActorFunction<CoinRail>},
{"CoinRing", nullptr},
{"CoinStackGroup", nullptr},
{"CoinStackGroup", al::createActorFunction<CoinStackGroup>},
{"CrystalBreakable", nullptr},
{"DamageBallGenerator", nullptr},
{"DelaySwitch", nullptr},
@ -248,16 +269,16 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"DoorWarp", nullptr},
{"DoorWarpStageChange", nullptr},
{"EchoBlockMapParts", nullptr},
{"EffectObj", nullptr},
{"EffectObj", al::createActorFunction<al::EffectObj>},
{"EffectObjScale", nullptr},
{"EffectObjAlpha", nullptr},
{"EffectObjCameraEmit", nullptr},
{"EffectObjFollowCamera", nullptr},
{"EffectObjFollowCameraLimit", nullptr},
{"EffectObjInterval", nullptr},
{"EffectObjCameraEmit", al::createActorFunction<al::EffectObjCameraEmit>},
{"EffectObjFollowCamera", al::createActorFunction<al::EffectObjFollowCamera>},
{"EffectObjFollowCameraLimit", al::createActorFunction<al::EffectObjFollowCameraLimit>},
{"EffectObjInterval", al::createActorFunction<al::EffectObjInterval>},
{"EffectObjNpcManFar", nullptr},
{"EffectObjQualityChange", nullptr},
{"ElectricWire", nullptr},
{"ElectricWire", al::createActorFunction<ElectricWire>},
{"ElectricWireKoopa", nullptr},
{"EntranceCameraStartObj", nullptr},
{"EventKeyMoveCameraObjNoDemo", nullptr},
@ -316,7 +337,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"HintNpc", nullptr},
{"HintPhoto", nullptr},
{"HintRouteGuidePoint", nullptr},
{"HipDropSwitch", nullptr},
{"HipDropSwitch", al::createActorFunction<HipDropSwitch>},
{"HipDropSwitchSave", nullptr},
{"HipDropSwitchTimer", nullptr},
{"HipDropTile", nullptr},
@ -348,12 +369,12 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"KoopaLv1", nullptr},
{"KoopaLv2", nullptr},
{"KoopaLv3", nullptr},
{"KoopaShip", nullptr},
{"KoopaShip", al::createActorFunction<KoopaShip>},
{"Kuribo2D3D", al::createActorFunction<Kuribo2D>},
{"KuriboGenerator2D3D", nullptr},
{"KuriboGirl", al::createActorFunction<KuriboGirl>},
{"KuriboPossessed", nullptr},
{"KuriboMini", nullptr},
{"KuriboMini", al::createActorFunction<KuriboMini>},
{"KuriboTowerSwitch", nullptr},
{"KuriboWing", nullptr},
{"LavaFryingPan", nullptr},
@ -368,7 +389,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"LongGenerator", nullptr},
{"MarchingCubeBlock", nullptr},
{"MapPartsRoulette", nullptr},
{"Megane", nullptr},
{"Megane", al::createActorFunction<Megane>},
{"MeganeLiftExLift", nullptr},
{"MeganeKeyMoveMapParts", nullptr},
{"MeganeMapParts", al::createActorFunction<MeganeMapParts>},
@ -452,7 +473,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"Pyramid", nullptr},
{"QuestObj", nullptr},
{"RabbitGraph", nullptr},
{"RaceAudienceNpc", nullptr},
{"RaceAudienceNpc", al::createActorFunction<RaceAudienceNpc>},
{"RaceManGoal", nullptr},
{"RaceManRace", nullptr},
{"RaceManStart", nullptr},
@ -502,7 +523,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"ShineChipWatcher", nullptr},
{"ShineDot", nullptr},
{"ShineFukankunWatchObj", nullptr},
{"ShineTowerRocket", nullptr},
{"ShineTowerRocket", al::createActorFunction<ShineTowerRocket>},
{"ShopBgmPlayer", nullptr},
{"ShopMark", nullptr},
{"ShoppingWatcher", nullptr},
@ -596,9 +617,9 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"Utsubo", nullptr},
{"UtsuboWatcher", nullptr},
{"VocalMike", al::createActorFunction<VocalMike>},
{"VolleyballBase", nullptr},
{"VolleyballBase", al::createActorFunction<VolleyballBase>},
{"VolleyballNet", al::createActorFunction<VolleyballNet>},
{"VolleyballNpc", nullptr},
{"VolleyballNpc", al::createActorFunction<VolleyballNpc>},
{"Wanwan", nullptr},
{"WanwanHole", nullptr},
{"WaterAreaMoveModel", nullptr},
@ -613,7 +634,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"WorldMapEarth", al::createActorFunction<WorldMapEarth>},
{"WorldTravelingNpc", nullptr},
{"WorldTravelingPeach", nullptr},
{"WorldWarpHole", nullptr},
{"WorldWarpHole", al::createActorFunction<WorldWarpHole>},
{"Fastener", nullptr},
{"FastenerObj", nullptr},
{"AtmosScatterRequester", nullptr},
@ -654,7 +675,7 @@ const al::NameToCreator<al::ActorCreatorFunction> sProjectActorFactoryEntries[]
{"WheelMapParts", al::createActorFunction<al::WheelMapParts>},
{"WobbleMapParts", al::createActorFunction<al::WobbleMapParts>},
{"WindBlowMapParts", nullptr},
{"Yoshi", nullptr},
{"Yoshi", al::createActorFunction<Yoshi>},
{"YoshiFruit", nullptr},
{"YoshiFruitShineHolder", nullptr},
{"Yukimaru", nullptr},