mirror of
https://github.com/zeldaret/mm.git
synced 2024-11-23 12:59:44 +00: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:
parent
5c761c33f0
commit
fb1ed529ad
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -8,10 +8,10 @@ void EnAObj_Init(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
s0->base.textId = ((s0->base.params >> 8) & 0xFF) | 0x300;
|
||||
s0->base.params = (s0->base.params & 0xFF) - 9;
|
||||
Actor_ProcessInitChain((Actor*)s0, &enAObjInitVar);
|
||||
Actor_SetDrawParams(&s0->base.shape, 0, (actor_shadow_draw_func)func_800B3FC0, 12);
|
||||
Actor_SetDrawParams(&s0->base.shape, 0, (ActorShadowFunc)func_800B3FC0, 12);
|
||||
Collision_InitCylinder(ctxt, &s0->collision, (Actor*)s0, &enAObjCylinderInit);
|
||||
Collision_CylinderMoveToActor((Actor*)s0, &s0->collision);
|
||||
s0->base.unkA0.mass = 255;
|
||||
s0->base.colChkInfo.mass = 255;
|
||||
s0->update = (ActorFunc)EnAObj_Update1;
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ void EnAObj_Update1(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
if (func_800B84D0((Actor*)this, ctxt) != 0) {
|
||||
this->update = (ActorFunc)EnAObj_Update2;
|
||||
} else {
|
||||
v0 = this->base.rotTowardsLinkY - this->base.shape.rot.y;
|
||||
v0 = this->base.yawTowardsPlayer - this->base.shape.rot.y;
|
||||
v1 = (v0 < 0)? -v0 : v0;
|
||||
if ((v1 < 10240) || ((this->base.params == 1) && (v1 > 22528))) {
|
||||
func_800B863C((Actor*)this, ctxt);
|
||||
|
@ -38,10 +38,10 @@ void BgCheck2_UpdateActorPosition(CollisionContext* bgCtxt, s32 index, Actor* ac
|
||||
bgCtxt->dyna.actorMeshArr[index].currParams.pos.y,
|
||||
bgCtxt->dyna.actorMeshArr[index].currParams.pos.z);
|
||||
|
||||
Matrix_MultiplyByVectorXYZ(&prevMatrixInv, &actor->currPosRot.pos, &posWithInv);
|
||||
Matrix_MultiplyByVectorXYZ(&prevMatrixInv, &actor->world.pos, &posWithInv);
|
||||
Matrix_MultiplyByVectorXYZ(&currMatrix, &posWithInv, &newPos);
|
||||
|
||||
actor->currPosRot.pos = newPos;
|
||||
actor->world.pos = newPos;
|
||||
}
|
||||
|
||||
void BgCheck2_UpdateActorYRotation(CollisionContext* bgCtxt, s32 index, Actor* actor) {
|
||||
@ -56,7 +56,7 @@ void BgCheck2_UpdateActorYRotation(CollisionContext* bgCtxt, s32 index, Actor* a
|
||||
}
|
||||
|
||||
actor->shape.rot.y += angleChange;
|
||||
actor->currPosRot.rot.y += angleChange;
|
||||
actor->world.rot.y += angleChange;
|
||||
}
|
||||
|
||||
void BgCheck2_AttachToMesh(CollisionContext* bgCtxt, Actor* actor, s32 index) {
|
||||
|
@ -2,11 +2,11 @@
|
||||
#include <global.h>
|
||||
|
||||
void BcCheck3_BgActorInit(DynaPolyActor* actor, UNK_TYPE4 param_2) {
|
||||
actor->dynaPolyId = -1;
|
||||
actor->bgId = -1;
|
||||
actor->unk148 = 0;
|
||||
actor->unk14C = 0;
|
||||
actor->unk154 = param_2;
|
||||
actor->dynaFlags = 0;
|
||||
actor->unk_158 = 0;
|
||||
}
|
||||
|
||||
void BgCheck3_LoadMesh(GlobalContext* ctxt, DynaPolyActor* actor, BgMeshHeader* meshHeader) {
|
||||
@ -14,19 +14,19 @@ void BgCheck3_LoadMesh(GlobalContext* ctxt, DynaPolyActor* actor, BgMeshHeader*
|
||||
|
||||
header = NULL;
|
||||
BgCheck_RelocateMeshHeader(meshHeader, &header);
|
||||
actor->dynaPolyId = BgCheck_AddActorMesh(ctxt, &ctxt->colCtx.dyna, actor, header);
|
||||
actor->bgId = BgCheck_AddActorMesh(ctxt, &ctxt->colCtx.dyna, actor, header);
|
||||
}
|
||||
|
||||
void BgCheck3_ResetFlags(DynaPolyActor* actor) {
|
||||
actor->dynaFlags = 0;
|
||||
actor->unk_158 = 0;
|
||||
}
|
||||
|
||||
void func_800CAE88(DynaPolyActor* actor) {
|
||||
actor->dynaFlags |= 1;
|
||||
actor->unk_158 |= 1;
|
||||
}
|
||||
|
||||
void func_800CAE9C(DynaPolyActor* actor) {
|
||||
actor->dynaFlags |= 2;
|
||||
actor->unk_158 |= 2;
|
||||
}
|
||||
|
||||
void func_800CAEB0(CollisionContext* bgCtxt, s32 index) {
|
||||
@ -39,7 +39,7 @@ void func_800CAEB0(CollisionContext* bgCtxt, s32 index) {
|
||||
}
|
||||
|
||||
void func_800CAEE0(DynaPolyActor* actor) {
|
||||
actor->dynaFlags |= 4;
|
||||
actor->unk_158 |= 4;
|
||||
}
|
||||
|
||||
void func_800CAEF4(CollisionContext* bgCtxt, s32 index) {
|
||||
@ -52,15 +52,15 @@ void func_800CAEF4(CollisionContext* bgCtxt, s32 index) {
|
||||
}
|
||||
|
||||
void func_800CAF24(DynaPolyActor* actor) {
|
||||
actor->dynaFlags |= 8;
|
||||
actor->unk_158 |= 8;
|
||||
}
|
||||
|
||||
void func_800CAF38(DynaPolyActor* actor) {
|
||||
actor->dynaFlags |= 0x10;
|
||||
actor->unk_158 |= 0x10;
|
||||
}
|
||||
|
||||
s32 func_800CAF4C(DynaPolyActor* actor) {
|
||||
if (actor->dynaFlags & 1) {
|
||||
if (actor->unk_158 & 1) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@ -68,7 +68,7 @@ s32 func_800CAF4C(DynaPolyActor* actor) {
|
||||
}
|
||||
|
||||
s32 func_800CAF70(DynaPolyActor* actor) {
|
||||
if (actor->dynaFlags & 2) {
|
||||
if (actor->unk_158 & 2) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@ -76,7 +76,7 @@ s32 func_800CAF70(DynaPolyActor* actor) {
|
||||
}
|
||||
|
||||
s32 func_800CAF94(DynaPolyActor* actor) {
|
||||
if (actor->dynaFlags & 4) {
|
||||
if (actor->unk_158 & 4) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@ -84,7 +84,7 @@ s32 func_800CAF94(DynaPolyActor* actor) {
|
||||
}
|
||||
|
||||
s32 func_800CAFB8(DynaPolyActor* actor) {
|
||||
if (actor->dynaFlags & 8) {
|
||||
if (actor->unk_158 & 8) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@ -92,7 +92,7 @@ s32 func_800CAFB8(DynaPolyActor* actor) {
|
||||
}
|
||||
|
||||
s32 func_800CAFDC(DynaPolyActor* actor) {
|
||||
if (actor->dynaFlags & 0x10) {
|
||||
if (actor->unk_158 & 0x10) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -31,8 +31,8 @@ s32 func_800E8FA4(Actor* actor, Vec3f* param_2, Vec3s* param_3, Vec3s* param_4)
|
||||
s16 targetYaw;
|
||||
s16 yawDiffFromTarget;
|
||||
|
||||
targetPitch = Math_Vec3f_Pitch(&actor->topPosRot.pos,param_2);
|
||||
targetYaw = Math_Vec3f_Yaw(&actor->topPosRot.pos,param_2) - actor->currPosRot.rot.y;
|
||||
targetPitch = Math_Vec3f_Pitch(&actor->focus.pos,param_2);
|
||||
targetYaw = Math_Vec3f_Yaw(&actor->focus.pos,param_2) - actor->world.rot.y;
|
||||
|
||||
Math_SmoothScaleMaxMinS(¶m_3->x, targetPitch, 6, 2000, 1);
|
||||
param_3->x = (param_3->x < -6000)? -6000 : ((6000 < param_3->x)? 6000 : param_3->x);
|
||||
@ -58,11 +58,11 @@ s32 func_800E9138(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
Vec3f local_14;
|
||||
|
||||
player = (ctxt->actorCtx).actorList[2].first;
|
||||
actor->topPosRot.pos = actor->currPosRot.pos;
|
||||
actor->topPosRot.pos.y += param_5;
|
||||
actor->focus.pos = actor->world.pos;
|
||||
actor->focus.pos.y += param_5;
|
||||
|
||||
if (((ctxt->csCtx).state == 0) && (D_801D0D50 == 0)) {
|
||||
sVar3 = actor->rotTowardsLinkY - actor->shape.rot.y;
|
||||
sVar3 = actor->yawTowardsPlayer - actor->shape.rot.y;
|
||||
// TODO is this shifting because of a missing cast?
|
||||
if (0x42ff < (sVar3 < 0? ((-sVar3 << 0x10) >> 0x10) : ((sVar3 << 0x10) >> 0x10))) {
|
||||
func_800E8F08(param_3,param_4);
|
||||
@ -73,7 +73,7 @@ s32 func_800E9138(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
if (((ctxt->csCtx).state != 0) || (D_801D0D50 != 0)) {
|
||||
local_14 = ctxt->view.eye;
|
||||
} else {
|
||||
local_14 = player->topPosRot.pos;
|
||||
local_14 = player->focus.pos;
|
||||
}
|
||||
|
||||
func_800E8FA4(actor,&local_14,param_3,param_4);
|
||||
@ -86,10 +86,10 @@ s32 func_800E9250(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
Vec3f local_14;
|
||||
|
||||
player = (ctxt->actorCtx).actorList[2].first;
|
||||
actor->topPosRot.pos = param_5;
|
||||
actor->focus.pos = param_5;
|
||||
|
||||
if (((ctxt->csCtx).state == 0) && (D_801D0D50 == 0)) {
|
||||
sVar3 = actor->rotTowardsLinkY - actor->shape.rot.y;
|
||||
sVar3 = actor->yawTowardsPlayer - actor->shape.rot.y;
|
||||
// TODO is this shifting because of a missing cast?
|
||||
if (0x42ff < (sVar3 < 0? ((-sVar3 << 0x10) >> 0x10) : ((sVar3 << 0x10) >> 0x10))) {
|
||||
func_800E8F08(param_3,param_4);
|
||||
@ -100,7 +100,7 @@ s32 func_800E9250(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
if (((ctxt->csCtx).state != 0) || (D_801D0D50 != 0)) {
|
||||
local_14 = ctxt->view.eye;
|
||||
} else {
|
||||
local_14 = player->topPosRot.pos;
|
||||
local_14 = player->focus.pos;
|
||||
}
|
||||
|
||||
func_800E8FA4(actor,&local_14,param_3,param_4);
|
||||
|
@ -7,11 +7,11 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/z_actor//Actor_PrintLists.asm")
|
||||
|
||||
void Actor_SetDrawParams(ActorShape* iParm1, f32 yDisplacement, actor_shadow_draw_func func, f32 scale) {
|
||||
iParm1->yDisplacement = yDisplacement;
|
||||
iParm1->shadowDrawFunc = func;
|
||||
iParm1->scale = scale;
|
||||
iParm1->alphaScale = 255;
|
||||
void Actor_SetDrawParams(ActorShape* actorShape, f32 yOffset, ActorShadowFunc func, f32 scale) {
|
||||
actorShape->yOffset = yOffset;
|
||||
actorShape->shadowDraw = func;
|
||||
actorShape->shadowScale = scale;
|
||||
actorShape->shadowAlpha = 255;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/z_actor//Actor_PostDraw.asm")
|
||||
@ -50,8 +50,8 @@ void Actor_TargetContextInit(TargetContext* targetCtxt, Actor* actor, GlobalCont
|
||||
targetCtxt->unk4B = 0;
|
||||
targetCtxt->unk4C = 0;
|
||||
targetCtxt->unk40 = 0;
|
||||
func_800B5040(targetCtxt, actor, actor->type, ctxt);
|
||||
func_800B4F78(targetCtxt, actor->type, ctxt);
|
||||
func_800B5040(targetCtxt, actor, actor->category, ctxt);
|
||||
func_800B4F78(targetCtxt, actor->category, ctxt);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/z_actor//func_800B5208.asm")
|
||||
@ -186,24 +186,24 @@ void Actor_MarkForDeath(Actor* actor) {
|
||||
}
|
||||
|
||||
void Actor_InitCurrPosition(Actor* actor) {
|
||||
actor->currPosRot = actor->initPosRot;
|
||||
actor->world = actor->home;
|
||||
}
|
||||
|
||||
void Actor_SetHeight(Actor* actor, f32 height) {
|
||||
actor->topPosRot.pos.x = actor->currPosRot.pos.x;
|
||||
actor->topPosRot.pos.y = actor->currPosRot.pos.y + height;
|
||||
actor->topPosRot.pos.z = actor->currPosRot.pos.z;
|
||||
actor->topPosRot.rot.x = actor->currPosRot.rot.x;
|
||||
actor->topPosRot.rot.y = actor->currPosRot.rot.y;
|
||||
actor->topPosRot.rot.z = actor->currPosRot.rot.z;
|
||||
actor->focus.pos.x = actor->world.pos.x;
|
||||
actor->focus.pos.y = actor->world.pos.y + height;
|
||||
actor->focus.pos.z = actor->world.pos.z;
|
||||
actor->focus.rot.x = actor->world.rot.x;
|
||||
actor->focus.rot.y = actor->world.rot.y;
|
||||
actor->focus.rot.z = actor->world.rot.z;
|
||||
}
|
||||
|
||||
void Actor_SetRotationFromDrawRotation(Actor* actor) {
|
||||
actor->currPosRot.rot = actor->shape.rot;
|
||||
actor->world.rot = actor->shape.rot;
|
||||
}
|
||||
|
||||
void Actor_InitDrawRotation(Actor* actor) {
|
||||
actor->shape.rot = actor->currPosRot.rot;
|
||||
actor->shape.rot = actor->world.rot;
|
||||
}
|
||||
|
||||
void Actor_SetScale(Actor* actor, f32 scale) {
|
||||
@ -222,18 +222,18 @@ void Actor_InitToDefaultValues(Actor* actor, GlobalContext* ctxt) {
|
||||
Actor_InitCurrPosition(actor);
|
||||
Actor_InitDrawRotation(actor);
|
||||
Actor_SetHeight(actor, 0);
|
||||
Math_Vec3f_Copy(&actor->lastPos, &actor->currPosRot.pos);
|
||||
Math_Vec3f_Copy(&actor->prevPos, &actor->world.pos);
|
||||
Actor_SetScale(actor, 0.01);
|
||||
actor->unk1F = 3;
|
||||
actor->targetMode = 3;
|
||||
actor->minYVelocity = -20.0f;
|
||||
|
||||
actor->meshAttachedTo = 0x32;
|
||||
|
||||
actor->sqrdDistToLink = D_801DCA54;
|
||||
func_800E7494(&actor->unkA0);
|
||||
actor->unkFC = 1000.0f;
|
||||
actor->unk100 = 350.0f;
|
||||
actor->unk104 = 700.0f;
|
||||
func_800E7494(&actor->colChkInfo);
|
||||
actor->uncullZoneForward = 1000.0f;
|
||||
actor->uncullZoneScale = 350.0f;
|
||||
actor->uncullZoneDownward = 700.0f;
|
||||
|
||||
actor->naviMsgId = 255;
|
||||
|
||||
@ -263,9 +263,9 @@ void Actor_SetMovementScale(s32 scale) {
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void Actor_ApplyMovement(Actor* actor) {
|
||||
actor->currPosRot.pos.x += ((actor->velocity.x * actorMovementScale) + actor->unkA0.displacement.x);
|
||||
actor->currPosRot.pos.y += ((actor->velocity.y * actorMovementScale) + actor->unkA0.displacement.y);
|
||||
actor->currPosRot.pos.z += ((actor->velocity.z * actorMovementScale) + actor->unkA0.displacement.z);
|
||||
actor->world.pos.x += ((actor->velocity.x * actorMovementScale) + actor->colChkInfo.displacement.x);
|
||||
actor->world.pos.y += ((actor->velocity.y * actorMovementScale) + actor->colChkInfo.displacement.y);
|
||||
actor->world.pos.z += ((actor->velocity.z * actorMovementScale) + actor->colChkInfo.displacement.z);
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/z_actor//Actor_ApplyMovement.asm")
|
||||
@ -273,9 +273,9 @@ void Actor_ApplyMovement(Actor* actor) {
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void Actor_SetVelocityYRotationAndGravity(Actor* actor) {
|
||||
actor->velocity.x = actor->speedXZ * Math_Sins(actor->currPosRot.rot.x);
|
||||
actor->velocity.x = actor->speedXZ * Math_Sins(actor->world.rot.x);
|
||||
actor->velocity.y = actor->velocity.y + actor->gravity;
|
||||
actor->velocity.z = actor->speedXZ * Math_Coss(actor->currPosRot.rot.x);
|
||||
actor->velocity.z = actor->speedXZ * Math_Coss(actor->world.rot.x);
|
||||
|
||||
if (actor->velocity.y < actor->minYVelocity) {
|
||||
actor->velocity.y = actor->minYVelocity;
|
||||
@ -291,10 +291,10 @@ void Actor_SetVelocityAndMoveYRotationAndGravity(Actor* actor) {
|
||||
}
|
||||
|
||||
void Actor_SetVelocityXYRotation(Actor* actor) {
|
||||
f32 velX = Math_Coss(actor->currPosRot.rot.x) * actor->speedXZ;
|
||||
actor->velocity.x = Math_Sins(actor->currPosRot.rot.y) * velX;
|
||||
actor->velocity.y = Math_Sins(actor->currPosRot.rot.x) * actor->speedXZ;
|
||||
actor->velocity.z = Math_Coss(actor->currPosRot.rot.y) * velX;
|
||||
f32 velX = Math_Coss(actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.x = Math_Sins(actor->world.rot.y) * velX;
|
||||
actor->velocity.y = Math_Sins(actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.z = Math_Coss(actor->world.rot.y) * velX;
|
||||
}
|
||||
|
||||
void Actor_SetVelocityAndMoveXYRotation(Actor* actor) {
|
||||
@ -303,10 +303,10 @@ void Actor_SetVelocityAndMoveXYRotation(Actor* actor) {
|
||||
}
|
||||
|
||||
void Actor_SetVelocityXYRotationReverse(Actor* actor) {
|
||||
f32 velX = Math_Coss(-actor->currPosRot.rot.x) * actor->speedXZ;
|
||||
actor->velocity.x = Math_Sins(actor->currPosRot.rot.y) * velX;
|
||||
actor->velocity.y = Math_Sins(-actor->currPosRot.rot.x) * actor->speedXZ;
|
||||
actor->velocity.z = Math_Coss(actor->currPosRot.rot.y) * velX;
|
||||
f32 velX = Math_Coss(-actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.x = Math_Sins(actor->world.rot.y) * velX;
|
||||
actor->velocity.y = Math_Sins(-actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.z = Math_Coss(actor->world.rot.y) * velX;
|
||||
}
|
||||
|
||||
void Actor_SetVelocityAndMoveXYRotationReverse(Actor* actor) {
|
||||
@ -319,43 +319,43 @@ void Actor_SetVelocityAndMoveXYRotationReverse(Actor* actor) {
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/z_actor//func_800B6C58.asm")
|
||||
|
||||
s16 Actor_YawBetweenActors(Actor* from, Actor* to) {
|
||||
return Math_Vec3f_Yaw(&from->currPosRot.pos, &to->currPosRot.pos);
|
||||
return Math_Vec3f_Yaw(&from->world.pos, &to->world.pos);
|
||||
}
|
||||
|
||||
s16 Actor_YawBetweenActorsTop(Actor* from, Actor* to) {
|
||||
return Math_Vec3f_Yaw(&from->topPosRot.pos, &to->topPosRot.pos);
|
||||
return Math_Vec3f_Yaw(&from->focus.pos, &to->focus.pos);
|
||||
}
|
||||
|
||||
s16 Actor_YawToPoint(Actor* actor, Vec3f* point) {
|
||||
return Math_Vec3f_Yaw(&actor->currPosRot.pos, point);
|
||||
return Math_Vec3f_Yaw(&actor->world.pos, point);
|
||||
}
|
||||
|
||||
s16 Actor_PitchBetweenActors(Actor* from, Actor* to) {
|
||||
return Math_Vec3f_Pitch(&from->currPosRot.pos, &to->currPosRot.pos);
|
||||
return Math_Vec3f_Pitch(&from->world.pos, &to->world.pos);
|
||||
}
|
||||
|
||||
s16 Actor_PitchBetweenActorsTop(Actor* from, Actor* to) {
|
||||
return Math_Vec3f_Pitch(&from->topPosRot.pos, &to->topPosRot.pos);
|
||||
return Math_Vec3f_Pitch(&from->focus.pos, &to->focus.pos);
|
||||
}
|
||||
|
||||
s16 Actor_PitchToPoint(Actor* actor, Vec3f* point) {
|
||||
return Math_Vec3f_Pitch(&actor->currPosRot.pos, point);
|
||||
return Math_Vec3f_Pitch(&actor->world.pos, point);
|
||||
}
|
||||
|
||||
f32 Actor_DistanceBetweenActors(Actor* actor1, Actor* actor2) {
|
||||
return Math_Vec3f_DistXYZ(&actor1->currPosRot.pos, &actor2->currPosRot.pos);
|
||||
return Math_Vec3f_DistXYZ(&actor1->world.pos, &actor2->world.pos);
|
||||
}
|
||||
|
||||
f32 Actor_DistanceToPoint(Actor* actor, Vec3f* point) {
|
||||
return Math_Vec3f_DistXYZ(&actor->currPosRot.pos, point);
|
||||
return Math_Vec3f_DistXYZ(&actor->world.pos, point);
|
||||
}
|
||||
|
||||
f32 Actor_XZDistanceBetweenActors(Actor* actor1, Actor* actor2) {
|
||||
return Math_Vec3f_DistXZ(&actor1->currPosRot.pos, &actor2->currPosRot.pos);
|
||||
return Math_Vec3f_DistXZ(&actor1->world.pos, &actor2->world.pos);
|
||||
}
|
||||
|
||||
f32 Actor_XZDistanceToPoint(Actor* actor, Vec3f* point) {
|
||||
return Math_Vec3f_DistXZ(&actor->currPosRot.pos, point);
|
||||
return Math_Vec3f_DistXZ(&actor->world.pos, point);
|
||||
}
|
||||
|
||||
void Actor_CalcOffsetOrientedToDrawRotation(Actor* actor, Vec3f* offset, Vec3f* point) {
|
||||
@ -366,15 +366,15 @@ void Actor_CalcOffsetOrientedToDrawRotation(Actor* actor, Vec3f* offset, Vec3f*
|
||||
|
||||
cos_rot_y = Math_Coss(actor->shape.rot.y);
|
||||
sin_rot_y = Math_Sins(actor->shape.rot.y);
|
||||
imm_x = point->x - actor->currPosRot.pos.x;
|
||||
imm_z = point->z - actor->currPosRot.pos.z;
|
||||
imm_x = point->x - actor->world.pos.x;
|
||||
imm_z = point->z - actor->world.pos.z;
|
||||
offset->x = ((imm_x * cos_rot_y) - (imm_z * sin_rot_y));
|
||||
offset->z = ((imm_z * cos_rot_y) + (imm_x * sin_rot_y));
|
||||
offset->y = point->y - actor->currPosRot.pos.y;
|
||||
offset->y = point->y - actor->world.pos.y;
|
||||
}
|
||||
|
||||
f32 Actor_YDistance(Actor* actor1, Actor* actor2) {
|
||||
return actor2->currPosRot.pos.y - actor1->currPosRot.pos.y;
|
||||
return actor2->world.pos.y - actor1->world.pos.y;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/z_actor//func_800B6F20.asm")
|
||||
@ -425,7 +425,7 @@ s32 Actor_IsActorFacedByActor(Actor* actor, Actor* other, s16 tolerance) {
|
||||
s32 Actor_IsActorFacingLink(Actor* actor, s16 angle) {
|
||||
s16 dist;
|
||||
|
||||
dist = actor->rotTowardsLinkY - actor->shape.rot.y;
|
||||
dist = actor->yawTowardsPlayer - actor->shape.rot.y;
|
||||
if (ABS(dist) < angle) {
|
||||
return 1;
|
||||
}
|
||||
|
@ -107,8 +107,8 @@ s32 Scene_FindSceneObjectIndex(SceneContext* sceneCtxt, s16 objectId) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
s32 Scene_IsObjectLoaded(SceneContext* iParm1, s32 index) {
|
||||
if (iParm1->objects[index].id > 0) {
|
||||
s32 Scene_IsObjectLoaded(SceneContext* actorShape, s32 index) {
|
||||
if (actorShape->objects[index].id > 0) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -1072,9 +1072,9 @@ void SkelAnime_AnimationType5Loaded(GlobalContext* globalCtx, AnimationEntryType
|
||||
Vec3f pos;
|
||||
|
||||
func_80137748(entry->skelAnime, &pos, actor->shape.rot.y);
|
||||
actor->currPosRot.pos.x += (pos.x * actor->scale.x) * entry->unk08;
|
||||
actor->currPosRot.pos.y += (pos.y * actor->scale.y) * entry->unk08;
|
||||
actor->currPosRot.pos.z += (pos.z * actor->scale.z) * entry->unk08;
|
||||
actor->world.pos.x += (pos.x * actor->scale.x) * entry->unk08;
|
||||
actor->world.pos.y += (pos.y * actor->scale.y) * entry->unk08;
|
||||
actor->world.pos.z += (pos.z * actor->scale.z) * entry->unk08;
|
||||
}
|
||||
|
||||
void func_80135EE8(GlobalContext* globalCtx, AnimationContext* animationCtx) {
|
||||
|
@ -14,7 +14,7 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx);
|
||||
|
||||
const ActorInit Arms_Hook_InitVars = {
|
||||
ACTOR_ARMS_HOOK,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(ArmsHook),
|
||||
@ -50,7 +50,7 @@ void ArmsHook_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
Collision_InitQuadDefault(globalCtx, &this->collider);
|
||||
Collision_InitQuadWithData(globalCtx, &this->collider, &this->actor, &D_808C1BC0);
|
||||
ArmsHook_SetupAction(this, ArmsHook_Wait);
|
||||
this->unk1E0 = this->actor.currPosRot.pos;
|
||||
this->unk1E0 = this->actor.world.pos;
|
||||
}
|
||||
|
||||
void ArmsHook_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
@ -100,7 +100,7 @@ s32 ArmsHook_CheckForCancel(ArmsHook* this) {
|
||||
((player->stateFlags1 & 0x4000080))) {
|
||||
this->timer = 0;
|
||||
ArmsHook_DetachHookFromActor(this);
|
||||
Math_Vec3f_Copy(&this->actor.currPosRot.pos, &player->unk368);
|
||||
Math_Vec3f_Copy(&this->actor.world.pos, &player->unk368);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -110,7 +110,7 @@ s32 ArmsHook_CheckForCancel(ArmsHook* this) {
|
||||
void ArmsHook_AttachHookToActor(ArmsHook* this, Actor* actor) {
|
||||
actor->flags |= 0x2000;
|
||||
this->grabbed = actor;
|
||||
Math_Vec3f_Diff(&actor->currPosRot.pos, &this->actor.currPosRot.pos, &this->unk1FC);
|
||||
Math_Vec3f_Diff(&actor->world.pos, &this->actor.world.pos, &this->unk1FC);
|
||||
}
|
||||
|
||||
void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
@ -158,7 +158,7 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
if (this->actor.child != NULL) {
|
||||
f32 sp94 = Actor_DistanceBetweenActors(this, grabbed);
|
||||
f32 sp90 = sqrtf(SQ(this->unk1FC.x) + SQ(this->unk1FC.y) + SQ(this->unk1FC.z));
|
||||
Math_Vec3f_Diff(&grabbed->currPosRot.pos, &this->unk1FC, &this->actor.currPosRot.pos);
|
||||
Math_Vec3f_Diff(&grabbed->world.pos, &this->unk1FC, &this->actor.world.pos);
|
||||
if (50.0f < (sp94 - sp90)) {
|
||||
ArmsHook_DetachHookFromActor(this);
|
||||
grabbed = NULL;
|
||||
@ -171,7 +171,7 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
f32 velocity;
|
||||
|
||||
bodyDistDiff =
|
||||
Math_Vec3f_DistXYZAndStoreDiff(&player->unk368, &this->actor.currPosRot.pos, &bodyDistDiffVec);
|
||||
Math_Vec3f_DistXYZAndStoreDiff(&player->unk368, &this->actor.world.pos, &bodyDistDiffVec);
|
||||
if (bodyDistDiff < 30.0f) {
|
||||
velocity = 0.0f;
|
||||
phi_f16 = 0.0f;
|
||||
@ -198,13 +198,13 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
if (this->actor.child == NULL) {
|
||||
Math_Vec3f_Sum(&player->unk368, &newPos, &this->actor.currPosRot.pos);
|
||||
Math_Vec3f_Sum(&player->unk368, &newPos, &this->actor.world.pos);
|
||||
if (grabbed != NULL) {
|
||||
Math_Vec3f_Sum(&this->actor.currPosRot.pos, &this->unk1FC, &grabbed->currPosRot.pos);
|
||||
Math_Vec3f_Sum(&this->actor.world.pos, &this->unk1FC, &grabbed->world.pos);
|
||||
}
|
||||
} else {
|
||||
Math_Vec3f_Diff(&bodyDistDiffVec, &newPos, &player->base.velocity);
|
||||
player->base.currPosRot.rot.x =
|
||||
player->base.world.rot.x =
|
||||
atans_flip(sqrtf(SQ(bodyDistDiffVec.x) + SQ(bodyDistDiffVec.z)), -bodyDistDiffVec.y);
|
||||
}
|
||||
if (phi_f16 < 50.0f) {
|
||||
@ -212,47 +212,47 @@ void ArmsHook_Shoot(ArmsHook* this, GlobalContext* globalCtx) {
|
||||
if (phi_f16 == 0.0f) {
|
||||
ArmsHook_SetupAction(this, ArmsHook_Wait);
|
||||
if (ArmsHook_AttachToPlayer(this, player)) {
|
||||
Math_Vec3f_Diff(&this->actor.currPosRot.pos, &player->base.currPosRot.pos, &player->base.velocity);
|
||||
Math_Vec3f_Diff(&this->actor.world.pos, &player->base.world.pos, &player->base.velocity);
|
||||
player->base.velocity.y -= 20.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
BgPolygon* poly;
|
||||
u32 dynaPolyID;
|
||||
u32 bgId;
|
||||
Vec3f sp78;
|
||||
Vec3f prevFrameDiff;
|
||||
Vec3f sp60;
|
||||
|
||||
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
|
||||
Math_Vec3f_Diff(&this->actor.currPosRot.pos, &this->actor.lastPos, &prevFrameDiff);
|
||||
Math_Vec3f_Diff(&this->actor.world.pos, &this->actor.prevPos, &prevFrameDiff);
|
||||
Math_Vec3f_Sum(&this->unk1E0, &prevFrameDiff, &this->unk1E0);
|
||||
this->actor.shape.rot.x = atans_flip(this->actor.speedXZ, -this->actor.velocity.y);
|
||||
sp60.x = this->unk1EC.x - (this->unk1E0.x - this->unk1EC.x);
|
||||
sp60.y = this->unk1EC.y - (this->unk1E0.y - this->unk1EC.y);
|
||||
sp60.z = this->unk1EC.z - (this->unk1E0.z - this->unk1EC.z);
|
||||
if (func_800C55C4(&globalCtx->colCtx, &sp60, &this->unk1E0, &sp78, &poly, 1, 1, 1, 1, &dynaPolyID) != 0 &&
|
||||
(func_800B90AC(globalCtx, &this->actor, poly, dynaPolyID, &sp78) == 0 ||
|
||||
func_800C576C(&globalCtx->colCtx, &sp60, &this->unk1E0, &sp78, &poly, 1, 1, 1, 1, &dynaPolyID) != 0)) {
|
||||
if (func_800C55C4(&globalCtx->colCtx, &sp60, &this->unk1E0, &sp78, &poly, 1, 1, 1, 1, &bgId) != 0 &&
|
||||
(func_800B90AC(globalCtx, &this->actor, poly, bgId, &sp78) == 0 ||
|
||||
func_800C576C(&globalCtx->colCtx, &sp60, &this->unk1E0, &sp78, &poly, 1, 1, 1, 1, &bgId) != 0)) {
|
||||
f32 sp5C = poly->normal.x * (1 / SHT_MAX);
|
||||
f32 sp58 = poly->normal.z * (1 / SHT_MAX);
|
||||
|
||||
Math_Vec3f_Copy(&this->actor.currPosRot.pos, &sp78);
|
||||
this->actor.currPosRot.pos.x += 10.0f * sp5C;
|
||||
this->actor.currPosRot.pos.z += 10.0f * sp58;
|
||||
Math_Vec3f_Copy(&this->actor.world.pos, &sp78);
|
||||
this->actor.world.pos.x += 10.0f * sp5C;
|
||||
this->actor.world.pos.z += 10.0f * sp58;
|
||||
this->timer = 1;
|
||||
if (func_800C9CEC(&globalCtx->colCtx, poly, dynaPolyID)) {
|
||||
if (func_800C9CEC(&globalCtx->colCtx, poly, bgId)) {
|
||||
{
|
||||
DynaPolyActor* dynaPolyActor;
|
||||
if (dynaPolyID != 0x32 &&
|
||||
(dynaPolyActor = BgCheck_GetActorOfMesh(&globalCtx->colCtx, dynaPolyID)) != NULL) {
|
||||
if (bgId != 0x32 &&
|
||||
(dynaPolyActor = BgCheck_GetActorOfMesh(&globalCtx->colCtx, bgId)) != NULL) {
|
||||
ArmsHook_AttachHookToActor(this, &dynaPolyActor->actor);
|
||||
}
|
||||
}
|
||||
func_808C1154(this);
|
||||
func_8019F1C0(&this->actor.projectedPos, 0x1829);
|
||||
} else {
|
||||
func_800E8668(globalCtx, &this->actor.currPosRot.pos);
|
||||
func_800E8668(globalCtx, &this->actor.world.pos);
|
||||
func_8019F1C0(&this->actor.projectedPos, 0x1813);
|
||||
}
|
||||
} else {
|
||||
@ -305,9 +305,9 @@ void ArmsHook_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
gSPMatrix(sp44->polyOpa.p++, SysMatrix_AppendStateToPolyOpaDisp(globalCtx->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(sp44->polyOpa.p++, D_0601D960);
|
||||
SysMatrix_InsertTranslation(this->actor.currPosRot.pos.x, this->actor.currPosRot.pos.y,
|
||||
this->actor.currPosRot.pos.z, MTXMODE_NEW);
|
||||
Math_Vec3f_Diff(&player->unk368, &this->actor.currPosRot.pos, &sp68);
|
||||
SysMatrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y,
|
||||
this->actor.world.pos.z, MTXMODE_NEW);
|
||||
Math_Vec3f_Diff(&player->unk368, &this->actor.world.pos, &sp68);
|
||||
sp48 = SQ(sp68.x) + SQ(sp68.z);
|
||||
sp4C = sqrtf(sp48);
|
||||
SysMatrix_InsertYRotation_s(atans(sp68.x, sp68.z), MTXMODE_APPLY);
|
||||
|
@ -12,7 +12,7 @@ void ArrowFire_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Arrow_Fire_InitVars = {
|
||||
ACTOR_ARROW_FIRE,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(ArrowFire),
|
||||
|
@ -12,7 +12,7 @@ void ArrowIce_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Arrow_Ice_InitVars = {
|
||||
ACTOR_ARROW_ICE,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(ArrowIce),
|
||||
|
@ -12,7 +12,7 @@ void ArrowLight_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Arrow_Light_InitVars = {
|
||||
ACTOR_ARROW_LIGHT,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(ArrowLight),
|
||||
|
@ -12,7 +12,7 @@ void BgAstrBombwall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Astr_Bombwall_InitVars = {
|
||||
ACTOR_BG_ASTR_BOMBWALL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_ASTR_OBJ,
|
||||
sizeof(BgAstrBombwall),
|
||||
|
@ -12,7 +12,7 @@ void BgBotihasira_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Botihasira_InitVars = {
|
||||
ACTOR_BG_BOTIHASIRA,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_BOTIHASIRA,
|
||||
sizeof(BgBotihasira),
|
||||
|
@ -10,7 +10,7 @@ void BgBreakwall_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Breakwall_InitVars = {
|
||||
ACTOR_BG_BREAKWALL,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(BgBreakwall),
|
||||
|
@ -12,7 +12,7 @@ void BgCraceMovebg_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Crace_Movebg_InitVars = {
|
||||
ACTOR_BG_CRACE_MOVEBG,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_CRACE_OBJECT,
|
||||
sizeof(BgCraceMovebg),
|
||||
|
@ -12,7 +12,7 @@ void BgCtowerGear_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ctower_Gear_InitVars = {
|
||||
ACTOR_BG_CTOWER_GEAR,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_CTOWER_ROT,
|
||||
sizeof(BgCtowerGear),
|
||||
|
@ -12,7 +12,7 @@ void BgCtowerRot_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ctower_Rot_InitVars = {
|
||||
ACTOR_BG_CTOWER_ROT,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_CTOWER_ROT,
|
||||
sizeof(BgCtowerRot),
|
||||
|
@ -11,7 +11,7 @@ void BgDanpeiMovebg_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Danpei_Movebg_InitVars = {
|
||||
ACTOR_BG_DANPEI_MOVEBG,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(BgDanpeiMovebg),
|
||||
|
@ -12,7 +12,7 @@ void BgDblueBalance_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Dblue_Balance_InitVars = {
|
||||
ACTOR_BG_DBLUE_BALANCE,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_DBLUE_OBJECT,
|
||||
sizeof(BgDblueBalance),
|
||||
|
@ -12,7 +12,7 @@ void BgDblueElevator_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Dblue_Elevator_InitVars = {
|
||||
ACTOR_BG_DBLUE_ELEVATOR,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_DBLUE_OBJECT,
|
||||
sizeof(BgDblueElevator),
|
||||
|
@ -12,7 +12,7 @@ void BgDblueMovebg_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Dblue_Movebg_InitVars = {
|
||||
ACTOR_BG_DBLUE_MOVEBG,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_DBLUE_OBJECT,
|
||||
sizeof(BgDblueMovebg),
|
||||
|
@ -12,7 +12,7 @@ void BgDblueWaterfall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Dblue_Waterfall_InitVars = {
|
||||
ACTOR_BG_DBLUE_WATERFALL,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_DBLUE_OBJECT,
|
||||
sizeof(BgDblueWaterfall),
|
||||
|
@ -12,7 +12,7 @@ void BgDkjailIvy_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Dkjail_Ivy_InitVars = {
|
||||
ACTOR_BG_DKJAIL_IVY,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_DKJAIL_OBJ,
|
||||
sizeof(BgDkjailIvy),
|
||||
|
@ -11,7 +11,7 @@ void BgDyYoseizo_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Dy_Yoseizo_InitVars = {
|
||||
ACTOR_BG_DY_YOSEIZO,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_DY_OBJ,
|
||||
sizeof(BgDyYoseizo),
|
||||
|
@ -12,7 +12,7 @@ void BgF40Block_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_F40_Block_InitVars = {
|
||||
ACTOR_BG_F40_BLOCK,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_F40_OBJ,
|
||||
sizeof(BgF40Block),
|
||||
|
@ -12,7 +12,7 @@ void BgF40Flift_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_F40_Flift_InitVars = {
|
||||
ACTOR_BG_F40_FLIFT,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_F40_OBJ,
|
||||
sizeof(BgF40Flift),
|
||||
|
@ -12,7 +12,7 @@ void BgF40Switch_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_F40_Switch_InitVars = {
|
||||
ACTOR_BG_F40_SWITCH,
|
||||
ACTORTYPE_SWITCH,
|
||||
ACTORCAT_SWITCH,
|
||||
FLAGS,
|
||||
OBJECT_F40_SWITCH,
|
||||
sizeof(BgF40Switch),
|
||||
|
@ -12,7 +12,7 @@ void BgF40Swlift_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_F40_Swlift_InitVars = {
|
||||
ACTOR_BG_F40_SWLIFT,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_F40_OBJ,
|
||||
sizeof(BgF40Swlift),
|
||||
|
@ -11,7 +11,7 @@ void BgFireWall_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Fire_Wall_InitVars = {
|
||||
ACTOR_BG_FIRE_WALL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_FWALL,
|
||||
sizeof(BgFireWall),
|
||||
|
@ -11,7 +11,7 @@ void BgFuKaiten_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
const ActorInit Bg_Fu_Kaiten_InitVars = {
|
||||
ACTOR_BG_FU_KAITEN,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_FU_KAITEN,
|
||||
sizeof(BgFuKaiten),
|
||||
@ -29,7 +29,7 @@ void BgFuKaiten_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
Actor_SetScale(thisx, 1.0);
|
||||
BcCheck3_BgActorInit(&THIS->bg, 3);
|
||||
BgCheck_RelocateMeshHeader(&object_fu_kaiten_002D30, &header);
|
||||
THIS->bg.dynaPolyId = BgCheck_AddActorMesh(globalCtx, &globalCtx->colCtx.dyna, &THIS->bg, header);
|
||||
THIS->bg.bgId = BgCheck_AddActorMesh(globalCtx, &globalCtx->colCtx.dyna, &THIS->bg, header);
|
||||
|
||||
THIS->bouceHeight = 0.0;
|
||||
THIS->rotationSpeed = 0;
|
||||
@ -38,7 +38,7 @@ void BgFuKaiten_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void BgFuKaiten_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BgCheck_RemoveActorMesh(globalCtx, &globalCtx->colCtx.dyna, THIS->bg.dynaPolyId);
|
||||
BgCheck_RemoveActorMesh(globalCtx, &globalCtx->colCtx.dyna, THIS->bg.bgId);
|
||||
}
|
||||
|
||||
void BgFuKaiten_UpdateRotation(BgFuKaiten* this) {
|
||||
@ -53,9 +53,9 @@ void BgFuKaiten_UpdateRotation(BgFuKaiten* this) {
|
||||
|
||||
void BgFuKaiten_UpdateHeight(BgFuKaiten* this) {
|
||||
this->bounce += this->bounceSpeed;
|
||||
this->bg.actor.currPosRot.pos.y = this->bg.actor.initPosRot.pos.y + this->elevation + this->bouceHeight;
|
||||
this->bg.actor.world.pos.y = this->bg.actor.home.pos.y + this->elevation + this->bouceHeight;
|
||||
|
||||
this->bg.actor.currPosRot.pos.y -= this->bouceHeight * Math_Coss(this->bounce);
|
||||
this->bg.actor.world.pos.y -= this->bouceHeight * Math_Coss(this->bounce);
|
||||
}
|
||||
|
||||
void BgFuKaiten_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
|
@ -12,7 +12,7 @@ void BgFuMizu_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Fu_Mizu_InitVars = {
|
||||
ACTOR_BG_FU_MIZU,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_FU_KAITEN,
|
||||
sizeof(BgFuMizu),
|
||||
|
@ -12,7 +12,7 @@ void BgGoronOyu_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Goron_Oyu_InitVars = {
|
||||
ACTOR_BG_GORON_OYU,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_OYU,
|
||||
sizeof(BgGoronOyu),
|
||||
|
@ -12,7 +12,7 @@ void BgHakaBombwall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Haka_Bombwall_InitVars = {
|
||||
ACTOR_BG_HAKA_BOMBWALL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_HAKA_OBJ,
|
||||
sizeof(BgHakaBombwall),
|
||||
|
@ -21,7 +21,7 @@ void func_80B6DE80(BgHakaCurtain* this);
|
||||
|
||||
const ActorInit Bg_Haka_Curtain_InitVars = {
|
||||
ACTOR_BG_HAKA_CURTAIN,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_HAKA_OBJ,
|
||||
sizeof(BgHakaCurtain),
|
||||
@ -32,9 +32,9 @@ const ActorInit Bg_Haka_Curtain_InitVars = {
|
||||
};
|
||||
|
||||
static InitChainEntry D_80B6DFA0[] = {
|
||||
ICHAIN_F32(unkFC, 4000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(unk100, 700, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(unk104, 600, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 700, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 600, ICHAIN_CONTINUE),
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
@ -57,7 +57,7 @@ void BgHakaCurtain_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
void BgHakaCurtain_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BgHakaCurtain* this = THIS;
|
||||
|
||||
BgCheck_RemoveActorMesh(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
|
||||
BgCheck_RemoveActorMesh(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
||||
}
|
||||
|
||||
void func_80B6DC98(BgHakaCurtain* this) {
|
||||
@ -96,13 +96,13 @@ void func_80B6DD80(BgHakaCurtain* this) {
|
||||
}
|
||||
|
||||
void func_80B6DD9C(BgHakaCurtain* this, GlobalContext* globalCtx) {
|
||||
if (this->dyna.actor.currPosRot.pos.y < this->dyna.actor.initPosRot.pos.y + 150.0f - 30.0f) {
|
||||
if (this->dyna.actor.world.pos.y < this->dyna.actor.home.pos.y + 150.0f - 30.0f) {
|
||||
Lib_StepTowardsCheck_f(&this->dyna.actor.velocity.y, 1.6f, 0.12f);
|
||||
} else {
|
||||
Lib_StepTowardsCheck_f(&this->dyna.actor.velocity.y, 0.8f, 0.05f);
|
||||
}
|
||||
this->dyna.actor.currPosRot.pos.y += this->dyna.actor.velocity.y;
|
||||
if (this->dyna.actor.initPosRot.pos.y + 150.0f < this->dyna.actor.currPosRot.pos.y) {
|
||||
this->dyna.actor.world.pos.y += this->dyna.actor.velocity.y;
|
||||
if (this->dyna.actor.home.pos.y + 150.0f < this->dyna.actor.world.pos.y) {
|
||||
func_80B6DE80(this);
|
||||
return;
|
||||
}
|
||||
@ -111,7 +111,7 @@ void func_80B6DD9C(BgHakaCurtain* this, GlobalContext* globalCtx) {
|
||||
|
||||
void func_80B6DE80(BgHakaCurtain* this) {
|
||||
this->actionFunc = func_80B6DEA8;
|
||||
this->dyna.actor.currPosRot.pos.y = this->dyna.actor.initPosRot.pos.y + 150.0f;
|
||||
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y + 150.0f;
|
||||
}
|
||||
|
||||
void func_80B6DEA8(BgHakaCurtain* this, GlobalContext* globalCtx) {
|
||||
|
@ -12,7 +12,7 @@ void BgHakaTomb_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Haka_Tomb_InitVars = {
|
||||
ACTOR_BG_HAKA_TOMB,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_HAKA_OBJ,
|
||||
sizeof(BgHakaTomb),
|
||||
|
@ -12,7 +12,7 @@ void BgHakuginBombwall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Hakugin_Bombwall_InitVars = {
|
||||
ACTOR_BG_HAKUGIN_BOMBWALL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_HAKUGIN_OBJ,
|
||||
sizeof(BgHakuginBombwall),
|
||||
|
@ -12,7 +12,7 @@ void BgHakuginElvpole_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Hakugin_Elvpole_InitVars = {
|
||||
ACTOR_BG_HAKUGIN_ELVPOLE,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_HAKUGIN_OBJ,
|
||||
sizeof(BgHakuginElvpole),
|
||||
|
@ -11,7 +11,7 @@ void BgHakuginPost_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Hakugin_Post_InitVars = {
|
||||
ACTOR_BG_HAKUGIN_POST,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_HAKUGIN_OBJ,
|
||||
sizeof(BgHakuginPost),
|
||||
|
@ -12,7 +12,7 @@ void BgHakuginSwitch_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Hakugin_Switch_InitVars = {
|
||||
ACTOR_BG_HAKUGIN_SWITCH,
|
||||
ACTORTYPE_SWITCH,
|
||||
ACTORCAT_SWITCH,
|
||||
FLAGS,
|
||||
OBJECT_GORONSWITCH,
|
||||
sizeof(BgHakuginSwitch),
|
||||
|
@ -12,7 +12,7 @@ void BgIcefloe_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Icefloe_InitVars = {
|
||||
ACTOR_BG_ICEFLOE,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_ICEFLOE,
|
||||
sizeof(BgIcefloe),
|
||||
|
@ -12,7 +12,7 @@ void BgIcicle_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Icicle_InitVars = {
|
||||
ACTOR_BG_ICICLE,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_ICICLE,
|
||||
sizeof(BgIcicle),
|
||||
|
@ -11,7 +11,7 @@ void BgIkanaBlock_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ikana_Block_InitVars = {
|
||||
ACTOR_BG_IKANA_BLOCK,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
GAMEPLAY_DANGEON_KEEP,
|
||||
sizeof(BgIkanaBlock),
|
||||
|
@ -12,7 +12,7 @@ void BgIkanaBombwall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ikana_Bombwall_InitVars = {
|
||||
ACTOR_BG_IKANA_BOMBWALL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_IKANA_OBJ,
|
||||
sizeof(BgIkanaBombwall),
|
||||
|
@ -12,7 +12,7 @@ void BgIkanaDharma_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ikana_Dharma_InitVars = {
|
||||
ACTOR_BG_IKANA_DHARMA,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_IKANA_OBJ,
|
||||
sizeof(BgIkanaDharma),
|
||||
|
@ -12,7 +12,7 @@ void BgIkanaMirror_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ikana_Mirror_InitVars = {
|
||||
ACTOR_BG_IKANA_MIRROR,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_IKANA_OBJ,
|
||||
sizeof(BgIkanaMirror),
|
||||
|
@ -16,7 +16,7 @@ void BgIkanaRay_UpdateActivated(BgIkanaRay* this, GlobalContext* globalCtx);
|
||||
|
||||
const ActorInit Bg_Ikana_Ray_InitVars = {
|
||||
ACTOR_BG_IKANA_RAY,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_IKANA_OBJ,
|
||||
sizeof(BgIkanaRay),
|
||||
|
@ -12,7 +12,7 @@ void BgIkanaRotaryroom_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ikana_Rotaryroom_InitVars = {
|
||||
ACTOR_BG_IKANA_ROTARYROOM,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_IKANA_OBJ,
|
||||
sizeof(BgIkanaRotaryroom),
|
||||
|
@ -12,7 +12,7 @@ void BgIkanaShutter_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ikana_Shutter_InitVars = {
|
||||
ACTOR_BG_IKANA_SHUTTER,
|
||||
ACTORTYPE_SWITCH,
|
||||
ACTORCAT_SWITCH,
|
||||
FLAGS,
|
||||
OBJECT_IKANA_OBJ,
|
||||
sizeof(BgIkanaShutter),
|
||||
|
@ -12,7 +12,7 @@ void BgIkninSusceil_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Iknin_Susceil_InitVars = {
|
||||
ACTOR_BG_IKNIN_SUSCEIL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_IKNINSIDE_OBJ,
|
||||
sizeof(BgIkninSusceil),
|
||||
|
@ -12,7 +12,7 @@ void BgIkninside_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ikninside_InitVars = {
|
||||
ACTOR_BG_IKNINSIDE,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_IKNINSIDE_OBJ,
|
||||
sizeof(BgIkninside),
|
||||
|
@ -12,7 +12,7 @@ void BgIknvDoukutu_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Iknv_Doukutu_InitVars = {
|
||||
ACTOR_BG_IKNV_DOUKUTU,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_IKNV_OBJ,
|
||||
sizeof(BgIknvDoukutu),
|
||||
|
@ -12,7 +12,7 @@ void BgIknvObj_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Iknv_Obj_InitVars = {
|
||||
ACTOR_BG_IKNV_OBJ,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_IKNV_OBJ,
|
||||
sizeof(BgIknvObj),
|
||||
|
@ -12,7 +12,7 @@ void BgIngate_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ingate_InitVars = {
|
||||
ACTOR_BG_INGATE,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_SICHITAI_OBJ,
|
||||
sizeof(BgIngate),
|
||||
|
@ -11,7 +11,7 @@ void BgInibsMovebg_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Inibs_Movebg_InitVars = {
|
||||
ACTOR_BG_INIBS_MOVEBG,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_INIBS_OBJECT,
|
||||
sizeof(BgInibsMovebg),
|
||||
|
@ -12,7 +12,7 @@ void BgKeikokuSaku_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Keikoku_Saku_InitVars = {
|
||||
ACTOR_BG_KEIKOKU_SAKU,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_KEIKOKU_OBJ,
|
||||
sizeof(BgKeikokuSaku),
|
||||
|
@ -12,7 +12,7 @@ void BgKeikokuSpr_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Keikoku_Spr_InitVars = {
|
||||
ACTOR_BG_KEIKOKU_SPR,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_KEIKOKU_OBJ,
|
||||
sizeof(BgKeikokuSpr),
|
||||
|
@ -12,7 +12,7 @@ void BgKin2Bombwall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Kin2_Bombwall_InitVars = {
|
||||
ACTOR_BG_KIN2_BOMBWALL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_KIN2_OBJ,
|
||||
sizeof(BgKin2Bombwall),
|
||||
|
@ -12,7 +12,7 @@ void BgKin2Fence_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Kin2_Fence_InitVars = {
|
||||
ACTOR_BG_KIN2_FENCE,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_KIN2_OBJ,
|
||||
sizeof(BgKin2Fence),
|
||||
|
@ -12,7 +12,7 @@ void BgKin2Picture_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Kin2_Picture_InitVars = {
|
||||
ACTOR_BG_KIN2_PICTURE,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_KIN2_OBJ,
|
||||
sizeof(BgKin2Picture),
|
||||
|
@ -12,7 +12,7 @@ void BgKin2Shelf_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Kin2_Shelf_InitVars = {
|
||||
ACTOR_BG_KIN2_SHELF,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_KIN2_OBJ,
|
||||
sizeof(BgKin2Shelf),
|
||||
|
@ -12,7 +12,7 @@ void BgLadder_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Ladder_InitVars = {
|
||||
ACTOR_BG_LADDER,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_LADDER,
|
||||
sizeof(BgLadder),
|
||||
|
@ -12,7 +12,7 @@ void BgLastBwall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Last_Bwall_InitVars = {
|
||||
ACTOR_BG_LAST_BWALL,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_LAST_OBJ,
|
||||
sizeof(BgLastBwall),
|
||||
|
@ -11,7 +11,7 @@ void BgLbfshot_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Lbfshot_InitVars = {
|
||||
ACTOR_BG_LBFSHOT,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_LBFSHOT,
|
||||
sizeof(BgLbfshot),
|
||||
|
@ -12,7 +12,7 @@ void BgLotus_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Lotus_InitVars = {
|
||||
ACTOR_BG_LOTUS,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_LOTUS,
|
||||
sizeof(BgLotus),
|
||||
|
@ -9,7 +9,7 @@ void BgMarketStep_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
const ActorInit Bg_Market_Step_InitVars = {
|
||||
ACTOR_BG_MARKET_STEP,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_MARKET_OBJ,
|
||||
sizeof(BgMarketStep),
|
||||
@ -20,9 +20,9 @@ const ActorInit Bg_Market_Step_InitVars = {
|
||||
};
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_F32(unkFC, 1, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(unk100, 1, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(unk104, 1, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneForward, 1, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 1, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 1, ICHAIN_CONTINUE),
|
||||
ICHAIN_VEC3F_DIV1000(scale, 1000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
|
@ -11,7 +11,7 @@ void BgMbarChair_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
const ActorInit Bg_Mbar_Chair_InitVars = {
|
||||
ACTOR_BG_MBAR_CHAIR,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_MBAR_OBJ,
|
||||
sizeof(BgMbarChair),
|
||||
@ -22,9 +22,9 @@ const ActorInit Bg_Mbar_Chair_InitVars = {
|
||||
};
|
||||
|
||||
static InitChainEntry bgMbarChairInitVars[] = {
|
||||
ICHAIN_F32(unkFC, 2000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(unk100, 60, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(unk104, 80, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneForward, 2000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 60, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 80, ICHAIN_CONTINUE),
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
@ -42,7 +42,7 @@ void BgMbarChair_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
void BgMbarChair_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BgMbarChair* this = THIS;
|
||||
|
||||
BgCheck_RemoveActorMesh(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
|
||||
BgCheck_RemoveActorMesh(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
||||
}
|
||||
|
||||
void BgMbarChair_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
|
@ -12,7 +12,7 @@ void BgNumaHana_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Numa_Hana_InitVars = {
|
||||
ACTOR_BG_NUMA_HANA,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_NUMA_OBJ,
|
||||
sizeof(BgNumaHana),
|
||||
|
@ -12,7 +12,7 @@ void BgOpenShutter_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Open_Shutter_InitVars = {
|
||||
ACTOR_BG_OPEN_SHUTTER,
|
||||
ACTORTYPE_DOOR,
|
||||
ACTORCAT_DOOR,
|
||||
FLAGS,
|
||||
OBJECT_OPEN_OBJ,
|
||||
sizeof(BgOpenShutter),
|
||||
|
@ -11,7 +11,7 @@ void BgOpenSpot_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Open_Spot_InitVars = {
|
||||
ACTOR_BG_OPEN_SPOT,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_OPEN_OBJ,
|
||||
sizeof(BgOpenSpot),
|
||||
|
@ -11,7 +11,7 @@ void BgSinkaiKabe_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Sinkai_Kabe_InitVars = {
|
||||
ACTOR_BG_SINKAI_KABE,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_SINKAI_KABE,
|
||||
sizeof(BgSinkaiKabe),
|
||||
|
@ -12,7 +12,7 @@ void BgSpdweb_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Spdweb_InitVars = {
|
||||
ACTOR_BG_SPDWEB,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_SPDWEB,
|
||||
sizeof(BgSpdweb),
|
||||
|
@ -11,7 +11,7 @@ void BgSpoutFire_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Spout_Fire_InitVars = {
|
||||
ACTOR_BG_SPOUT_FIRE,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
OBJECT_FWALL,
|
||||
sizeof(BgSpoutFire),
|
||||
|
@ -12,7 +12,7 @@ void BgTobira01_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Tobira01_InitVars = {
|
||||
ACTOR_BG_TOBIRA01,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
OBJECT_SPOT11_OBJ,
|
||||
sizeof(BgTobira01),
|
||||
|
@ -11,7 +11,7 @@ void BgUmajump_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Bg_Umajump_InitVars = {
|
||||
ACTOR_BG_UMAJUMP,
|
||||
ACTORTYPE_PROP,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(BgUmajump),
|
||||
|
@ -12,7 +12,7 @@ void Boss01_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_01_InitVars = {
|
||||
ACTOR_BOSS_01,
|
||||
ACTORTYPE_BOSS,
|
||||
ACTORCAT_BOSS,
|
||||
FLAGS,
|
||||
OBJECT_BOSS01,
|
||||
sizeof(Boss01),
|
||||
|
@ -12,7 +12,7 @@ void Boss02_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_02_InitVars = {
|
||||
ACTOR_BOSS_02,
|
||||
ACTORTYPE_BOSS,
|
||||
ACTORCAT_BOSS,
|
||||
FLAGS,
|
||||
OBJECT_BOSS02,
|
||||
sizeof(Boss02),
|
||||
|
@ -12,7 +12,7 @@ void Boss03_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_03_InitVars = {
|
||||
ACTOR_BOSS_03,
|
||||
ACTORTYPE_BOSS,
|
||||
ACTORCAT_BOSS,
|
||||
FLAGS,
|
||||
OBJECT_BOSS03,
|
||||
sizeof(Boss03),
|
||||
|
@ -12,7 +12,7 @@ void Boss04_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_04_InitVars = {
|
||||
ACTOR_BOSS_04,
|
||||
ACTORTYPE_BOSS,
|
||||
ACTORCAT_BOSS,
|
||||
FLAGS,
|
||||
OBJECT_BOSS04,
|
||||
sizeof(Boss04),
|
||||
|
@ -12,7 +12,7 @@ void Boss05_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_05_InitVars = {
|
||||
ACTOR_BOSS_05,
|
||||
ACTORTYPE_ENEMY,
|
||||
ACTORCAT_ENEMY,
|
||||
FLAGS,
|
||||
OBJECT_BOSS05,
|
||||
sizeof(Boss05),
|
||||
|
@ -12,7 +12,7 @@ void Boss06_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_06_InitVars = {
|
||||
ACTOR_BOSS_06,
|
||||
ACTORTYPE_BOSS,
|
||||
ACTORCAT_BOSS,
|
||||
FLAGS,
|
||||
OBJECT_KNIGHT,
|
||||
sizeof(Boss06),
|
||||
|
@ -12,7 +12,7 @@ void Boss07_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_07_InitVars = {
|
||||
ACTOR_BOSS_07,
|
||||
ACTORTYPE_BOSS,
|
||||
ACTORCAT_BOSS,
|
||||
FLAGS,
|
||||
OBJECT_BOSS07,
|
||||
sizeof(Boss07),
|
||||
|
@ -12,7 +12,7 @@ void BossHakugin_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Boss_Hakugin_InitVars = {
|
||||
ACTOR_BOSS_HAKUGIN,
|
||||
ACTORTYPE_BOSS,
|
||||
ACTORCAT_BOSS,
|
||||
FLAGS,
|
||||
OBJECT_BOSS_HAKUGIN,
|
||||
sizeof(BossHakugin),
|
||||
|
@ -11,7 +11,7 @@ void DemoEffect_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Demo_Effect_InitVars = {
|
||||
ACTOR_DEMO_EFFECT,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(DemoEffect),
|
||||
|
@ -11,7 +11,7 @@ void DemoGetitem_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Demo_Getitem_InitVars = {
|
||||
ACTOR_DEMO_GETITEM,
|
||||
ACTORTYPE_BG,
|
||||
ACTORCAT_BG,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(DemoGetitem),
|
||||
|
@ -12,7 +12,7 @@ void DemoKankyo_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Demo_Kankyo_InitVars = {
|
||||
ACTOR_DEMO_KANKYO,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(DemoKankyo),
|
||||
|
@ -12,7 +12,7 @@ void DemoMoonend_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Demo_Moonend_InitVars = {
|
||||
ACTOR_DEMO_MOONEND,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_MOONEND,
|
||||
sizeof(DemoMoonend),
|
||||
|
@ -11,7 +11,7 @@ void DemoShd_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
const ActorInit Demo_Shd_InitVars = {
|
||||
ACTOR_DEMO_SHD,
|
||||
ACTORTYPE_ENEMY,
|
||||
ACTORCAT_ENEMY,
|
||||
FLAGS,
|
||||
OBJECT_FWALL,
|
||||
sizeof(DemoShd),
|
||||
|
@ -12,7 +12,7 @@ void DemoSyoten_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Demo_Syoten_InitVars = {
|
||||
ACTOR_DEMO_SYOTEN,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_SYOTEN,
|
||||
sizeof(DemoSyoten),
|
||||
|
@ -12,7 +12,7 @@ void DemoTreLgt_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Demo_Tre_Lgt_InitVars = {
|
||||
ACTOR_DEMO_TRE_LGT,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_BOX,
|
||||
sizeof(DemoTreLgt),
|
||||
|
@ -12,7 +12,7 @@ void DmAh_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Dm_Ah_InitVars = {
|
||||
ACTOR_DM_AH,
|
||||
ACTORTYPE_NPC,
|
||||
ACTORCAT_NPC,
|
||||
FLAGS,
|
||||
OBJECT_AH,
|
||||
sizeof(DmAh),
|
||||
|
@ -12,7 +12,7 @@ void DmAl_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Dm_Al_InitVars = {
|
||||
ACTOR_EN_AL,
|
||||
ACTORTYPE_NPC,
|
||||
ACTORCAT_NPC,
|
||||
FLAGS,
|
||||
OBJECT_AL,
|
||||
sizeof(DmAl),
|
||||
|
@ -11,7 +11,7 @@ void DmAn_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Dm_An_InitVars = {
|
||||
ACTOR_DM_AN,
|
||||
ACTORTYPE_NPC,
|
||||
ACTORCAT_NPC,
|
||||
FLAGS,
|
||||
OBJECT_AN1,
|
||||
sizeof(DmAn),
|
||||
|
@ -12,7 +12,7 @@ void DmBal_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Dm_Bal_InitVars = {
|
||||
ACTOR_DM_BAL,
|
||||
ACTORTYPE_NPC,
|
||||
ACTORCAT_NPC,
|
||||
FLAGS,
|
||||
OBJECT_BAL,
|
||||
sizeof(DmBal),
|
||||
|
@ -12,7 +12,7 @@ void DmChar00_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Dm_Char00_InitVars = {
|
||||
ACTOR_DM_CHAR00,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_DELF,
|
||||
sizeof(DmChar00),
|
||||
|
@ -12,7 +12,7 @@ void DmChar01_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
/*
|
||||
const ActorInit Dm_Char01_InitVars = {
|
||||
ACTOR_DM_CHAR01,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
ACTORCAT_ITEMACTION,
|
||||
FLAGS,
|
||||
OBJECT_MTORIDE,
|
||||
sizeof(DmChar01),
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user