Additions by Sanae (9fc45c7)

Co-authored-by: Sanae <atmatm6000@outlook.com>
This commit is contained in:
MonsterDruide1 2023-08-10 10:10:16 +02:00
parent 2d093584f2
commit 62ce79a118
129 changed files with 3486 additions and 1035 deletions

View File

@ -82,7 +82,7 @@ Address,Quality,Size,Name
0x00000071000025b8,U,000008,_ZNK21HelpAmiiboCountUpCoin14getNerveKeeperEv
0x00000071000025c0,U,000008,_ZThn32_NK21HelpAmiiboCountUpCoin14getNerveKeeperEv
0x00000071000025c8,U,000004,nullsub_1
0x00000071000025cc,U,000004,_ZNK2al5Nerve12executeOnEndEPNS_11NerveKeeperE
0x00000071000025cc,O,000004,_ZNK2al5Nerve12executeOnEndEPNS_11NerveKeeperE
0x00000071000025d0,U,000084,
0x0000007100002624,U,000020,
0x0000007100002638,U,000060,_ZN18HelpAmiiboDirectorC2Ev
@ -4772,15 +4772,15 @@ Address,Quality,Size,Name
0x00000071000b71f8,O,000060,_ZN16MofumofuWarpHole11exeHideMoveEv
0x00000071000b7234,m,000420,_ZN16MofumofuWarpHole11exeDashSignEv
0x00000071000b73d8,O,000064,_ZN16MofumofuWarpHole14exeDashSignEndEv
0x00000071000b7418,O,000068,_ZN12_GLOBAL__N_125MofumofuWarpHoleNrvAppear7executeEPN2al11NerveKeeperE
0x00000071000b745c,O,000100,_ZN12_GLOBAL__N_128MofumofuWarpHoleNrvDisappear7executeEPN2al11NerveKeeperE
0x00000071000b74c0,O,000124,_ZN12_GLOBAL__N_124MofumofuWarpHoleNrvClose7executeEPN2al11NerveKeeperE
0x00000071000b753c,O,000124,_ZN12_GLOBAL__N_136MofumofuWarpHoleNrvCloseAndDisappear7executeEPN2al11NerveKeeperE
0x00000071000b75b8,O,000064,_ZN12_GLOBAL__N_127MofumofuWarpHoleNrvHideMove7executeEPN2al11NerveKeeperE
0x00000071000b75f8,O,000008,_ZN12_GLOBAL__N_127MofumofuWarpHoleNrvDashSign7executeEPN2al11NerveKeeperE
0x00000071000b7600,O,000064,_ZN12_GLOBAL__N_123MofumofuWarpHoleNrvWait7executeEPN2al11NerveKeeperE
0x00000071000b7640,O,000004,_ZN12_GLOBAL__N_127MofumofuWarpHoleNrvHideWait7executeEPN2al11NerveKeeperE
0x00000071000b7644,O,000068,_ZN12_GLOBAL__N_130MofumofuWarpHoleNrvDashSignEnd7executeEPN2al11NerveKeeperE
0x00000071000b7418,U,000068,StartOfNervesForMofumofuWarpHole
0x00000071000b745c,U,000100,
0x00000071000b74c0,U,000124,
0x00000071000b753c,U,000124,
0x00000071000b75b8,U,000064,
0x00000071000b75f8,U,000008,
0x00000071000b7600,U,000064,
0x00000071000b7640,U,000004,
0x00000071000b7644,U,000068,EndOfNervesForMofumofuWarpHole
0x00000071000b7688,U,000140,_ZN22MultiGateKeeperBonfire4initERKN2al13ActorInitInfoE
0x00000071000b7714,U,000076,_ZN22MultiGateKeeperBonfire6deadGKEv
0x00000071000b7760,U,000136,_ZN22MultiGateKeeperWatcherC2EPKc
@ -11521,18 +11521,18 @@ Address,Quality,Size,Name
0x00000071001d8d34,U,000100,_ZN12AimingCursor9exeAppearEv
0x00000071001d8d98,U,000064,_ZN12AimingCursor7exeWaitEv
0x00000071001d8dd8,U,000100,_ZN12AimingCursor6exeEndEv
0x00000071001d8e3c,U,000008,_ZNK2al11LayoutActor14getNerveKeeperEv
0x00000071001d8e44,U,000048,_ZNK2al11LayoutActor7getNameEv
0x00000071001d8e74,U,000008,_ZNK2al11LayoutActor15getEffectKeeperEv
0x00000071001d8e7c,U,000008,_ZNK2al11LayoutActor14getAudioKeeperEv
0x00000071001d8e84,U,000008,_ZNK2al11LayoutActor21getLayoutActionKeeperEv
0x00000071001d8e8c,U,000008,_ZNK2al11LayoutActor15getLayoutKeeperEv
0x00000071001d8e94,U,000004,_ZN2al11LayoutActor7controlEv
0x00000071001d8e98,U,000056,_ZTv0_n24_NK2al11LayoutActor7getNameEv
0x00000071001d8ed0,U,000008,_ZThn8_NK2al11LayoutActor15getLayoutKeeperEv
0x00000071001d8ed8,U,000008,_ZThn16_NK2al11LayoutActor21getLayoutActionKeeperEv
0x00000071001d8ee0,U,000008,_ZThn40_NK2al11LayoutActor14getAudioKeeperEv
0x00000071001d8ee8,U,000008,_ZThn48_NK2al11LayoutActor15getEffectKeeperEv
0x00000071001d8e3c,O,000008,_ZNK2al11LayoutActor14getNerveKeeperEv
0x00000071001d8e44,O,000048,_ZNK2al11LayoutActor7getNameEv
0x00000071001d8e74,O,000008,_ZNK2al11LayoutActor15getEffectKeeperEv
0x00000071001d8e7c,O,000008,_ZNK2al11LayoutActor14getAudioKeeperEv
0x00000071001d8e84,O,000008,_ZNK2al11LayoutActor21getLayoutActionKeeperEv
0x00000071001d8e8c,O,000008,_ZNK2al11LayoutActor15getLayoutKeeperEv
0x00000071001d8e94,O,000004,_ZN2al11LayoutActor7controlEv
0x00000071001d8e98,O,000056,_ZTv0_n24_NK2al11LayoutActor7getNameEv
0x00000071001d8ed0,O,000008,_ZThn8_NK2al11LayoutActor15getLayoutKeeperEv
0x00000071001d8ed8,O,000008,_ZThn16_NK2al11LayoutActor21getLayoutActionKeeperEv
0x00000071001d8ee0,O,000008,_ZThn40_NK2al11LayoutActor14getAudioKeeperEv
0x00000071001d8ee8,O,000008,_ZThn48_NK2al11LayoutActor15getEffectKeeperEv
0x00000071001d8ef0,U,000104,
0x00000071001d8f58,U,000104,
0x00000071001d8fc0,U,000068,
@ -33867,8 +33867,8 @@ Address,Quality,Size,Name
0x0000007100536cb8,U,000160,_ZNK13HintPhotoData19checkSavedHintPhotoEPKc
0x0000007100536d58,U,000172,_ZN13HintPhotoData5writeEPN2al11ByamlWriterE
0x0000007100536e04,U,000304,_ZN13HintPhotoData4readERKN2al9ByamlIterE
0x0000007100536f34,U,000092,nninitStartup
0x0000007100536f90,U,000176,nnMain
0x0000007100536f34,O,000092,nninitStartup
0x0000007100536f90,O,000176,nnMain
0x0000007100537040,U,000760,_ZN13MapDataHolderC1EPK14GameDataHolder
0x0000007100537338,U,002224,_ZN13MapDataHolder11loadMapDataEPN2al8ResourceEPKci
0x0000007100537be8,U,000208,_ZN13MapDataHolder14tryLoadMapDataEPN2al8ResourceEPKci
@ -54835,28 +54835,28 @@ Address,Quality,Size,Name
0x00000071008b1684,U,000180,_ZN2al16startHitReactionEPKNS_11LayoutActorEPKcS4_
0x00000071008b1738,U,000492,_ZN2al11LayoutActorC2EPKc
0x00000071008b1924,U,000340,_ZN2al11LayoutActorC1EPKc
0x00000071008b1a78,U,000084,_ZN2al11LayoutActor6appearEv
0x00000071008b1a78,O,000084,_ZN2al11LayoutActor6appearEv
0x00000071008b1acc,U,000068,_ZN2al11LayoutActor4killEv
0x00000071008b1b10,U,000136,_ZN2al11LayoutActor8movementEv
0x00000071008b1b98,U,000072,_ZN2al11LayoutActor10syncActionEv
0x00000071008b1be0,U,000076,_ZN2al11LayoutActor8calcAnimEb
0x00000071008b1c2c,U,000008,_ZN2al11LayoutActor16initLayoutKeeperEPNS_12LayoutKeeperE
0x00000071008b1c2c,O,000008,_ZN2al11LayoutActor16initLayoutKeeperEPNS_12LayoutKeeperE
0x00000071008b1c34,U,000096,_ZN2al11LayoutActor16initActionKeeperEv
0x00000071008b1c94,U,000008,_ZN2al11LayoutActor20initTextPaneAnimatorEPNS_22LayoutTextPaneAnimatorE
0x00000071008b1c9c,U,000008,_ZN2al11LayoutActor15initExecuteInfoEPNS_17LayoutExecuteInfoE
0x00000071008b1ca4,U,000008,_ZN2al11LayoutActor21initHitReactionKeeperEPNS_17HitReactionKeeperE
0x00000071008b1cac,U,000008,_ZN2al11LayoutActor13initSceneInfoEPNS_15LayoutSceneInfoE
0x00000071008b1cb4,U,000064,_ZN2al11LayoutActor26initLayoutPartsActorKeeperEi
0x00000071008b1cb4,O,000064,_ZN2al11LayoutActor26initLayoutPartsActorKeeperEi
0x00000071008b1cf4,U,000032,_ZN2al11LayoutActor16initEffectKeeperEPNS_12EffectKeeperE
0x00000071008b1d14,U,000008,_ZN2al11LayoutActor15initAudioKeeperEPNS_11AudioKeeperE
0x00000071008b1d1c,U,000076,_ZN2al11LayoutActor9initNerveEPKNS_5NerveEi
0x00000071008b1d68,U,000008,_ZN2al11LayoutActor16setMainGroupNameEPKc
0x00000071008b1d70,U,000012,_ZNK2al11LayoutActor17getCameraDirectorEv
0x00000071008b1d7c,U,000012,_ZThn32_NK2al11LayoutActor17getCameraDirectorEv
0x00000071008b1d88,U,000012,_ZNK2al11LayoutActor17getSceneObjHolderEv
0x00000071008b1d94,U,000012,_ZThn56_NK2al11LayoutActor17getSceneObjHolderEv
0x00000071008b1da0,U,000012,_ZNK2al11LayoutActor16getMessageSystemEv
0x00000071008b1dac,U,000012,_ZThn24_NK2al11LayoutActor16getMessageSystemEv
0x00000071008b1d70,O,000012,_ZNK2al11LayoutActor17getCameraDirectorEv
0x00000071008b1d7c,O,000012,_ZThn32_NK2al11LayoutActor17getCameraDirectorEv
0x00000071008b1d88,O,000012,_ZNK2al11LayoutActor17getSceneObjHolderEv
0x00000071008b1d94,O,000012,_ZThn56_NK2al11LayoutActor17getSceneObjHolderEv
0x00000071008b1da0,O,000012,_ZNK2al11LayoutActor16getMessageSystemEv
0x00000071008b1dac,O,000012,_ZThn24_NK2al11LayoutActor16getMessageSystemEv
0x00000071008b1db8,U,000080,_ZN2al16LayoutActorGroupC2EPKci
0x00000071008b1e08,U,000028,_ZN2al16LayoutActorGroup13registerActorEPNS_11LayoutActorE
0x00000071008b1e24,U,000052,_ZNK2al16LayoutActorGroup13findDeadActorEv
@ -55067,12 +55067,12 @@ Address,Quality,Size,Name
0x00000071008b9854,U,000428,_ZN2al18setTextBoxPaneFontEPN2nn4ui2d4PaneEPKNS0_4font4FontE
0x00000071008b9a00,U,000240,_ZN2al23requestCaptureRecursiveEPN2nn4ui2d4PaneE
0x00000071008b9af0,U,000004,_ZN4sead22WFormatFixedSafeStringILi2048EED0Ev
0x00000071008b9af4,U,000064,_ZN2al22LayoutPartsActorKeeperC2Ei
0x00000071008b9af4,O,000064,_ZN2al22LayoutPartsActorKeeperC2Ei
0x00000071008b9b34,U,000028,_ZN2al22LayoutPartsActorKeeper18resisterPartsActorEPNS_11LayoutActorE
0x00000071008b9b50,U,000080,_ZN2al22LayoutPartsActorKeeper6appearEv
0x00000071008b9b50,O,000080,_ZN2al22LayoutPartsActorKeeper6appearEv
0x00000071008b9ba0,U,000080,_ZN2al22LayoutPartsActorKeeper4killEv
0x00000071008b9bf0,U,000080,_ZN2al22LayoutPartsActorKeeper6updateEv
0x00000071008b9c40,U,000096,_ZN2al22LayoutPartsActorKeeper8calcAnimEb
0x00000071008b9c40,O,000096,_ZN2al22LayoutPartsActorKeeper8calcAnimEb
0x00000071008b9ca0,U,000100,_ZN2al14LayoutResourceC1EPKNS_8ResourceEPKNS_12LayoutSystemEb
0x00000071008b9d04,U,000364,_ZN2al14LayoutResource15addResourceLinkEPKNS_8ResourceE
0x00000071008b9e70,U,000296,_ZN2al14LayoutResource18FindResourceByNameEPmjPKc
@ -56061,9 +56061,9 @@ Address,Quality,Size,Name
0x00000071008d97c0,U,000032,_ZN2al29followRotateFrontAxisUpGroundEPNS_9LiveActorE
0x00000071008d97e0,U,000364,_ZN2al23followRotateFrontAxisUpEPNS_9LiveActorEPKNS_14CollisionPartsE
0x00000071008d994c,O,000032,_ZN2al12ActorFactoryC1EPKc
0x00000071008d996c,U,000020,_ZN2al7isAliveEPKNS_9LiveActorE
0x00000071008d9980,U,000012,_ZN2al6isDeadEPKNS_9LiveActorE
0x00000071008d998c,U,000012,_ZN2al11isNoCollideEPKNS_9LiveActorE
0x00000071008d996c,O,000020,_ZN2al7isAliveEPKNS_9LiveActorE
0x00000071008d9980,O,000012,_ZN2al6isDeadEPKNS_9LiveActorE
0x00000071008d998c,O,000012,_ZN2al11isNoCollideEPKNS_9LiveActorE
0x00000071008d9998,U,000012,_ZN2al10onCalcAnimEPNS_9LiveActorE
0x00000071008d99a4,U,000016,_ZN2al11offCalcAnimEPNS_9LiveActorE
0x00000071008d99b4,U,000020,_ZN2al14validateShadowEPNS_9LiveActorE
@ -60048,11 +60048,11 @@ Address,Quality,Size,Name
0x0000007100959588,O,000076,_ZN2al13NerveExecutor9initNerveEPKNS_5NerveEi
0x00000071009595d4,O,000016,_ZN2al13NerveExecutor11updateNerveEv
0x00000071009595e4,U,000092,_ZN2al11NerveKeeperC2EPNS_9IUseNerveEPKNS_5NerveEi
0x0000007100959640,U,000172,_ZN2al11NerveKeeper6updateEv
0x0000007100959640,O,000172,_ZN2al11NerveKeeper6updateEv
0x00000071009596ec,O,000072,_ZN2al11NerveKeeper14tryChangeNerveEv
0x0000007100959734,O,000076,_ZN2al11NerveKeeper8setNerveEPKNS_5NerveE
0x0000007100959780,O,000020,_ZNK2al11NerveKeeper15getCurrentNerveEv
0x0000007100959794,U,000008,_ZN2al11NerveKeeper15initNerveActionEPNS_15NerveActionCtrlE
0x0000007100959794,O,000008,_ZN2al11NerveKeeper15initNerveActionEPNS_15NerveActionCtrlE
0x000000710095979c,O,000056,_ZN2al14NerveStateBaseC1EPKc
0x00000071009597d4,O,000076,_ZN2al14NerveStateBase6updateEv
0x0000007100959820,O,000064,_ZN2al14ActorStateBaseC1EPKcPNS_9LiveActorE
@ -61884,7 +61884,7 @@ Address,Quality,Size,Name
0x00000071009a3a6c,U,000260,_ZN2al26addPlayerAccelInputGravityEPNS_9LiveActorEPN4sead7Vector3IfEERKNS2_7Vector2IfEEfRKS4_PKNS2_8Matrix34IfEE
0x00000071009a3b70,U,000156,_ZN2al25tryCalcTouchWorldPosPlaneEPKNS_10IUseCameraEPN4sead7Vector3IfEERKS5_S8_
0x00000071009a3c0c,U,000164,_ZN2al27tryCalcTouchWorldPosPlaneXZEPKNS_10IUseCameraEPN4sead7Vector3IfEEf
0x00000071009a3cb0,O,000196,_ZN2al12PlayerHolderC2Ei
0x00000071009a3cb0,O,000196,_ZN2al12PlayerHolderC1Ei
0x00000071009a3d74,O,000064,_ZN2al12PlayerHolder5clearEv
0x00000071009a3db4,O,000048,_ZN2al12PlayerHolder14registerPlayerEPNS_9LiveActorEPNS_15PadRumbleKeeperE
0x00000071009a3de4,O,000016,_ZNK2al12PlayerHolder9getPlayerEi
@ -65971,7 +65971,7 @@ Address,Quality,Size,Name
0x0000007100a4cf74,U,000088,_ZN2al12ViewIdHolder9tryCreateERKNS_13PlacementInfoE
0x0000007100a4cfcc,U,000248,_ZN2al12ViewIdHolder4initERKNS_13PlacementInfoE
0x0000007100a4d0c4,U,000016,_ZNK2al12ViewIdHolder9getViewIdEi
0x0000007100a4d0d4,U,000012,_ZN2al12ViewIdHolderC2Ev
0x0000007100a4d0d4,O,000012,_ZN2al12ViewIdHolderC2Ev
0x0000007100a4d0e0,U,000132,_ZN2al12ViewInfoCtrlC2EPKNS_12PlayerHolderEPKNS_15SceneCameraInfoE
0x0000007100a4d164,U,000272,_ZN2al12ViewInfoCtrl13initActorInfoEPNS_17ClippingActorInfoE
0x0000007100a4d274,U,000008,_ZN2al12ViewInfoCtrl21initViewCtrlAreaGroupEPKNS_12AreaObjGroupE
@ -66379,7 +66379,7 @@ Address,Quality,Size,Name
0x0000007100a61a7c,U,000008,_ZN16alSensorFunction19updateHitSensorsAllEPN2al9LiveActorE
0x0000007100a61a84,U,000008,_ZN16alSensorFunction15clearHitSensorsEPN2al9LiveActorE
0x0000007100a61a8c,U,000096,_ZN16alSensorFunction20findSensorTypeByNameEPKc
0x0000007100a61aec,U,000120,_ZN2al14SensorHitGroupC2EiPKc
0x0000007100a61aec,O,000120,_ZN2al14SensorHitGroupC2EiPKc
0x0000007100a61b64,O,000028,_ZN2al14SensorHitGroup3addEPNS_9HitSensorE
0x0000007100a61b80,U,000084,_ZN2al14SensorHitGroup6removeEPNS_9HitSensorE
0x0000007100a61bd4,O,000012,_ZNK2al14SensorHitGroup9getSensorEi

Can't render this file because it is too large.

View File

@ -0,0 +1,41 @@
#pragma once
#include <math/seadMatrix.h>
#include <math/seadVector.h>
#include "al/Library/HostIO/HioNode.h"
namespace al {
class AudioDirector;
class ModelKeeper;
class CameraDirector;
class AudioEventController;
class AudioEffectController;
class AudioRequestKeeperSyncedBgm;
class AudioMic;
class SeKeeper;
class BgmKeeper;
class AudioKeeper : public IUseHioNode {
public:
AudioKeeper(const AudioDirector*);
~AudioKeeper();
void initSeKeeper(const AudioDirector*, const char*, const sead::Vector3f*,
const sead::Matrix34f*, const ModelKeeper*, CameraDirector*);
void initBgmKeeper(const AudioDirector*, const char*);
void validate();
void invalidate();
void startClipped();
void endClipped();
void appear();
void kill();
private:
AudioEventController* mAudioEventController;
AudioEffectController* mAudioEffectController;
AudioRequestKeeperSyncedBgm* mAudioRequestKeeperSyncedBgm;
SeKeeper* mSeKeeper;
BgmKeeper* mBgmKeeper;
AudioMic* mAudioMic;
};
} // namespace al

View File

@ -0,0 +1,41 @@
#pragma once
#include <math/seadMatrix.h>
#include <math/seadVector.h>
#include "al/Library/HostIO/HioNode.h"
namespace al {
class AudioDirector;
class ModelKeeper;
class CameraDirector;
class AudioEventController;
class AudioEffectController;
class AudioRequestKeeperSyncedBgm;
class AudioMic;
class SeKeeper;
class BgmKeeper;
class AudioKeeper : public IUseHioNode {
public:
AudioKeeper(const AudioDirector*);
~AudioKeeper();
void initSeKeeper(const AudioDirector*, const char*, const sead::Vector3f*,
const sead::Matrix34f*, const ModelKeeper*, CameraDirector*);
void initBgmKeeper(const AudioDirector*, const char*);
void validate();
void invalidate();
void startClipped();
void endClipped();
void appear();
void kill();
private:
AudioEventController* mAudioEventController;
AudioEffectController* mAudioEffectController;
AudioRequestKeeperSyncedBgm* mAudioRequestKeeperSyncedBgm;
SeKeeper* mSeKeeper;
BgmKeeper* mBgmKeeper;
AudioMic* mAudioMic;
};
} // namespace al

View File

@ -0,0 +1,20 @@
#pragma once
#include <container/seadBuffer.h>
namespace al {
class PlacementInfo;
class PlacementId;
class ViewIdHolder {
public:
ViewIdHolder();
void init(const PlacementInfo& placementInfo);
static ViewIdHolder* tryCreate(const PlacementInfo& placementInfo);
private:
s32 mNumPlacements = 0;
PlacementId* mPlacementIds = nullptr;
};
} // namespace al

View File

@ -10,186 +10,186 @@ class IUseCamera;
bool isValidReplayController(u32);
sead::ControllerBase* getReplayController(u32); // return type might be wrong
bool isPadTypeJoySingle(int);
bool isPadTypeJoySingle(s32 port);
bool isPadTrigger(int, int);
bool isPadTriggerA(int);
bool isPadTriggerB(int);
bool isPadTriggerX(int);
bool isPadTriggerY(int);
bool isPadTriggerZL(int);
bool isPadTriggerZR(int);
bool isPadTriggerL(int);
bool isPadTriggerR(int);
bool isPadTrigger1(int);
bool isPadTrigger2(int);
bool isPadTriggerUp(int);
bool isPadTriggerDown(int);
bool isPadTriggerLeft(int);
bool isPadTriggerRight(int);
bool isPadTriggerLeftUp(int);
bool isPadTriggerLeftDown(int);
bool isPadTriggerRightUp(int);
bool isPadTriggerRightDown(int);
bool isPadTriggerHome(int);
bool isPadTriggerStart(int);
bool isPadTriggerSelect(int);
bool isPadTriggerPlus(int);
bool isPadTriggerMinus(int);
bool isPadTrigger(s32 port, s32 button);
bool isPadTriggerA(s32 port);
bool isPadTriggerB(s32 port);
bool isPadTriggerX(s32 port);
bool isPadTriggerY(s32 port);
bool isPadTriggerZL(s32 port);
bool isPadTriggerZR(s32 port);
bool isPadTriggerL(s32 port);
bool isPadTriggerR(s32 port);
bool isPadTrigger1(s32 port);
bool isPadTrigger2(s32 port);
bool isPadTriggerUp(s32 port);
bool isPadTriggerDown(s32 port);
bool isPadTriggerLeft(s32 port);
bool isPadTriggerRight(s32 port);
bool isPadTriggerLeftUp(s32 port);
bool isPadTriggerLeftDown(s32 port);
bool isPadTriggerRightUp(s32 port);
bool isPadTriggerRightDown(s32 port);
bool isPadTriggerHome(s32 port);
bool isPadTriggerStart(s32 port);
bool isPadTriggerSelect(s32 port);
bool isPadTriggerPlus(s32 port);
bool isPadTriggerMinus(s32 port);
bool isPadTriggerTouch();
bool isPadTriggerUpLeftStick(int);
bool isPadTriggerDownLeftStick(int);
bool isPadTriggerLeftLeftStick(int);
bool isPadTriggerRightLeftStick(int);
bool isPadTriggerUpRightStick(int);
bool isPadTriggerDownRightStick(int);
bool isPadTriggerLeftRightStick(int);
bool isPadTriggerRightRightStick(int);
bool isPadTriggerAnyABXY(int);
bool isPadTriggerAny(int);
bool isPadTriggerLeftStick(int);
bool isPadTriggerRightStick(int);
bool isPadTriggerPressLeftStick(int);
bool isPadTriggerPressRightStick(int);
bool isPadTriggerUiCursorUp(int); // TODO implement below
bool isPadTriggerUiCursorDown(int);
bool isPadTriggerUiCursorLeft(int);
bool isPadTriggerUiCursorRight(int);
bool isPadTriggerUpLeftStick(s32 port);
bool isPadTriggerDownLeftStick(s32 port);
bool isPadTriggerLeftLeftStick(s32 port);
bool isPadTriggerRightLeftStick(s32 port);
bool isPadTriggerUpRightStick(s32 port);
bool isPadTriggerDownRightStick(s32 port);
bool isPadTriggerLeftRightStick(s32 port);
bool isPadTriggerRightRightStick(s32 port);
bool isPadTriggerAnyABXY(s32 port);
bool isPadTriggerAny(s32 port);
bool isPadTriggerLeftStick(s32 port);
bool isPadTriggerRightStick(s32 port);
bool isPadTriggerPressLeftStick(s32 port);
bool isPadTriggerPressRightStick(s32 port);
bool isPadTriggerUiCursorUp(s32 port); // TODO implement below
bool isPadTriggerUiCursorDown(s32 port);
bool isPadTriggerUiCursorLeft(s32 port);
bool isPadTriggerUiCursorRight(s32 port);
bool isPadRepeatA(int);
bool isPadRepeatB(int);
bool isPadRepeatX(int);
bool isPadRepeatY(int);
bool isPadRepeatZL(int);
bool isPadRepeatZR(int);
bool isPadRepeatL(int);
bool isPadRepeatR(int);
bool isPadRepeat1(int);
bool isPadRepeat2(int);
bool isPadRepeatUp(int);
bool isPadRepeatDown(int);
bool isPadRepeatLeft(int);
bool isPadRepeatRight(int);
bool isPadRepeatHome(int);
bool isPadRepeatStart(int);
bool isPadRepeatSelect(int);
bool isPadRepeatPlus(int);
bool isPadRepeatMinus(int);
bool isPadRepeatA(s32 port);
bool isPadRepeatB(s32 port);
bool isPadRepeatX(s32 port);
bool isPadRepeatY(s32 port);
bool isPadRepeatZL(s32 port);
bool isPadRepeatZR(s32 port);
bool isPadRepeatL(s32 port);
bool isPadRepeatR(s32 port);
bool isPadRepeat1(s32 port);
bool isPadRepeat2(s32 port);
bool isPadRepeatUp(s32 port);
bool isPadRepeatDown(s32 port);
bool isPadRepeatLeft(s32 port);
bool isPadRepeatRight(s32 port);
bool isPadRepeatHome(s32 port);
bool isPadRepeatStart(s32 port);
bool isPadRepeatSelect(s32 port);
bool isPadRepeatPlus(s32 port);
bool isPadRepeatMinus(s32 port);
bool isPadRepeatTouch();
bool isPadRepeatUpLeftStick(int);
bool isPadRepeatDownLeftStick(int);
bool isPadRepeatLeftLeftStick(int);
bool isPadRepeatRightLeftStick(int);
bool isPadRepeatUpRightStick(int);
bool isPadRepeatDownRightStick(int);
bool isPadRepeatLeftRightStick(int);
bool isPadRepeatRightRightStick(int);
bool isPadRepeatUiCursorUp(int); // TODO implement below
bool isPadRepeatUiCursorDown(int);
bool isPadRepeatUiCursorLeft(int);
bool isPadRepeatUiCursorRight(int);
bool isPadRepeatUpLeftStick(s32 port);
bool isPadRepeatDownLeftStick(s32 port);
bool isPadRepeatLeftLeftStick(s32 port);
bool isPadRepeatRightLeftStick(s32 port);
bool isPadRepeatUpRightStick(s32 port);
bool isPadRepeatDownRightStick(s32 port);
bool isPadRepeatLeftRightStick(s32 port);
bool isPadRepeatRightRightStick(s32 port);
bool isPadRepeatUiCursorUp(s32 port); // TODO implement below
bool isPadRepeatUiCursorDown(s32 port);
bool isPadRepeatUiCursorLeft(s32 port);
bool isPadRepeatUiCursorRight(s32 port);
bool isPadHoldPressLeftStick(int);
bool isPadHoldPressRightStick(int);
bool isPadHold(int, int);
bool isPadHoldA(int);
bool isPadHoldB(int);
bool isPadHoldX(int);
bool isPadHoldY(int);
bool isPadHoldZL(int);
bool isPadHoldZR(int);
bool isPadHoldL(int);
bool isPadHoldR(int);
bool isPadHold1(int);
bool isPadHold2(int);
bool isPadHoldUp(int);
bool isPadHoldDown(int);
bool isPadHoldLeft(int);
bool isPadHoldRight(int);
bool isPadHoldLeftUp(int);
bool isPadHoldLeftDown(int);
bool isPadHoldRightUp(int);
bool isPadHoldRightDown(int);
bool isPadHoldHome(int);
bool isPadHoldStart(int);
bool isPadHoldSelect(int);
bool isPadHoldPlus(int);
bool isPadHoldMinus(int);
bool isPadHoldAny(int);
bool isPadHoldAnyWithoutStick(int);
bool isPadHoldPressLeftStick(s32 port);
bool isPadHoldPressRightStick(s32 port);
bool isPadHold(s32, s32);
bool isPadHoldA(s32 port);
bool isPadHoldB(s32 port);
bool isPadHoldX(s32 port);
bool isPadHoldY(s32 port);
bool isPadHoldZL(s32 port);
bool isPadHoldZR(s32 port);
bool isPadHoldL(s32 port);
bool isPadHoldR(s32 port);
bool isPadHold1(s32 port);
bool isPadHold2(s32 port);
bool isPadHoldUp(s32 port);
bool isPadHoldDown(s32 port);
bool isPadHoldLeft(s32 port);
bool isPadHoldRight(s32 port);
bool isPadHoldLeftUp(s32 port);
bool isPadHoldLeftDown(s32 port);
bool isPadHoldRightUp(s32 port);
bool isPadHoldRightDown(s32 port);
bool isPadHoldHome(s32 port);
bool isPadHoldStart(s32 port);
bool isPadHoldSelect(s32 port);
bool isPadHoldPlus(s32 port);
bool isPadHoldMinus(s32 port);
bool isPadHoldAny(s32 port);
bool isPadHoldAnyWithoutStick(s32 port);
bool isPadHoldTouch();
bool isPadHoldUpLeftStick(int);
bool isPadHoldDownLeftStick(int);
bool isPadHoldLeftLeftStick(int);
bool isPadHoldRightLeftStick(int);
bool isPadHoldUpRightStick(int);
bool isPadHoldDownRightStick(int);
bool isPadHoldLeftRightStick(int);
bool isPadHoldRightRightStick(int);
bool isPadHoldLeftStick(int);
bool isPadHoldRightStick(int);
bool isPadHoldUiCursorUp(int);
bool isPadHoldUiCursorDown(int);
bool isPadHoldUiCursorLeft(int);
bool isPadHoldUiCursorRight(int);
bool isPadHoldUpLeftStick(s32 port);
bool isPadHoldDownLeftStick(s32 port);
bool isPadHoldLeftLeftStick(s32 port);
bool isPadHoldRightLeftStick(s32 port);
bool isPadHoldUpRightStick(s32 port);
bool isPadHoldDownRightStick(s32 port);
bool isPadHoldLeftRightStick(s32 port);
bool isPadHoldRightRightStick(s32 port);
bool isPadHoldLeftStick(s32 port);
bool isPadHoldRightStick(s32 port);
bool isPadHoldUiCursorUp(s32 port);
bool isPadHoldUiCursorDown(s32 port);
bool isPadHoldUiCursorLeft(s32 port);
bool isPadHoldUiCursorRight(s32 port);
bool isPadRelease(int, int);
bool isPadReleaseA(int);
bool isPadReleaseB(int);
bool isPadReleaseX(int);
bool isPadReleaseY(int);
bool isPadReleaseZL(int);
bool isPadReleaseZR(int);
bool isPadReleaseL(int);
bool isPadReleaseR(int);
bool isPadRelease1(int);
bool isPadRelease2(int);
bool isPadReleaseUp(int);
bool isPadReleaseDown(int);
bool isPadReleaseLeft(int);
bool isPadReleaseRight(int);
bool isPadReleaseHome(int);
bool isPadReleaseStart(int);
bool isPadReleaseSelect(int);
bool isPadReleasePlus(int);
bool isPadReleaseMinus(int);
bool isPadRelease(s32, s32);
bool isPadReleaseA(s32 port);
bool isPadReleaseB(s32 port);
bool isPadReleaseX(s32 port);
bool isPadReleaseY(s32 port);
bool isPadReleaseZL(s32 port);
bool isPadReleaseZR(s32 port);
bool isPadReleaseL(s32 port);
bool isPadReleaseR(s32 port);
bool isPadRelease1(s32 port);
bool isPadRelease2(s32 port);
bool isPadReleaseUp(s32 port);
bool isPadReleaseDown(s32 port);
bool isPadReleaseLeft(s32 port);
bool isPadReleaseRight(s32 port);
bool isPadReleaseHome(s32 port);
bool isPadReleaseStart(s32 port);
bool isPadReleaseSelect(s32 port);
bool isPadReleasePlus(s32 port);
bool isPadReleaseMinus(s32 port);
bool isPadReleaseTouch();
bool isPadReleaseUpLeftStick(int);
bool isPadReleaseDownLeftStick(int);
bool isPadReleaseLeftLeftStick(int);
bool isPadReleaseRightLeftStick(int);
bool isPadReleaseUpRightStick(int);
bool isPadReleaseDownRightStick(int);
bool isPadReleaseLeftRightStick(int);
bool isPadReleaseRightRightStick(int);
bool isPadReleaseUiCursorUp(int); // TODO implement below
bool isPadReleaseUiCursorDown(int);
bool isPadReleaseUiCursorLeft(int);
bool isPadReleaseUiCursorRight(int);
bool isPadReleaseUpLeftStick(s32 port);
bool isPadReleaseDownLeftStick(s32 port);
bool isPadReleaseLeftLeftStick(s32 port);
bool isPadReleaseRightLeftStick(s32 port);
bool isPadReleaseUpRightStick(s32 port);
bool isPadReleaseDownRightStick(s32 port);
bool isPadReleaseLeftRightStick(s32 port);
bool isPadReleaseRightRightStick(s32 port);
bool isPadReleaseUiCursorUp(s32 port); // TODO implement below
bool isPadReleaseUiCursorDown(s32 port);
bool isPadReleaseUiCursorLeft(s32 port);
bool isPadReleaseUiCursorRight(s32 port);
const sead::Vector2f& getLeftStick(int);
const sead::Vector2f& getRightStick(int);
const sead::Vector2f& getLeftStick(s32 port);
const sead::Vector2f& getRightStick(s32 port);
void getPadCrossDir(sead::Vector2f*, int);
void getPadCrossDirSideways(sead::Vector2f*, int);
void getPadCrossDir(sead::Vector2f*, s32);
void getPadCrossDirSideways(sead::Vector2f*, s32);
void calcTouchScreenPos(sead::Vector2f*);
void calcTouchLayoutPos(sead::Vector2f*);
bool isTouchPosInRect(const sead::Vector2f&, const sead::Vector2f&);
bool isTouchPosInCircle(const sead::Vector2f&, float);
bool isTouchPosInCircleByWorldPos(const sead::Vector2f&, const al::IUseCamera*, float, float);
bool isPadTouchRect(float, float, float, float);
bool isTouchPosInCircle(const sead::Vector2f&, f32);
bool isTouchPosInCircleByWorldPos(const sead::Vector2f&, const IUseCamera*, f32, f32);
bool isPadTouchRect(f32, f32, f32, f32);
void setPadRepeat(int, int, int, int);
void setPadRepeat(s32, s32, s32, s32);
int getPlayerControllerPort(int);
int getTouchPanelPort();
int getMainControllerPort();
int getMainJoyPadDoublePort();
int getMainJoyPadSingleRightPort();
int getMainJoyPadSingleLeftPort();
s32 getPlayerControllerPort(s32 port);
s32 getTouchPanelPort();
s32 getMainControllerPort();
s32 getMainJoyPadDoublePort();
s32 getMainJoyPadSingleRightPort();
s32 getMainJoyPadSingleLeftPort();
bool isSameNpadId(u32, int); // TODO implement
bool isSameNpadId(u32, s32); // TODO implement
} // namespace al

View File

@ -0,0 +1,27 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class AddDemoInfo;
class ActorInitInfo;
class DemoActorHolder;
class LiveActor;
class Scene;
void registDemoRequesterToAddDemoInfo(const LiveActor* actor, const ActorInitInfo& initInfo,
s32 index);
void registActorToDemoInfo(LiveActor* actor, const ActorInitInfo& initInfo);
void addDemoActorFromAddDemoInfo(const LiveActor* actor, const AddDemoInfo* info);
void addDemoActorFromDemoActorHolder(const LiveActor* actor, const DemoActorHolder* holder);
void addDemoActorFromDemoActorHolder(const Scene* scene, const DemoActorHolder* holder);
void setDemoInfoDemoName(const LiveActor* actor, const char* name);
void killForceBeforeDemo(LiveActor* actor);
void prepareSkip(LiveActor* actor, s32);
void invalidateLODWithSubActor(LiveActor*);
} // namespace al
namespace alDemoUtilTmp {
bool isActiveDemo(const al::LiveActor*);
}

View File

@ -0,0 +1,18 @@
#pragma once
// TODO: Someone should add this to nnheaders!
namespace nn::g3d {
class MaterialObj;
}
// TODO: Someone should add this to sead!
namespace sead {
class GraphicsContext;
}
namespace al {
void setDepthFuncNearDraw(sead::GraphicsContext* context);
void setDepthFuncFarDraw(sead::GraphicsContext* context);
void setDepthFuncNearDraw(sead::GraphicsContext* context);
void setDepthFuncFarDraw(sead::GraphicsContext* context);
bool getAlphaTestEnable(nn::g3d::MaterialObj* material);
} // namespace al

View File

@ -0,0 +1,8 @@
#pragma once
namespace al {
class ExecuteDirector {
public:
ExecuteDirector();
};
} // namespace al

View File

@ -1,34 +1,36 @@
#pragma once
namespace al {
struct FactoryEntry {
struct NameToCreator {
const char* mName;
void* mCreationFunction;
};
template <typename T>
using CreatorFunction = T* (*)(const char*);
template <typename T>
class Factory {
public:
inline Factory(const char* factory_name)
: mFactoryName(factory_name), mFactoryEntries(nullptr), mNumFactoryEntries(0) {}
inline Factory(const char* factoryName)
: mFactoryName(factoryName), mFactoryEntries(nullptr), mNumFactoryEntries(0) {}
template <int N>
inline Factory(const char* factory_name, al::FactoryEntry (&entries)[N])
: mFactoryName(factory_name) {
inline Factory(const char* factoryName, NameToCreator (&entries)[N])
: mFactoryName(factoryName) {
initFactory(entries);
}
template <int N>
inline void initFactory(al::FactoryEntry (&entries)[N]) {
inline void initFactory(NameToCreator (&entries)[N]) {
mFactoryEntries = entries;
mNumFactoryEntries = N;
}
virtual const char* convertName(const char* pName) const {
return pName;
}
virtual const char* convertName(const char* name) const { return name; }
private:
const char* mFactoryName;
al::FactoryEntry* mFactoryEntries;
NameToCreator* mFactoryEntries;
int mNumFactoryEntries;
};

View File

@ -1,8 +0,0 @@
#pragma once
#include <prim/seadSafeString.h>
#include <resource/seadResource.h>
namespace al {
sead::ArchiveRes* loadArchive(const sead::SafeStringBase<char>&);
};

View File

@ -0,0 +1,34 @@
#pragma once
#include <filedevice/seadArchiveFileDevice.h>
#include <prim/seadSafeString.h>
namespace al {
class IAudioResourceLoader;
class Resource;
bool isExistFile(const sead::SafeString& fileName);
bool isExistDirectory(const sead::SafeString& fileName);
bool isExistArchive(const sead::SafeString& fileName);
bool isExistArchive(const sead::SafeString& fileName, const char* ext);
u32 getFileSize(const sead::SafeString& fileName);
u32 calcFileAlignment(const sead::SafeString& fileName);
u32 calcBufferSizeAlignment(const sead::SafeString& fileName);
u8* loadFile(const sead::SafeString& fileName);
void tryLoadFileToBuffer(const sead::SafeString& fileName, u8*, u32, s32);
sead::ArchiveRes* loadArchive(const sead::SafeString& fileName);
void loadArchiveWithExt(const sead::SafeString& fileName, char const* ext);
void tryRequestLoadArchive(const sead::SafeString& fileName, sead::Heap* heap);
void loadSoundItem(u32, u32, IAudioResourceLoader* resLoader);
void tryRequestLoadSoundItem(u32);
void tryRequestPreLoadFile(const Resource* res, s32, sead::Heap* heap,
IAudioResourceLoader* resLoader);
void tryRequestPreLoadFile(const Resource* res, const sead::SafeString& fileName, sead::Heap* heap,
IAudioResourceLoader* resLoader);
void waitLoadDoneAllFile();
void clearFileLoaderEntry();
void makeLocalizedArchivePath(sead::BufferedSafeString* outPath, const sead::SafeString& fileName);
void makeLocalizedArchivePathByCountryCode(sead::BufferedSafeString* outPath,
const sead::SafeString& fileName);
void setFileLoaderThreadPriority(s32 priority);
} // namespace al

View File

@ -1,18 +0,0 @@
#pragma once
namespace al {
class HitSensor;
class SensorHitGroup {
public:
SensorHitGroup(int, const char*);
void add(al::HitSensor*);
void remove(al::HitSensor*);
al::HitSensor* getSensor(int) const;
int _0;
int mSensorCount; // _4
al::HitSensor** mSensors; // _8
};
}; // namespace al

View File

@ -1,12 +1,12 @@
/**
* @file IUseLayout.h
* @brief Interface for classes that are layouts.
*/
#pragma once
#include "al/actor/IUseName.h"
#include "al/Library/HostIO/IUseName.h"
namespace al {
class IUseLayout : public al::IUseName {};
} // namespace al
class LayoutKeeper;
class IUseLayout : virtual public IUseName {
public:
virtual LayoutKeeper* getLayoutKeeper() const = 0;
};
}

View File

@ -0,0 +1,12 @@
#pragma once
#include "al/Library/HostIO/IUseName.h"
namespace al {
class LayoutActionKeeper;
class IUseLayoutAction : virtual public IUseName {
public:
virtual LayoutActionKeeper* getLayoutActionKeeper() const = 0;
};
}

View File

@ -0,0 +1,36 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class IUseLayoutAction;
class Nerve;
void startAction(IUseLayoutAction* layout, const char* actionName, const char* paneName);
void startFreezeAction(IUseLayoutAction* layout, const char* actionName, f32 frame,
const char* paneName);
void startFreezeActionEnd(IUseLayoutAction* layout, const char* actionName, const char* paneName);
void startActionAtRandomFrame(IUseLayoutAction* layout, const char* actionName,
const char* paneName);
void startFreezeGaugeAction(IUseLayoutAction* layout, f32 value, f32 minFrame, f32 maxFrame,
const char* actionName, const char* paneName);
bool tryStartAction(IUseLayoutAction* layout, const char* actionName, const char* paneName);
f32 getActionFrame(const IUseLayoutAction* layout, const char* paneName);
f32 getActionFrameRate(const IUseLayoutAction* layout, const char* paneName);
f32 getActionFrameMax(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
void setActionFrameRate(const IUseLayoutAction* layout, f32 frameRate, const char* paneName);
void setActionFrame(const IUseLayoutAction* layout, f32 frame, const char* paneName);
bool isActionOneTime(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
bool isActionPlaying(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
bool isAnyActionPlaying(const IUseLayoutAction* layout, const char* paneName);
bool isActionEnd(const IUseLayoutAction* layout, const char* paneName);
bool isExistAction(const IUseLayoutAction* layout, const char* actionName);
bool isExistAction(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
void setNerveAtActionEnd(const IUseLayoutAction* layout, const Nerve* nerve);
} // namespace al

View File

@ -1,25 +1,85 @@
#pragma once
#include "al/audio/AudioKeeper.h"
#include "al/camera/CameraDirector.h"
#include "al/effect/EffectKeeper.h"
#include <prim/seadSafeString.h>
#include "al/Library/Audio/IUseAudioKeeper.h"
#include "al/Library/Camera/IUseCamera.h"
#include "al/Library/Effect/IUseEffectKeeper.h"
#include "al/Library/HostIO/HioNode.h"
#include "al/layout/IUseLayout.h"
#include "al/message/IUseMessageSystem.h"
#include "al/Library/Nerve/Nerve.h"
#include "al/Library/Layout/IUseLayout.h"
#include "al/Library/Layout/IUseLayoutAction.h"
#include "al/Library/Message/IUseMessageSystem.h"
#include "al/Library/Nerve/IUseNerve.h"
#include "al/Library/Scene/SceneObjHolder.h"
namespace al {
class NerveKeeper;
class LayoutKeeper;
class LayoutActionKeeper;
class LayoutTextPaneAnimator;
class EffectKeeper;
class AudioKeeper;
class LayoutExecuteInfo;
class HitReactionKeeper;
class LayoutSceneInfo;
class LayoutPartsActorKeeper;
class CameraDirector;
class SceneObjHolder;
class MessageSystem;
class Nerve;
class IUseLayoutAction {};
class LayoutActor : public IUseHioNode,
public IUseNerve,
public IUseLayout,
public IUseLayoutAction,
public IUseMessageSystem,
public IUseCamera,
public IUseAudioKeeper,
public IUseEffectKeeper,
public IUseSceneObjHolder {
public:
LayoutActor(const char*);
class LayoutActor : public al::IUseHioNode,
public al::IUseNerve,
public al::IUseLayout,
public al::IUseLayoutAction,
public al::IUseMessageSystem,
public al::IUseCamera,
public al::IUseAudioKeeper,
public al::IUseEffectKeeper,
public al::IUseSceneObjHolder {};
virtual void appear();
virtual void kill();
virtual void control() {}
virtual void calcAnim(bool recursive);
virtual void movement();
virtual NerveKeeper* getNerveKeeper() const override;
virtual const char* getName() const override;
virtual EffectKeeper* getEffectKeeper() const override;
virtual AudioKeeper* getAudioKeeper() const override;
virtual LayoutActionKeeper* getLayoutActionKeeper() const override;
virtual LayoutKeeper* getLayoutKeeper() const override;
virtual CameraDirector* getCameraDirector() const override;
virtual SceneObjHolder* getSceneObjHolder() const override;
virtual const MessageSystem* getMessageSystem() const override;
void initLayoutKeeper(LayoutKeeper*);
void initActionKeeper();
void initTextPaneAnimator(LayoutTextPaneAnimator*);
void initExecuteInfo(LayoutExecuteInfo*);
void initHitReactionKeeper(HitReactionKeeper*);
void initSceneInfo(LayoutSceneInfo*);
void initLayoutPartsActorKeeper(s32);
void initEffectKeeper(EffectKeeper*);
void initAudioKeeper(AudioKeeper*);
void initNerve(const Nerve*, s32);
void setMainGroupName(const char*);
void syncAction();
private:
sead::FixedSafeString<0x80> mName;
NerveKeeper* mNerveKeeper;
LayoutKeeper* mLayoutKeeper;
LayoutActionKeeper* mLayoutActionKeeper;
LayoutTextPaneAnimator* mTextPaneAnimator;
EffectKeeper* mEffectKeeper;
AudioKeeper* mAudioKeeper;
LayoutExecuteInfo* mExecuteInfo;
HitReactionKeeper* mHitReactionKeeper;
LayoutSceneInfo* mLayoutSceneInfo;
LayoutPartsActorKeeper* mLayoutPartsActorKeeper;
bool mIsAlive;
};
} // namespace al

View File

@ -0,0 +1,7 @@
#pragma once
namespace al {
class LayoutActor;
class LayoutActorGroup {};
}

View File

@ -0,0 +1,19 @@
#pragma once
#include <math/seadVector.h>
namespace al {
class LayoutActor;
class IUseLayout;
bool isActive(LayoutActor* actor);
bool isDead(LayoutActor* actor);
void killLayoutIfActive(LayoutActor* actor);
void appearLayoutIfDead(LayoutActor* actor);
void calcTrans(sead::Vector3f* trans, const IUseLayout*);
const sead::Vector3f& getLocalTrans(const IUseLayout*);
void updateLayoutPaneRecursive(LayoutActor* actor);
} // namespace al

View File

@ -0,0 +1,16 @@
#pragma once
namespace nn::ui2d {
class Layout;
}
namespace al {
class LayoutResource;
class LayoutKeeper {
public:
LayoutKeeper();
void initScreen(nn::ui2d::Layout* layout, LayoutResource* resource);
};
}

View File

@ -0,0 +1,23 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class LayoutActor;
class LayoutPartsActorKeeper {
public:
LayoutPartsActorKeeper(s32 maxActors);
void resisterPartsActor(LayoutActor* actor);
void appear();
void kill();
void update();
void calcAnim(bool recursive);
private:
LayoutActor** mPartsActors = nullptr;
s32 mNumActors = 0;
s32 mMaxActors = 0;
};
} // namespace al

View File

@ -0,0 +1,32 @@
#pragma once
namespace eui {
class FontMgr;
}
namespace al {
class CameraDirector;
class PadRumbleDirector;
class SceneObjHolder;
class MessageSystem;
class GamePadSystem;
class LayoutSceneInfo {
public:
LayoutSceneInfo();
eui::FontMgr* getFontMgr() const { return mFontMgr; }
CameraDirector* getCameraDirector() const { return mCameraDirector; }
PadRumbleDirector* getPadRumbleDirector() const { return mPadRumbleDirector; }
SceneObjHolder* getSceneObjHolder() const { return mSceneObjHolder; }
const MessageSystem* getMessageSystem() const { return mMessageSystem; }
const GamePadSystem* getGamePadSystem() const { return mGamePadSystem; }
private:
eui::FontMgr* mFontMgr = nullptr;
CameraDirector* mCameraDirector = nullptr;
PadRumbleDirector* mPadRumbleDirector = nullptr;
SceneObjHolder* mSceneObjHolder = nullptr;
const MessageSystem* mMessageSystem = nullptr;
const GamePadSystem* mGamePadSystem = nullptr;
};
} // namespace al

View File

@ -0,0 +1,35 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class LiveActor;
class Nerve;
void startAction(LiveActor* actor, const char* actionName);
void startActionAtRandomFrame(LiveActor* actor, const char* actionName);
bool tryStartAction(LiveActor* actor, const char* actionName);
bool tryStartActionIfNotPlaying(LiveActor* actor, const char* actionName);
bool tryStartActionIfActionEnd(LiveActor* actor, const char* actionName);
bool isActionPlaying(LiveActor* actor, const char* actionName);
bool isActionEnd(LiveActor* actor);
bool isExistAction(LiveActor* actor);
bool isExistAction(LiveActor* actor, const char* actionName);
bool isActionOneTime(LiveActor* actor);
bool isActionOneTime(LiveActor* actor, const char* actionName);
const char* getActionName(LiveActor* actor);
s32 getActionFrame(LiveActor* actor);
s32 getActionFrameMax(LiveActor* actor);
s32 getActionFrameMax(LiveActor* actor, const char* actionName);
f32 getActionFrameRate(LiveActor* actor);
void stopAction(LiveActor* actor);
void restartAction(LiveActor* actor);
void copyAction(LiveActor* actor, const LiveActor* sourceActor);
void startNerveAction(LiveActor* actor, const char* actionName);
void setNerveAtActionEnd(LiveActor* actor, const Nerve* nerve);
void resetNerveActionForInit(LiveActor* actor);
} // namespace al

View File

@ -0,0 +1,35 @@
#pragma once
#include <math/seadBoundBox.h>
#include <math/seadVector.h>
namespace al {
class LiveActor;
class ActorInitInfo;
class ClippingDirector;
void initActorClipping(LiveActor* actor, const ActorInitInfo& initInfo);
void initGroupClipping(LiveActor* actor, const ActorInitInfo& initInfo);
f32 getClippingRadius(const LiveActor* actor);
void setClippingInfo(LiveActor* actor, f32, const sead::Vector3f*);
void setClippingObb(LiveActor* actor, const sead::BoundBox3f& boundingBox);
sead::BoundBox3f& getClippingObb(LiveActor* actor);
sead::Vector3f& getClippingCenterPos(const LiveActor* actor);
void setClippingNearDistance(LiveActor* actor, f32 near);
void expandClippingRadiusByShadowLength(LiveActor* actor, sead::Vector3f*, f32 radius);
bool tryExpandClippingToGround(LiveActor* actor, sead::Vector3f*, f32);
bool tryExpandClippingByShadowMaskLength(LiveActor* actor, sead::Vector3f*);
bool tryExpandClippingByDepthShadowLength(LiveActor* actor, sead::Vector3f*);
bool tryExpandClippingByExpandObject(LiveActor*, const ActorInitInfo& initInfo);
bool isClipped(const LiveActor*);
bool isInvalidClipping(const LiveActor*);
void invalidateClipping(LiveActor* actor);
void validateClipping(LiveActor* actor);
void onDrawClipping(LiveActor* actor);
void offDrawClipping(LiveActor* actor);
void onGroupClipping(LiveActor* actor);
void offGroupClipping(LiveActor* actor);
bool isInClippingFrustum(const LiveActor* actor, const sead::Vector3f&, f32, f32, s32);
bool isInClippingFrustum(const ClippingDirector* director, const sead::Vector3f&, f32, f32, s32);
bool isInClippingFrustumAllView(const LiveActor* actor, const sead::Vector3f& pos, f32, f32);
} // namespace al

View File

@ -5,8 +5,8 @@
namespace al {
class LiveActor;
class ActorFactory : public al::Factory<al::LiveActor* (*)(char const*)> {
class ActorFactory : public Factory<CreatorFunction<LiveActor>> {
public:
ActorFactory(const char*);
ActorFactory(const char* factoryName);
};
} // namespace al

View File

@ -0,0 +1,25 @@
#pragma once
namespace al {
class LiveActor;
bool isAlive(const LiveActor* actor);
bool isDead(const LiveActor* actor);
bool isNoCollide(const LiveActor* actor);
void onCalcAnim(LiveActor* actor);
void offCalcAnim(LiveActor* actor);
void validateShadow(LiveActor* actor);
void invalidateShadow(LiveActor* actor);
void onCollide(LiveActor* actor);
void offCollide(LiveActor* actor);
void validateMaterialCode(LiveActor* actor);
void invalidateMaterialCode(LiveActor* actor);
void validatePuddleMaterial(LiveActor* actor);
void invalidatePuddleMaterial(LiveActor* actor);
bool isAreaTarget(const LiveActor* actor);
void onAreaTarget(LiveActor* actor);
void offAreaTarget(LiveActor* actor);
void isUpdateMovementEffectAudioCollisionSensor(const LiveActor* actor);
void onUpdateMovementEffectAudioCollisionSensor(LiveActor* actor);
void offUpdateMovementEffectAudioCollisionSensor(LiveActor* actor);
}

View File

@ -1,6 +1,13 @@
#pragma once
#include "al/Library/Placement/Placement.h"
#include <basis/seadTypes.h>
#include <gfx/seadDrawContext.h>
#include <math/seadBoundBox.h>
#include <math/seadVector.h>
#include <prim/seadSafeString.h>
#include "al/Library/LiveActor/ActorSceneInfo.h"
#include "al/Library/Nerve/NerveUtil.h"
#include "al/Library/Placement/PlacementInfo.h"
namespace al {
class LiveActor;
@ -27,7 +34,6 @@ class ShadowDirector;
class ModelGroup;
class GraphicsSystemInfo;
class ModelDrawBufferCounter;
class LiveActorGroup;
class ActorFactory;
class ActorResourceHolder;
class AudioDirector;
@ -37,59 +43,93 @@ class HitSensorDirector;
class StageSwitchDirector;
class ScreenPointDirector;
class ViewIdHolder;
class SceneCameraInfo;
class Nerve;
class PlacementInfo;
class LayoutInitInfo;
class AudioDirector;
class CollisionDirector;
class GraphicsSystemInfo;
class ActorInitInfo {
public:
ActorInitInfo();
void initNew(const PlacementInfo*, const LayoutInitInfo*, LiveActorGroup*, const ActorFactory*,
ActorResourceHolder*, AreaObjDirector*, AudioDirector*, CameraDirector*,
ClippingDirector*, CollisionDirector*, DemoDirector*, EffectSystemInfo*,
ExecuteDirector*, GameDataHolderBase*, GravityHolder*, HitSensorDirector*,
ItemDirectorBase*, NatureDirector*, const GamePadSystem*, PadRumbleDirector*,
PlayerHolder*, SceneObjHolder*, SceneMsgCtrl*, SceneStopCtrl*, ScreenCoverCtrl*,
ScreenPointDirector*, ShadowDirector*, StageSwitchDirector*, ModelGroup*,
GraphicsSystemInfo*, ModelDrawBufferCounter*, LiveActorGroup*);
void initNew(const PlacementInfo*, const LayoutInitInfo*, LiveActorGroup*, const ActorFactory*, ActorResourceHolder*, AreaObjDirector*,
AudioDirector*, CameraDirector*, ClippingDirector*, CollisionDirector*, DemoDirector*, EffectSystemInfo*, ExecuteDirector*,
GameDataHolderBase*, GravityHolder*, HitSensorDirector*, ItemDirectorBase*, NatureDirector*, const GamePadSystem*,
PadRumbleDirector*, PlayerHolder*, SceneObjHolder*, SceneMsgCtrl*, SceneStopCtrl*, ScreenCoverCtrl*, ScreenPointDirector*,
ShadowDirector*, StageSwitchDirector*, ModelGroup*, GraphicsSystemInfo*, ModelDrawBufferCounter*, LiveActorGroup*);
void initViewIdSelf(const PlacementInfo*, const ActorInitInfo&);
void copyHostInfo(const ActorInitInfo&, const PlacementInfo*);
void initViewIdHost(const PlacementInfo*, const ActorInitInfo&);
void initViewIdHostActor(const ActorInitInfo&, const LiveActor*);
void initNoViewId(const PlacementInfo*, const ActorInitInfo&);
const al::PlacementInfo& getPlacementInfo() const { return *mPlacementInfo; }
const PlacementInfo& getPlacementInfo() const { return *mPlacementInfo; }
private:
al::LiveActorGroup* mLiveActorGroup1;
const al::PlacementInfo* mPlacementInfo;
const al::LayoutInitInfo* mLayoutInitInfo;
al::AreaObjDirector* mAreaObjDirector;
al::CameraDirector* mCameraDirector;
al::ClippingDirector* mClippingDirector;
al::CollisionDirector* mCollisionDirector;
al::DemoDirector* mDemoDirector;
al::GameDataHolderBase* mGameDataHolderBase;
al::GravityHolder* mGravityHolder;
al::ItemDirectorBase* mItemDirectorBase;
al::NatureDirector* mNatureDirector;
const al::GamePadSystem* mGamePadSystem;
al::PadRumbleDirector* mPadRumbleDirector;
al::PlayerHolder* mPlayerHolder;
al::SceneObjHolder* mSceneObjHolder;
al::SceneStopCtrl* mSceneStopCtrl;
al::SceneMsgCtrl* mSceneMsgCtrl;
al::ScreenCoverCtrl* mScreenCoverCtrl;
al::ShadowDirector* mShadowDirector;
al::ModelGroup* mModelGroup;
al::GraphicsSystemInfo* mGraphicsSystemInfo;
al::ModelDrawBufferCounter* mModelDrawBufferCounter;
al::LiveActorGroup* mLiveActorGroup2;
const al::ActorFactory* mActorFactory;
al::ActorResourceHolder* mActorResourceHolder;
al::AudioDirector* mAudioDirector;
al::EffectSystemInfo* mEffectSystemInfo;
al::ExecuteDirector* mExecuteDirector;
al::HitSensorDirector* mHitSensorDirector;
al::StageSwitchDirector* mStageSwitchDirector;
al::ScreenPointDirector* mScreenPointDirector;
al::ViewIdHolder* mViewIdHolder;
LiveActorGroup* mKitDrawingGroup;
const PlacementInfo* mPlacementInfo;
const LayoutInitInfo* mLayoutInitInfo;
ActorSceneInfo mActorSceneInfo;
LiveActorGroup* mAllActorsGroup;
const ActorFactory* mActorFactory;
ActorResourceHolder* mActorResourceHolder;
AudioDirector* mAudioDirector;
EffectSystemInfo* mEffectSystemInfo;
ExecuteDirector* mExecuteDirector;
HitSensorDirector* mHitSensorDirector;
ScreenPointDirector* mScreenPointDirector;
StageSwitchDirector* mStageSwitchDirector;
ViewIdHolder* mViewIdHolder;
};
void initActor(LiveActor* actor, const ActorInitInfo& initInfo);
void initActorSuffix(LiveActor* actor, const ActorInitInfo& initInfo, const char* suffix);
void initActorWithArchiveName(LiveActor* actor, const ActorInitInfo& initInfo, const sead::SafeString& archiveName, const char* suffix);
void initChildActorWithArchiveNameWithPlacementInfo(LiveActor* actor, const ActorInitInfo& initInfo, const sead::SafeString& archiveName,
const char* suffix);
void initChildActorWithArchiveNameNoPlacementInfo(LiveActor* actor, const ActorInitInfo& initInfo, const sead::SafeString& archiveName,
const char* suffix);
void initMapPartsActor(LiveActor* actor, const ActorInitInfo& initInfo, const char* suffix);
void initLinksActor(LiveActor* actor, const ActorInitInfo& initInfo, const char* suffix, s32 linkIndex);
void createChildLinkSimpleActor(const char* actorName, const char* archiveName, const ActorInitInfo& initInfo, bool alive);
void createChildLinkMapPartsActor(const char* actorName, const char* archiveName, const ActorInitInfo& initInfo, s32 linkIndex, bool alive);
ActorInitInfo* createLinksPlayerActorInfo(LiveActor* actor, const ActorInitInfo& initInfo);
void initNerve(LiveActor* actor, const Nerve* nerve, s32 maxStates);
void initNerveAction(LiveActor* actor, const char* actionName, alNerveFunction::NerveActionCollector* collector, s32 maxStates);
bool trySyncStageSwitchAppear(LiveActor* actor);
bool trySyncStageSwitchKill(LiveActor* actor);
bool trySyncStageSwitchAppearAndKill(LiveActor* actor);
bool tryListenStageSwitchAppear(LiveActor* actor);
bool tryListenStageSwitchKill(LiveActor* actor);
void syncSensorScaleY(LiveActor* actor);
void syncSensorAndColliderScaleY(LiveActor* actor);
void setMaterialCode(LiveActor* actor, const char*);
void initMaterialCode(LiveActor* actor, const ActorInitInfo& initInfo);
bool tryAddDisplayRotate(LiveActor* actor, const ActorInitInfo& initInfo);
bool tryAddDisplayOffset(LiveActor* actor, const ActorInitInfo& initInfo);
bool tryAddDisplayScale(LiveActor* actor, const ActorInitInfo& initInfo);
PlacementInfo* getPlacementInfo(const ActorInitInfo& initInfo);
const LayoutInitInfo* getLayoutInitInfo(const ActorInitInfo& initInfo);
AudioDirector* getAudioDirector(const ActorInitInfo& initInfo);
CollisionDirector* getCollisionDirectorFromInfo(const ActorInitInfo& initInfo);
const SceneCameraInfo* getSceneCameraInfoFromInfo(const ActorInitInfo& initInfo);
GraphicsSystemInfo* getGraphicsSystemInfo(const ActorInitInfo& initInfo);
sead::DrawContext* getDrawContext(const ActorInitInfo& initInfo);
void getActorRecourseDataF32(f32*, LiveActor*, const char*, const char*);
void getActorRecourseDataString(const char**, LiveActor*, const char*, const char*);
void getActorRecourseDataV3f(sead::Vector3f*, LiveActor* actor, const char*, const char*);
void getActorRecourseDataBox3f(sead::BoundBox3f* box, LiveActor* actor, const char*, const char*);
void createPartsEffectGroup(LiveActor* actor, const ActorInitInfo& initInfo, s32);
} // namespace al

View File

@ -0,0 +1,205 @@
#pragma once
#include <gfx/seadColor.h>
#include <math/seadBoundBox.h>
#include <math/seadMatrix.h>
#include <math/seadQuat.h>
#include <nn/g3d/ResFile.h>
#include <nn/gfx/gfx_DescriptorSlot.h>
namespace agl {
class UniformBlock;
}
namespace nn::gfx {
class ResTexture;
}
namespace al {
class LayoutTextureRenderObj;
class LiveActor;
class ClippingDirector;
void updateMaterialCodeGround(LiveActor* actor, const char*);
void updateMaterialCodeAll(LiveActor* actor);
void updateMaterialCodeArea(LiveActor* actor);
void updateMaterialCodeWet(LiveActor* actor, bool);
void updateMaterialCodeWater(LiveActor* actor);
void updateMaterialCodeWater(LiveActor* actor, bool);
void updateMaterialCodePuddle(LiveActor* actor);
void updateMaterialCodePuddle(LiveActor* actor, bool);
void resetMaterialCode(LiveActor* actor);
void showModel(LiveActor* actor);
void showModelIfHide(LiveActor* actor);
bool isHideModel(const LiveActor* actor);
void hideModel(LiveActor* actor);
void hideModelIfShow(LiveActor* actor);
bool isExistModel(const LiveActor* actor);
void switchShowHideModelIfNearCamera(LiveActor* actor, f32);
void blinkModel(LiveActor* actor, s32, s32, s32);
void calcViewModelSystem(LiveActor* actor);
void calcViewModel(LiveActor* actor);
void showSilhouetteModel(LiveActor* actor);
void hideSilhouetteModel(LiveActor* actor);
bool isSilhouetteModelHidden(const LiveActor* actor);
void showSilhouetteModelIfHide(LiveActor* actor);
void hideSilhouetteModelIfShow(LiveActor* actor);
void setModelAlphaMask(LiveActor* actor, f32);
void getModelAlphaMask(const LiveActor* actor);
bool isModelAlphaMask(const LiveActor* actor);
void updateModelAlphaMaskCameraDistance(LiveActor* actor, f32, f32, f32, f32);
bool isExistZPrePass(const LiveActor* actor);
bool isEnableZPrePass(const LiveActor* actor);
void validateZPrePass(LiveActor* actor);
void invalidateZPrePass(LiveActor* actor);
void invalidateOcclusionQuery(LiveActor* actor);
void validateOcclusionQuery(LiveActor* actor);
bool isValidOcclusionQuery(const LiveActor* actor);
void setFixedModelFlag(LiveActor* actor);
void tryInitFixedModelGpuBuffer(LiveActor* actor);
void setIgnoreUpdateDrawClipping(LiveActor* actor, bool value);
void setNeedSetBaseMtxAndCalcAnimFlag(LiveActor* actor, bool value);
bool isViewDependentModel(const LiveActor* actor);
bool isNeedUpdateModel(const LiveActor* actor);
void setEnvTextureMirror(LiveActor* actor, s32);
void setEnvTextureProc3D(LiveActor* actor, s32);
void forceApplyCubeMap(LiveActor* actor, const char* cubeMapName);
void setMaterialProgrammable(LiveActor* actor);
bool isIncludePrepassCullingShape(LiveActor* actor);
void isExistJoint(const LiveActor* actor, const char*);
void getJointIndex(const LiveActor* actor, const char*);
sead::Matrix34f* getJointMtxPtr(const LiveActor* actor, const char*); // return type might be const
void getJointMtxPtrByIndex(const LiveActor* actor, int);
void getJointLocalTrans(sead::Vector3f*, const LiveActor* actor, const char*);
void calcJointPos(sead::Vector3f*, const LiveActor* actor, const char*);
void calcJointOffsetPos(sead::Vector3f*, const LiveActor* actor, const char*,
const sead::Vector3f&);
void calcJointPosByIndex(sead::Vector3f*, const LiveActor* actor, int);
void calcJointSideDir(sead::Vector3f*, const LiveActor* actor, const char*);
void calcJointUpDir(sead::Vector3f*, const LiveActor* actor, const char*);
void calcJointFrontDir(sead::Vector3f*, const LiveActor* actor, const char*);
void calcJointScale(sead::Vector3f*, const LiveActor* actor, const char*);
void calcJointQuat(sead::Quatf*, const LiveActor* actor, const char*);
void multVecJointMtx(sead::Vector3f*, const sead::Vector3f&, const LiveActor* actor, const char*);
void multVecJointInvMtx(sead::Vector3f*, const sead::Vector3f&, const LiveActor* actor,
const char*);
void multMtxJointInvMtx(sead::Matrix34f*, const sead::Matrix34f&, const LiveActor* actor,
const char*);
void setJointVisibility(LiveActor* actor, const char*, bool);
void isJointVisibility(const LiveActor* actor, const char*);
void isFaceJointXDirDegreeYZ(const LiveActor* actor, const char*, const sead::Vector3f&, float,
float);
void isFaceJointYDirDegreeZX(const LiveActor* actor, const char*, const sead::Vector3f&, float,
float);
void isFaceJointZDirDegreeXY(const LiveActor* actor, const char*, const sead::Vector3f&, float,
float);
void calcJointAngleXDirToTargetOnYDir(const LiveActor* actor, const char*, const sead::Vector3f&);
void calcJointAngleXDirToTargetOnZDir(const LiveActor* actor, const char*, const sead::Vector3f&);
void calcJointAngleYDirToTargetOnXDir(const LiveActor* actor, const char*, const sead::Vector3f&);
void calcJointAngleYDirToTargetOnZDir(const LiveActor* actor, const char*, const sead::Vector3f&);
void calcJointAngleZDirToTargetOnXDir(const LiveActor* actor, const char*, const sead::Vector3f&);
void calcJointAngleZDirToTargetOnYDir(const LiveActor* actor, const char*, const sead::Vector3f&);
void getMaterialName(const LiveActor* actor, int);
void getMaterialCount(const LiveActor* actor);
void isExistMaterial(const LiveActor* actor, const char*);
void getMaterialObj(const LiveActor* actor, int);
void getMaterialObj(const LiveActor* actor, const char*);
void getMaterialIndex(const LiveActor* actor, const char*);
void isExistMaterialTexture(const LiveActor* actor, const char*, const char*);
void getMaterialCategory(const LiveActor* actor, int);
void tryGetMaterialCategory(const LiveActor* actor, int);
void isOnlyMaterialCategoryObject(const LiveActor* actor);
void showMaterial(LiveActor* actor, const char*);
void hideMaterial(LiveActor* actor, const char*);
void showMaterial(LiveActor* actor, int);
void hideMaterial(LiveActor* actor, int);
void showMaterialAll(LiveActor* actor);
void tryShowMaterial(LiveActor* actor, int);
void tryHideMaterial(LiveActor* actor, int);
void tryShowMaterialAll(LiveActor* actor);
void setModelMaterialParameterF32(const LiveActor* actor, int, const char*, float);
void setModelMaterialParameterF32(const LiveActor* actor, const char*, const char*, float);
void setModelMaterialParameterV2F(const LiveActor* actor, int, const char*, const sead::Vector2f&);
void setModelMaterialParameterV2F(const LiveActor* actor, const char*, const char*,
const sead::Vector2f&);
void setModelMaterialParameterV3F(const LiveActor* actor, int, const char*, const sead::Vector3f&);
void setModelMaterialParameterV3F(const LiveActor* actor, const char*, const char*,
const sead::Vector3f&);
void setModelMaterialParameterV4F(const LiveActor* actor, int, const char*, const sead::Vector4f&);
void setModelMaterialParameterV4F(const LiveActor* actor, const char*, const char*,
const sead::Vector4f&);
void setModelMaterialParameterRgb(const LiveActor* actor, int, const char*, const sead::Vector3f&);
void setModelMaterialParameterRgb(const LiveActor* actor, const char*, const char*,
const sead::Vector3f&);
void setModelMaterialParameterRgb(const LiveActor* actor, int, const char*, const sead::Color4f&);
void setModelMaterialParameterRgb(const LiveActor* actor, const char*, const char*,
const sead::Color4f&);
void setModelMaterialParameterRgba(const LiveActor* actor, int, const char*, const sead::Color4f&);
void setModelMaterialParameterRgba(const LiveActor* actor, const char*, const char*,
const sead::Color4f&);
void setModelMaterialParameterAlpha(const LiveActor* actor, int, const char*, float);
void setModelMaterialParameterAlpha(const LiveActor* actor, const char*, const char*, float);
void setModelMaterialParameterTextureTrans(const LiveActor* actor, const char*, int,
const sead::Vector2f&);
void getModelMaterialParameterDisplacementScale(const LiveActor* actor, const char*, int);
void setModelMaterialParameterDisplacementScale(const LiveActor* actor, const char*, int, float);
void getModelUniformBlock(const LiveActor* actor, const char*);
void findModelUniformBlock(const LiveActor* actor, const char*);
void swapModelUniformBlock(agl::UniformBlock*);
void flushModelUniformBlock(agl::UniformBlock*);
void getModelDrawCategoryFromShaderAssign(bool*, bool*, bool*, bool*, const LiveActor* actor);
void trySetOcclusionQueryBox(LiveActor* actor, float);
void trySetOcclusionQueryBox(LiveActor* actor, const sead::BoundBox3f&);
void trySetOcclusionQueryCenter(LiveActor* actor, const sead::Vector3f*);
void getModelName(const LiveActor* actor);
void isModelName(const LiveActor* actor, const char*);
void calcModelBoundingSphereRadius(const LiveActor* actor);
void getBoundingSphereCenterAndRadius(sead::Vector3f*, float*, const LiveActor* actor);
void calcModelBoundingBox(sead::BoundBox3f*, const LiveActor* actor);
void calcModelBoundingBoxMtx(sead::Matrix34f*, const LiveActor* actor);
void submitViewModel(const LiveActor* actor, const sead::Matrix34f&);
void replaceMaterialTextureRef(LiveActor* actor, nn::g3d::TextureRef*, const char*, const char*);
void replaceMaterialResTexture(LiveActor* actor, nn::gfx::ResTexture*, const char*, const char*);
void replaceMaterialResTexture(LiveActor*, const char*, const char*, const nn::gfx::DescriptorSlot,
nn::gfx::TextureView*);
void replaceMaterialLayoutTexture(LiveActor* actor, const LayoutTextureRenderObj*, const char*,
const char*);
void recreateModelDisplayList(const LiveActor* actor);
void calcPolygonNum(const LiveActor* actor, int);
void calcPolygonNumCurrentLod(const LiveActor* actor);
void calcPolygonNumCurrentLodWithoutVisAnim(const LiveActor* actor);
void getLodLevel(const LiveActor* actor);
void getMaterialLodLevel(const LiveActor* actor);
void getLodLevelNoClamp(const LiveActor* actor);
void getLodModelCount(const LiveActor* actor);
void forceLodLevel(LiveActor* actor, int);
void unforceLodLevel(LiveActor* actor);
void isExistLodModel(const LiveActor* actor);
void isEnableMaterialLod(const LiveActor* actor);
void validateLodModel(LiveActor* actor);
void invalidateLodModel(LiveActor* actor);
void isValidateLodModel(const LiveActor* actor);
void isExistDitherAnimator(const LiveActor* actor);
void isValidNearDitherAnim(const LiveActor* actor);
void stopDitherAnimAutoCtrl(LiveActor* actor);
void restartDitherAnimAutoCtrl(LiveActor* actor);
void validateDitherAnim(LiveActor* actor);
void invalidateDitherAnim(LiveActor* actor);
void validateFarDitherIfInvalidateClipping(LiveActor* actor);
void setDitherAnimSphereRadius(LiveActor* actor, float);
void setDitherAnimBoundingBox(LiveActor* actor, const sead::Vector3f&);
void setDitherAnimMaxAlpha(LiveActor* actor, float);
void setDitherAnimClippingJudgeLocalOffset(LiveActor* actor, const sead::Vector3f&);
void setDitherAnimClippingJudgeParam(LiveActor* actor, const char*);
void resetDitherAnimClippingJudgeParam(LiveActor* actor);
void getDitherAnimMinNearDitherAlpha(const LiveActor* actor);
void getDitherAnimNearClipStartDistance(const LiveActor* actor);
void getDitherAnimNearClipEndDistance(const LiveActor* actor);
void calcDitherAnimJudgeDistance(const LiveActor* actor);
void createUniqueShader(LiveActor* actor);
void isJudgedToClipFrustum(const ClippingDirector*, const sead::Vector3f&, float, float);
void isJudgedToClipFrustum(const LiveActor* actor, const sead::Vector3f&, float, float);
void isJudgedToClipFrustum(const LiveActor* actor, float, float);
void isJudgedToClipFrustumWithoutFar(const ClippingDirector*, const sead::Vector3f&, float, float);
void isJudgedToClipFrustumWithoutFar(const LiveActor* actor, const sead::Vector3f&, float, float);
void isJudgedToClipFrustumWithoutFar(const LiveActor* actor, float, float);
} // namespace al

View File

@ -0,0 +1,254 @@
#pragma once
#include <math/seadBoundBox.h>
#include <math/seadMatrix.h>
#include <math/seadQuat.h>
#include <math/seadVector.h>
namespace al {
class LiveActor;
class HitSensor;
class ActorParamMove;
void resetPosition(LiveActor* actor);
void resetPosition(LiveActor* actor, const sead::Vector3f& trans);
void resetRotatePosition(LiveActor* actor, const sead::Vector3f& rot, const sead::Vector3f& trans);
void resetQuatPosition(LiveActor* actor, const sead::Quatf& quat, const sead::Vector3f& trans);
void resetMtxPosition(LiveActor* actor, const sead::Matrix34f& mtx);
void resetActorPosition(LiveActor* actor, const LiveActor* target);
bool trySetPosOnGround(LiveActor* actor);
void getVelocity(const LiveActor* actor);
void getVelocityPtr(LiveActor* actor);
void separateVelocityHV(sead::Vector3f*, sead::Vector3f*, const LiveActor* actor);
void separateVelocityDirHV(sead::Vector3f*, sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void separateVelocityParallelVertical(sead::Vector3f*, sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void setVelocity(LiveActor* actor, const sead::Vector3f& vel);
void setVelocity(LiveActor* actor, f32 x, f32 y, f32 z);
void setVelocityX(LiveActor* actor, f32 x);
void setVelocityY(LiveActor* actor, f32 y);
void setVelocityZ(LiveActor* actor, f32 z);
void setVelocityZero(LiveActor* actor);
void setVelocityZeroX(LiveActor* actor);
void setVelocityZeroY(LiveActor* actor);
void setVelocityZeroZ(LiveActor* actor);
void setVelocityZeroH(LiveActor* actor);
void setVelocityZeroH(LiveActor* actor, const sead::Vector3f&);
void setVelocityZeroV(LiveActor* actor);
void setVelocityZeroV(LiveActor* actor, const sead::Vector3f&);
void setVelocityJump(LiveActor* actor, f32);
void setVelocityToFront(LiveActor* actor, f32);
void setVelocityToUp(LiveActor* actor, f32);
void setVelocityToSide(LiveActor* actor, f32);
void setVelocityToDirection(LiveActor* actor, const sead::Vector3f&, f32);
void setVelocityToGravity(LiveActor* actor, f32);
void setVelocitySeparateHV(LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32, f32);
void setVelocitySeparateHV(LiveActor* actor, const sead::Vector3f&, f32, f32);
void calcVelocitySeparateHV(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&, f32, f32);
void setVelocitySeparateUp(LiveActor* actor, const sead::Vector3f&, f32, f32);
void setVelocityOnlyDir(LiveActor* actor, const sead::Vector3f&, f32);
void setVelocityOnlyV(LiveActor* actor, f32);
void setVelocityOnlyGravity(LiveActor* actor, f32);
void addVelocity(LiveActor* actor, const sead::Vector3f& vel);
void addVelocity(LiveActor* actor, f32 x, f32 y, f32 z);
void addVelocityX(LiveActor* actor, f32 x);
void addVelocityY(LiveActor* actor, f32 y);
void addVelocityZ(LiveActor* actor, f32 z);
void addVelocityDump(LiveActor* actor, const sead::Vector3f& dir, f32 force);
void addVelocityJump(LiveActor* actor, f32 force);
void addVelocityToFront(LiveActor* actor, f32 force);
void addVelocityToUp(LiveActor* actor, f32 force);
void addVelocityToSide(LiveActor* actor, f32 force);
void addVelocityToDown(LiveActor* actor, f32 force);
void addVelocityToDirection(LiveActor* actor, const sead::Vector3f& dir, f32 force);
void addVelocityToGravity(LiveActor* actor, f32);
void addVelocityToGravityLimit(LiveActor* actor, f32, f32);
void addVelocityToGravityFittedGround(LiveActor* actor, f32, u32);
void addVelocityToGravityNaturalOrFittedGround(LiveActor* actor, f32);
void calcGravityDir(sead::Vector3f*, const LiveActor* actor);
void addVelocityToTarget(LiveActor* actor, const sead::Vector3f&, f32);
void addVelocityToTarget(LiveActor* actor, const sead::Vector3f&, f32, f32, f32, f32);
void addVelocityToTargetH(LiveActor* actor, const sead::Vector3f&, f32);
void addVelocityToTargetHV(LiveActor* actor, const sead::Vector3f&, f32, f32);
void addVelocityDampToTarget(LiveActor* actor, const sead::Vector3f&, f32);
void addVelocityDampToTarget(LiveActor* actor, const sead::Vector3f&, f32, f32);
void addVelocityToPlayer(LiveActor* actor, const f32, sead::Vector3f&);
void addVelocityToPlayerHV(LiveActor* actor, const f32, f32, sead::Vector3f&);
void addVelocityFromTarget(LiveActor* actor, const sead::Vector3f&, f32);
void addVelocityFromTargetHV(LiveActor* actor, const sead::Vector3f&, f32, f32);
void addVelocityFromPlayer(LiveActor* actor, const f32, sead::Vector3f&);
void addVelocityFromPlayerHV(LiveActor* actor, const f32, f32, sead::Vector3f&);
void addVelocityClockwiseToDirection(LiveActor* actor, const sead::Vector3f&, f32);
void calcVelocityClockwiseToDirection(LiveActor* actor, sead::Vector3f*, const sead::Vector3f&);
void addVelocityClockwiseToTarget(LiveActor* actor, const sead::Vector3f&, f32);
void addVelocityJumpGroundInertia(LiveActor* actor, const sead::Vector3f&, f32);
bool tryAddVelocityLimit(LiveActor* actor, const sead::Vector3f&, f32);
void subVelocityExceptDirectionLimit(LiveActor* actor, const sead::Vector3f&, f32, f32);
void scaleVelocity(LiveActor* actor, f32);
void scaleVelocityLimit(LiveActor* actor, f32, f32);
void scaleVelocityX(LiveActor* actor, f32);
void scaleVelocityY(LiveActor* actor, f32);
void scaleVelocityZ(LiveActor* actor, f32);
void scaleVelocityHV(LiveActor* actor, f32, f32);
void scaleVelocityDirection(LiveActor* actor, const sead::Vector3f&, f32);
void scaleVelocityExceptDirection(LiveActor* actor, const sead::Vector3f&, f32);
void scaleVelocityParallelVertical(LiveActor* actor, const sead::Vector3f&, f32, f32);
void limitVelocity(LiveActor* actor, f32);
void calcSpeed(const LiveActor* actor);
void limitVelocityX(LiveActor* actor, f32);
void limitVelocityY(LiveActor* actor, f32);
void limitVelocityZ(LiveActor* actor, f32);
void limitVelocityH(LiveActor* actor, f32);
void limitVelocityHV(LiveActor* actor, f32, f32);
void limitVelocityUpGravityH(LiveActor* actor, f32, f32, f32);
void limitVelocityDir(LiveActor* actor, const sead::Vector3f&, f32);
void limitVelocityDirSign(LiveActor* actor, const sead::Vector3f&, f32);
void limitVelocityDirV(LiveActor* actor, const sead::Vector3f&, f32);
void limitVelocityDirVRate(LiveActor* actor, const sead::Vector3f&, f32, f32);
void limitVelocityParallelVertical(LiveActor* actor, const sead::Vector3f&, f32, f32);
void limitVelocitySeparateHV(LiveActor* actor, const sead::Vector3f&, f32, f32);
void reboundVelocityPart(LiveActor* actor, f32, f32);
void reboundVelocityPart(LiveActor* actor, f32, f32, f32, f32);
void reboundVelocityFromEachCollision(LiveActor* actor, f32, f32, f32, f32);
void reboundVelocityFromCollision(LiveActor* actor, f32, f32, f32);
void reboundVelocityFromTriangles(LiveActor* actor, f32, f32);
void reboundVelocityFromActor(LiveActor* actor, const LiveActor* target, f32);
void reboundVelocityFromActor(LiveActor* actor, const LiveActor* target, const sead::Vector3f&, f32);
void reboundVelocityFromSensor(LiveActor* actor, const HitSensor*, f32);
void reboundVelocityFromSensor(LiveActor* actor, const HitSensor*, const sead::Vector3f&, f32);
void calcDirToActor(sead::Vector3f*, const LiveActor* actor, const LiveActor* target);
void reboundVelocityBetweenActor(LiveActor* actor, LiveActor* target, f32);
void reboundVelocityBetweenSensor(HitSensor*, HitSensor*, f32);
void calcVelocityKeepLengthBetweenActor(sead::Vector3f*, const LiveActor* actor, const LiveActor* target, f32, f32);
void addVelocityKeepLengthBetweenActor(LiveActor* actor, LiveActor* target, f32, f32);
void addVelocityDumpKeepLengthBetweenActor(LiveActor* actor, LiveActor* target, f32, f32, f32);
void calcVelocityBlowAttack(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&, f32, f32);
void addVelocityBlowAttack(LiveActor* actor, const sead::Vector3f&, f32, f32);
void addVelocityBlowAttack(LiveActor* actor, const HitSensor*, f32, f32);
void setVelocityBlowAttack(LiveActor* actor, const sead::Vector3f&, f32, f32);
void setVelocityBlowAttack(LiveActor* actor, const HitSensor*, f32, f32);
void setVelocityBlowAttackAndTurnToTarget(LiveActor* actor, const sead::Vector3f&, f32, f32);
bool isVelocityFast(const LiveActor* actor, f32);
bool isVelocityFastH(const LiveActor* actor, f32);
bool isVelocitySlow(const LiveActor* actor, f32);
bool isVelocitySlowH(const LiveActor* actor, f32);
void calcSpeedH(const LiveActor* actor);
void calcSpeedV(const LiveActor* actor);
void calcSpeedDirection(const LiveActor* actor, const sead::Vector3f&);
void calcSpeedExceptDir(const LiveActor* actor, const sead::Vector3f&);
bool isNear(const LiveActor* actor, const LiveActor* target, f32);
bool isNear(const LiveActor* actor, const sead::Vector3f&, f32);
bool isNearXZ(const LiveActor* actor, const sead::Vector3f&, f32);
bool isNearH(const LiveActor* actor, const sead::Vector3f&, f32);
void calcDistanceH(const LiveActor* actor, const sead::Vector3f&);
bool isNearV(const LiveActor* actor, const sead::Vector3f&, f32);
void calcDistanceV(const LiveActor* actor, const sead::Vector3f&);
bool isNearHV(const LiveActor* actor, const sead::Vector3f&, f32, f32);
bool isNearHV(const LiveActor* actor, const sead::Vector3f&, f32, f32, f32);
void calcHeight(const LiveActor* actor, const sead::Vector3f&);
bool isFar(const LiveActor* actor, const LiveActor* target, f32);
bool isFar(const LiveActor* actor, const sead::Vector3f&, f32);
void calcDistance(const LiveActor* actor, const LiveActor* target);
void calcDistance(const LiveActor* actor, const sead::Vector3f&);
void calcDistanceV(const LiveActor* actor, const LiveActor* target);
void calcDistanceH(const LiveActor* actor, const LiveActor* target);
void calcDistanceH(const LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&);
void calcHeight(const LiveActor* actor, const LiveActor* target);
void calcDistanceFront(const LiveActor* actor, const sead::Vector3f&);
void calcDistanceFront(const LiveActor* actor, const LiveActor* target);
void addRotateAndRepeatX(LiveActor* actor, f32);
void addRotateAndRepeatY(LiveActor* actor, f32);
void addRotateAndRepeatZ(LiveActor* actor, f32);
void addRandomRotateY(LiveActor* actor);
void calcQuatSide(sead::Vector3f*, const LiveActor* actor);
void calcQuatUp(sead::Vector3f*, const LiveActor* actor);
void calcQuatFront(sead::Vector3f*, const LiveActor* actor);
void calcQuatLocalAxis(sead::Vector3f*, const LiveActor* actor, s32);
void calcTransOffsetFront(sead::Vector3f*, const LiveActor* actor, f32);
void calcTransOffsetUp(sead::Vector3f*, const LiveActor* actor, f32);
void calcTransOffsetSide(sead::Vector3f*, const LiveActor* actor, f32);
void setTransOffsetLocalDir(LiveActor* actor, const sead::Quatf&, const sead::Vector3f&, f32, s32);
void addTransOffsetLocal(LiveActor* actor, const sead::Vector3f&);
void addTransOffsetLocalDir(LiveActor* actor, f32, s32);
void rotateQuatXDirDegree(LiveActor* actor, f32);
void rotateQuatXDirDegree(LiveActor* actor, const sead::Quatf&, f32);
void rotateQuatYDirDegree(LiveActor* actor, f32);
void rotateQuatYDirDegree(LiveActor* actor, const sead::Quatf&, f32);
void rotateQuatZDirDegree(LiveActor* actor, f32);
void rotateQuatZDirDegree(LiveActor* actor, const sead::Quatf&, f32);
void rotateQuatLocalDirDegree(LiveActor* actor, s32, f32);
void rotateQuatLocalDirDegree(LiveActor* actor, const sead::Quatf&, s32, f32);
void rotateQuatYDirRandomDegree(LiveActor* actor);
void rotateQuatYDirRandomDegree(LiveActor* actor, const sead::Quatf&);
void turnQuatFrontToDirDegreeH(LiveActor* actor, const sead::Vector3f&, f32);
void turnQuatFrontToPosDegreeH(LiveActor* actor, const sead::Vector3f&, f32);
void turnQuatFrontFromPosDegreeH(LiveActor* actor, const sead::Vector3f&, f32);
void turnFront(LiveActor* actor, f32);
void turnFront(LiveActor* actor, const sead::Vector3f&, f32);
void turnFrontToPos(LiveActor* actor, const sead::Vector3f&, f32);
void turnFrontToDir(LiveActor* actor, const sead::Vector3f&, f32);
void turnFrontToDirGetIsFinished(LiveActor* actor, const sead::Vector3f&, f32);
void turnDirectionDegree(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnFrontToTarget(LiveActor* actor, const LiveActor* target, f32);
void turnFrontFromTarget(LiveActor* actor, const LiveActor* target, f32);
void turnFrontToPlayer(LiveActor* actor, f32);
void turnFrontFromPlayer(LiveActor* actor, f32);
void turnDirection(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnDirectionToTarget(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnDirectionToTargetDegree(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnDirectionFromTargetDegree(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnDirectionAlongGround(const LiveActor* actor, sead::Vector3f*);
void turnDirectionAlongGround(LiveActor* actor);
void turnToDirectionAxis(LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32);
void turnFrontSpherical(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnFrontSphericalToTarget(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnFrontSphericalToTargetDegree(const LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32);
void turnToDirection(LiveActor* actor, const sead::Vector3f&, f32);
void turnLocalDirToDirection(LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32);
void turnToTarget(LiveActor* actor, const sead::Vector3f&, f32);
void turnToTarget(LiveActor* actor, const LiveActor* target, f32);
void faceToDirection(LiveActor* actor, const sead::Vector3f&);
void faceToDirectionSupportUp(LiveActor* actor, const sead::Vector3f&);
void faceToTarget(LiveActor* actor, const sead::Vector3f&);
void faceToTarget(LiveActor* actor, const LiveActor* target);
void faceToSensor(LiveActor* actor, const HitSensor*);
void faceToVelocity(LiveActor* actor);
void calcDirClockwiseToDir(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void calcDirClockwiseToPos(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void calcDirToActorH(sead::Vector3f*, const LiveActor* actor, const LiveActor* target);
void calcDirToActorH(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void calcAngleToTargetH(const LiveActor* actor, const sead::Vector3f&);
void calcAngleToTargetV(const LiveActor* actor, const sead::Vector3f&);
bool isFaceToTargetDegree(const LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32);
bool isFaceToTargetDegree(const LiveActor* actor, const sead::Vector3f&, f32);
bool isFaceToTargetDegreeHV(const LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32, f32);
bool isFaceToTargetDegreeH(const LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32);
bool isInSightCone(const LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32, f32);
bool isInSightConeTarget(const LiveActor* actor, const LiveActor* target, f32, f32);
bool isInSightConePlayer(const LiveActor* actor, f32, f32);
bool isInSightFan(const LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32, f32, f32);
bool isInSightFanTarget(const LiveActor* actor, const LiveActor* target, f32, f32, f32);
bool isInSightBox(const LiveActor* actor, const sead::Vector3f&, const sead::BoundBox3f&);
void walkAndTurnToDirection(LiveActor* actor, const sead::Vector3f&, f32, f32, f32, f32, bool);
void walkAndTurnToDirection(LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32, f32, f32, f32, bool);
void walkAndTurnPoseToDirection(LiveActor* actor, const sead::Vector3f&, const ActorParamMove&, bool);
void walkAndTurnToTarget(LiveActor* actor, const sead::Vector3f&, f32, f32, f32, f32, bool);
void flyAndTurnToDirection(LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32, f32, f32, f32);
void flyAndTurnToDirection(LiveActor* actor, const sead::Vector3f&, f32, f32, f32, f32);
void flyAndTurnToTarget(LiveActor* actor, const sead::Vector3f&, f32, f32, f32, f32);
void walkAndTurnToDirectionFittedGroundGravity(LiveActor* actor, sead::Vector3f*, const sead::Vector3f&, f32, f32, f32, f32, bool);
void walkAndTurnToDirectionFittedGroundGravity(LiveActor* actor, const sead::Vector3f&, f32, f32, f32, f32, bool);
void walkAndTurnToTargetFittedGroundGravity(LiveActor* actor, const sead::Vector3f&, f32, f32, f32, f32, bool);
bool tryKillByDeathArea(LiveActor* actor);
void rotateAndKeepColliderPosRate(LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&, f32);
void calcSpringMovement(LiveActor* actor, const sead::Vector3f&, const f32, f32, sead::Vector3f&, f32, f32);
void addVelocityClockwiseToPlayer(LiveActor* actor, f32);
void calcDirClockwiseToPlayer(sead::Vector3f*, const LiveActor* actor);
void flyAndTurnToPlayer(LiveActor* actor, const ActorParamMove&);
void escapeFromPlayer(LiveActor* actor, f32, f32, f32, f32);
void escapeFromPlayer(LiveActor* actor, sead::Vector3f*, f32, f32, f32, f32);
void walkAndTurnToPlayer(LiveActor* actor, f32, f32, f32, f32, bool);
bool isPlayerInSightFan(const LiveActor* actor, f32, f32, f32);
bool isFallOrDamageCodeNextMove(const LiveActor* actor, const sead::Vector3f&, f32, f32);
bool isFallNextMove(const LiveActor* actor, const sead::Vector3f&, f32, f32);
} // namespace al

View File

@ -0,0 +1,20 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class LiveActor;
class Resource;
class ActorParamHolder {
public:
static const char* getYamlName();
static ActorParamHolder* tryCreate(LiveActor* actor, const Resource* resource,
const char* suffix);
f32 findParamF32(const char*);
private:
ActorParamHolder(LiveActor* actor, const Resource* resource, const char* suffix);
};
} // namespace al

View File

@ -33,7 +33,7 @@ public:
virtual void copyPose(const ActorPoseKeeperBase* other);
virtual void calcBaseMtx(sead::Matrix34f* mtx) const = 0;
protected: // protected so it's visible to all sub-classes (TFSV, TFGSV, ...)
protected: // protected so it's visible to all sub-classes (TFSV, TFGSV, ...)
sead::Vector3f mTrans{0, 0, 0};
static sead::Vector3f sDefaultVelocity;
@ -55,7 +55,7 @@ public:
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
protected: // protected so it's visible to all sub-classes (TFGSV, TFUSV)
protected: // protected so it's visible to all sub-classes (TFGSV, TFUSV)
sead::Vector3f mFront = sead::Vector3f::ez;
sead::Vector3f mScale{1.0, 1.0, 1.0};
sead::Vector3f mVelocity{0.0, 0.0, 0.0};
@ -72,6 +72,7 @@ public:
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Vector3f mGravity{0.0, -1.0, 0.0};
};
@ -87,6 +88,7 @@ public:
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Vector3f mUp = sead::Vector3f::ey;
bool mIsFrontUp = false;
@ -107,6 +109,7 @@ public:
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Quatf mQuat = sead::Quatf::unit;
sead::Vector3f mScale{1.0, 1.0, 1.0};
@ -130,6 +133,7 @@ public:
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Quatf mQuat = sead::Quatf::unit;
sead::Vector3f mGravity{0.0, -1.0, 0.0};
@ -156,6 +160,7 @@ public:
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Quatf mQuat = sead::Quatf::unit;
sead::Vector3f mGravity{0.0, -1.0, 0.0};
@ -179,6 +184,7 @@ public:
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Vector3f mRotate{0.0, 0.0, 0.0};
sead::Vector3f mScale{1.0, 1.0, 1.0};
@ -197,17 +203,17 @@ public:
sead::Vector3f* getScalePtr() override;
const sead::Vector3f& getVelocity() const override;
sead::Vector3f* getVelocityPtr() override;
__attribute__((flatten))
void updatePoseTrans(const sead::Vector3f& trans) override;
__attribute__((flatten)) void updatePoseTrans(const sead::Vector3f& trans) override;
void updatePoseRotate(const sead::Vector3f& rot) override;
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Vector3f mRotate{0.0, 0.0, 0.0};
sead::Vector3f mScale{1.0, 1.0, 1.0};
sead::Vector3f mVelocity{0.0, 0.0, 0.0};
sead::Matrix34f mMtx; // manually set in the ctor
sead::Matrix34f mMtx; // manually set in the ctor
};
class ActorPoseKeeperTRGMSV : public ActorPoseKeeperBase {
@ -229,6 +235,7 @@ public:
void updatePoseQuat(const sead::Quatf& quat) override;
void updatePoseMtx(const sead::Matrix34f* mtx) override;
void calcBaseMtx(sead::Matrix34f* mtx) const override;
private:
sead::Vector3f mRotate{0.0, 0.0, 0.0};
sead::Vector3f mGravity{0.0, -1.0, 0.0};
@ -237,4 +244,97 @@ private:
sead::Matrix34f mMtx;
};
} // namespace al
class LiveActor;
void initActorPoseT(LiveActor* actor, const sead::Vector3f&);
void setTrans(LiveActor* actor, const sead::Vector3f&);
void initActorPoseTR(LiveActor* actor, const sead::Vector3f&, const sead::Vector3f&);
void setRotate(LiveActor* actor, const sead::Vector3f&);
void makeMtxSRT(sead::Matrix34f*, const LiveActor* actor);
void makeMtxRT(sead::Matrix34f*, const LiveActor* actor);
void makeMtxR(sead::Matrix34f*, const LiveActor* actor);
void calcAnimFrontGravityPos(LiveActor* actor, const sead::Vector3f&);
const sead::Vector3f& getGravity(const al::LiveActor* actor);
const sead::Vector3f& getTrans(const al::LiveActor* actor);
const sead::Vector3f& getScale(const al::LiveActor* actor);
void copyPose(LiveActor* actor, const LiveActor* target);
void updatePoseTrans(LiveActor* actor, const sead::Vector3f&);
void updatePoseRotate(LiveActor* actor, const sead::Vector3f&);
void updatePoseQuat(LiveActor* actor, const sead::Quatf&);
void updatePoseMtx(LiveActor* actor, const sead::Matrix34f*);
void calcSideDir(sead::Vector3f*, const LiveActor* actor);
void calcLeftDir(sead::Vector3f*, const LiveActor* actor);
void calcRightDir(sead::Vector3f*, const LiveActor* actor);
void calcUpDir(sead::Vector3f*, const LiveActor* actor);
void calcDownDir(sead::Vector3f*, const LiveActor* actor);
void calcFrontDir(sead::Vector3f*, const LiveActor* actor);
void calcBackDir(sead::Vector3f*, const LiveActor* actor);
void calcPoseDir(sead::Vector3f*, sead::Vector3f*, sead::Vector3f*, const LiveActor* actor);
void calcQuat(sead::Quatf*, const LiveActor* actor);
void calcDistanceSignLocalXDir(const LiveActor* actor, const sead::Vector3f&);
void calcDistanceSignLocalYDir(const LiveActor* actor, const sead::Vector3f&);
void calcDistanceSignLocalZDir(const LiveActor* actor, const sead::Vector3f&);
void calcDistanceLocalXDir(const LiveActor* actor, const sead::Vector3f&);
void calcDistanceLocalYDir(const LiveActor* actor, const sead::Vector3f&);
void calcDistanceLocalZDir(const LiveActor* actor, const sead::Vector3f&);
sead::Vector3f* getTransPtr(al::LiveActor* actor);
void setTrans(LiveActor* actor, f32, f32, f32);
void setTransX(LiveActor* actor, f32);
void setTransY(LiveActor* actor, f32);
void setTransZ(LiveActor* actor, f32);
void getRotate(const LiveActor* actor);
void getRotatePtr(LiveActor* actor);
void setRotate(LiveActor* actor, f32, f32, f32);
void setRotateX(LiveActor* actor, f32);
void setRotateY(LiveActor* actor, f32);
void setRotateZ(LiveActor* actor, f32);
void getScalePtr(LiveActor* actor);
bool tryGetScalePtr(LiveActor* actor);
float getScaleX(const al::LiveActor* actor);
float getScaleY(const al::LiveActor* actor);
float getScaleZ(const al::LiveActor* actor);
void setScale(LiveActor* actor, const sead::Vector3f&);
void setScale(LiveActor* actor, f32, f32, f32);
void setScaleAll(LiveActor* actor, f32);
void setScaleX(LiveActor* actor, f32);
void setScaleY(LiveActor* actor, f32);
void setScaleZ(LiveActor* actor, f32);
bool isFrontTarget(const LiveActor* actor, const sead::Vector3f&);
bool isFrontDir(const LiveActor* actor, const sead::Vector3f&);
bool isBackTarget(const LiveActor* actor, const sead::Vector3f&);
bool isBackDir(const LiveActor* actor, const sead::Vector3f&);
bool isLeftTarget(const LiveActor* actor, const sead::Vector3f&);
bool isLeftDir(const LiveActor* actor, const sead::Vector3f&);
bool isRightTarget(const LiveActor* actor, const sead::Vector3f&);
bool isRightDir(const LiveActor* actor, const sead::Vector3f&);
bool isUpTarget(const LiveActor* actor, const sead::Vector3f&);
bool isUpDir(const LiveActor* actor, const sead::Vector3f&);
bool isDownTarget(const LiveActor* actor, const sead::Vector3f&);
bool isDownDir(const LiveActor* actor, const sead::Vector3f&);
const sead::Quatf& getQuat(const al::LiveActor* actor);
sead::Quatf* getQuatPtr(al::LiveActor* actor);
bool tryGetQuatPtr(LiveActor* actor);
void setQuat(LiveActor* actor, const sead::Quatf&);
void getGravityPtr(const LiveActor* actor);
void setGravity(const LiveActor* actor, const sead::Vector3f&);
const sead::Vector3f& getFront(const al::LiveActor* actor);
sead::Vector3f* getFrontPtr(al::LiveActor* actor);
void setFront(LiveActor* actor, const sead::Vector3f&);
const sead::Vector3f& getUp(const al::LiveActor* actor);
sead::Vector3f* getUpPtr(al::LiveActor* actor);
void setUp(LiveActor* actor, const sead::Vector3f&);
void multVecPoseNoTrans(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void multVecPose(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void multVecPoseAndScale(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void multVecInvPose(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void multVecInvQuat(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
void multMtxInvPose(sead::Matrix34f*, const LiveActor* actor, const sead::Matrix34f&);
void calcTransLocalOffset(sead::Vector3f*, const LiveActor* actor, const sead::Vector3f&);
} // namespace al
class alActorPoseFunction {
void calcBaseMtx(sead::Matrix34f* mtx, const al::LiveActor* actor);
void updatePoseTRMSV(al::LiveActor* actor);
};

View File

@ -0,0 +1,47 @@
#pragma once
namespace al {
class AreaObjDirector;
class CameraDirector;
class ClippingDirector;
class CollisionDirector;
class DemoDirector;
class GameDataHolderBase;
class GravityHolder;
class ItemDirectorBase;
class NatureDirector;
class GamePadSystem;
class PadRumbleDirector;
class PlayerHolder;
class SceneObjHolder;
class SceneStopCtrl;
class SceneMsgCtrl;
class ScreenCoverCtrl;
class ShadowDirector;
class ModelGroup;
class GraphicsSystemInfo;
class ModelDrawBufferCounter;
struct ActorSceneInfo {
AreaObjDirector* mAreaObjDirector;
CameraDirector* mCameraDirector;
ClippingDirector* mClippingDirector;
CollisionDirector* mCollisionDirector;
DemoDirector* mDemoDirector;
GameDataHolderBase* mGameDataHolder;
GravityHolder* mGravityHolder;
ItemDirectorBase* mItemDirector;
NatureDirector* mNatureDirector;
const GamePadSystem* mGamePadSystem;
PadRumbleDirector* mPadRumbleDirector;
PlayerHolder* mPlayerHolder;
SceneObjHolder* mSceneObjHolder;
SceneStopCtrl* mSceneStopCtrl;
SceneMsgCtrl* mSceneMsgCtrl;
ScreenCoverCtrl* mScreenCoverCtrl;
ShadowDirector* mShadowDirector;
ModelGroup* mModelGroup;
GraphicsSystemInfo* mGraphicsSystemInfo;
ModelDrawBufferCounter* mModelDrawBufferCounter;
};
} // namespace al

View File

@ -1,15 +1,430 @@
#pragma once
namespace al {
#include <math/seadVector.h>
namespace al {
class HitSensor;
class ComboCounter;
class LiveActor;
class SensorMsg;
void sendMsgPlayerReleaseEquipment(HitSensor* source, HitSensor* target);
bool isMsgPlayerDisregard(const al::SensorMsg* message);
bool isMsgHideModel(const al::SensorMsg* message);
bool isMsgShowModel(const al::SensorMsg* message);
bool isMsgAskSafetyPoint(const al::SensorMsg* message);
bool sendMsgPlayerAttackTrample(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerTrampleReflect(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerReflectOrTrample(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerHipDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerObjHipDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerObjHipDropReflect(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerObjHipDropHighJump(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerHipDropKnockDown(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerStatueDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerObjStatueDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerObjStatueDropReflect(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerObjStatueDropReflectNoCondition(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerStatueTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerUpperPunch(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerObjUpperPunch(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerRollingAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerRollingReflect(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerObjRollingAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerObjRollingAttackFailure(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerInvincibleAttack(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerFireBallAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerRouteDokanFireBallAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerTailAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerKick(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerCatch(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerSlidingAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerBoomerangAttack(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerBoomerangAttackCollide(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerBoomerangReflect(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerBoomerangBreak(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerBodyAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerBodyLanding(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerBodyAttackReflect(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerClimbAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerSpinAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerGiantAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerCooperationHipDrop(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerClimbSlidingAttack(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerClimbRollingAttack(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgPlayerGiantHipDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPlayerDisregard(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerItemGet(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerPutOnEquipment(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerReleaseEquipment(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerReleaseEquipmentGoal(HitSensor* receiver, HitSensor* sender, u32);
bool sendMsgPlayerFloorTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerDamageTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerCarryFront(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerCarryFrontWallKeep(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerCarryUp(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerCarryKeepDemo(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerCarryWarp(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerLeave(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerRelease(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerReleaseBySwing(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerReleaseDamage(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerReleaseDead(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerReleaseDemo(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerToss(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerInvincibleTouch(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgEnemyAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyAttackBoomerang(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyAttackFire(HitSensor* receiver, HitSensor* sender, const char*);
bool sendMsgEnemyAttackNeedle(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyFloorTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyItemGet(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyRouteDokanAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyRouteDokanFire(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyUpperPunch(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyTrample(HitSensor* receiver, HitSensor* sender);
bool sendMsgMapObjTrample(HitSensor* receiver, HitSensor* sender);
bool sendMsgPressureDeath(HitSensor* receiver, HitSensor* sender);
bool sendMsgNpcTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgExplosion(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgExplosionCollide(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgPush(HitSensor* receiver, HitSensor* sender);
bool sendMsgPushStrong(HitSensor* receiver, HitSensor* sender);
bool sendMsgPushVeryStrong(HitSensor* receiver, HitSensor* sender);
bool sendMsgHit(HitSensor* receiver, HitSensor* sender);
bool sendMsgHitStrong(HitSensor* receiver, HitSensor* sender);
bool sendMsgHitVeryStrong(HitSensor* receiver, HitSensor* sender);
bool sendMsgKnockDown(HitSensor* receiver, HitSensor* sender);
bool sendMsgMapPush(HitSensor* receiver, HitSensor* sender);
bool sendMsgVanish(HitSensor* receiver, HitSensor* sender);
bool sendMsgChangeAlpha(LiveActor* receiver, f32 alpha);
bool sendMsgShowModel(HitSensor* receiver, HitSensor* sender);
bool sendMsgHideModel(HitSensor* receiver, HitSensor* sender);
bool sendMsgRestart(HitSensor* receiver, HitSensor* sender);
bool sendMsgNeedleBallAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgPunpunFloorTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgInvalidateFootPrint(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickKouraAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgKickKouraAttackCollide(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgKickKouraGetItem(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickKouraReflect(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickKouraCollideNoReflect(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickKouraBreak(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickKouraBlow(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickStoneAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickStoneAttackCollide(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickStoneAttackHold(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickStoneAttackReflect(HitSensor* receiver, HitSensor* sender);
bool sendMsgKickStoneTrample(HitSensor* receiver, HitSensor* sender);
bool sendMsgKillerAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgLiftGeyser(HitSensor* receiver, HitSensor* sender);
bool sendMsgWarpStart(HitSensor* receiver, HitSensor* sender);
bool sendMsgWarpEnd(HitSensor* receiver, HitSensor* sender);
bool sendMsgHoldCancel(HitSensor* receiver, HitSensor* sender);
bool sendMsgHoleIn(HitSensor* receiver, HitSensor* sender);
bool sendMsgJumpInhibit(HitSensor* receiver, HitSensor* sender);
bool sendMsgGoalKill(HitSensor* receiver, HitSensor* sender);
bool sendMsgGoal(HitSensor* receiver, HitSensor* sender);
bool sendMsgBindStart(HitSensor* receiver, HitSensor* sender);
bool sendMsgBindInit(HitSensor* receiver, HitSensor* sender, u32);
bool sendMsgBindEnd(HitSensor* receiver, HitSensor* sender);
bool sendMsgBindCancel(HitSensor* receiver, HitSensor* sender);
bool sendMsgBindCancelByDemo(HitSensor* receiver, HitSensor* sender);
bool sendMsgBindDamage(HitSensor* receiver, HitSensor* sender);
bool sendMsgBindSteal(HitSensor* receiver, HitSensor* sender);
bool sendMsgBindGiant(HitSensor* receiver, HitSensor* sender);
bool sendMsgBallAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgBallRouteDokanAttack(HitSensor* receiver, HitSensor* sender,
ComboCounter* comboCounter);
bool sendMsgBallAttackHold(HitSensor* receiver, HitSensor* sender);
bool sendMsgBallAttackDRCHold(HitSensor* receiver, HitSensor* sender);
bool sendMsgBallAttackCollide(HitSensor* receiver, HitSensor* sender);
bool sendMsgBallTrample(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgBallTrampleCollide(HitSensor* receiver, HitSensor* sender);
bool sendMsgBallItemGet(HitSensor* receiver, HitSensor* sender);
bool sendMsgFireBalCollide(HitSensor* receiver, HitSensor* sender);
bool sendMsgFireBallFloorTouch(HitSensor* receiver, HitSensor* sender);
bool sendMsgDokanBazookaAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgRideAllPlayerItemGet(HitSensor* receiver, HitSensor* sender);
bool sendMsgHideModel(LiveActor* receiver);
bool sendMsgShowModel(LiveActor* receiver);
bool sendMsgRestart(LiveActor* receiver);
bool sendMsgCollisionImpulse(HitSensor* receiver, HitSensor* sender, sead::Vector3f*,
const sead::Vector3f&, const f32, sead::Vector3f&, f32);
bool sendMsgSwitchOn(LiveActor* receiver);
bool sendMsgSwitchOnInit(LiveActor* receiver);
bool sendMsgSwitchOffInit(LiveActor* receiver);
bool sendMsgSwitchKillOn(LiveActor* receiver);
bool sendMsgSwitchKillOnInit(LiveActor* receiver);
bool sendMsgSwitchKillOffInit(LiveActor* receiver);
bool sendMsgPlayerFloorTouchToColliderGround(LiveActor* receiver, HitSensor* sender);
bool sendMsgPlayerUpperPunchToColliderCeiling(LiveActor* receiver, HitSensor* sender);
bool sendMsgEnemyFloorTouchToColliderGround(LiveActor* receiver, HitSensor* sender);
bool sendMsgEnemyUpperPunchToColliderCeiling(LiveActor* receiver, HitSensor* sender);
bool sendMsgAskSafetyPoint(HitSensor* receiver, HitSensor* sender, sead::Vector3f**);
bool sendMsgAskSafetyPointToColliderGround(LiveActor* receiver, HitSensor* sender,
sead::Vector3f**);
bool sendMsgTouchAssist(HitSensor* receiver, HitSensor* sender);
bool sendMsgTouchAssistTrig(HitSensor* receiver, HitSensor* sender);
bool sendMsgTouchStroke(HitSensor* receiver, HitSensor* sender);
bool sendMsgScreenPointInvalidCollisionParts(HitSensor* receiver, HitSensor* sender);
bool sendMsgBlockUpperPunch(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgBlockLowerPunch(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgBlockItemGet(HitSensor* receiver, HitSensor* sender);
bool sendMsgKillerItemGet(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerKouraAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
bool sendMsgLightFlash(HitSensor* receiver, HitSensor* sender);
bool sendMsgForceAbyss(HitSensor* receiver, HitSensor* sender);
bool sendMsgIsNerveSupportFreeze(HitSensor* receiver, HitSensor* sender);
bool sendMsgOnSyncSupportFreeze(HitSensor* receiver, HitSensor* sender);
bool sendMsgOffSyncSupportFreeze(HitSensor* receiver, HitSensor* sender);
bool sendMsgSwordAttackHighLeft(HitSensor* receiver, HitSensor* sender);
bool sendMsgSwordAttackLowLeft(HitSensor* receiver, HitSensor* sender);
bool sendMsgSwordAttackHighRight(HitSensor* receiver, HitSensor* sender);
bool sendMsgSwordAttackLowRight(HitSensor* receiver, HitSensor* sender);
bool sendMsgSwordAttackJumpUnder(HitSensor* receiver, HitSensor* sender);
bool sendMsgSwordBeamAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgSwordBeamReflectAttack(HitSensor* receiver, HitSensor* sender);
bool sendMsgShieldGuard(HitSensor* receiver, HitSensor* sender);
bool sendMsgEnemyAttackKnockDown(HitSensor* receiver, HitSensor* sender);
bool sendMsgAskMultiPlayerEnemy(HitSensor* receiver, HitSensor* sender);
bool sendMsgItemGettable(HitSensor* receiver, HitSensor* sender);
bool sendMsgKikkiThrow(HitSensor* receiver, HitSensor* sender);
bool sendMsgIsKikkiThrowTarget(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerCloudGet(HitSensor* receiver, HitSensor* sender);
bool sendMsgAutoJump(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerTouchShadow(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerPullOutShadow(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerAttackShadow(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerAttackShadowStrong(HitSensor* receiver, HitSensor* sender);
bool sendMsgPlayerAttackChangePos(HitSensor* receiver, HitSensor* sender, sead::Vector3f* pos);
bool sendMsgAtmosOnlineLight(HitSensor* receiver, HitSensor* sender);
bool sendMsgLightBurn(HitSensor* receiver, HitSensor* sender);
bool sendMsgMoonLightBurn(HitSensor* receiver, HitSensor* sender);
bool sendMsgString(HitSensor* receiver, HitSensor* sender, const char* str);
bool sendMsgStringV4fPtr(HitSensor* receiver, HitSensor* sender, const char* str,
sead::Vector4f* vec);
bool sendMsgStringV4fSensorPtr(HitSensor* receiver, HitSensor* sender, const char* str,
sead::Vector4f* vec);
bool sendMsgStringVoidPtr(HitSensor* receiver, HitSensor* sender, const char* str, void* ptr);
bool isMsgPushAll(const SensorMsg* msg);
bool isMsgPush(const SensorMsg* msg);
bool isMsgPushStrong(const SensorMsg* msg);
bool isMsgPushVeryStrong(const SensorMsg* msg);
bool isMsgHoldReleaseAll(const SensorMsg* msg);
bool isMsgHoldCancel(const SensorMsg* msg);
bool isMsgPlayerRelease(const SensorMsg* msg);
bool isMsgPlayerReleaseBySwing(const SensorMsg* msg);
bool isMsgPlayerReleaseDead(const SensorMsg* msg);
bool isMsgPlayerReleaseDamage(const SensorMsg* msg);
bool isMsgPlayerReleaseDemo(const SensorMsg* msg);
bool isMsgItemGetDirectAll(const SensorMsg* msg);
bool isMsgPlayerItemGet(const SensorMsg* msg);
bool isMsgRideAllPlayerItemGet(const SensorMsg* msg);
bool isMsgPlayerTailAttack(const SensorMsg* msg);
bool isMsgItemGetByObjAll(const SensorMsg* msg);
bool isMsgBallItemGet(const SensorMsg* msg);
bool isMsgKickKouraItemGet(const SensorMsg* msg);
bool isMsgKillerItemGet(const SensorMsg* msg);
bool isMsgItemGetAll(const SensorMsg* msg);
bool isMsgFloorTouch(const SensorMsg* msg);
bool isMsgPlayerFloorTouch(const SensorMsg* msg);
bool isMsgEnemyFloorTouch(const SensorMsg* msg);
bool isMsgUpperPunch(const SensorMsg* msg);
bool isMsgPlayerUpperPunch(const SensorMsg* msg);
bool isMsgEnemyUpperPunch(const SensorMsg* msg);
bool isMsgPlayerTrample(const SensorMsg* msg);
bool isMsgPlayerTrampleReflect(const SensorMsg* msg);
bool isMsgPlayerHipDropAll(const SensorMsg* msg);
bool isMsgPlayerStatueDrop(const SensorMsg* msg);
bool isMsgPlayerObjHipDropAll(const SensorMsg* msg);
bool isMsgPlayerObjStatueDrop(const SensorMsg* msg);
bool isMsgPlayerObjHipDropReflectAll(const SensorMsg* msg);
bool isMsgPlayerObjStatueDropReflect(const SensorMsg* msg);
bool isMsgPlayerObjHipDropHighJump(const SensorMsg* msg);
bool isMsgPlayerHipDropKnockDown(const SensorMsg* msg);
bool isMsgPlayerObjStatueDropReflectNoCondition(const SensorMsg* msg);
bool isMsgPlayerStatueTouch(const SensorMsg* msg);
bool isMsgPlayerObjUpperPunch(const SensorMsg* msg);
bool isMsgPlayerRollingAttack(const SensorMsg* msg);
bool isMsgPlayerRollingReflect(const SensorMsg* msg);
bool isMsgPlayerObjRollingAttack(const SensorMsg* msg);
bool isMsgPlayerObjRollingAttackFailure(const SensorMsg* msg);
bool isMsgPlayerInvincibleAttack(const SensorMsg* msg);
bool isMsgPlayerFireBallAttack(const SensorMsg* msg);
bool isMsgPlayerRouteDokanFireBallAttack(const SensorMsg* msg);
bool isMsgPlayerKick(const SensorMsg* msg);
bool isMsgPlayerCatch(const SensorMsg* msg);
bool isMsgPlayerSlidingAttack(const SensorMsg* msg);
bool isMsgPlayerBoomerangAttack(const SensorMsg* msg);
bool isMsgPlayerBoomerangAttackCollide(const SensorMsg* msg);
bool isMsgPlayerBoomerangReflect(const SensorMsg* msg);
bool isMsgPlayerBoomerangBreak(const SensorMsg* msg);
bool isMsgPlayerBodyAttack(const SensorMsg* msg);
bool isMsgPlayerBodyLanding(const SensorMsg* msg);
bool isMsgPlayerBodyAttackReflect(const SensorMsg* msg);
bool isMsgPlayerClimbAttack(const SensorMsg* msg);
bool isMsgPlayerSpinAttack(const SensorMsg* msg);
bool isMsgPlayerGiantAttack(const SensorMsg* msg);
bool isMsgPlayerCooperationHipDrop(const SensorMsg* msg);
bool isMsgPlayerClimbSlidingAttack(const SensorMsg* msg);
bool isMsgPlayerClimbRollingAttack(const SensorMsg* msg);
bool isMsgPlayerGiantHipDrop(const SensorMsg* msg);
bool isMsgPlayerDisregard(const SensorMsg* msg);
bool isMsgPlayerDash(const SensorMsg* msg);
bool isMsgPlayerDamageTouch(const SensorMsg* msg);
bool isMsgPlayerFloorTouchBind(const SensorMsg* msg);
bool isMsgPlayerTouch(const SensorMsg* msg);
bool isMsgPlayerInvincibleTouch(const SensorMsg* msg);
bool isMsgPlayerGiantTouch(const SensorMsg* msg);
bool isMsgPlayerObjTouch(const SensorMsg* msg);
bool isMsgPlayerPutOnEquipment(const SensorMsg* msg);
bool isMsgPlayerReleaseEquipment(const SensorMsg* msg);
bool isMsgPlayerReleaseEquipmentGoal(const SensorMsg* msg);
bool isMsgPlayerCarryFront(const SensorMsg* msg);
bool isMsgPlayerCarryFrontWallKeep(const SensorMsg* msg);
bool isMsgPlayerCarryUp(const SensorMsg* msg);
bool isMsgPlayerCarryKeepDemo(const SensorMsg* msg);
bool isMsgPlayerCarryWarp(const SensorMsg* msg);
bool isMsgPlayerLeave(const SensorMsg* msg);
bool isMsgPlayerToss(const SensorMsg* msg);
bool isMsgEnemyAttack(const SensorMsg* msg);
bool isMsgEnemyAttackFire(const SensorMsg* msg);
bool isMsgEnemyAttackKnockDown(const SensorMsg* msg);
bool isMsgEnemyAttackBoomerang(const SensorMsg* msg);
bool isMsgEnemyAttackNeedle(const SensorMsg* msg);
bool isMsgEnemyItemGet(const SensorMsg* msg);
bool isMsgEnemyRouteDokanAttack(const SensorMsg* msg);
bool isMsgEnemyRouteDokanFire(const SensorMsg* msg);
bool isMsgExplosion(const SensorMsg* msg);
bool isMsgExplosionCollide(const SensorMsg* msg);
bool isMsgBindStart(const SensorMsg* msg);
bool isMsgBindInit(const SensorMsg* msg);
bool isMsgBindEnd(const SensorMsg* msg);
bool isMsgBindCancel(const SensorMsg* msg);
bool isMsgBindCancelByDemo(const SensorMsg* msg);
bool isMsgBindDamage(const SensorMsg* msg);
bool isMsgBindSteal(const SensorMsg* msg);
bool isMsgBindGiant(const SensorMsg* msg);
bool isMsgPressureDeath(const SensorMsg* msg);
bool isMsgNpcTouch(const SensorMsg* msg);
bool isMsgHit(const SensorMsg* msg);
bool isMsgHitStrong(const SensorMsg* msg);
bool isMsgHitVeryStrong(const SensorMsg* msg);
bool isMsgKnockDown(const SensorMsg* msg);
bool isMsgMapPush(const SensorMsg* msg);
bool isMsgVanish(const SensorMsg* msg);
bool isMsgChangeAlpha(const SensorMsg* msg);
bool isMsgShowModel(const SensorMsg* msg);
bool isMsgHideModel(const SensorMsg* msg);
bool isMsgRestart(const SensorMsg* msg);
bool isMsgEnemyTouch(const SensorMsg* msg);
bool isMsgEnemyTrample(const SensorMsg* msg);
bool isMsgMapObjTrample(const SensorMsg* msg);
bool isMsgNeedleBallAttack(const SensorMsg* msg);
bool isMsgPunpunFloorTouch(const SensorMsg* msg);
bool isMsgInvalidateFootPrint(const SensorMsg* msg);
bool isMsgKickKouraAttack(const SensorMsg* msg);
bool isMsgKickKouraAttackCollide(const SensorMsg* msg);
bool isMsgKickKouraReflect(const SensorMsg* msg);
bool isMsgKickKouraCollideNoReflect(const SensorMsg* msg);
bool isMsgKickKouraBreak(const SensorMsg* msg);
bool isMsgKickKouraBlow(const SensorMsg* msg);
bool isMsgKickStoneAttack(const SensorMsg* msg);
bool isMsgKickStoneAttackCollide(const SensorMsg* msg);
bool isMsgKickStoneAttackHold(const SensorMsg* msg);
bool isMsgKickStoneAttackReflect(const SensorMsg* msg);
bool isMsgKickStoneTrample(const SensorMsg* msg);
bool isMsgKillerAttack(const SensorMsg* msg);
bool isMsgLiftGeyser(const SensorMsg* msg);
bool isMsgWarpStart(const SensorMsg* msg);
bool isMsgWarpEnd(const SensorMsg* msg);
bool isMsgHoleIn(const SensorMsg* msg);
bool isMsgJumpInhibit(const SensorMsg* msg);
bool isMsgGoalKill(const SensorMsg* msg);
bool isMsgGoal(const SensorMsg* msg);
bool isMsgBallAttack(const SensorMsg* msg);
bool isMsgBallRouteDokanAttack(const SensorMsg* msg);
bool isMsgBallAttackHold(const SensorMsg* msg);
bool isMsgBallAttackDRCHold(const SensorMsg* msg);
bool isMsgBallAttackCollide(const SensorMsg* msg);
bool isMsgBallTrample(const SensorMsg* msg);
bool isMsgBallTrampleCollide(const SensorMsg* msg);
bool isMsgFireBallCollide(const SensorMsg* msg);
bool isMsgFireBallFloorTouch(const SensorMsg* msg);
bool isMsgDokanBazookaAttack(const SensorMsg* msg);
bool isMsgSwitchOn(const SensorMsg* msg);
bool isMsgSwitchOnInit(const SensorMsg* msg);
bool isMsgSwitchOffInit(const SensorMsg* msg);
bool isMsgSwitchKillOn(const SensorMsg* msg);
bool isMsgSwitchKillOnInit(const SensorMsg* msg);
bool isMsgSwitchKillOffInit(const SensorMsg* msg);
bool isMsgAskSafetyPoint(const SensorMsg* msg);
bool trySetAskSafetyPointFollowPos(const SensorMsg* msg, sead::Vector3f*);
bool isMsgTouchAssist(const SensorMsg* msg);
bool isMsgTouchAssistNoPat(const SensorMsg* msg);
bool isMsgTouchAssistTrig(const SensorMsg* msg);
bool isMsgTouchAssistTrigOff(const SensorMsg* msg);
bool isMsgTouchAssistTrigNoPat(const SensorMsg* msg);
bool isMsgTouchAssistBurn(const SensorMsg* msg);
bool isMsgTouchAssistAll(const SensorMsg* msg);
bool isMsgTouchCarryItem(const SensorMsg* msg);
bool isMsgTouchReleaseItem(const SensorMsg* msg);
bool isMsgTouchStroke(const SensorMsg* msg);
bool isMsgIsNerveSupportFreeze(const SensorMsg* msg);
bool isMsgOnSyncSupportFreeze(const SensorMsg* msg);
bool isMsgOffSyncSupportFreeze(const SensorMsg* msg);
bool isMsgScreenPointInvalidCollisionParts(const SensorMsg* msg);
bool isMsgBlockUpperPunch(const SensorMsg* msg);
bool isMsgBlockLowerPunch(const SensorMsg* msg);
bool isMsgBlockItemGet(const SensorMsg* msg);
bool isMsgPlayerKouraAttack(const SensorMsg* msg);
bool isMsgLightFlash(const SensorMsg* msg);
bool isMsgForceAbyss(const SensorMsg* msg);
bool isMsgSwordAttackHigh(const SensorMsg* msg);
bool isMsgSwordAttackHighLeft(const SensorMsg* msg);
bool isMsgSwordAttackHighRight(const SensorMsg* msg);
bool isMsgSwordAttackLow(const SensorMsg* msg);
bool isMsgSwordAttackLowLeft(const SensorMsg* msg);
bool isMsgSwordAttackLowRight(const SensorMsg* msg);
bool isMsgSwordBeamAttack(const SensorMsg* msg);
bool isMsgSwordBeamReflectAttack(const SensorMsg* msg);
bool isMsgSwordAttackJumpUnder(const SensorMsg* msg);
bool isMsgShieldGuard(const SensorMsg* msg);
bool isMsgAskMultiPlayerEnemy(const SensorMsg* msg);
bool isMsgItemGettable(const SensorMsg* msg);
bool isMsgKikkiThrow(const SensorMsg* msg);
bool isMsgIsKikkiThrowTarget(const SensorMsg* msg);
bool isMsgPlayerCloudGet(const SensorMsg* msg);
bool isMsgAutoJump(const SensorMsg* msg);
bool isMsgPlayerTouchShadow(const SensorMsg* msg);
bool isMsgPlayerPullOutShadow(const SensorMsg* msg);
bool isMsgPlayerAttackShadow(const SensorMsg* msg);
bool isMsgPlayerAttackShadowStrong(const SensorMsg* msg);
bool isMsgPlayerAttackChangePos(const SensorMsg* msg);
bool isMsgAtmosOnlineLight(const SensorMsg* msg);
bool isMsgLightBurn(const SensorMsg* msg);
bool isMsgMoonLightBurn(const SensorMsg* msg);
bool isMsgString(const SensorMsg* msg);
bool isMsgStringV4fPtr(const SensorMsg* msg);
bool isMsgStringV4fSensorPtr(const SensorMsg* msg);
bool isMsgStringVoidPtr(const SensorMsg* msg);
bool isMsgPlayerTrampleForCrossoverSensor(const SensorMsg* msg, const HitSensor*, const HitSensor*);
bool isMsgPlayerTrampleReflectForCrossoverSensor(const SensorMsg* msg, const HitSensor*,
const HitSensor*);
bool isMsgPlayerUpperPunchForCrossoverSensor(const SensorMsg* msg, const HitSensor*,
const HitSensor*, f32);
bool isMsgKickStoneTrampleForCrossoverSensor(const SensorMsg* msg, const HitSensor*,
const HitSensor*);
} // namespace al

View File

@ -1,43 +1,18 @@
#pragma once
#include "al/Library/Yaml/ByamlIter.h"
#include "al/Library/HostIO/HioNode.h"
#include <math/seadMatrix.h>
#include "al/Library/Area/IUseAreaObj.h"
#include "al/Library/Audio/IUseAudioKeeper.h"
#include "al/Library/Camera/IUseCamera.h"
#include "al/Library/Collision/IUseCollision.h"
#include "al/Library/Effect/IUseEffectKeeper.h"
#include "al/Library/Nerve/Nerve.h"
#include "al/Library/Rail/RailKeeper.h"
#include "al/Library/Rail/RailRider.h"
#include "al/Library/HostIO/HioNode.h"
#include "al/Library/Nerve/IUseNerve.h"
#include "al/Library/Rail/IUseRail.h"
#include "al/Library/Scene/SceneObjHolder.h"
#include "al/Library/Screen/ScreenPointKeeper.h"
#include "al/Library/HitSensor/HitSensorKeeper.h"
#include "al/Library/Stage/StageSwitchKeeper.h"
namespace al {
class ActorScoreKeeper {
public:
struct Entry {
const char* factorName;
const char* categoryName;
};
ActorScoreKeeper();
void init(const al::ByamlIter& iter);
void getCategoryName(); // unknown return type
const char* tryGetCategoryName(const char* a1);
private:
inline void allocArray();
inline void putEntry(int index, const al::ByamlIter& iter);
Entry* array;
int size;
};
class ActorPoseKeeperBase;
class ActorExecuteInfo;
class ActorActionKeeper;
@ -46,33 +21,43 @@ class ActorScoreKeeper;
class Collider;
class CollisionParts;
class ModelKeeper;
class NerveKeeper;
class HitSensorKeeper;
class ScreenPointKeeper;
class EffectKeeper;
class AudioKeeper;
class HitReactionKeeper;
class StageSwitchKeeper;
class RailKeeper;
class ShadowKeeper;
class ActorPrePassLightKeeper;
class ActorOcclusionKeeper;
class SubActorKeeper;
class ActorSceneInfo;
class LiveActorFlag;
class ActorParamHolder;
struct ActorSceneInfo;
struct LiveActorFlag;
class ActorInitInfo;
class HitSensor;
class SensorMsg;
class ScreenPointer;
class ScreenPointTarget;
class LiveActor : public al::IUseNerve,
public al::IUseEffectKeeper,
public al::IUseAudioKeeper,
public al::IUseStageSwitch,
public al::IUseSceneObjHolder,
public al::IUseAreaObj,
public al::IUseCamera,
public al::IUseCollision,
public al::IUseRail,
public al::IUseHioNode {
public:
LiveActor(const char* name); // TODO requires implementation
class LiveActor : public IUseNerve,
public IUseEffectKeeper,
public IUseAudioKeeper,
public IUseStageSwitch,
public IUseSceneObjHolder,
public IUseAreaObj,
public IUseCamera,
public IUseCollision,
public IUseRail,
public IUseHioNode {
friend class alActorFunction;
virtual NerveKeeper* getNerveKeeper() const override;
public:
LiveActor(const char* actorName);
NerveKeeper* getNerveKeeper() const override;
virtual void init(const ActorInitInfo& info);
virtual void initAfterPlacement();
virtual void appear();
@ -85,12 +70,10 @@ public:
virtual void startClipped();
virtual void endClipped();
virtual void attackSensor(HitSensor* target, HitSensor* source);
virtual bool receiveMsg(const SensorMsg* message, HitSensor* source,
HitSensor* target); // NOTE: return type unknown
virtual bool receiveMsgScreenPoint(const SensorMsg*, ScreenPointer*,
ScreenPointTarget*); // NOTE: return type unknown
virtual bool receiveMsg(const SensorMsg* message, HitSensor* source, HitSensor* target);
virtual bool receiveMsgScreenPoint(const SensorMsg*, ScreenPointer*, ScreenPointTarget*);
virtual const char* getName() const override;
virtual void* getBaseMtx() const; // NOTE: return type unknown
virtual sead::Matrix44f* getBaseMtx() const;
virtual EffectKeeper* getEffectKeeper() const override;
virtual AudioKeeper* getAudioKeeper() const override;
virtual StageSwitchKeeper* getStageSwitchKeeper() const override;
@ -109,42 +92,66 @@ public:
void initModelKeeper(ModelKeeper*);
void initActionKeeper(ActorActionKeeper*);
void initNerveKeeper(NerveKeeper*);
void initHitSensor(int);
void initHitSensor(s32);
void initScreenPointKeeper(ScreenPointKeeper*);
void initEffectKeeper(EffectKeeper*);
void initAudioKeeper(AudioKeeper*);
void initRailKeeper(const ActorInitInfo&, const char*);
void initCollider(float, float, unsigned int);
void initItemKeeper(int);
void initCollider(f32, f32, u32);
void initItemKeeper(s32);
void initScoreKeeper();
void initActorPrePassLightKeeper(ActorPrePassLightKeeper*);
void initActorOcclusionKeeper(ActorOcclusionKeeper*);
void initSubActorKeeper(SubActorKeeper*);
void initSceneInfo(ActorSceneInfo*);
LiveActorFlag* getFlags() const { return mFlags; }
ModelKeeper* getModelKeeper() const { return mModelKeeper; }
ActorPoseKeeperBase* getPoseKeeper() const { return mPoseKeeper; }
private:
const char* mActorName;
al::ActorPoseKeeperBase* mPoseKeeper;
al::ActorExecuteInfo* mLayoutExecuteInfo;
al::ActorActionKeeper* mActorActionKeeper;
al::ActorItemKeeper* mActorItemKeeper;
al::ActorScoreKeeper* mActorScoreKeeper;
al::Collider* mCollider;
al::CollisionParts* mCollisionParts;
al::ModelKeeper* mModelKeeper;
al::NerveKeeper* mNerveKeeper;
al::HitSensorKeeper* mHitSensorKeeper;
al::ScreenPointKeeper* mScreenPointKeeper;
al::EffectKeeper* mEffectKeeper;
al::AudioKeeper* mAudioKeeper;
void* gap_4;
al::StageSwitchKeeper* mStageSwitchKeeper;
al::RailKeeper* mRailKeeper;
al::ShadowKeeper* mShadowKeeper;
al::ActorPrePassLightKeeper* mActorPrePassLightKeeper;
al::ActorOcclusionKeeper* mActorOcclusionKeeper;
al::SubActorKeeper* mSubActorKeeper;
void* gap_6;
al::ActorSceneInfo* mSceneInfo;
al::LiveActorFlag* mLiveActorFlag;
ActorPoseKeeperBase* mPoseKeeper;
ActorExecuteInfo* mLayoutExecuteInfo;
ActorActionKeeper* mActorActionKeeper;
ActorItemKeeper* mActorItemKeeper;
ActorScoreKeeper* mActorScoreKeeper;
Collider* mCollider;
CollisionParts* mCollisionParts;
ModelKeeper* mModelKeeper;
NerveKeeper* mNerveKeeper;
HitSensorKeeper* mHitSensorKeeper;
ScreenPointKeeper* mScreenPointKeeper;
EffectKeeper* mEffectKeeper;
AudioKeeper* mAudioKeeper;
HitReactionKeeper* mHitReactionKeeper;
StageSwitchKeeper* mStageSwitchKeeper;
RailKeeper* mRailKeeper;
ShadowKeeper* mShadowKeeper;
ActorPrePassLightKeeper* mActorPrePassLightKeeper;
ActorOcclusionKeeper* mActorOcclusionKeeper;
SubActorKeeper* mSubActorKeeper;
ActorParamHolder* mActorParamHolder;
ActorSceneInfo* mSceneInfo;
LiveActorFlag* mFlags;
};
}; // namespace al
struct LiveActorFlag {
bool isDead = true;
bool isClipped = false;
bool isClippingInvalid = true;
bool isDrawClipped = false;
bool isCalcAnim = false;
bool isModelVisible = false;
bool isCollideOff = true;
bool field_07 = false;
bool isMaterialCodeValid = false;
bool isPuddleMaterialValid = false;
bool isAreaTargetOn = true;
bool isUpdateOn = true;
LiveActorFlag();
};
static_assert(sizeof(LiveActorFlag) == 0xC);
} // namespace al

View File

@ -1,24 +0,0 @@
#pragma once
namespace al {
class LiveActorFlag {
public:
LiveActorFlag();
bool val1 = true;
bool val2 = false;
bool val3 = true;
bool val4 = false;
bool val5 = false;
bool val6 = false;
bool val7 = true;
bool val8 = false;
bool val9 = false;
bool val10 = false;
bool val11 = true;
bool val12 = true;
};
static_assert(sizeof(LiveActorFlag) == 0xC);
} // namespace al

View File

@ -1,31 +1,50 @@
#pragma once
#include <basis/seadTypes.h>
#include "al/Library/HostIO/HioNode.h"
namespace al {
class LiveActor;
class LiveActorGroup : public al::HioNode {
class LiveActorGroup : public HioNode {
public:
LiveActorGroup(const char*, int);
LiveActorGroup(const char*, s32);
virtual int registerActor(al::LiveActor*);
virtual s32 registerActor(LiveActor*);
void removeActor(const al::LiveActor*);
void removeActor(const LiveActor*);
void removeActorAll();
bool isExistActor(const al::LiveActor*) const;
bool isExistActor(const LiveActor*) const;
bool isFull() const;
int calcAliveActorNum() const;
al::LiveActor* getDeadActor() const;
al::LiveActor* tryFindDeadActor() const;
LiveActor* getDeadActor() const;
LiveActor* tryFindDeadActor() const;
void appearAll();
void killAll();
void makeActorAliveAll();
void makeActorDeadAll();
const char* mGroupName; // _8
int mMaxActorCount; // _10
int mActorCount; // _14
al::LiveActor** mActors; // _18
private:
const char* mGroupName;
s32 mMaxActorCount;
s32 mActorCount;
LiveActor** mActors;
};
template <class T>
class DeriveActorGroup : LiveActorGroup {
public:
s32 registerActor(T* actor) { LiveActorGroup::registerActor(actor); }
void removeActor(const T* actor) { LiveActorGroup::removeActor(actor); }
void removeActorAll() { LiveActorGroup::removeActorAll(); }
bool isExistActor(const T* actor) const { return LiveActorGroup::isExistActor(actor); }
bool isFull() const { return LiveActorGroup::isFull(); }
s32 calcAliveActorNum() const { return LiveActorGroup::calcAliveActorNum(); }
T* getDeadActor() const { return LiveActorGroup::getDeadActor(); }
T* tryFindDeadActor() const { return LiveActorGroup::tryFindDeadActor(); }
void appearAll() { LiveActorGroup::appearAll(); }
void killAll() { LiveActorGroup::killAll(); }
void makeActorAliveAll() { LiveActorGroup::makeActorAliveAll(); }
void makeActorDeadAll() { LiveActorGroup::makeActorDeadAll(); }
};
}; // namespace al

View File

@ -5,31 +5,18 @@
#include <math/seadVector.h>
#include <prim/seadSafeString.h>
#include "al/Library/LiveActor/LiveActor.h"
#include "al/Library/Nerve/Nerve.h"
namespace al {
template <typename T>
al::LiveActor* createActorFunction(const char* actorName);
const sead::Vector3f& getTrans(const al::LiveActor*);
const sead::Vector3f& getGravity(const al::LiveActor*);
const sead::Vector3f& getUp(const al::LiveActor*);
const sead::Vector3f& getFront(const al::LiveActor*);
const sead::Vector3f& getVelocity(const al::LiveActor*);
const sead::Quatf& getQuat(const al::LiveActor*);
sead::Vector3f* getTransPtr(al::LiveActor*);
sead::Vector3f* getGravityPtr(al::LiveActor*);
sead::Vector3f* getUpPtr(al::LiveActor*);
sead::Vector3f* getFrontPtr(al::LiveActor*);
sead::Vector3f* getVelocityPtr(al::LiveActor*);
sead::Quatf* getQuatPtr(al::LiveActor*);
const sead::Vector3f& getCameraUp(const al::LiveActor*, int);
const sead::Vector3f& getScale(const al::LiveActor*);
float getScaleX(const al::LiveActor*);
float getScaleY(const al::LiveActor*);
float getScaleZ(const al::LiveActor*);
const sead::Vector3f& getVelocity(const al::LiveActor* actor);
sead::Vector3f* getVelocityPtr(al::LiveActor* actor);
sead::Vector3f* getGravityPtr(al::LiveActor* actor);
float calcDistance(const al::LiveActor*, const sead::Vector3f&);
float calcDistance(const al::LiveActor*, const al::LiveActor*);
@ -39,7 +26,6 @@ float calcSpeedV(const al::LiveActor*);
bool isClipped(const LiveActor*);
void tryInitFixedModelGpuBuffer(const LiveActor*);
void offUpdateMovementEffectAudioCollisionSensor(const LiveActor*);
bool isDead(const LiveActor*);
bool isAlive(const LiveActor*);
bool isHideModel(const LiveActor*);
@ -48,15 +34,10 @@ void showModelIfHide(al::LiveActor*);
void setModelAlphaMask(const LiveActor*, float);
void resetPosition(const LiveActor*);
const LiveActor* getSubActor(const LiveActor*, const char*); // NOTE: unknown return type
sead::Matrix34f* getJointMtxPtr(const LiveActor*, const char*); // return type might be const
void onSyncClippingSubActor(LiveActor*, const LiveActor*);
void onSyncHideSubActor(LiveActor*, const LiveActor*);
void onSyncAlphaMaskSubActor(LiveActor*, const LiveActor*);
void setMaterialProgrammable(al::LiveActor*);
void startAction(al::LiveActor*, char const*);
void tryStartAction(al::LiveActor*, char const*);
bool isActionEnd(const al::LiveActor*);
bool isExistAction(const al::LiveActor*);
bool isExistModel(const al::LiveActor*);
bool isViewDependentModel(const al::LiveActor*);
void calcViewModel(const al::LiveActor*);
@ -76,9 +57,6 @@ void initJointGlobalQuatController(const al::LiveActor*, const sead::Quatf*, con
bool isEffectEmitting(const IUseEffectKeeper*, const char*);
void trySyncStageSwitchAppear(al::LiveActor* actor);
void trySyncStageSwitchAppearAndKill(al::LiveActor* actor);
void registActorToDemoInfo(al::LiveActor* actor, const al::ActorInitInfo& info);
} // namespace al

View File

@ -1,6 +1,7 @@
#pragma once
#include "al/Library/LiveActor/LiveActor.h"
namespace al {
class FixMapParts : public LiveActor {
public:

View File

@ -0,0 +1,27 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class ByamlIter;
class InOutParam {
public:
InOutParam();
InOutParam(const InOutParam& src);
InOutParam(f32 inMin, f32 inMax, f32 outMin, f32 outMax);
void init(const ByamlIter& iter);
f32 calcLeapValue(f32 value);
f32 calcEaseInValue(f32 value);
f32 calcEaseOutValue(f32 value);
f32 calcEaseInOutValue(f32 value);
f32 calcSqrtValue(f32 value);
f32 calcSquareValue(f32 value);
private:
f32 mInMin;
f32 mInMax;
f32 mOutMin;
f32 mOutMax;
};
}

View File

@ -0,0 +1,11 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class IntervalTrigger {
public:
IntervalTrigger(f32);
void update(f32);
};
} // namespace al

View File

@ -0,0 +1,26 @@
#pragma once
#include <math/seadBoundBox.h>
#include <math/seadMatrix.h>
#include <math/seadVector.h>
namespace al {
void calcWorldPosFromGridIndex(sead::Vector3f* out, const sead::Matrix34f& matrix,
const sead::Vector3i& in);
void calcGridIndexFromWorldPos(sead::Vector3i* out, const sead::Matrix34f& matrix,
const sead::Vector3f& in);
sead::Vector3f calcGridIndexNext(const sead::Vector3f&, s32);
f32 calcDegreeDirIndexSignedX(s32 index);
f32 calcDegreeDirIndexSignedY(s32 index);
f32 calcDegreeDirIndexSignedZ(s32 index);
f32 calcDirIndexNearXY(const sead::Vector3i&, const sead::Vector3i&);
f32 calcDirIndexNearXY(const sead::Vector3i&, const sead::Vector3i&);
f32 calcDirIndexNearXY(const sead::Vector3i&, const sead::Vector3i&);
f32 signDirIndexX(s32);
f32 signDirIndexY(s32);
f32 signDirIndexZ(s32);
void calcGridMinMaxFromOBB(sead::Vector3i*, sead::Vector3i*, const sead::Matrix34f&,
const sead::Matrix34f&, const sead::BoundBox3f&);
void expandGridFromOBB(sead::Vector3i*, sead::Vector3i*, const sead::Matrix34f&,
const sead::Matrix34f&, const sead::BoundBox3f&);
} // namespace al

View File

@ -1,5 +1,6 @@
#pragma once
#include <math/seadMatrix.h>
#include <math/seadVector.h>
namespace al {
@ -33,7 +34,35 @@ inline T clamp(T value, T min, T max) {
}
void verticalizeVec(sead::Vector3f*, const sead::Vector3f&, const sead::Vector3f&);
void parallelizeVec(sead::Vector3f*, const sead::Vector3f&, const sead::Vector3f&);
float modf(float, float);
f32 modf(f32 a, f32 b);
}; // namespace al
bool normalize(f32 value);
bool normalize(sead::Matrix33f* value);
bool normalize(sead::Matrix34f* value);
bool isNear(f32 value, f32 target, f32 tolerance);
bool isNear(const sead::Vector2f& value, const sead::Vector2f& target, f32 tolerance);
bool isNear(const sead::Vector3f& value, const sead::Vector3f& target, f32 tolerance);
bool isNear(const sead::Matrix34f& value, const sead::Matrix34f& target, f32 tolerance);
bool isNearZero(f32 value, f32 tolerance);
bool isNearZero(const sead::Vector2f& value, f32 tolerance);
bool isNearZero(const sead::Vector3f& value, f32 tolerance);
bool isNearZero(const sead::Matrix34f& value, f32 tolerance);
bool isNearZeroOrGreater(f32 value, f32 tolerance);
bool isNearZeroOrLess(f32 value, f32 tolerance);
void calcQuatSide(sead::Vector3f* out, const sead::Quatf& quat);
void calcQuatUp(sead::Vector3f* out, const sead::Quatf& quat);
void calcQuatGravity(sead::Vector3f* out, const sead::Quatf& quat);
void calcQuatFront(sead::Vector3f* out, const sead::Quatf& quat);
void makeMtxRotateTrans(sead::Matrix34f* out, const sead::Vector3f& rotate,
const sead::Vector3f& trans);
void makeMtxFrontUpPos(sead::Matrix34f* out, const sead::Vector3f& front, const sead::Vector3f& up,
const sead::Vector3f& pos);
void makeMtxUpFrontPos(sead::Matrix34f* out, const sead::Vector3f& up, const sead::Vector3f& front,
const sead::Vector3f& pos);
} // namespace al

View File

@ -11,6 +11,7 @@ bool isNearZero(const sead::Vector2f&, float);
bool isNearZero(const sead::Vector3f&, float);
void verticalizeVec(sead::Vector3f*, const sead::Vector3f&, const sead::Vector3f&);
bool tryNormalizeOrZero(sead::Vector3f*);
bool normalize(sead::Vector2f* value);
void normalize(sead::Vector3f*);
void turnVecToVecDegree(sead::Vector3f*, const sead::Vector3f&, const sead::Vector3f&, float);
void turnVecToVecRate(sead::Vector3f*, const sead::Vector3f&, const sead::Vector3f&, float);

View File

@ -0,0 +1,8 @@
#pragma once
#include <heap/seadHeap.h>
namespace al {
sead::Heap* getStationedHeap();
sead::Heap* getCurrentHeap();
} // namespace al

View File

@ -1,5 +1,10 @@
#pragma once
namespace al {
class IUseMessageSystem {};
} // namespace al
class MessageSystem;
class IUseMessageSystem {
public:
virtual const MessageSystem* getMessageSystem() const;
};
} // namespace al

View File

@ -0,0 +1,12 @@
#pragma once
namespace al {
class NerveKeeper;
class IUseNerve {
public:
inline IUseNerve() {}
virtual NerveKeeper* getNerveKeeper() const = 0;
};
}; // namespace al

View File

@ -3,16 +3,9 @@
namespace al {
class NerveKeeper;
class IUseNerve {
public:
inline IUseNerve() {}
virtual NerveKeeper* getNerveKeeper() const = 0;
};
class Nerve {
public:
virtual void execute(NerveKeeper*) = 0;
virtual void executeOnEnd(NerveKeeper*) const;
virtual void execute(NerveKeeper* keeper) const = 0;
virtual void executeOnEnd(NerveKeeper* keeper) const;
};
}; // namespace al
} // namespace al

View File

@ -1,30 +1,17 @@
#pragma once
#include "al/Library/Nerve/Nerve.h"
#include "al/Library/Nerve/NerveUtil.h"
namespace al {
class NerveAction : public al::Nerve {
class NerveAction : public Nerve {
friend class alNerveFunction::NerveActionCollector;
public:
NerveAction();
virtual const char* getActionName() const = 0;
al::NerveAction* _8;
private:
NerveAction* mNextAction = nullptr;
};
}; // namespace al
namespace alNerveFunction {
class NerveActionCollector {
public:
NerveActionCollector();
void addNerve(al::NerveAction*);
int mActionCount; // _0
int _4;
al::NerveAction* _8;
al::NerveAction* _10;
static alNerveFunction::NerveActionCollector* sCurrentCollector;
};
}; // namespace alNerveFunction
} // namespace al

View File

@ -1,20 +1,23 @@
#pragma once
#include "al/Library/HostIO/HioNode.h"
#include "al/Library/Nerve/Nerve.h"
#include "al/Library/Nerve/NerveKeeper.h"
#include "al/Library/Nerve/IUseNerve.h"
namespace al {
class NerveExecutor : public IUseNerve, public al::HioNode {
class Nerve;
class NerveKeeper;
class NerveExecutor : public IUseNerve, public HioNode {
public:
NerveExecutor(const char*);
NerveExecutor(const char* name);
virtual NerveKeeper* getNerveKeeper() const;
virtual ~NerveExecutor();
void initNerve(const al::Nerve*, int);
void initNerve(const Nerve* nerve, int stateCount);
void updateNerve();
al::NerveKeeper* mKeeper; // _8
private:
NerveKeeper* mKeeper = nullptr;
};
}; // namespace al

View File

@ -1,26 +1,39 @@
#pragma once
#include "al/Library/Nerve/Nerve.h"
#include <basis/seadTypes.h>
namespace al {
class IUseNerve;
class Nerve;
class NerveStateCtrl;
class NerveActionCtrl;
class NerveKeeper {
public:
NerveKeeper(al::IUseNerve*, const al::Nerve*, int);
void update();
NerveKeeper(IUseNerve* parent, const Nerve* nerve, s32 maxStates);
void initNerveAction(NerveActionCtrl* actionCtrl);
void setNerve(const Nerve* nextNerve);
void tryChangeNerve();
void setNerve(const al::Nerve*);
const al::Nerve* getCurrentNerve() const;
void update();
const Nerve* getCurrentNerve() const;
al::IUseNerve* mParent; // _0
const al::Nerve* _8;
const al::Nerve* mNerve; // _10
int mStep; // _18
int _1C;
al::NerveStateCtrl* mStateCtrl; // _20
unsigned long _28;
s32 getCurrentStep() const { return mStep; }
bool isNewNerve() const { return mNextNerve != nullptr; }
NerveStateCtrl* getStateCtrl() const { return mStateCtrl; }
NerveActionCtrl* getActionCtrl() const { return mActionCtrl; }
template <typename T>
T* getParent() {
return static_cast<T*>(mParent);
}
private:
IUseNerve* mParent = nullptr;
const Nerve* mCurrentNerve = nullptr;
const Nerve* mNextNerve = nullptr;
s32 mStep = 0;
NerveStateCtrl* mStateCtrl = nullptr;
NerveActionCtrl* mActionCtrl = nullptr;
};
}; // namespace al
} // namespace al

View File

@ -0,0 +1,13 @@
#pragma once
#include "al/Library/Nerve/Nerve.h"
#include "al/Library/Nerve/NerveKeeper.h"
#define MAKE_NERVE_FUNC(Class, Action, Func) \
class ClassNrv##Action : public al::Nerve { \
void execute(al::NerveKeeper* keeper) const override { \
keeper->getParent<Class>()->exe##Func(); \
} \
}; \
ClassNrv##Action nrv##Class##Action
#define MAKE_NERVE(Class, Action) MAKE_NERVE_FUNC(Class, Action, Action)

View File

@ -5,7 +5,7 @@
namespace al {
class NerveStateBase : public NerveExecutor {
public:
NerveStateBase(const char*);
NerveStateBase(const char* stateName);
virtual ~NerveStateBase();
virtual void init();
@ -14,16 +14,19 @@ public:
virtual bool update();
virtual void control();
bool isDead() const { return mIsDead; }
private:
bool mIsDead = true;
};
class LiveActor;
class ActorStateBase : public al::NerveStateBase {
class ActorStateBase : public NerveStateBase {
public:
ActorStateBase(const char*, al::LiveActor*);
ActorStateBase(const char* stateName, LiveActor* actor);
private:
LiveActor* mLiveActor;
LiveActor* mActor;
};
}; // namespace al

View File

@ -1,31 +1,34 @@
#pragma once
#include <basis/seadTypes.h>
#include "al/Library/Nerve/Nerve.h"
#include "al/Library/Nerve/NerveStateBase.h"
namespace al {
struct State {
al::NerveStateBase* mStateBase; // _0
const al::Nerve* mNerve; // _8
const char* mName; // _10
};
class NerveStateCtrl {
public:
NerveStateCtrl(int);
struct State {
NerveStateBase* state;
const Nerve* nerve;
const char* name;
};
void addState(al::NerveStateBase*, const al::Nerve*, const char*);
public:
NerveStateCtrl(s32 maxStates);
void addState(NerveStateBase* state, const Nerve* nerve, const char* name);
bool updateCurrentState();
void startState(const al::Nerve*);
void startState(const Nerve* nerve);
void update();
State* findStateInfo(const al::Nerve*);
State* findStateInfo(const Nerve* nerve);
bool isCurrentStateEnd() const;
void tryEndCurrentState();
int _0;
int mStateCount; // _4
State* mStates; // _8
State* mCurrentState; // _10
private:
s32 mMaxStates;
s32 mStateCount;
State* mStates;
State* mCurrentState;
};
}; // namespace al

View File

@ -1,47 +1,101 @@
#pragma once
#include "al/Library/Nerve/Nerve.h"
#include "al/Library/Nerve/NerveStateBase.h"
#define NERVE_HEADER(Class, Action) \
class Class##Nrv##Action : public al::Nerve { \
public: \
void execute(al::NerveKeeper*) override; \
}; \
Class##Nrv##Action nrv##Class##Action;
#define NERVE_IMPL_(Class, Action, ActionFunc) \
void Class##Nrv##Action::execute(al::NerveKeeper* keeper) { \
static_cast<Class*>(keeper->mParent)->exe##ActionFunc(); \
}
#define NERVE_IMPL(Class, Action) NERVE_IMPL_(Class, Action, Action)
#include <basis/seadTypes.h>
namespace al {
void setNerve(al::IUseNerve*, const al::Nerve*);
void setNerveAtStep(al::IUseNerve*, const al::Nerve*, int);
bool isStep(const al::IUseNerve*, int);
void setNerveAtGreaterEqualStep(al::IUseNerve*, const al::Nerve*, int);
bool isGreaterEqualStep(const al::IUseNerve*, int);
bool isNerve(const al::IUseNerve*, const al::Nerve*);
int getNerveStep(const al::IUseNerve*);
const al::Nerve* getCurrentNerve(const al::IUseNerve*);
bool isFirstStep(const al::IUseNerve*);
bool isLessStep(const al::IUseNerve*, int);
bool isGreaterStep(const al::IUseNerve*, int);
bool isInRangeStep(const al::IUseNerve*, int, int);
bool isIntervalStep(const al::IUseNerve*, int, int);
bool isIntervalOnOffStep(const al::IUseNerve*, int, int);
bool isNewNerve(const al::IUseNerve*);
int calcNerveInterval(const al::IUseNerve*, int, int);
float calcNerveRate(const al::IUseNerve*, int);
float calcNerveRate(const al::IUseNerve*, int, int);
float calcNerveEaseInRate(const al::IUseNerve*, int);
float calcNerveEaseInRate(const al::IUseNerve*, int, int);
class IUseNerve;
class Nerve;
class NerveAction;
class NerveStateBase;
class LiveActor;
void initNerveState(al::IUseNerve*, al::NerveStateBase*, const al::Nerve*, const char*);
void initNerve(al::LiveActor*, const al::Nerve*, int);
void addNerveState(al::IUseNerve*, al::NerveStateBase*, const al::Nerve*, const char*);
void updateNerveState(al::IUseNerve*);
bool updateNerveStateAndNextNerve(al::IUseNerve*, const al::Nerve*);
bool isStateEnd(const al::IUseNerve*);
}; // namespace al
void setNerve(IUseNerve* user, const Nerve* nerve);
void setNerveAtStep(IUseNerve* user, const Nerve* nerve, s32 step);
void setNerveAtGreaterEqualStep(IUseNerve* user, const Nerve* nerve, s32 step);
int getNerveStep(const IUseNerve*);
const Nerve* getCurrentNerve(const IUseNerve*);
bool isStep(const IUseNerve* user, s32 step);
bool isFirstStep(const IUseNerve* user);
bool isGreaterStep(const IUseNerve* user, s32 step);
bool isGreaterEqualStep(const IUseNerve* user, s32 step);
bool isLessStep(const IUseNerve* user, s32 step);
bool isLessEqualStep(const IUseNerve* user, s32 step);
bool isInRangeStep(const IUseNerve* user, s32 startStep, s32 endStep);
bool isIntervalStep(const IUseNerve* user, s32 interval, s32 offset);
bool isIntervalOnOffStep(const IUseNerve* user, s32 interval, s32 offset);
bool isNerve(const IUseNerve* user, const Nerve* nerve);
bool isNewNerve(const IUseNerve* user);
int calcNerveInterval(const IUseNerve* user, s32, s32);
float calcNerveRate(const IUseNerve* user, s32);
float calcNerveRate(const IUseNerve* user, s32, s32);
float calcNerveEaseInRate(const IUseNerve* user, s32);
float calcNerveEaseInRate(const IUseNerve* user, s32, s32);
float calcNerveEaseOutRate(const IUseNerve* user, s32);
float calcNerveEaseOutRate(const IUseNerve* user, s32, s32);
float calcNerveEaseInOutRate(const IUseNerve* user, s32);
float calcNerveEaseInOutRate(const IUseNerve* user, s32, s32);
float calcNerveSquareInRate(const IUseNerve* user, s32);
float calcNerveSquareInRate(const IUseNerve* user, s32, s32);
float calcNerveSquareOutRate(const IUseNerve* user, s32);
float calcNerveSquareOutRate(const IUseNerve* user, s32, s32);
float calcNerveEaseByTypeRate(const IUseNerve* user, s32, s32);
float calcNerveEaseByTypeRate(const IUseNerve* user, s32, s32, s32);
float calcNervePowerInRate(const IUseNerve* user, s32, f32);
float calcNervePowerInRate(const IUseNerve* user, s32, s32, f32);
float calcNervePowerOutRate(const IUseNerve* user, s32, f32);
float calcNervePowerOutRate(const IUseNerve* user, s32, s32, f32);
float calcNerveJumpRate(const IUseNerve* user, s32, s32, s32);
float calcNerveEaseInValue(const IUseNerve* user, s32, s32, f32, f32);
float calcNerveStartEndRate(const IUseNerve* user, s32, s32, s32);
float calcNerveEaseInOutValue(const IUseNerve* user, s32, s32, f32, f32);
float calcNerveValue(const IUseNerve* user, s32, f32, f32);
float calcNerveValue(const IUseNerve* user, s32, s32, f32, f32);
float calcNerveEaseInValue(const IUseNerve* user, s32, f32, f32);
float calcNerveEaseOutValue(const IUseNerve* user, s32, f32, f32);
float calcNerveEaseOutValue(const IUseNerve* user, s32, s32, f32, f32);
float calcNerveEaseInOutValue(const IUseNerve* user, s32, f32, f32);
float calcNerveSquareInValue(const IUseNerve* user, s32, f32, f32);
float calcNerveSquareInValue(const IUseNerve* user, s32, s32, f32, f32);
float calcNerveSquareOutValue(const IUseNerve* user, s32, f32, f32);
float calcNerveSquareOutValue(const IUseNerve* user, s32, s32, f32, f32);
float calcNerveEaseByTypeValue(const IUseNerve* user, s32, f32, f32, s32);
float calcNerveEaseByTypeValue(const IUseNerve* user, s32, s32, f32, f32, s32);
float calcNerveCosCycle(const IUseNerve* user, s32);
float calcNerveSinCycle(const IUseNerve* user, s32);
float calcNerveRepeatRate(const IUseNerve* user, s32);
float calcNerveRepeatDegree(const IUseNerve* user, s32);
float calcNerveJumpValue(const IUseNerve* user, s32, s32, s32, f32);
float calcNerveStartEndValue(const IUseNerve* user, s32, s32, s32, f32, f32);
void initNerveState(IUseNerve* user, NerveStateBase* state, const Nerve* nerve, const char* hostName);
void addNerveState(IUseNerve* user, NerveStateBase* state, const Nerve* nerve, const char* hostName);
bool updateNerveState(IUseNerve* user);
bool updateNerveStateAndNextNerve(IUseNerve* user, const Nerve* nerve);
bool isStateEnd(const IUseNerve* user);
void initNerve(LiveActor* actor, const Nerve* nerve, int);
} // namespace al
namespace alNerveFunction {
void setNerveAction(al::IUseNerve* user, const char* action);
class NerveActionCollector {
friend class al::NerveAction;
public:
NerveActionCollector();
void addNerve(al::NerveAction* action);
private:
s32 mActionCount = 0;
al::NerveAction* mHead = nullptr;
al::NerveAction* mTail = nullptr;
static alNerveFunction::NerveActionCollector* sCurrentCollector;
};
} // namespace alNerveFunction

View File

@ -1,39 +0,0 @@
#pragma once
#include <resource/seadResource.h>
#include "al/Library/Yaml/ByamlIter.h"
namespace al {
class PlacementInfo {
public:
PlacementInfo();
void set(const al::ByamlIter& placement_iter, const al::ByamlIter& zone_iter);
const al::ByamlIter& getPlacementIter() const { return mPlacementIter; }
const al::ByamlIter& getZoneIter() const { return mZoneIter; }
private:
al::ByamlIter mPlacementIter;
al::ByamlIter mZoneIter;
};
class PlacementId {
public:
static bool isEqual(const al::PlacementId&, const al::PlacementId&);
PlacementId();
PlacementId(const char*, const char*, const char*);
bool init(const al::PlacementInfo&);
bool isEqual(const al::PlacementId&) const;
bool isValid() const;
bool makeString(sead::BufferedSafeString*) const;
private:
const char* mId;
const char* mUnitConfigName;
const char* mZoneId;
const char* mCommonID;
};
} // namespace al

View File

@ -1,28 +1,261 @@
#pragma once
#include "al/Library/LiveActor/ActorInitInfo.h"
#include "al/Library/Placement/Placement.h"
#include "math/seadVector.h"
#include <gfx/seadColor.h>
#include <math/seadMatrix.h>
#include <math/seadVector.h>
namespace al {
int getCountPlacementInfo(const al::PlacementInfo&);
void getPlacementInfoByKey(al::PlacementInfo*, const al::PlacementInfo&, const char*);
void getPlacementInfoByIndex(al::PlacementInfo*, const al::PlacementInfo&, int);
bool tryGetPlacementInfoByIndex(al::PlacementInfo*, const al::PlacementInfo&, int);
bool tryGetPlacementInfoByKey(al::PlacementInfo*, const al::PlacementInfo&, const char*);
void getPlacementInfoAndKeyNameByIndex(al::PlacementInfo*, const char**, const al::PlacementInfo&,
int);
bool tryGetPlacementInfoAndKeyNameByIndex(al::PlacementInfo*, const char**,
const al::PlacementInfo&, int);
al::PlacementId* createPlacementId(const al::ActorInitInfo&);
al::PlacementId* createPlacementId(const al::PlacementInfo&);
bool tryGetPlacementId(al::PlacementId*, const al::ActorInitInfo&);
bool tryGetPlacementId(al::PlacementId*, const al::PlacementInfo&);
void getPlacementId(al::PlacementId*, const al::ActorInitInfo&);
bool isEqualPlacementId(const al::PlacementId&, const al::PlacementId&);
bool isEqualPlacementId(const al::PlacementInfo&, const al::PlacementInfo&);
class ActorInitInfo;
class AreaInitInfo;
class PlacementInfo;
class PlacementId;
bool tryGetRailPointPos(sead::Vector3f*, const al::PlacementInfo&);
bool getRailPointHandlePrev(sead::Vector3f*, const al::PlacementInfo&);
bool getRailPointHandleNext(sead::Vector3f*, const al::PlacementInfo&);
}; // namespace al
bool isValidInfo(const PlacementInfo& placementInfo);
bool isPlaced(const PlacementInfo& placementInfo);
void getObjectName(const char** name, const ActorInitInfo& initInfo);
void getObjectName(const char** name, const PlacementInfo& placementInfo);
bool tryGetObjectName(const char** name, const ActorInitInfo& initInfo);
bool tryGetObjectName(const char** name, const PlacementInfo& placementInfo);
bool isObjectName(const ActorInitInfo& initInfo, const char* name);
bool isObjectName(const PlacementInfo& placementInfo, const char* name);
bool isObjectNameSubStr(const ActorInitInfo& initInfo, const char* name);
bool isObjectNameSubStr(const PlacementInfo& placementInfo, const char* name);
void getClassName(const char** name, const ActorInitInfo& initInfo);
void getClassName(const char** name, const PlacementInfo& placementInfo);
bool tryGetClassName(const char** name, const ActorInitInfo& initInfo);
bool tryGetClassName(const char** name, const PlacementInfo& placementInfo);
void getDisplayName(const char** name, const ActorInitInfo& initInfo);
void getDisplayName(const char** name, const PlacementInfo& placementInfo);
bool tryGetDisplayName(const char** name, const ActorInitInfo& initInfo);
bool tryGetDisplayName(const char** name, const PlacementInfo& placementInfo);
void getPlacementTargetFile(const char** targetFile, const PlacementInfo& placementInfo);
void getTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo);
void getTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo);
void multZoneMtx(sead::Vector3f* trans, const PlacementInfo& placementInfo);
bool tryGetTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo);
bool tryGetTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo);
void getRotate(sead::Vector3f* rotate, const ActorInitInfo& initInfo);
void getRotate(sead::Vector3f* rotate, const PlacementInfo& placementInfo);
bool tryGetRotate(sead::Vector3f* rotate, const ActorInitInfo& initInfo);
bool tryGetRotate(sead::Vector3f* rotate, const PlacementInfo& placementInfo);
void tryGetZoneMatrixTR(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
void getQuat(sead::Quatf* quat, const ActorInitInfo& initInfo);
void getQuat(sead::Quatf* quat, const PlacementInfo& placementInfo);
bool tryGetQuat(sead::Quatf* quat, const ActorInitInfo& initInfo);
bool tryGetQuat(sead::Quatf* quat, const PlacementInfo& placementInfo);
void getScale(sead::Vector3f* scale, const ActorInitInfo& initInfo);
void getScale(sead::Vector3f* scale, const PlacementInfo& placementInfo);
bool tryGetScale(sead::Vector3f* scale, const ActorInitInfo& initInfo);
bool tryGetScale(sead::Vector3f* scale, const PlacementInfo& placementInfo);
void getSide(sead::Vector3f* side, const ActorInitInfo& initInfo);
void getSide(sead::Vector3f* side, const PlacementInfo& placementInfo);
bool tryGetSide(sead::Vector3f* side, const ActorInitInfo& initInfo);
bool tryGetSide(sead::Vector3f* side, const PlacementInfo& placementInfo);
void getUp(sead::Vector3f* up, const ActorInitInfo& initInfo);
void getUp(sead::Vector3f* up, const PlacementInfo& placementInfo);
bool tryGetUp(sead::Vector3f* up, const ActorInitInfo& initInfo);
bool tryGetUp(sead::Vector3f* up, const PlacementInfo& placementInfo);
void getFront(sead::Vector3f* front, const ActorInitInfo& initInfo);
void getFront(sead::Vector3f* front, const PlacementInfo& placementInfo);
bool tryGetFront(sead::Vector3f* front, const ActorInitInfo& initInfo);
bool tryGetFront(sead::Vector3f* front, const PlacementInfo& placementInfo);
bool tryGetLocalAxis(sead::Vector3f* front, const ActorInitInfo& initInfo, s32 axis);
bool tryGetLocalAxis(sead::Vector3f* front, const PlacementInfo& placementInfo, s32 axis);
bool tryGetLocalSignAxis(sead::Vector3f* front, const ActorInitInfo& initInfo, s32 axis);
bool tryGetLocalSignAxis(sead::Vector3f* front, const PlacementInfo& placementInfo, s32 axis);
bool tryGetMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
bool tryGetMatrixTR(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
bool tryGetMatrixTRS(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
bool tryGetMatrixTRS(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
bool tryGetInvertMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
bool tryGetInvertMatrixTR(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
void calcMatrixMultParent(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
void calcMatrixMultParent(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
bool getArg(s32* arg, const ActorInitInfo& initInfo, const char* key);
bool getArg(s32* arg, const PlacementInfo& placementInfo, const char* key);
bool tryGetArg(s32* arg, const ActorInitInfo& initInfo, const char* key);
bool tryGetArg(s32* arg, const PlacementInfo& placementInfo, const char* key);
bool getArg(f32* arg, const ActorInitInfo& initInfo, const char* key);
bool getArg(f32* arg, const PlacementInfo& placementInfo, const char* key);
bool tryGetArg(f32* arg, const ActorInitInfo& initInfo, const char* key);
bool tryGetArg(f32* arg, const PlacementInfo& placementInfo, const char* key);
bool getArg(bool* arg, const ActorInitInfo& initInfo, const char* key);
bool getArg(bool* arg, const PlacementInfo& placementInfo, const char* key);
bool tryGetArg(bool* arg, const ActorInitInfo& initInfo, const char* key);
bool tryGetArg(bool* arg, const PlacementInfo& placementInfo, const char* key);
s32 getArgS32(const ActorInitInfo& actorInitInfo, const char* key);
f32 getArgF32(const ActorInitInfo& actorInitInfo, const char* key);
bool getArgV3f(sead::Vector3f* arg, const ActorInitInfo& actorInitInfo, const char* key);
bool getArgV3f(sead::Vector3f* arg, const PlacementInfo& placementInfo, const char* key);
bool tryGetArgV3f(sead::Vector3f* arg, const ActorInitInfo& actorInitInfo, const char* key);
bool tryGetArgV3f(sead::Vector3f* arg, const PlacementInfo& placementInfo, const char* key);
bool isArgBool(const ActorInitInfo& initInfo, const char* key);
bool isArgBool(const PlacementInfo& placementInfo, const char* key);
bool isArgString(const ActorInitInfo& initInfo, const char* arg, const char* key);
bool isArgString(const PlacementInfo& placementInfo, const char* arg, const char* key);
void getStringArg(const char** arg, const ActorInitInfo& initInfo, const char* key);
void getStringArg(const char** arg, const PlacementInfo& placementInfo, const char* key);
void getStringArg(const char** arg, const AreaInitInfo& initInfo, const char* key);
void getStringArg(const ActorInitInfo& initInfo, const char* key);
void getStringArg(const PlacementInfo& placementInfo, const char* key);
void getStringArg(const AreaInitInfo& initInfo, const char* key);
bool tryGetStringArg(const char** arg, const ActorInitInfo& initInfo, const char* key);
bool tryGetStringArg(const char** arg, const AreaInitInfo& initInfo, const char* key);
bool tryGetArgV2f(sead::Vector2f* arg, const ActorInitInfo& initInfo, const char* key);
bool tryGetArgV2f(sead::Vector2f* arg, const PlacementInfo& initInfo, const char* key);
bool tryGetArgColor(sead::Color4f* arg, const ActorInitInfo& initInfo, const char* key);
bool tryGetArgColor(sead::Color4f* arg, const PlacementInfo& initInfo, const char* key);
void getLayerConfigName(const char** name, const ActorInitInfo& initInfo);
void getLayerConfigName(const char** name, const PlacementInfo& initInfo);
bool tryGetZoneNameIfExist(const char** name, const PlacementInfo& placementInfo);
void getPlacementId(PlacementId* placementId, const PlacementInfo& placementInfo);
bool tryGetBoolArgOrFalse(const ActorInitInfo& initInfo, const char* key);
s32 getCountPlacementInfo(const PlacementInfo& placementInfo);
void getPlacementInfoByKey(PlacementInfo* outPlacementInfo, const PlacementInfo&,
const char* key);
bool tryGetPlacementInfoByKey(PlacementInfo* outPlacementInfo, const PlacementInfo&,
const char* key);
void getPlacementInfoByIndex(PlacementInfo* outPlacementInfo, const PlacementInfo&,
s32 index);
bool tryGetPlacementInfoByIndex(PlacementInfo* outPlacementInfo, const PlacementInfo&,
s32 index);
void getPlacementInfoAndKeyNameByIndex(PlacementInfo* outPlacementInfo, const char** outKey,
const PlacementInfo&, s32 index);
bool tryGetPlacementInfoAndKeyNameByIndex(PlacementInfo* outPlacementInfo, const char** outKey,
const PlacementInfo&, s32 index);
PlacementId* createPlacementId(const ActorInitInfo& initInfo);
PlacementId* createPlacementId(const PlacementInfo& placementInfo);
bool tryGetPlacementId(PlacementId* placementId, const ActorInitInfo& initInfo);
bool tryGetPlacementId(PlacementId* placementId, const PlacementInfo& placementInfo);
void getPlacementId(PlacementId* placementId, const ActorInitInfo& initInfo);
bool isEqualPlacementId(PlacementId* placementId, const PlacementId& otherPlacementId);
bool isEqualPlacementId(PlacementId* placementId, const PlacementInfo& placementInfo);
bool isExistRail(const ActorInitInfo& initInfo, const char* linkName);
bool tryGetRailIter(PlacementInfo& railPlacementInfo, const PlacementInfo& placementInfo,
const char* linkName);
bool tryGetLinksInfo(PlacementInfo& railPlacementInfo, const PlacementInfo& placementInfo,
const char* linkName);
bool tryGetMoveParameterRailIter(PlacementInfo& railPlacementInfo,
const PlacementInfo& placementInfo);
bool tryGetRailPointPos(sead::Vector3f* railPoint,
const PlacementInfo& placementInfo);
void getRailPointHandlePrev(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
void tryGetRailPointHandlePrev(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
void getRailPointHandleNext(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
void tryGetRailPointHandleNext(sead::Vector3f* railPoint, PlacementInfo const& placementInfo);
bool isExistGraphRider(const ActorInitInfo& initInfo);
s32 calcLinkChildNum(const ActorInitInfo& initInfo, const char* linkName);
s32 calcLinkChildNum(const PlacementInfo& placementInfo, const char* linkName);
bool isExistLinkChild(const ActorInitInfo& initInfo, const char* linkName, s32 index);
bool isExistLinkChild(const PlacementInfo& placementInfo, const char* linkName, s32 index);
bool isExistLinkChild(const PlacementInfo& placementInfo, const char* linkName, s32 index);
s32 calcLinkNestNum(const ActorInitInfo& initInfo, const char* linkName);
s32 calcLinkNestNum(const PlacementInfo& placementInfo, const char* linkName);
void getLinksInfo(PlacementInfo* linkPlacementInfo, const PlacementInfo& placementInfo,
const char* linkName);
void getLinksInfoByIndex(PlacementInfo* linkPlacementInfo,
const PlacementInfo& placementInfo, const char* linkName, s32);
void getLinksInfo(PlacementInfo* linkPlacementInfo, const ActorInitInfo& initInfo,
const char* linkName);
void getLinksInfoByIndex(PlacementInfo* linkPlacementInfo, const ActorInitInfo& initInfo,
const char* linkName, s32);
bool tryGetLinksInfo(PlacementInfo* linkPlacementInfo, const ActorInitInfo& initInfo,
const char* linkName);
void getLinksMatrix(sead::Matrix34f* matrix, const ActorInitInfo& initInfo,
const char* linkName);
void getLinksMatrixByIndex(sead::Matrix34f*, const ActorInitInfo& initInfo,
const char* linkName, s32);
void getLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate,
const PlacementInfo& placementInfo, const char* linkName);
void getLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate, const ActorInitInfo& initInfo,
const char* linkName);
void getLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate, const AreaInitInfo& initInfo,
const char* linkName);
void getLinksQT(sead::Quatf* quat, sead::Vector3f* trans, const ActorInitInfo& initInfo,
const char* linkName);
void getLinksQT(sead::Quatf* quat, sead::Vector3f* trans, const PlacementInfo& placementInfo,
const char* linkName);
bool tryGetLinksQT(sead::Quatf*, sead::Vector3f*, const ActorInitInfo& initInfo,
const char* linkName);
bool tryGetLinksQTS(sead::Quatf*, sead::Vector3f*, sead::Vector3f*,
const ActorInitInfo& initInfo, const char* linkName);
bool tryGetLinksMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo,
const char* linkName);
bool tryGetLinksMatrixTR(sead::Matrix34f* matrix, const AreaInitInfo& initInfo,
const char* linkName);
bool tryGetLinksMatrixTRS(sead::Matrix34f* matrix, const ActorInitInfo& initInfo,
const char* linkName);
bool tryGetLinksTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo,
const char* linkName);
bool tryGetLinksTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo,
const char* linkName);
bool tryGetLinksQuat(sead::Quatf* quat, const ActorInitInfo& initInfo, const char* linkName);
bool tryGetLinksTR(sead::Vector3f* trans, sead::Vector3f* rotate, const ActorInitInfo& initInfo,
const char* linkName);
void getChildTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo,
const char* linkName);
void getChildTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo, const char* linkName);
void getChildTrans(sead::Vector3f* trans, const AreaInitInfo& initInfo, const char* linkName);
void getChildLinkT(sead::Vector3f* trans, const ActorInitInfo& initInfo, const char* linkName,
s32 index);
void getChildLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate,
const ActorInitInfo& initInfo, const char* linkName, s32 index);
s32 calcMatchNameLinkCount(const PlacementInfo& placementInfo, const char* linkName);
s32 calcLinkCountClassName(const PlacementInfo& placementInfo, const char* linkName);
bool tryGetZoneMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
bool tryGetDisplayOffset(sead::Vector3f* offset, const ActorInitInfo& initInfo);
bool tryGetDisplayOffset(sead::Vector3f* offset, const PlacementInfo& placementInfo);
bool tryGetChildDisplayOffset(sead::Vector3f* offset, const ActorInitInfo& initInfo,
const char* linkName);
bool tryGetDisplayRotate(sead::Vector3f* rotate, const ActorInitInfo& initInfo);
bool tryGetDisplayScale(sead::Vector3f* scale, const ActorInitInfo& initInfo);
} // namespace al
class alPlacementFunction {
s32 getCameraId(const al::ActorInitInfo& initInfo);
void getLinkGroupId(al::PlacementId* groupId, const al::ActorInitInfo& initInfo, const char* linkName);
bool isEnableLinkGroupId(const al::ActorInitInfo& initInfo, const char* linkName);
bool isEnableGroupClipping(const al::ActorInitInfo& initInfo);
void getClippingGroupId(al::PlacementId* groupId, const al::ActorInitInfo& initInfo);
void createClippingViewId(const al::PlacementInfo& placementInfo);
void getClippingViewId(al::PlacementId* viewId, const al::PlacementInfo& placementInfo);
void getClippingViewId(al::PlacementId* viewId, const al::ActorInitInfo& initInfo);
void getModelName(const char** modelName, const al::ActorInitInfo& initInfo);
void getModelName(const char** modelName, const al::PlacementInfo& placementInfo);
bool tryGetModelName(const char** modelName, const al::PlacementInfo& placementInfo);
bool tryGetModelName(const char** modelName, const al::ActorInitInfo& initInfo);
};

View File

@ -0,0 +1,26 @@
#pragma once
#include <resource/seadResource.h>
namespace al {
class PlacementInfo;
class PlacementId {
public:
static bool isEqual(const PlacementId&, const PlacementId&);
PlacementId();
PlacementId(const char*, const char*, const char*);
bool init(const PlacementInfo&);
bool isEqual(const PlacementId&) const;
bool isValid() const;
bool makeString(sead::BufferedSafeString*) const;
private:
const char* mId;
const char* mUnitConfigName;
const char* mZoneId;
const char* mCommonID;
};
} // namespace al

View File

@ -0,0 +1,20 @@
#pragma once
#include <resource/seadResource.h>
#include "al/Library/Yaml/ByamlIter.h"
namespace al {
class PlacementInfo {
public:
PlacementInfo();
void set(const ByamlIter& placement_iter, const ByamlIter& zone_iter);
const ByamlIter& getPlacementIter() const { return mPlacementIter; }
const ByamlIter& getZoneIter() const { return mZoneIter; }
private:
ByamlIter mPlacementIter;
ByamlIter mZoneIter;
};
} // namespace al

View File

@ -1,5 +1,7 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class PadRumbleKeeper;
@ -7,16 +9,16 @@ class LiveActor;
class PlayerHolder {
public:
PlayerHolder(int);
PlayerHolder(s32 maxPlayers);
void clear();
void registerPlayer(LiveActor* actor, PadRumbleKeeper* rumble_keeper);
LiveActor* getPlayer(int index) const;
LiveActor* tryGetPlayer(int index) const;
int getPlayerNum() const;
int getBufferSize() const;
void registerPlayer(LiveActor* actor, PadRumbleKeeper* rumbleKeeper);
LiveActor* getPlayer(s32 index) const;
LiveActor* tryGetPlayer(s32 index) const;
s32 getPlayerNum() const;
s32 getBufferSize() const;
bool isFull() const;
bool isExistPadRumbleKeeper(int index) const;
PadRumbleKeeper* getPadRumbleKeeper(int index) const;
bool isExistPadRumbleKeeper(s32 index) const;
PadRumbleKeeper* getPadRumbleKeeper(s32 index) const;
private:
struct Player {
@ -25,7 +27,7 @@ private:
};
Player* mPlayers = nullptr;
int mBufferSize = 0;
int mPlayerNum = 0;
s32 mBufferSize = 0;
s32 mPlayerNum = 0;
};
} // namespace al

View File

@ -46,16 +46,16 @@ public:
};
static_assert(sizeof(Edge) == 0x20);
Graph(int vertices_size, int edges_size);
Graph(int verticesSize, int edgesSize);
void appendVertex(int size);
void appendVertex(Vertex* vertex);
void removeVertex(const Vertex* vertex);
void removeEdge(const Edge* edge);
Edge* tryFindEdge(int index_vertex1, int index_vertex2) const;
Edge* tryFindEdge(int indexVertex1, int indexVertex2) const;
void appendEdge(Edge* edge);
bool tryAppendEdge(Edge* edge);
void appendEdge(int index_vertex1, int index_vertex2, float weight);
bool tryAppendEdge(int index_vertex1, int index_vertex2, float weight);
void appendEdge(int indexVertex1, int indexVertex2, float weight);
bool tryAppendEdge(int indexVertex1, int indexVertex2, float weight);
private:
sead::PtrArray<Vertex> mVertices;

View File

@ -1,12 +1,13 @@
#pragma once
#include "al/Library/Rail/RailRider.h"
namespace al {
class RailRider;
class RailKeeper {
public:
virtual al::RailRider* getRailRider() const;
al::RailRider* mRailRider; // _8
private:
al::RailRider* mRailRider;
};
}; // namespace al
} // namespace al

View File

@ -7,27 +7,43 @@
#include <resource/seadResource.h>
namespace al {
class ActorInitResourceData;
class Resource {
public:
Resource(const sead::SafeStringBase<char>&);
Resource(const sead::SafeStringBase<char>&, sead::ArchiveRes*);
Resource(const sead::SafeString& path);
Resource(const sead::SafeString& path, sead::ArchiveRes* archive);
bool isExistFile(const sead::SafeStringBase<char>&) const;
bool isExistFile(const sead::SafeString& name) const;
bool isExistByml(const char*) const;
unsigned int getSize() const;
u32 getSize() const;
unsigned int getFileSize(const sead::SafeStringBase<char>&) const;
u32 getFileSize(const sead::SafeString&) const;
const u8* getByml(const sead::SafeString&);
bool tryCreateResGraphicsFile(const sead::SafeStringBase<char>&, nn::g3d::ResFile*);
bool tryCreateResGraphicsFile(const sead::SafeString& name, nn::g3d::ResFile* resFile);
void cleanupResGraphicsFile();
sead::ArchiveRes* mArchive; // _0
sead::ArchiveFileDevice* mDevice; // _8
sead::FixedSafeString<0x80> mName; // _10
sead::Heap* mHeap; // _A8
unsigned long _B0;
nn::g3d::ResFile* mResFile; // _B8
u32 getEntryNum(const sead::SafeString&) const;
const char* getEntryName(const sead::BufferedSafeString* outName, const sead::SafeString&,
u32) const;
const u8* getByml(const sead::SafeString& name) const;
void* getFile(const sead::SafeString& name) const;
void tryGetByml(const sead::SafeString& name) const;
void getKcl(const sead::SafeString& name) const;
void tryGetKcl(const sead::SafeString& name) const;
void getPa(const sead::SafeString& name) const;
void tryGetPa(const sead::SafeString& name) const;
void getOtherFile(const sead::SafeString& name) const;
const char* getArchiveName() const;
private:
sead::ArchiveRes* mArchive;
sead::ArchiveFileDevice* mDevice;
sead::FixedSafeString<0x80> mName;
sead::Heap* mHeap;
ActorInitResourceData* mData;
nn::g3d::ResFile* mResFile;
};
}; // namespace al
} // namespace al

View File

@ -1,10 +1,10 @@
#pragma once
#include "al/audio/AudioKeeper.h"
#include "al/camera/CameraDirector.h"
#include "al/Library/Audio/AudioKeeper.h"
#include "al/Library/Camera/CameraDirector.h"
#include "al/Library/Nerve/NerveExecutor.h"
#include "al/scene/SceneInitInfo.h"
#include "al/Library/Scene/SceneObjHolder.h"
#include "al/Project/Scene/SceneInitInfo.h"
namespace al {
class Scene : public al::NerveExecutor,
@ -41,4 +41,4 @@ public:
virtual void control();
virtual void drawMain();
};
}; // namespace al
} // namespace al

View File

@ -22,8 +22,9 @@ private:
class IUseSceneObjHolder {
public:
virtual al::SceneObjHolder* getSceneObjHolder() const = 0;
virtual SceneObjHolder* getSceneObjHolder() const = 0;
private:
static const char* sSceneObjName;
};

View File

@ -15,33 +15,33 @@ class ModelDrawerMask;
class DepthShadowMapCtrl {
public:
DepthShadowMapCtrl(const al::Resource*);
DepthShadowMapCtrl(const al::Resource* resource);
~DepthShadowMapCtrl();
void actorModelDrawDepth();
void actorModelDrawMask();
void appendDepthShadowMapInfo(char const*, int, int, int, float, bool,
sead::Vector3<float> const&, bool, sead::Vector3<float> const&,
sead::Vector3<float> const&, bool, char const*, int, bool, float,
float, float, bool, bool, float, int, bool, bool, float);
DepthShadowMapInfo* getDepthShadowMapInfo(int);
unsigned int getDepthShadowMapNum();
void appendDepthShadowMapInfo(const char*, s32, s32, s32, f32, bool, const sead::Vector3f&,
bool, const sead::Vector3f&, const sead::Vector3f&, bool,
const char*, s32, bool, f32, f32, f32, bool, bool, f32, s32, bool,
bool, f32);
DepthShadowMapInfo* getDepthShadowMapInfo(s32 index);
u32 getDepthShadowMapNum();
void hide();
void init(al::LiveActor*, const al::ByamlIter&);
void initAfterPlacement(al::GraphicsSystemInfo*);
void initWithoutIter(al::LiveActor*, int);
void init(al::LiveActor* actor, const al::ByamlIter& iter);
void initAfterPlacement(al::GraphicsSystemInfo* graphicsSystemInfo);
void initWithoutIter(al::LiveActor* actor, s32);
void show();
DepthShadowMapInfo* tryFindDepthShadowMapInfo(const char*);
void update();
void updateShapeVisible(const al::LiveActor*);
void updateShapeVisible(const al::LiveActor* actor);
private:
al::LiveActor* mLiveActor;
sead::Vector3<float> lightDir;
sead::Vector3f lightDir;
bool mIsAppendSubActor;
sead::PtrArray<DepthShadowMapInfo> mDepthShadowMaps;
sead::PtrArray<ModelDrawerDepthShadowMap> mModelDrawerDepthShadowMaps;
sead::PtrArray<ModelDrawerMask> mModelDrawerMasks;
};
} // namespace al
} // namespace al

View File

@ -1,6 +1,7 @@
#pragma once
#include <container/seadPtrArray.h>
#include <math/seadMatrix.h>
namespace al {
@ -20,9 +21,9 @@ public:
ShadowMaskBase* findShadowMask(const char*);
void hide();
bool init(LiveActor*, const ActorInitInfo&, const ByamlIter&);
bool init(LiveActor*, int);
bool init(LiveActor*, s32);
void initAfterPlacement();
void initShadowMaskNum(int);
void initShadowMaskNum(s32);
void invalidate();
bool isHide();
void setupShadowMaskCastOvalCylinderParam(ShadowMaskCastOvalCylinder*);
@ -33,10 +34,10 @@ public:
void validate();
private:
sead::PtrArray<ShadowMaskBase> array;
void* gap[6];
sead::PtrArray<ShadowMaskBase> mShadowMasks;
sead::Matrix34f mMtx;
void* mLiveActor;
bool mIsIgnoreShadowMaskYaml;
};
} // namespace al
} // namespace al

View File

@ -1,6 +1,6 @@
#pragma once
#include "al/Library/Base/IUseName.h"
#include "al/Library/HostIO/IUseName.h"
namespace al {
class StageSwitchKeeper;

View File

@ -2,7 +2,25 @@
namespace al {
class IUseStageSwitch;
class StageSwitchDirector;
class PlacementInfo;
bool isValidSwitchAppear(const IUseStageSwitch* user);
bool isValidSwitchKill(const IUseStageSwitch* user);
void initStageSwitch(al::IUseStageSwitch* user, al::StageSwitchDirector* stageSwitchDirector, const al::PlacementInfo& placementInfo);
bool isValidStageSwitch(const al::IUseStageSwitch* user, const char* linkName);
bool isOnStageSwitch(const al::IUseStageSwitch* user, const char* linkName);
void onStageSwitch(al::IUseStageSwitch* user, const char* linkName);
void offStageSwitch(al::IUseStageSwitch* user, const char* linkName);
bool isOnStageSwitch(al::IUseStageSwitch* user, const char* linkName);
bool isOffStageSwitch(al::IUseStageSwitch* user, const char* linkName);
bool isSameStageSwitch(const al::IUseStageSwitch* user, const al::IUseStageSwitch* otherUser, const char* linkName);
bool isValidSwitchAppear(const al::IUseStageSwitch* user);
bool isOnSwitchAppear(const al::IUseStageSwitch* user);
bool isValidSwitchKill(const al::IUseStageSwitch* user);
bool isValidSwitchDeadOn(const al::IUseStageSwitch* user);
void onSwitchDeadOn(al::IUseStageSwitch* user);
void offSwitchDeadOn(al::IUseStageSwitch* user);
bool isOnSwitchDeadOn(al::IUseStageSwitch* user);
bool isOffSwitchDeadOn(al::IUseStageSwitch* user);
bool isValidSwitchStart(const al::IUseStageSwitch* user);
bool isOnSwitchStart(const al::IUseStageSwitch* user);
} // namespace al

View File

@ -0,0 +1,37 @@
#pragma once
#include <heap/seadHeap.h>
namespace al {
class FileLoader;
class MemorySystem;
class ResourceSystem;
class SaveDataDirector;
class SystemKit {
friend class alProjectInterface;
public:
SystemKit();
void createFileLoader(s32 threadPriority);
void createMemorySystem(sead::Heap* heap);
void createResourceSystem(const char* archivePath, s32, s32, bool);
void createSaveDataSystem();
MemorySystem* getMemorySystem() { return mMemorySystem; }
FileLoader* getFileLoader() { return mFileLoader; }
ResourceSystem* getResourceSystem() { return mResourceSystem; }
SaveDataDirector* getSaveDataDirector() { return mSaveDataDirector; }
private:
MemorySystem* mMemorySystem;
FileLoader* mFileLoader;
ResourceSystem* mResourceSystem;
SaveDataDirector* mSaveDataDirector;
};
} // namespace al
class alProjectInterface {
static al::SystemKit* getSystemKit();
};

View File

@ -15,13 +15,13 @@ public:
private:
union {
int _0;
unsigned short mTag, mVersion; // unusable due to different loading mechanisms
s32 _0;
u16 mTag, mVersion; // unusable due to different loading mechanisms
};
int mHashKeyOffset;
int mStringTableOffset;
int mDataOffset;
s32 mHashKeyOffset;
s32 mStringTableOffset;
s32 mDataOffset;
};
class ByamlStringTableIter {
@ -29,13 +29,13 @@ public:
ByamlStringTableIter();
ByamlStringTableIter(const u8* data, bool isRev);
int getSize() const;
s32 getSize() const;
const u32* getAddressTable() const;
u32 getStringAddress(int index) const;
u32 getStringAddress(s32 index) const;
u32 getEndAddress() const;
const char* getString(int index) const;
int getStringSize(int index) const;
int findStringIndex(const char* str) const;
const char* getString(s32 index) const;
s32 getStringSize(s32 index) const;
s32 findStringIndex(const char* str) const;
bool isValidate() const;
private:

View File

@ -2,7 +2,7 @@
#include <math/seadMatrix.h>
#include <math/seadVector.h>
#include "al/Library/HitSensor/SensorHitGroup.h"
#include "al/Project/HitSensor/SensorHitGroup.h"
namespace al {
class LiveActor;

View File

@ -0,0 +1,21 @@
#pragma once
#include <basis/seadTypes.h>
namespace al {
class HitSensor;
class SensorHitGroup {
public:
SensorHitGroup(s32 maxSensors, const char* groupName);
void add(HitSensor* sensor);
void remove(HitSensor* sensor);
HitSensor* getSensor(s32 index) const;
private:
s32 mMaxSensors;
s32 mSensorCount = 0;
HitSensor** mSensors;
};
}; // namespace al

View File

@ -0,0 +1,26 @@
#pragma once
namespace al {
class ByamlIter;
class ActorScoreKeeper {
public:
struct Entry {
const char* factorName;
const char* categoryName;
};
ActorScoreKeeper();
void init(const ByamlIter& iter);
void getCategoryName(); // unknown return type
const char* tryGetCategoryName(const char* a1);
private:
inline void allocArray();
inline void putEntry(int index, const ByamlIter& iter);
Entry* array;
int size;
};
}; // namespace al

View File

@ -2,8 +2,6 @@
#include <container/seadPtrArray.h>
#include <gfx/seadColor.h>
#include "al/Library/LiveActor/ActorInitInfo.h"
#include "al/Library/Resource/Resource.h"
namespace al {
class PrePassLightBase;
@ -14,6 +12,8 @@ class ParameterStringRef;
class ParameterC4f;
class ParameterArray;
class LiveActor;
class Resource;
class ActorInitInfo;
class ActorPrePassLightKeeper {
class UserColor {
@ -32,19 +32,19 @@ public:
ActorPrePassLightKeeper(LiveActor*);
void init(const Resource*, const ActorInitInfo&, const char*);
void initLightNum(int);
void initLightNum(s32);
void initAfterPlacement();
void appear(bool);
void requestKill();
void hideModel();
void updateHideModel(bool);
PrePassLightBase* getLightBase(const char*);
PrePassLightBase* getLightBase(int);
PrePassLightBase* getLightBase(s32);
sead::Color4f* findUserColor(const char*);
private:
ParameterIo* mParameterIo;
ParameterBool* isIgnoreHideModel;
ParameterBool* mIsIgnoreHideModel;
ParameterArray* mLightParameters;
ParameterArray* mUserColorParameters;
sead::PtrArray<PrePassLightBase*> mLights;

View File

@ -31,17 +31,3 @@ public:
private:
sead::Quatf gap = sead::Quatf::unit;
};
namespace {
NERVE_HEADER(MofumofuWarpHole, Close)
NERVE_HEADER(MofumofuWarpHole, Disappear)
NERVE_HEADER(MofumofuWarpHole, Appear)
NERVE_HEADER(MofumofuWarpHole, HideMove)
NERVE_HEADER(MofumofuWarpHole, HideWait)
NERVE_HEADER(MofumofuWarpHole, Wait)
NERVE_HEADER(MofumofuWarpHole, DashSign)
NERVE_HEADER(MofumofuWarpHole, DashSignEnd)
NERVE_HEADER(MofumofuWarpHole, CloseAndDisappear)
} // namespace

View File

@ -25,8 +25,3 @@ public:
private:
ActorDimensionKeeper* mActorDimensionKeeper = nullptr;
};
namespace {
NERVE_HEADER(FireDrum2D, Wait)
NERVE_HEADER(FireDrum2D, Burn)
} // namespace

View File

@ -1,10 +1,25 @@
#pragma once
class IUseDimension;
#include "al/Library/LiveActor/LiveActor.h"
namespace al {
class LiveActor;
}
class Player : public al::LiveActor {
public:
Player(const char* actorName, const char* archiveName, s32 port);
void init(const al::ActorInitInfo& initInfo) override;
void control() override;
void exeWait();
void exeRun();
void exeJump();
void exeFall();
void exeDamage();
private:
const char* mArchiveName;
s32 mPort;
s32 mAirTime;
};
namespace rs {

View File

@ -1,14 +1,22 @@
/**
* @file PlayerHackKeeper.h
* @brief Contains info on the current hack (capture)
*/
#pragma once
#include "al/Library/LiveActor/LiveActor.h"
class PlayerRecoverySafetyPoint;
class HackCap;
class PlayerInput;
class PlayerDamageKeeper;
class IPlayerModelChanger;
class IUsePlayerHeightCheck;
class PlayerHackKeeper {
public:
PlayerHackKeeper(al::LiveActor* player, HackCap* cap, PlayerRecoverySafetyPoint* safetyPoint,
const PlayerInput* input, const sead::Matrix34f* mtx,
PlayerDamageKeeper* damageKeeper, const IPlayerModelChanger* modelChanger,
const IUsePlayerHeightCheck* heightCheck);
private:
char padding[0x68];
al::LiveActor* currentHackActor;
};

View File

@ -0,0 +1,40 @@
#pragma once
#include <heap/seadDisposer.h>
namespace al {
class SystemKit;
class GameFrameworkNx;
class AccountHolder;
} // namespace al
class RootTask;
struct GameDrawInfo;
class Application {
friend class ApplicationFunction;
SEAD_SINGLETON_DISPOSER(Application);
public:
Application();
void init(s32 argc, char** argv);
void run();
RootTask* getRootTask() const;
private:
al::SystemKit* mSystemKit;
al::GameFrameworkNx* mGameFramework;
al::AccountHolder* mAccountHolder;
GameDrawInfo* mDrawInfo;
};
namespace agl {
class RenderBuffer;
class DrawContext;
} // namespace agl
struct GameDrawInfo {
agl::RenderBuffer* dockedRenderBuffer;
agl::RenderBuffer* handheldRenderBuffer;
bool isDocked;
agl::DrawContext* drawContext;
};

View File

@ -0,0 +1,8 @@
#pragma once
#include <basis/seadTypes.h>
class ApplicationFunction {
public:
static void initialize(s32 argc, char** argv);
};

View File

@ -0,0 +1,22 @@
#pragma once
#include <gfx/seadDrawContext.h>
class GameSystem;
// TODO: Implement sead::Task, currently missing from sead headers
class RootTask {
public:
RootTask();
void enter();
void draw();
void calc();
void prepare();
private:
// TODO: Remove once RootTask implements sead::Task
char taskImplDetails[0x200];
GameSystem* mGameSystem;
void* field_208;
sead::DrawContext* drawContext;
};

View File

@ -1,7 +1,8 @@
add_subdirectory(Base)
add_subdirectory(Clipping)
add_subdirectory(Controller)
add_subdirectory(Execute)
add_subdirectory(HitSensor)
add_subdirectory(Layout)
add_subdirectory(LiveActor)
add_subdirectory(MapObj)
add_subdirectory(Math)

View File

@ -0,0 +1,3 @@
target_sources(odyssey PRIVATE
ViewIdHolder.cpp
)

View File

@ -0,0 +1,19 @@
#include "al/Library/Clipping/ViewIdHolder.h"
#include "al/Library/Placement/PlacementFunction.h"
#include "al/Library/Placement/PlacementId.h"
namespace al {
ViewIdHolder::ViewIdHolder() {}
ViewIdHolder* ViewIdHolder::tryCreate(const PlacementInfo& placementInfo) {
if (calcLinkChildNum(placementInfo, "ViewGroup") < 1) {
return nullptr;
} else {
ViewIdHolder* holder = new ViewIdHolder();
holder->init(placementInfo);
return holder;
}
}
void ViewIdHolder::init(const PlacementInfo& placementInfo) {
mPlacementIds = new PlacementId[calcLinkChildNum(placementInfo, "ViewGroup")];
}
}

View File

@ -1,12 +0,0 @@
#include "al/Library/HitSensor/SensorHitGroup.h"
namespace al {
void SensorHitGroup::add(al::HitSensor* pSensor) {
mSensors[mSensorCount] = pSensor;
mSensorCount++;
}
al::HitSensor* SensorHitGroup::getSensor(int idx) const {
return mSensors[idx];
}
}; // namespace al

View File

@ -0,0 +1,4 @@
target_sources(odyssey PRIVATE
LayoutActor.cpp
LayoutPartsActorKeeper.cpp
)

View File

@ -0,0 +1,50 @@
#include "al/Library/Layout/LayoutActor.h"
#include "al/Library/Audio/AudioKeeper.h"
#include "al/Library/Layout/LayoutActorUtil.h"
#include "al/Library/Layout/LayoutPartsActorKeeper.h"
#include "al/Library/Layout/LayoutSceneInfo.h"
namespace al {
void LayoutActor::appear() {
mIsAlive = true;
if (mAudioKeeper)
mAudioKeeper->appear();
if (mLayoutPartsActorKeeper)
mLayoutPartsActorKeeper->appear();
updateLayoutPaneRecursive(this);
this->calcAnim(false);
}
void LayoutActor::initLayoutPartsActorKeeper(s32 capacity) {
mLayoutPartsActorKeeper = new LayoutPartsActorKeeper(capacity);
}
void LayoutActor::initLayoutKeeper(LayoutKeeper* layoutKeeper) {
mLayoutKeeper = layoutKeeper;
}
NerveKeeper* LayoutActor::getNerveKeeper(void) const {
return mNerveKeeper;
}
const char* LayoutActor::getName(void) const {
return mName.cstr();
}
EffectKeeper* LayoutActor::getEffectKeeper(void) const {
return mEffectKeeper;
}
AudioKeeper* LayoutActor::getAudioKeeper(void) const {
return mAudioKeeper;
}
LayoutActionKeeper* LayoutActor::getLayoutActionKeeper(void) const {
return mLayoutActionKeeper;
}
LayoutKeeper* LayoutActor::getLayoutKeeper(void) const {
return mLayoutKeeper;
}
CameraDirector* LayoutActor::getCameraDirector(void) const {
return mLayoutSceneInfo->getCameraDirector();
}
SceneObjHolder* LayoutActor::getSceneObjHolder(void) const {
return mLayoutSceneInfo->getSceneObjHolder();
}
const MessageSystem* LayoutActor::getMessageSystem(void) const {
return mLayoutSceneInfo->getMessageSystem();
}
} // namespace al

View File

@ -0,0 +1,21 @@
#include "al/Library/Layout/LayoutPartsActorKeeper.h"
#include "al/Library/Layout/LayoutActor.h"
namespace al {
void LayoutPartsActorKeeper::resisterPartsActor(LayoutActor* actor) {
}
void LayoutPartsActorKeeper::appear() {
for (s32 i = 0; i < mNumActors; i++) {
mPartsActors[i]->appear();
}
}
void LayoutPartsActorKeeper::calcAnim(bool recursive) {
for (s32 i = 0; i < mNumActors; i++) {
mPartsActors[i]->calcAnim(recursive);
}
}
LayoutPartsActorKeeper::LayoutPartsActorKeeper(s32 maxActors) : mMaxActors(maxActors) {
mPartsActors = new LayoutActor*[maxActors];
}
} // namespace al

View File

@ -0,0 +1,32 @@
#include "al/Library/LiveActor/ActorFlagFunction.h"
#include "al/Library/LiveActor/LiveActor.h"
namespace al {
bool isAlive(const LiveActor* actor) {
return !actor->getFlags()->isDead;
}
bool isDead(const LiveActor* actor) {
return actor->getFlags()->isDead;
}
bool isNoCollide(const LiveActor* actor) {
return actor->getFlags()->isCollideOff;
}
void onCalcAnim(LiveActor* actor) {}
void offCalcAnim(LiveActor* actor) {}
void validateShadow(LiveActor* actor) {}
void invalidateShadow(LiveActor* actor) {}
void onCollide(LiveActor* actor) {
actor->getFlags()->isCollideOff = false;
}
void offCollide(LiveActor* actor) {}
void validateMaterialCode(LiveActor* actor) {}
void invalidateMaterialCode(LiveActor* actor) {}
void validatePuddleMaterial(LiveActor* actor) {}
void invalidatePuddleMaterial(LiveActor* actor) {}
bool isAreaTarget(const LiveActor* actor) {}
void onAreaTarget(LiveActor* actor) {}
void offAreaTarget(LiveActor* actor) {}
void isUpdateMovementEffectAudioCollisionSensor(const LiveActor* actor) {}
void onUpdateMovementEffectAudioCollisionSensor(LiveActor* actor) {}
void offUpdateMovementEffectAudioCollisionSensor(LiveActor* actor) {}
}

View File

@ -0,0 +1,60 @@
#include "al/Library/LiveActor/ActorInitInfo.h"
#include "al/Library/Clipping/ViewIdHolder.h"
namespace al {
ActorInitInfo::ActorInitInfo() = default;
/// TODO: FINISH THIS
//void ActorInitInfo::initNew(
// const PlacementInfo* placementInfo, const LayoutInitInfo* layoutInitInfo,
// LiveActorGroup* allActorsGroup, const ActorFactory* actorFactory,
// ActorResourceHolder* actorResourceHolder, AreaObjDirector* areaObjDirector,
// AudioDirector* audioDirector, CameraDirector* cameraDirector,
// ClippingDirector* clippingDirector, CollisionDirector* collisionDirector,
// DemoDirector* demoDirector, EffectSystemInfo* effectSystemInfo,
// ExecuteDirector* executeDirector, GameDataHolderBase* gameDataHolder,
// GravityHolder* gravityHolder, HitSensorDirector* hitSensorDirector,
// ItemDirectorBase* itemDirector, NatureDirector* natureDirector,
// const GamePadSystem* gamePadSystem, PadRumbleDirector* padRumbleDirector,
// PlayerHolder* playerHolder, SceneObjHolder* sceneObjHolder, SceneMsgCtrl* sceneMsgCtrl,
// SceneStopCtrl* sceneStopCtrl, ScreenCoverCtrl* screenCoverCtrl,
// ScreenPointDirector* screenPointDirector, ShadowDirector* shadowDirector,
// StageSwitchDirector* stageSwitchDirector, ModelGroup* modelGroup,
// GraphicsSystemInfo* graphicsSystemInfo, ModelDrawBufferCounter* modelDrawBufferCounter,
// LiveActorGroup* kitDrawingGroup) {
// mActorSceneInfo.mModelDrawBufferCounter = modelDrawBufferCounter;
// mKitDrawingGroup = kitDrawingGroup;
// mActorFactory = actorFactory;
// mActorResourceHolder = actorResourceHolder;
// mEffectSystemInfo = effectSystemInfo;
// mExecuteDirector = executeDirector;
// mLayoutInitInfo = layoutInitInfo;
// mActorSceneInfo.mAreaObjDirector = areaObjDirector;
// mHitSensorDirector = hitSensorDirector;
// mStageSwitchDirector = stageSwitchDirector;
// mScreenPointDirector = screenPointDirector;
// mActorSceneInfo.mCameraDirector = cameraDirector;
// mActorSceneInfo.mClippingDirector = clippingDirector;
// mActorSceneInfo.mGameDataHolder = gameDataHolder;
// mActorSceneInfo.mGravityHolder = gravityHolder;
// mActorSceneInfo.mCollisionDirector = collisionDirector;
// mActorSceneInfo.mDemoDirector = demoDirector;
// mActorSceneInfo.mItemDirector = itemDirector;
// mActorSceneInfo.mNatureDirector = natureDirector;
// mActorSceneInfo.mGamePadSystem = gamePadSystem;
// mActorSceneInfo.mPadRumbleDirector = padRumbleDirector;
// mActorSceneInfo.mPlayerHolder = playerHolder;
// mActorSceneInfo.mSceneObjHolder = sceneObjHolder;
// mActorSceneInfo.mSceneStopCtrl = sceneStopCtrl;
// mActorSceneInfo.mSceneMsgCtrl = sceneMsgCtrl;
// mActorSceneInfo.mScreenCoverCtrl = screenCoverCtrl;
// mActorSceneInfo.mShadowDirector = shadowDirector;
// mActorSceneInfo.mModelGroup = modelGroup;
// mActorSceneInfo.mGraphicsSystemInfo = graphicsSystemInfo;
// mAllActorsGroup = allActorsGroup;
// mAudioDirector = audioDirector;
// mPlacementInfo = placementInfo;
// mViewIdHolder = ViewIdHolder::tryCreate(*placementInfo);
//}
} // namespace al

View File

@ -15,17 +15,17 @@ float calcDistance(const al::LiveActor* l1, const sead::Vector3f& vec) {
}
float calcSpeed(const al::LiveActor* actor) {
return actor->mPoseKeeper->getVelocity().length();
return actor->getPoseKeeper()->getVelocity().length();
}
float calcSpeedH(const al::LiveActor* actor) {
sead::Vector3f verticalized;
al::verticalizeVec(&verticalized, al::getGravity(actor), actor->mPoseKeeper->getVelocity());
al::verticalizeVec(&verticalized, al::getGravity(actor), actor->getPoseKeeper()->getVelocity());
return verticalized.length();
}
float calcSpeedV(const al::LiveActor* actor) {
return -actor->mPoseKeeper->getVelocity().dot(al::getGravity(actor));
return -actor->getPoseKeeper()->getVelocity().dot(al::getGravity(actor));
}
} // namespace al

View File

@ -1,5 +1,7 @@
target_sources(odyssey PRIVATE
ActorFactory.cpp
ActorFlagFunction.cpp
ActorInitInfo.cpp
ActorMovementFunction.cpp
ActorPoseKeeper.cpp
LiveActor.cpp

View File

@ -1,27 +1,28 @@
#include "al/Library/LiveActor/LiveActor.h"
#include <string.h>
#include "al/Library/LiveActor/LiveActorFlag.h"
#include "al/Library/LiveActor/ActorFlagFunction.h"
#include "al/Library/LiveActor/LiveActorUtil.h"
#include "al/Library/Rail/RailKeeper.h"
#include "al/Library/Shadow/ShadowKeeper.h"
#include "al/Project/Light/ActorPrepassLightKeeper.h"
#include "al/Library/LiveActor/LiveActorUtil.h"
namespace al {
LiveActor::LiveActor(const char* actorName) : mActorName(actorName) {
memset(&mPoseKeeper, 0, 0xB8);
mLiveActorFlag = new LiveActorFlag();
mFlags = new LiveActorFlag();
mShadowKeeper = new ShadowKeeper();
}
al::NerveKeeper* LiveActor::getNerveKeeper() const {
NerveKeeper* LiveActor::getNerveKeeper() const {
return mNerveKeeper;
}
const char* LiveActor::getName() const {
return mActorName;
}
al::EffectKeeper* LiveActor::getEffectKeeper() const {
EffectKeeper* LiveActor::getEffectKeeper() const {
return mEffectKeeper;
}
AudioKeeper* LiveActor::getAudioKeeper() const {
@ -94,35 +95,4 @@ void LiveActor::initSceneInfo(ActorSceneInfo* sceneInfo) {
mSceneInfo = sceneInfo;
}
ActorScoreKeeper::ActorScoreKeeper() = default;
void ActorScoreKeeper::init(const al::ByamlIter& iter) {
if (iter.isTypeArray()) {
size = iter.getSize();
allocArray();
for (int i = 0; i < size; i++) {
al::ByamlIter subIter;
iter.tryGetIterByIndex(&subIter, i);
putEntry(i, subIter);
}
} else {
size = 1;
allocArray();
putEntry(0, iter);
}
}
inline void ActorScoreKeeper::allocArray() {
Entry* local_array = new Entry[size];
if (size)
memset(local_array, 0, sizeof(Entry) * size);
array = local_array;
}
inline void ActorScoreKeeper::putEntry(int index, const al::ByamlIter& iter) {
auto& entry = array[index];
iter.tryGetStringByKey(&entry.factorName, "FactorName");
iter.tryGetStringByKey(&entry.categoryName, "CategoryName");
}
}; // namespace al
} // namespace al

View File

@ -1,7 +1,5 @@
#include "al/Library/LiveActor/LiveActorFlag.h"
#include "al/Library/LiveActor/LiveActor.h"
namespace al {
LiveActorFlag::LiveActorFlag() = default;
} // namespace al
}

View File

@ -2,21 +2,20 @@
#include "al/Library/LiveActor/LiveActorUtil.h"
namespace al {
LiveActorGroup::LiveActorGroup(const char* pName, int max) {
mMaxActorCount = max;
LiveActorGroup::LiveActorGroup(const char* groupName, s32 maxActors)
: mGroupName(groupName), mMaxActorCount(maxActors) {
mActorCount = 0;
mGroupName = pName;
mActors = new LiveActor*[max];
mActors = new LiveActor*[maxActors];
}
int LiveActorGroup::registerActor(al::LiveActor* pActor) {
int LiveActorGroup::registerActor(LiveActor* pActor) {
this->mActors[this->mActorCount] = pActor;
auto count = this->mActorCount;
this->mActorCount = count + 1;
return count;
}
void LiveActorGroup::removeActor(const al::LiveActor* pActor) {
void LiveActorGroup::removeActor(const LiveActor* pActor) {
for (int i = 0; i < mActorCount; i++) {
if (mActors[i] == pActor) {
mActors[i] = mActors[mActorCount - 1];
@ -30,7 +29,7 @@ void LiveActorGroup::removeActorAll() {
mActorCount = 0;
}
bool LiveActorGroup::isExistActor(const al::LiveActor* pActor) const {
bool LiveActorGroup::isExistActor(const LiveActor* pActor) const {
if (mActorCount < 1) {
return false;
}
@ -52,7 +51,7 @@ int LiveActorGroup::calcAliveActorNum() const {
int count = 0;
for (int i = 0; i < mActorCount; i++) {
if (!al::isDead(mActors[i])) {
if (!isDead(mActors[i])) {
count++;
}
}
@ -60,9 +59,9 @@ int LiveActorGroup::calcAliveActorNum() const {
return count;
}
al::LiveActor* LiveActorGroup::getDeadActor() const {
LiveActor* LiveActorGroup::getDeadActor() const {
for (int i = 0; i < mActorCount; i++) {
if (al::isDead(mActors[i])) {
if (isDead(mActors[i])) {
return mActors[i];
}
}
@ -70,9 +69,9 @@ al::LiveActor* LiveActorGroup::getDeadActor() const {
return nullptr;
}
al::LiveActor* LiveActorGroup::tryFindDeadActor() const {
LiveActor* LiveActorGroup::tryFindDeadActor() const {
for (int i = 0; i < mActorCount; i++) {
if (al::isDead(mActors[i])) {
if (isDead(mActors[i])) {
return mActors[i];
}
}
@ -82,7 +81,7 @@ al::LiveActor* LiveActorGroup::tryFindDeadActor() const {
void LiveActorGroup::appearAll() {
for (int i = 0; i < mActorCount; i++) {
if (al::isDead(mActors[i])) {
if (isDead(mActors[i])) {
mActors[i]->appear();
}
}
@ -90,7 +89,7 @@ void LiveActorGroup::appearAll() {
void LiveActorGroup::killAll() {
for (int i = 0; i < mActorCount; i++) {
if (al::isAlive(mActors[i])) {
if (isAlive(mActors[i])) {
mActors[i]->kill();
}
}

View File

@ -1,4 +1,6 @@
#include "al/Library/MapObj/FixMapParts.h"
#include "al/Library/LiveActor/ActorActionFunction.h"
#include "al/Library/LiveActor/ActorInitInfo.h"
#include "al/Library/LiveActor/ActorSensorMsgFunction.h"
#include "al/Library/LiveActor/LiveActorUtil.h"
#include "al/util/OtherUtil.h"
@ -13,7 +15,7 @@ void FixMapParts::init(const ActorInitInfo& info) {
trySyncStageSwitchAppearAndKill(this);
registActorToDemoInfo(this, info);
if (mModelKeeper != nullptr && !isExistAction(this) && !isViewDependentModel(this)) {
if (getModelKeeper() != nullptr && !isExistAction(this) && !isViewDependentModel(this)) {
mStatic = true;
}
}

View File

@ -1,4 +1,5 @@
target_sources(odyssey PRIVATE
Nerve.cpp
NerveAction.cpp
NerveExecutor.cpp
NerveKeeper.cpp

View File

@ -0,0 +1,5 @@
#include "al/Library/Nerve/Nerve.h"
namespace al {
void Nerve::executeOnEnd(NerveKeeper* keeper) const {}
} // namespace al

View File

@ -1,39 +1,32 @@
#include "al/Library/Nerve/NerveAction.h"
#include "al/Library/Nerve/NerveUtil.h"
namespace al {
NerveAction::NerveAction() {
_8 = nullptr;
alNerveFunction::NerveActionCollector* collector =
alNerveFunction::NerveActionCollector::sCurrentCollector;
if (collector->_8) {
collector->_10->_8 = this;
} else {
collector->_8 = this;
}
collector->_10 = this;
if (!collector->mHead)
collector->mHead = this;
else
collector->mTail->mNextAction = this;
collector->mTail = this;
collector->mActionCount++;
}
}; // namespace al
} // namespace al
namespace alNerveFunction {
void NerveActionCollector::addNerve(al::NerveAction* pAction) {
if (_8) {
_10->_8 = pAction;
} else {
_8 = pAction;
}
_10 = pAction;
NerveActionCollector::NerveActionCollector() {
sCurrentCollector = this;
}
void NerveActionCollector::addNerve(al::NerveAction* action) {
if (!mHead)
mHead = action;
else
mTail->mNextAction = action;
mTail = action;
mActionCount++;
}
NerveActionCollector::NerveActionCollector() {
mActionCount = 0;
_8 = nullptr, _10 = nullptr;
alNerveFunction::NerveActionCollector::sCurrentCollector = this;
}
}; // namespace alNerveFunction
} // namespace alNerveFunction

Some files were not shown because too many files have changed in this diff Show More