mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-08 13:26:14 -04:00
Add OoT actor structs and enums (#55)
* add oot structs * revert formatting * fix comment thing * fix accidental renames * slight fix * naviEnemyId -> hintId * fix headers
This commit is contained in:
+14
-14
@@ -676,7 +676,7 @@ void func_800B3644(void); // func_800B3644
|
||||
void DLF_LoadGameState(GameStateOverlay* gameState); // func_800B3880
|
||||
void DLF_FreeGameState(GameStateOverlay* gameState); // func_800B39A4
|
||||
void Actor_PrintLists(ActorContext* actCtxt); // func_800B3AD0
|
||||
void Actor_SetDrawParams(ActorShape* iParm1, f32 yDisplacement, actor_shadow_draw_func func, f32 scale); // func_800B3BA4
|
||||
void Actor_SetDrawParams(ActorShape* actorShape, f32 yOffset, ActorShadowFunc func, f32 scale); // func_800B3BA4
|
||||
void Actor_PostDraw(Actor* actor, LightMapper* mapper, GlobalContext* ctxt, u32 displayList, ColorRGBA8* color); // func_800B3BC8
|
||||
void func_800B3FC0(Actor* actor, LightMapper* mapper, GlobalContext* ctxt); // func_800B3FC0
|
||||
void func_800B4024(Actor* actor, LightMapper* mapper, GlobalContext* ctxt); // func_800B4024
|
||||
@@ -686,7 +686,7 @@ void func_800B40E0(GlobalContext* ctxt, int iParm2, z_Matrix* pzParm3, int iParm
|
||||
void func_800B42F8(Actor* actor, LightMapper* mapper, GlobalContext* ctxt); // func_800B42F8
|
||||
void func_800B4A98(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_800B4A98
|
||||
void func_800B4AEC(GlobalContext* ctxt, Actor* actor, f32 param_3); // func_800B4AEC
|
||||
void func_800B4B50(Actor* iParm1, int iParm2, GlobalContext* pzParm3); // func_800B4B50
|
||||
void func_800B4B50(Actor* actor, int iParm2, GlobalContext* pzParm3); // func_800B4B50
|
||||
void func_800B4EDC(GlobalContext* ctxt, Vec3f* pzParm2, Vec3f* pzParm3, f32* pfParm4); // func_800B4EDC
|
||||
void func_800B4F40(TargetContext* targetContext, int param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5); // func_800B4F40
|
||||
void func_800B4F78(TargetContext* targetContext, u8 type, GlobalContext* ctxt); // func_800B4F78
|
||||
@@ -734,7 +734,7 @@ void Actor_InitToDefaultValues(Actor* actor, GlobalContext* ctxt); // func_800B6
|
||||
void Actor_FiniActor(Actor* actor, GlobalContext* ctxt); // func_800B6948
|
||||
void Actor_SetMovementScale(s32 scale); // func_800B6988
|
||||
void Actor_ApplyMovement(Actor* actor); // func_800B69AC
|
||||
void Actor_SetVelocityYRotationAndGravity(Actor* iParm1); // func_800B6A10
|
||||
void Actor_SetVelocityYRotationAndGravity(Actor* actor); // func_800B6A10
|
||||
void Actor_SetVelocityAndMoveYRotationAndGravity(Actor* actor); // func_800B6A88
|
||||
void Actor_SetVelocityXYRotation(Actor* actor); // func_800B6AB4
|
||||
void Actor_SetVelocityAndMoveXYRotation(Actor* actor); // func_800B6B24
|
||||
@@ -805,7 +805,7 @@ void func_800B886C(void); // func_800B886C
|
||||
void func_800B8898(GlobalContext* ctxt, Actor* actor, UNK_PTR param_3, UNK_PTR param_4); // func_800B8898
|
||||
void func_800B8934(void); // func_800B8934
|
||||
u32 Actor_HasParent(Actor* actor, GlobalContext* ctxt); // func_800B89F8
|
||||
UNK_TYPE4 func_800B8A1C(Actor* iParm1, GlobalContext* ctxt, int iParm3, float fParm4, float param_5); // func_800B8A1C
|
||||
UNK_TYPE4 func_800B8A1C(Actor* actor, GlobalContext* ctxt, int iParm3, float fParm4, float param_5); // func_800B8A1C
|
||||
void func_800B8B84(void); // func_800B8B84
|
||||
void func_800B8BB0(void); // func_800B8BB0
|
||||
void func_800B8BD0(void); // func_800B8BD0
|
||||
@@ -821,7 +821,7 @@ void func_800B8D98(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_
|
||||
void func_800B8DD4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_800B8DD4
|
||||
void func_800B8E1C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_800B8E1C
|
||||
void func_800B8E58(void); // func_800B8E58
|
||||
void func_800B8EC8(Actor* iParm1, u32 uParm2); // func_800B8EC8
|
||||
void func_800B8EC8(Actor* actor, u32 uParm2); // func_800B8EC8
|
||||
void func_800B8EF4(void); // func_800B8EF4
|
||||
void func_800B8F98(Actor* actor, u16 sfxId); // func_800B8F98
|
||||
void func_800B8FC0(void); // func_800B8FC0
|
||||
@@ -1493,11 +1493,11 @@ void Collision_SphereWithSphereOT(GlobalContext* ctxt, CollisionCheckContext* co
|
||||
UNK_TYPE4 func_800E7264(ColCommon* iParm1); // func_800E7264
|
||||
UNK_TYPE4 func_800E7288(ColCommon* piParm1, ColCommon* piParm2); // func_800E7288
|
||||
void Collision_DoOTWithOT(GlobalContext* ctxt, CollisionCheckContext* colCtxt); // func_800E7308
|
||||
void func_800E7494(ActorA0* param_1); // func_800E7494
|
||||
void func_800E74DC(ActorA0* param_1); // func_800E74DC
|
||||
void func_800E7494(CollisionCheckInfo* param_1); // func_800E7494
|
||||
void func_800E74DC(CollisionCheckInfo* param_1); // func_800E74DC
|
||||
void func_800E7508(s32 param_1, UNK_PTR param_2); // func_800E7508
|
||||
void func_800E7530(ActorA0* param_1, ActorDamageChart* param_2, UNK_PTR param_3); // func_800E7530
|
||||
void func_800E755C(ActorA0* puParm1, ActorDamageChart* uParm2, UNK_PTR puParm3); // func_800E755C
|
||||
void func_800E7530(CollisionCheckInfo* param_1, DamageTable* param_2, UNK_PTR param_3); // func_800E7530
|
||||
void func_800E755C(CollisionCheckInfo* puParm1, DamageTable* uParm2, UNK_PTR puParm3); // func_800E755C
|
||||
void func_800E7590(void); // func_800E7590
|
||||
void func_800E75C8(void); // func_800E75C8
|
||||
void func_800E77EC(void); // func_800E77EC
|
||||
@@ -2436,7 +2436,7 @@ s32 Scene_LoadObject(SceneContext* sceneCtxt, s16 id); // func_8012F2E0
|
||||
void Scene_Init(GlobalContext* ctxt, SceneContext* sceneCtxt); // func_8012F3D0
|
||||
void Scene_ReloadUnloadedObjects(SceneContext* sceneCtxt); // func_8012F4FC
|
||||
s32 Scene_FindSceneObjectIndex(SceneContext* sceneCtxt, s16 id); // func_8012F608
|
||||
s32 Scene_IsObjectLoaded(SceneContext* iParm1, s32 index); // func_8012F668
|
||||
s32 Scene_IsObjectLoaded(SceneContext* sceneCtxt, s32 index); // func_8012F668
|
||||
void Scene_DmaAllObjects(SceneContext* sceneCtxt); // func_8012F698
|
||||
void* func_8012F73C(SceneContext* sceneCtxt, s32 iParm2, s16 id); // func_8012F73C
|
||||
void Scene_HeaderCommand00(GlobalContext* ctxt, SceneCmd* entry); // func_8012F79C
|
||||
@@ -2885,9 +2885,9 @@ void func_801496C8(void); // func_801496C8
|
||||
void func_8014995C(void); // func_8014995C
|
||||
void func_80149C18(void); // func_80149C18
|
||||
void func_80149EBC(void); // func_80149EBC
|
||||
void func_80149F74(GlobalContext* iParm1, unsigned int** ppuParm2); // func_80149F74
|
||||
void func_80149F74(GlobalContext* globalCtx, unsigned int** ppuParm2); // func_80149F74
|
||||
void func_8014AAD0(void); // func_8014AAD0
|
||||
void func_8014ADBC(GlobalContext* iParm1, UNK_PTR puParm2); // func_8014ADBC
|
||||
void func_8014ADBC(GlobalContext* globalCtx, UNK_PTR puParm2); // func_8014ADBC
|
||||
void func_8014C70C(void); // func_8014C70C
|
||||
void func_8014CC14(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); // func_8014CC14
|
||||
void func_8014CCB4(void); // func_8014CCB4
|
||||
@@ -2907,7 +2907,7 @@ void func_80151C9C(void); // func_80151C9C
|
||||
void func_80151DA4(void); // func_80151DA4
|
||||
void func_80152434(void); // func_80152434
|
||||
void func_80152464(void); // func_80152464
|
||||
UNK_TYPE4 func_80152498(MessageContext* iParm1); // func_80152498
|
||||
UNK_TYPE4 func_80152498(MessageContext* msgCtx); // func_80152498
|
||||
void func_8015268C(void); // func_8015268C
|
||||
void func_80152C64(void); // func_80152C64
|
||||
void func_80152CAC(void); // func_80152CAC
|
||||
@@ -2933,7 +2933,7 @@ void func_8015966C(void); // func_8015966C
|
||||
void func_8015A144(void); // func_8015A144
|
||||
void func_8015B198(void); // func_8015B198
|
||||
void func_8015E750(void); // func_8015E750
|
||||
void func_8015E7EC(GlobalContext* iParm1, UNK_PTR puParm2); // func_8015E7EC
|
||||
void func_8015E7EC(GlobalContext* globalCtx, UNK_PTR puParm2); // func_8015E7EC
|
||||
void func_8015F8A8(UNK_TYPE4 ctxt); // func_8015F8A8
|
||||
void func_80160A90(void); // func_80160A90
|
||||
void func_80160AF8(void); // func_80160AF8
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@
|
||||
(curState)->nextGameStateInit = (GameStateFunc)newInit; \
|
||||
(curState)->nextGameStateSize = sizeof(newStruct);
|
||||
|
||||
#define PLAYER ((ActorPlayer*)globalCtx->actorCtx.actorList[ACTORTYPE_PLAYER].first)
|
||||
#define PLAYER ((ActorPlayer*)globalCtx->actorCtx.actorList[ACTORCAT_PLAYER].first)
|
||||
|
||||
#define SQ(x) ((x)*(x))
|
||||
#define DECR(x) ((x) == 0 ? 0 : ((x) -= 1))
|
||||
|
||||
+1
-1
@@ -872,7 +872,7 @@ extern UNK_TYPE1 D_801BA38D; // D_801BA38D
|
||||
extern UNK_PTR D_801BA3A8; // D_801BA3A8
|
||||
extern collision_func collisionFuncTableATwithAC[25]; // D_801BA3BC
|
||||
extern collision_func collisionFuncTableOTwithOT[25]; // D_801BA420
|
||||
extern ActorA0 D_801BA484; // D_801BA484
|
||||
extern CollisionCheckInfo D_801BA484; // D_801BA484
|
||||
extern UNK_PTR D_801BA4A0; // D_801BA4A0
|
||||
extern UNK_TYPE1 D_801BA4B4; // D_801BA4B4
|
||||
extern EffShieldParticleInit D_801BA4C8; // D_801BA4C8
|
||||
|
||||
@@ -1502,7 +1502,7 @@ extern ActorInit En_Firefly_InitVars; // En_Firefly_InitVars
|
||||
extern ColSphereInit enFireflyCollisionInit; // D_8087B470
|
||||
extern UNK_TYPE1 D_8087B498; // D_8087B498
|
||||
extern UNK_TYPE1 D_8087B49C; // D_8087B49C
|
||||
extern ActorDamageChart enFireflyDamageChart; // D_8087B4A4
|
||||
extern DamageTable enFireflyDamageTable; // D_8087B4A4
|
||||
extern InitChainEntry enFireflyInitVars[4]; // D_8087B4C4
|
||||
extern UNK_TYPE1 D_8087B4D4; // D_8087B4D4
|
||||
extern UNK_TYPE1 D_8087B4D8; // D_8087B4D8
|
||||
@@ -7639,7 +7639,7 @@ extern ActorInit Obj_Bell_InitVars; // Obj_Bell_InitVars
|
||||
extern UNK_TYPE1 D_80A35E90; // D_80A35E90
|
||||
extern UNK_TYPE1 D_80A35EBC; // D_80A35EBC
|
||||
extern UNK_TYPE1 D_80A35EE8; // D_80A35EE8
|
||||
extern ActorDamageChart D_80A35EF4; // D_80A35EF4
|
||||
extern DamageTable D_80A35EF4; // D_80A35EF4
|
||||
extern f32 D_80A35F20; // D_80A35F20
|
||||
extern f32 D_80A35F24; // D_80A35F24
|
||||
extern f32 D_80A35F28; // D_80A35F28
|
||||
|
||||
+115
-97
@@ -19,8 +19,8 @@ typedef struct {
|
||||
} PosRot; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 attack[32];
|
||||
} ActorDamageChart; // size = 0x20
|
||||
/* 0x00 */ u8 table[32];
|
||||
} DamageTable; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk0;
|
||||
@@ -45,18 +45,18 @@ typedef struct {
|
||||
|
||||
// Related to collision?
|
||||
typedef struct {
|
||||
/* 0x00 */ ActorDamageChart* damageChart;
|
||||
/* 0x04 */ Vec3f displacement;
|
||||
/* 0x10 */ s16 unk10;
|
||||
/* 0x12 */ s16 unk12;
|
||||
/* 0x14 */ s16 unk14;
|
||||
/* 0x16 */ u8 mass;
|
||||
/* 0x17 */ u8 health;
|
||||
/* 0x18 */ u8 damage;
|
||||
/* 0x19 */ u8 damageEffect;
|
||||
/* 0x1A */ u8 impactEffect;
|
||||
/* 0x1B */ UNK_TYPE1 pad1B[0x1];
|
||||
} ActorA0; // size = 0x1C
|
||||
/* 0x00 */ DamageTable* damageTable;
|
||||
/* 0x04 */ Vec3f displacement; // Amount to correct velocity (0x5C) by when colliding into a body
|
||||
/* 0x10 */ s16 cylRadius; // Used for various purposes
|
||||
/* 0x12 */ s16 cylHeight; // Used for various purposes
|
||||
/* 0x14 */ s16 cylYShift; // Unused. Purpose inferred from Cylinder16 and CollisionCheck_CylSideVsLineSeg
|
||||
/* 0x16 */ u8 mass; // Used to compute displacement for OC collisions
|
||||
/* 0x17 */ u8 health; // Note: some actors may use their own health variable instead of this one
|
||||
/* 0x18 */ u8 damage; // Amount to decrement health by
|
||||
/* 0x19 */ u8 damageEffect; // Stores what effect should occur when hit by a weapon
|
||||
/* 0x1A */ u8 atHitEffect; // Stores what effect should occur when AT connects with an AC
|
||||
/* 0x1B */ u8 acHitEffect; // Stores what effect should occur when AC is touched by an AT
|
||||
} CollisionCheckInfo; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 id;
|
||||
@@ -89,91 +89,109 @@ typedef struct {
|
||||
/* 0x1F */ UNK_TYPE1 pad1F[0x1];
|
||||
} ActorOverlay; // size = 0x20
|
||||
|
||||
typedef void(*actor_shadow_draw_func)(struct Actor* actor, struct LightMapper* mapper, struct GlobalContext* ctxt);
|
||||
typedef void(*ActorShadowFunc)(struct Actor* actor, struct LightMapper* mapper, struct GlobalContext* ctxt);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s rot;
|
||||
/* 0x08 */ f32 yDisplacement;
|
||||
/* 0x0C */ actor_shadow_draw_func shadowDrawFunc;
|
||||
/* 0x10 */ f32 scale;
|
||||
/* 0x14 */ u8 alphaScale; // 255 means always draw full opacity if visible
|
||||
} ActorShape; // size = 0x18
|
||||
/* 0x00 */ Vec3s rot; // Current actor shape rotation
|
||||
/* 0x06 */ s16 face; // Used to index eyebrow/eye/mouth textures. Only used by player
|
||||
/* 0x08 */ f32 yOffset; // Model y axis offset. Represents model space units
|
||||
/* 0x0C */ ActorShadowFunc shadowDraw; // Shadow draw function
|
||||
/* 0x10 */ f32 shadowScale; // Changes the size of the shadow
|
||||
/* 0x14 */ u8 shadowAlpha; // Default is 255
|
||||
/* 0x15 */ u8 feetFloorFlags; // Set if the actor's foot is clipped under the floor. & 1 is right foot, & 2 is left
|
||||
/* 0x18 */ Vec3f feetPos[2]; // Update by using `Actor_SetFeetPos` in PostLimbDraw
|
||||
} ActorShape; // size = 0x30
|
||||
|
||||
typedef struct Actor {
|
||||
/* 0x000 */ s16 id;
|
||||
/* 0x002 */ u8 type;
|
||||
/* 0x003 */ s8 room;
|
||||
/* 0x004 */ u32 flags; // bit 20: is playing cutscene; bit 22: disable positional lights if bit 28 is not set; bit 28: enable positional lights on actor
|
||||
/* 0x008 */ PosRot initPosRot;
|
||||
/* 0x01C */ s16 params;
|
||||
/* 0x01E */ s8 objBankIndex;
|
||||
/* 0x01F */ UNK_TYPE1 unk1F;
|
||||
/* 0x000 */ s16 id; // Actor ID
|
||||
/* 0x002 */ u8 category; // Actor category. Refer to the corresponding enum for values
|
||||
/* 0x003 */ s8 room; // Room number the actor is in. -1 denotes that the actor won't despawn on a room change
|
||||
/* 0x004 */ u32 flags; // Flags used for various purposes
|
||||
/* 0x008 */ PosRot home; // Initial position/rotation when spawned. Can be used for other purposes
|
||||
/* 0x01C */ s16 params; // Configurable variable set by the actor's spawn data; original name: "args_data"
|
||||
/* 0x01E */ s8 objBankIndex; // Object bank index of the actor's object dependency; original name: "bank"
|
||||
/* 0x01F */ s8 targetMode; // Controls how far the actor can be targeted from and how far it can stay locked on
|
||||
/* 0x020 */ u16 unk20;
|
||||
/* 0x022 */ u16 unk22;
|
||||
/* 0x024 */ PosRot currPosRot;
|
||||
/* 0x024 */ PosRot world; // Position/rotation in the world
|
||||
/* 0x038 */ s8 cutscene;
|
||||
/* 0x039 */ u8 unk39;
|
||||
/* 0x03A */ UNK_TYPE1 pad3A[0x2];
|
||||
/* 0x03C */ PosRot topPosRot;
|
||||
/* 0x050 */ u16 unk50;
|
||||
/* 0x052 */ UNK_TYPE1 pad52[0x2];
|
||||
/* 0x054 */ f32 unk54;
|
||||
/* 0x058 */ Vec3f scale;
|
||||
/* 0x064 */ Vec3f velocity;
|
||||
/* 0x070 */ f32 speedXZ;
|
||||
/* 0x074 */ f32 gravity;
|
||||
/* 0x078 */ f32 minVelocityY;
|
||||
/* 0x07C */ struct BgPolygon* wallPoly;
|
||||
/* 0x080 */ struct BgPolygon* floorPoly;
|
||||
/* 0x084 */ u8 wallPolySource;
|
||||
/* 0x085 */ u8 floorPolySource;
|
||||
/* 0x086 */ UNK_TYPE1 pad86[0x2];
|
||||
/* 0x088 */ f32 unk88;
|
||||
/* 0x08C */ f32 unk8C;
|
||||
/* 0x090 */ u16 unk90;
|
||||
/* 0x092 */ s16 rotTowardsLinkY;
|
||||
/* 0x094 */ f32 sqrdDistanceFromLink;
|
||||
/* 0x098 */ f32 xzDistanceFromLink;
|
||||
/* 0x09C */ f32 yDistanceFromLink;
|
||||
/* 0x0A0 */ ActorA0 unkA0;
|
||||
/* 0x0BC */ ActorShape shape;
|
||||
/* 0x0D4 */ UNK_TYPE1 padD4[0x18];
|
||||
/* 0x0EC */ Vec3f projectedPos;
|
||||
/* 0x0F8 */ f32 unkF8;
|
||||
/* 0x0FC */ f32 unkFC;
|
||||
/* 0x100 */ f32 unk100;
|
||||
/* 0x104 */ f32 unk104;
|
||||
/* 0x108 */ Vec3f lastPos;
|
||||
/* 0x114 */ u8 unk114;
|
||||
/* 0x115 */ u8 unk115;
|
||||
/* 0x116 */ u16 textId;
|
||||
/* 0x118 */ u16 freeze;
|
||||
/* 0x11A */ u16 hitEffectParams; // TODO make into bitfield
|
||||
/* 0x11C */ u8 hitEffectIntensity;
|
||||
/* 0x11D */ u8 hasBeenDrawn;
|
||||
/* 0x11E */ UNK_TYPE1 pad11E[0x1];
|
||||
/* 0x11F */ u8 naviEnemyId;
|
||||
/* 0x120 */ struct Actor* parent;
|
||||
/* 0x124 */ struct Actor* child;
|
||||
/* 0x128 */ struct Actor* prev;
|
||||
/* 0x12C */ struct Actor* next;
|
||||
/* 0x130 */ ActorFunc init;
|
||||
/* 0x134 */ ActorFunc destroy;
|
||||
/* 0x138 */ ActorFunc update;
|
||||
/* 0x13C */ ActorFunc draw;
|
||||
/* 0x140 */ ActorOverlay* overlayEntry;
|
||||
/* 0x039 */ s8 unk39;
|
||||
/* 0x03C */ PosRot focus; // Target reticle focuses on this position. For player this represents head pos and rot
|
||||
/* 0x050 */ u16 sfx; // SFX ID to play. Sound plays when value is set, then is cleared the following update cycle
|
||||
/* 0x054 */ f32 targetArrowOffset; // Height offset of the target arrow relative to `focus` position
|
||||
/* 0x058 */ Vec3f scale; // Scale of the actor in each axis
|
||||
/* 0x064 */ Vec3f velocity; // Velocity of the actor in each axis
|
||||
/* 0x070 */ f32 speedXZ; // How fast the actor is traveling along the XZ plane
|
||||
/* 0x074 */ f32 gravity; // Acceleration due to gravity. Value is added to Y velocity every frame
|
||||
/* 0x078 */ f32 minVelocityY; // Sets the lower bounds cap on velocity along the Y axis
|
||||
/* 0x07C */ struct BgPolygon* wallPoly; // Wall polygon the actor is touching
|
||||
/* 0x080 */ struct BgPolygon* floorPoly; // Floor polygon directly below the actor
|
||||
/* 0x084 */ u8 wallBgId; // Bg ID of the wall polygon the actor is touching
|
||||
/* 0x085 */ u8 floorBgId; // Bg ID of the floor polygon directly below the actor
|
||||
/* 0x086 */ s16 wallYaw; // Y rotation of the wall polygon the actor is touching
|
||||
/* 0x088 */ f32 floorHeight; // Y position of the floor polygon directly below the actor
|
||||
/* 0x08C */ f32 yDistToWater; // Distance to the surface of active waterbox. Negative value means above water
|
||||
/* 0x090 */ u16 bgCheckFlags; // See comments below actor struct for wip docs. TODO: macros for these flags
|
||||
/* 0x092 */ s16 yawTowardsPlayer; // Y rotation difference between the actor and the player
|
||||
/* 0x094 */ f32 xyzDistToPlayerSq; // Squared distance between the actor and the player in the x,y,z axis
|
||||
/* 0x098 */ f32 xzDistToPlayer; // Distance between the actor and the player in the XZ plane
|
||||
/* 0x09C */ f32 yDistToPlayer; // Dist is negative if the actor is above the player
|
||||
/* 0x0A0 */ CollisionCheckInfo colChkInfo; // Variables related to the Collision Check system
|
||||
/* 0x0BC */ ActorShape shape; // Variables related to the physical shape of the actor
|
||||
/* 0x0EC */ Vec3f projectedPos; // Position of the actor in projected space
|
||||
/* 0x0F8 */ f32 projectedW; // w component of the projected actor position
|
||||
/* 0x0FC */ f32 uncullZoneForward; // Amount to increase the uncull zone forward by (in projected space)
|
||||
/* 0x100 */ f32 uncullZoneScale; // Amount to increase the uncull zone scale by (in projected space)
|
||||
/* 0x104 */ f32 uncullZoneDownward; // Amount to increase uncull zone downward by (in projected space)
|
||||
/* 0x108 */ Vec3f prevPos; // World position from the previous update cycle
|
||||
/* 0x114 */ u8 isTargeted; // Set to true if the actor is currently being targeted by the player
|
||||
/* 0x115 */ u8 targetPriority; // Lower values have higher priority. Resets to 0 when player stops targeting
|
||||
/* 0x116 */ u16 textId; // Text ID to pass to link/display when interacting with the actor
|
||||
/* 0x118 */ u16 freezeTimer; // Actor does not update when set. Timer decrements automatically
|
||||
/* 0x11A */ u16 colorFilterParams; // Set color filter to red, blue, or white. Toggle opa or xlu
|
||||
/* 0x11C */ u8 colorFilterTimer; // A non-zero value enables the color filter. Decrements automatically
|
||||
/* 0x11D */ u8 isDrawn; // Set to true if the actor is currently being drawn. Always stays false for lens actors
|
||||
/* 0x11E */ u8 dropFlag; // Configures what item is dropped by the actor from `Item_DropCollectibleRandom`
|
||||
/* 0x11F */ u8 hintId; // Sets what 0600 dialog to display when talking to navi. Default 0xFF
|
||||
/* 0x120 */ struct Actor* parent; // Usage is actor specific. Set if actor is spawned via `Actor_SpawnAsChild`
|
||||
/* 0x124 */ struct Actor* child; // Usage is actor specific. Set if actor is spawned via `Actor_SpawnAsChild`
|
||||
/* 0x128 */ struct Actor* prev; // Previous actor of this category
|
||||
/* 0x12C */ struct Actor* next; // Next actor of this category
|
||||
/* 0x130 */ ActorFunc init; // Initialization Routine. Called by `Actor_Init` or `Actor_UpdateAll`
|
||||
/* 0x134 */ ActorFunc destroy; // Destruction Routine. Called by `Actor_Destroy`
|
||||
/* 0x138 */ ActorFunc update; // Update Routine. Called by `Actor_UpdateAll`
|
||||
/* 0x13C */ ActorFunc draw; // Draw Routine. Called by `Actor_Draw`
|
||||
/* 0x140 */ ActorOverlay* overlayEntry; // Pointer to the overlay table entry for this actor
|
||||
} Actor; // size = 0x144
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ FOOT_LEFT,
|
||||
/* 1 */ FOOT_RIGHT
|
||||
} ActorFootIndex;
|
||||
|
||||
/**
|
||||
* BgCheckFlags WIP documentation (logical masks):
|
||||
* 0x001 : Standing on the ground
|
||||
* 0x002 : Has touched the ground (only active for 1 frame)
|
||||
* 0x004 : Has left the ground (only active for 1 frame)
|
||||
* 0x008 : Touching a wall
|
||||
* 0x010 : Touching a ceiling
|
||||
* 0x020 : On or below water surface
|
||||
* 0x040 : Has touched water (actor is responsible for unsetting this the frame it touches the water)
|
||||
* 0x080 : Similar to & 0x1 but with no velocity check and is cleared every frame
|
||||
* 0x100 : Crushed between a floor and ceiling (triggers a void for player)
|
||||
* 0x200 : Unknown (only set/used by player so far)
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ s32 dynaPolyId;
|
||||
/* 0x144 */ s32 bgId;
|
||||
/* 0x148 */ f32 unk148;
|
||||
/* 0x14C */ f32 unk14C;
|
||||
/* 0x150 */ s16 unk150;
|
||||
/* 0x152 */ s16 unk152;
|
||||
/* 0x152 */ u16 unk152;
|
||||
/* 0x154 */ u32 unk154;
|
||||
/* 0x158 */ u8 dynaFlags;
|
||||
/* 0x159 */ UNK_TYPE1 pad159[0x3];
|
||||
/* 0x158 */ u8 unk_158;
|
||||
/* 0x15A */ s16 pad15A;
|
||||
} DynaPolyActor; // size = 0x15C
|
||||
|
||||
typedef struct {
|
||||
@@ -242,18 +260,18 @@ typedef struct {
|
||||
} ActorEnAObj; // size = 0x1A8
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ ACTORTYPE_SWITCH,
|
||||
/* 0x01 */ ACTORTYPE_BG,
|
||||
/* 0x02 */ ACTORTYPE_PLAYER,
|
||||
/* 0x03 */ ACTORTYPE_EXPLOSIVES,
|
||||
/* 0x04 */ ACTORTYPE_NPC,
|
||||
/* 0x05 */ ACTORTYPE_ENEMY,
|
||||
/* 0x06 */ ACTORTYPE_PROP,
|
||||
/* 0x07 */ ACTORTYPE_ITEMACTION,
|
||||
/* 0x08 */ ACTORTYPE_MISC,
|
||||
/* 0x09 */ ACTORTYPE_BOSS,
|
||||
/* 0x0A */ ACTORTYPE_DOOR,
|
||||
/* 0x0B */ ACTORTYPE_CHEST
|
||||
/* 0x00 */ ACTORCAT_SWITCH,
|
||||
/* 0x01 */ ACTORCAT_BG,
|
||||
/* 0x02 */ ACTORCAT_PLAYER,
|
||||
/* 0x03 */ ACTORCAT_EXPLOSIVES,
|
||||
/* 0x04 */ ACTORCAT_NPC,
|
||||
/* 0x05 */ ACTORCAT_ENEMY,
|
||||
/* 0x06 */ ACTORCAT_PROP,
|
||||
/* 0x07 */ ACTORCAT_ITEMACTION,
|
||||
/* 0x08 */ ACTORCAT_MISC,
|
||||
/* 0x09 */ ACTORCAT_BOSS,
|
||||
/* 0x0A */ ACTORCAT_DOOR,
|
||||
/* 0x0B */ ACTORCAT_CHEST
|
||||
} ActorType;
|
||||
|
||||
typedef enum {
|
||||
|
||||
Reference in New Issue
Block a user