1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-11 19:43:44 +00:00

Some names and docs on dynapoly (#1287)

* Add `BG_DYNA_ACTOR_FLAG_` for `DynaCollisionContext.bgActorFlags`

* Document 3/4 bgActor flags

* `func_8003EE6C` -> `DynaPoly_InvalidateLookup`

* `DynaPoly_ExpandSRT` -> `DynaPoly_AddBgActorToLookup`

* Add `DYNAPOLYACTOR_UNK160_` for `DynaPolyActor.unk_160`

* More dynapoly docs

* One comment

* Some `DynaPoly_` -> `DynaPolyActor_`

* run formatter

* .

* `BG_DYNA_ACTOR_FLAG_IS_USED` -> `BG_DYNA_ACTOR_FLAG_IN_USE`

* `BG_DYNA_ACTOR_FLAG_` -> `BGACTOR_`

* `DYNAPOLYACTOR_INTERACT_FLAG_` -> `DYNA_INTERACT_`

* `ResetInteractFlags` -> `ClearInteractFlags`

* Remove Has/Is prefix on dyna interact flags getters

* format

* remove now useless comments

* Remove `!= 0` on interact flags getter usage

* ceilings collision -> ceiling collision

* `ClearInteractFlags` -> `UnsetInteractFlags` (pepega)

* `UnsetInteractFlags` -> `UnsetAllInteractFlags` (pepega x2)

* Add back `Is` prefix (no `Has` this time) to dyna interact flags getters
This commit is contained in:
Dragorn421 2022-06-25 06:53:26 -07:00 committed by GitHub
parent 397e481f9a
commit ed0ab877c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
51 changed files with 206 additions and 190 deletions

View file

@ -605,15 +605,15 @@ u16 SSNodeList_GetNextNodeIdx(SSNodeList* this);
s32 DynaPoly_IsBgIdBgActor(s32 bgId); s32 DynaPoly_IsBgIdBgActor(s32 bgId);
void DynaPoly_Init(PlayState* play, DynaCollisionContext* dyna); void DynaPoly_Init(PlayState* play, DynaCollisionContext* dyna);
void DynaPoly_Alloc(PlayState* play, DynaCollisionContext* dyna); void DynaPoly_Alloc(PlayState* play, DynaCollisionContext* dyna);
void func_8003EBF8(PlayState* play, DynaCollisionContext* dyna, s32 bgId); void DynaPoly_DisableCollision(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
void func_8003EC50(PlayState* play, DynaCollisionContext* dyna, s32 bgId); void DynaPoly_EnableCollision(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
void func_8003ECA8(PlayState* play, DynaCollisionContext* dyna, s32 bgId); void DynaPoly_DisableCeilingCollision(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* actor, CollisionHeader* colHeader); s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* actor, CollisionHeader* colHeader);
DynaPolyActor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId); DynaPolyActor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId);
void DynaPoly_DeleteBgActor(PlayState* play, DynaCollisionContext* dyna, s32 bgId); void DynaPoly_DeleteBgActor(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
void func_8003EE6C(PlayState* play, DynaCollisionContext* dyna); void DynaPoly_InvalidateLookup(PlayState* play, DynaCollisionContext* dyna);
void func_8003F8EC(PlayState* play, DynaCollisionContext* dyna, Actor* actor); void DynaPoly_UnsetAllInteractFlags(PlayState* play, DynaCollisionContext* dyna, Actor* actor);
void DynaPoly_Setup(PlayState* play, DynaCollisionContext* dyna); void DynaPoly_UpdateContext(PlayState* play, DynaCollisionContext* dyna);
void DynaPoly_UpdateBgActorTransforms(PlayState* play, DynaCollisionContext* dyna); void DynaPoly_UpdateBgActorTransforms(PlayState* play, DynaCollisionContext* dyna);
f32 BgCheck_RaycastFloorDyna(DynaRaycast* dynaRaycast); f32 BgCheck_RaycastFloorDyna(DynaRaycast* dynaRaycast);
s32 BgCheck_SphVsDynaWall(CollisionContext* colCtx, u16 xpFlags, f32* outX, f32* outZ, Vec3f* pos, f32 radius, s32 BgCheck_SphVsDynaWall(CollisionContext* colCtx, u16 xpFlags, f32* outX, f32* outZ, Vec3f* pos, f32 radius,
@ -672,14 +672,14 @@ void BgCheck_DrawStaticCollision(PlayState*, CollisionContext*);
void func_80043334(CollisionContext* colCtx, Actor* actor, s32 bgId); void func_80043334(CollisionContext* colCtx, Actor* actor, s32 bgId);
s32 func_800433A4(CollisionContext* colCtx, s32 bgId, Actor* actor); s32 func_800433A4(CollisionContext* colCtx, s32 bgId, Actor* actor);
void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 flags); void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 flags);
void func_800434A0(DynaPolyActor* dynaActor); void DynaPolyActor_UnsetAllInteractFlags(DynaPolyActor* dynaActor);
void func_800434A8(DynaPolyActor* dynaActor); void DynaPolyActor_SetActorOnTop(DynaPolyActor* dynaActor);
void func_800434C8(CollisionContext* colCtx, s32 floorBgId); void DynaPoly_SetPlayerOnTop(CollisionContext* colCtx, s32 floorBgId);
void func_80043508(CollisionContext* colCtx, s32 floorBgId); void DynaPoly_SetPlayerAbove(CollisionContext* colCtx, s32 floorBgId);
void func_80043538(DynaPolyActor* dynaActor); void func_80043538(DynaPolyActor* dynaActor);
s32 func_80043548(DynaPolyActor* dynaActor); s32 DynaPolyActor_IsActorOnTop(DynaPolyActor* dynaActor);
s32 func_8004356C(DynaPolyActor* dynaActor); s32 DynaPolyActor_IsPlayerOnTop(DynaPolyActor* dynaActor);
s32 func_80043590(DynaPolyActor* dynaActor); s32 DynaPolyActor_IsPlayerAbove(DynaPolyActor* dynaActor);
s32 func_800435B4(DynaPolyActor* dynaActor); s32 func_800435B4(DynaPolyActor* dynaActor);
s32 func_800435D8(PlayState* play, DynaPolyActor* dynaActor, s16 arg2, s16 arg3, s16 arg4); s32 func_800435D8(PlayState* play, DynaPolyActor* dynaActor, s16 arg2, s16 arg3, s16 arg4);
void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, PlayState* play); void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, PlayState* play);

View file

@ -254,6 +254,11 @@ if neither of the above are set : blue
0x2000 : translucent, else opaque 0x2000 : translucent, else opaque
*/ */
#define DYNA_INTERACT_ACTOR_ON_TOP (1 << 0) // There is an actor standing on the collision of the dynapoly actor
#define DYNA_INTERACT_PLAYER_ON_TOP (1 << 1) // The player actor is standing on the collision of the dynapoly actor
#define DYNA_INTERACT_PLAYER_ABOVE (1 << 2) // The player is directly above the collision of the dynapoly actor (any distance above)
#define DYNA_INTERACT_3 (1 << 3) // Like the ACTOR_ON_TOP flag but only actors with ACTOR_FLAG_26
typedef struct DynaPolyActor { typedef struct DynaPolyActor {
/* 0x000 */ struct Actor actor; /* 0x000 */ struct Actor actor;
/* 0x14C */ s32 bgId; /* 0x14C */ s32 bgId;
@ -262,7 +267,7 @@ typedef struct DynaPolyActor {
/* 0x158 */ s16 unk_158; // y rotation? /* 0x158 */ s16 unk_158; // y rotation?
/* 0x15A */ u16 unk_15A; /* 0x15A */ u16 unk_15A;
/* 0x15C */ u32 unk_15C; /* 0x15C */ u32 unk_15C;
/* 0x160 */ u8 unk_160; /* 0x160 */ u8 interactFlags;
/* 0x162 */ s16 unk_162; /* 0x162 */ s16 unk_162;
} DynaPolyActor; // size = 0x164 } DynaPolyActor; // size = 0x164

View file

@ -155,10 +155,15 @@ typedef struct {
/* 0x60 */ f32 maxY; /* 0x60 */ f32 maxY;
} BgActor; // size = 0x64 } BgActor; // size = 0x64
#define BGACTOR_IN_USE (1 << 0) // The bgActor entry is in use
#define BGACTOR_1 (1 << 1)
#define BGACTOR_COLLISION_DISABLED (1 << 2) // The collision of the bgActor is disabled
#define BGACTOR_CEILING_COLLISION_DISABLED (1 << 3) // The ceilings in the collision of the bgActor are ignored
typedef struct { typedef struct {
/* 0x0000 */ u8 bitFlag; /* 0x0000 */ u8 bitFlag;
/* 0x0004 */ BgActor bgActors[BG_ACTOR_MAX]; /* 0x0004 */ BgActor bgActors[BG_ACTOR_MAX];
/* 0x138C */ u16 bgActorFlags[BG_ACTOR_MAX]; // & 0x0008 = no dyna ceiling /* 0x138C */ u16 bgActorFlags[BG_ACTOR_MAX];
/* 0x13F0 */ CollisionPoly* polyList; /* 0x13F0 */ CollisionPoly* polyList;
/* 0x13F4 */ Vec3s* vtxList; /* 0x13F4 */ Vec3s* vtxList;
/* 0x13F8 */ DynaSSNodeList polyNodes; /* 0x13F8 */ DynaSSNodeList polyNodes;

View file

@ -60,7 +60,7 @@ void func_80043334(CollisionContext* colCtx, Actor* actor, s32 bgId) {
if (DynaPoly_IsBgIdBgActor(bgId)) { if (DynaPoly_IsBgIdBgActor(bgId)) {
DynaPolyActor* dynaActor = DynaPoly_GetActor(colCtx, bgId); DynaPolyActor* dynaActor = DynaPoly_GetActor(colCtx, bgId);
if (dynaActor != NULL) { if (dynaActor != NULL) {
func_800434A8(dynaActor); DynaPolyActor_SetActorOnTop(dynaActor);
if (CHECK_FLAG_ALL(actor->flags, ACTOR_FLAG_26)) { if (CHECK_FLAG_ALL(actor->flags, ACTOR_FLAG_26)) {
func_80043538(dynaActor); func_80043538(dynaActor);
@ -81,7 +81,7 @@ s32 func_800433A4(CollisionContext* colCtx, s32 bgId, Actor* actor) {
return false; return false;
} }
if ((colCtx->dyna.bgActorFlags[bgId] & 2) || !(colCtx->dyna.bgActorFlags[bgId] & 1)) { if ((colCtx->dyna.bgActorFlags[bgId] & BGACTOR_1) || !(colCtx->dyna.bgActorFlags[bgId] & BGACTOR_IN_USE)) {
return false; return false;
} }

View file

@ -3,65 +3,65 @@
void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 flags) { void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 flags) {
dynaActor->bgId = -1; dynaActor->bgId = -1;
dynaActor->unk_15C = flags; dynaActor->unk_15C = flags;
dynaActor->unk_160 = 0; dynaActor->interactFlags = 0;
dynaActor->unk_150 = 0.0f; dynaActor->unk_150 = 0.0f;
dynaActor->unk_154 = 0.0f; dynaActor->unk_154 = 0.0f;
} }
void func_800434A0(DynaPolyActor* dynaActor) { void DynaPolyActor_UnsetAllInteractFlags(DynaPolyActor* dynaActor) {
dynaActor->unk_160 = 0; dynaActor->interactFlags = 0;
} }
void func_800434A8(DynaPolyActor* dynaActor) { void DynaPolyActor_SetActorOnTop(DynaPolyActor* dynaActor) {
dynaActor->unk_160 |= 1; dynaActor->interactFlags |= DYNA_INTERACT_ACTOR_ON_TOP;
} }
void func_800434B8(DynaPolyActor* dynaActor) { void DynaPolyActor_SetPlayerOnTop(DynaPolyActor* dynaActor) {
dynaActor->unk_160 |= 2; dynaActor->interactFlags |= DYNA_INTERACT_PLAYER_ON_TOP;
} }
void func_800434C8(CollisionContext* colCtx, s32 floorBgId) { void DynaPoly_SetPlayerOnTop(CollisionContext* colCtx, s32 floorBgId) {
DynaPolyActor* dynaActor = DynaPoly_GetActor(colCtx, floorBgId); DynaPolyActor* dynaActor = DynaPoly_GetActor(colCtx, floorBgId);
if (dynaActor != NULL) { if (dynaActor != NULL) {
func_800434B8(dynaActor); DynaPolyActor_SetPlayerOnTop(dynaActor);
} }
} }
void func_800434F8(DynaPolyActor* dynaActor) { void DynaPolyActor_SetPlayerAbove(DynaPolyActor* dynaActor) {
dynaActor->unk_160 |= 4; dynaActor->interactFlags |= DYNA_INTERACT_PLAYER_ABOVE;
} }
void func_80043508(CollisionContext* colCtx, s32 floorBgId) { void DynaPoly_SetPlayerAbove(CollisionContext* colCtx, s32 floorBgId) {
DynaPolyActor* dynaActor = DynaPoly_GetActor(colCtx, floorBgId); DynaPolyActor* dynaActor = DynaPoly_GetActor(colCtx, floorBgId);
if (dynaActor != NULL) { if (dynaActor != NULL) {
func_800434F8(dynaActor); DynaPolyActor_SetPlayerAbove(dynaActor);
} }
} }
void func_80043538(DynaPolyActor* dynaActor) { void func_80043538(DynaPolyActor* dynaActor) {
dynaActor->unk_160 |= 8; dynaActor->interactFlags |= DYNA_INTERACT_3;
} }
s32 func_80043548(DynaPolyActor* dynaActor) { s32 DynaPolyActor_IsActorOnTop(DynaPolyActor* dynaActor) {
if (dynaActor->unk_160 & 1) { if (dynaActor->interactFlags & DYNA_INTERACT_ACTOR_ON_TOP) {
return true; return true;
} else { } else {
return false; return false;
} }
} }
s32 func_8004356C(DynaPolyActor* dynaActor) { s32 DynaPolyActor_IsPlayerOnTop(DynaPolyActor* dynaActor) {
if (dynaActor->unk_160 & 2) { if (dynaActor->interactFlags & DYNA_INTERACT_PLAYER_ON_TOP) {
return true; return true;
} else { } else {
return false; return false;
} }
} }
s32 func_80043590(DynaPolyActor* dynaActor) { s32 DynaPolyActor_IsPlayerAbove(DynaPolyActor* dynaActor) {
if (dynaActor->unk_160 & 4) { if (dynaActor->interactFlags & DYNA_INTERACT_PLAYER_ABOVE) {
return true; return true;
} else { } else {
return false; return false;
@ -69,7 +69,7 @@ s32 func_80043590(DynaPolyActor* dynaActor) {
} }
s32 func_800435B4(DynaPolyActor* dynaActor) { s32 func_800435B4(DynaPolyActor* dynaActor) {
if (dynaActor->unk_160 & 8) { if (dynaActor->interactFlags & DYNA_INTERACT_3) {
return true; return true;
} else { } else {
return false; return false;

View file

@ -2111,7 +2111,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) {
actor->colorFilterTimer--; actor->colorFilterTimer--;
} }
actor->update(actor, play); actor->update(actor, play);
func_8003F8EC(play, &play->colCtx.dyna, actor); DynaPoly_UnsetAllInteractFlags(play, &play->colCtx.dyna, actor);
} }
CollisionCheck_ResetDamage(&actor->colChkInfo); CollisionCheck_ResetDamage(&actor->colChkInfo);
@ -2121,7 +2121,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) {
} }
if (i == ACTORCAT_BG) { if (i == ACTORCAT_BG) {
DynaPoly_Setup(play, &play->colCtx.dyna); DynaPoly_UpdateContext(play, &play->colCtx.dyna);
} }
} }

View file

@ -1623,7 +1623,7 @@ CollisionHeader* BgCheck_GetCollisionHeader(CollisionContext* colCtx, s32 bgId)
if (bgId < 0 || bgId > BG_ACTOR_MAX) { if (bgId < 0 || bgId > BG_ACTOR_MAX) {
return NULL; return NULL;
} }
if (!(colCtx->dyna.bgActorFlags[bgId] & 1)) { if (!(colCtx->dyna.bgActorFlags[bgId] & BGACTOR_IN_USE)) {
osSyncPrintf(VT_COL(YELLOW, BLACK)); osSyncPrintf(VT_COL(YELLOW, BLACK));
osSyncPrintf("T_BGCheck_getBGDataInfo():そのbg_actor_indexは使われておりません。index=%d\n"); osSyncPrintf("T_BGCheck_getBGDataInfo():そのbg_actor_indexは使われておりません。index=%d\n");
osSyncPrintf(VT_RST); osSyncPrintf(VT_RST);
@ -2626,8 +2626,8 @@ s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* acto
s32 foundSlot = false; s32 foundSlot = false;
for (bgId = 0; bgId < BG_ACTOR_MAX; bgId++) { for (bgId = 0; bgId < BG_ACTOR_MAX; bgId++) {
if (!(dyna->bgActorFlags[bgId] & 1)) { if (!(dyna->bgActorFlags[bgId] & BGACTOR_IN_USE)) {
dyna->bgActorFlags[bgId] |= 1; dyna->bgActorFlags[bgId] |= BGACTOR_IN_USE;
foundSlot = true; foundSlot = true;
break; break;
} }
@ -2643,7 +2643,7 @@ s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* acto
BgActor_SetActor(&dyna->bgActors[bgId], actor, colHeader); BgActor_SetActor(&dyna->bgActors[bgId], actor, colHeader);
dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP;
dyna->bgActorFlags[bgId] &= ~2; dyna->bgActorFlags[bgId] &= ~BGACTOR_1;
osSyncPrintf(VT_FGCOL(GREEN)); osSyncPrintf(VT_FGCOL(GREEN));
osSyncPrintf("DynaPolyInfo_setActor():index %d\n", bgId); osSyncPrintf("DynaPolyInfo_setActor():index %d\n", bgId);
osSyncPrintf(VT_RST); osSyncPrintf(VT_RST);
@ -2655,37 +2655,37 @@ s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* acto
* possible orginal name: DynaPolyInfo_getActor * possible orginal name: DynaPolyInfo_getActor
*/ */
DynaPolyActor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId) { DynaPolyActor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId) {
if (!DynaPoly_IsBgIdBgActor(bgId) || !(colCtx->dyna.bgActorFlags[bgId] & 1) || if (!DynaPoly_IsBgIdBgActor(bgId) || !(colCtx->dyna.bgActorFlags[bgId] & BGACTOR_IN_USE) ||
colCtx->dyna.bgActorFlags[bgId] & 2) { colCtx->dyna.bgActorFlags[bgId] & BGACTOR_1) {
return NULL; return NULL;
} }
return (DynaPolyActor*)colCtx->dyna.bgActors[bgId].actor; return (DynaPolyActor*)colCtx->dyna.bgActors[bgId].actor;
} }
void func_8003EBF8(PlayState* play, DynaCollisionContext* dyna, s32 bgId) { void DynaPoly_DisableCollision(PlayState* play, DynaCollisionContext* dyna, s32 bgId) {
if (DynaPoly_IsBgIdBgActor(bgId)) { if (DynaPoly_IsBgIdBgActor(bgId)) {
dyna->bgActorFlags[bgId] |= 4; dyna->bgActorFlags[bgId] |= BGACTOR_COLLISION_DISABLED;
dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP;
} }
} }
void func_8003EC50(PlayState* play, DynaCollisionContext* dyna, s32 bgId) { void DynaPoly_EnableCollision(PlayState* play, DynaCollisionContext* dyna, s32 bgId) {
if (DynaPoly_IsBgIdBgActor(bgId)) { if (DynaPoly_IsBgIdBgActor(bgId)) {
dyna->bgActorFlags[bgId] &= ~4; dyna->bgActorFlags[bgId] &= ~BGACTOR_COLLISION_DISABLED;
dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP;
} }
} }
void func_8003ECA8(PlayState* play, DynaCollisionContext* dyna, s32 bgId) { void DynaPoly_DisableCeilingCollision(PlayState* play, DynaCollisionContext* dyna, s32 bgId) {
if (DynaPoly_IsBgIdBgActor(bgId)) { if (DynaPoly_IsBgIdBgActor(bgId)) {
dyna->bgActorFlags[bgId] |= 8; dyna->bgActorFlags[bgId] |= BGACTOR_CEILING_COLLISION_DISABLED;
dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP;
} }
} }
void func_8003ED00(PlayState* play, DynaCollisionContext* dyna, s32 bgId) { void DynaPoly_EnableCeilingCollision(PlayState* play, DynaCollisionContext* dyna, s32 bgId) {
if (DynaPoly_IsBgIdBgActor(bgId)) { if (DynaPoly_IsBgIdBgActor(bgId)) {
dyna->bgActorFlags[bgId] &= ~8; dyna->bgActorFlags[bgId] &= ~BGACTOR_CEILING_COLLISION_DISABLED;
dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP;
} }
} }
@ -2723,19 +2723,19 @@ void DynaPoly_DeleteBgActor(PlayState* play, DynaCollisionContext* dyna, s32 bgI
actor->bgId = BGACTOR_NEG_ONE; actor->bgId = BGACTOR_NEG_ONE;
dyna->bgActors[bgId].actor = NULL; dyna->bgActors[bgId].actor = NULL;
dyna->bgActorFlags[bgId] |= 2; dyna->bgActorFlags[bgId] |= BGACTOR_1;
} }
} }
void func_8003EE6C(PlayState* play, DynaCollisionContext* dyna) { void DynaPoly_InvalidateLookup(PlayState* play, DynaCollisionContext* dyna) {
dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP;
} }
/** /**
* original name: DynaPolyInfo_expandSRT * original name: DynaPolyInfo_expandSRT
*/ */
void DynaPoly_ExpandSRT(PlayState* play, DynaCollisionContext* dyna, s32 bgId, s32* vtxStartIndex, void DynaPoly_AddBgActorToLookup(PlayState* play, DynaCollisionContext* dyna, s32 bgId, s32* vtxStartIndex,
s32* polyStartIndex) { s32* polyStartIndex) {
MtxF mtx; MtxF mtx;
Actor* actor; Actor* actor;
s32 pad; s32 pad;
@ -2765,7 +2765,7 @@ void DynaPoly_ExpandSRT(PlayState* play, DynaCollisionContext* dyna, s32 bgId, s
ScaleRotPos_SetValue(&dyna->bgActors[bgId].curTransform, &actor->scale, &actor->shape.rot, &pos); ScaleRotPos_SetValue(&dyna->bgActors[bgId].curTransform, &actor->scale, &actor->shape.rot, &pos);
if (dyna->bgActorFlags[bgId] & 4) { if (dyna->bgActorFlags[bgId] & BGACTOR_COLLISION_DISABLED) {
return; return;
} }
@ -2799,7 +2799,7 @@ void DynaPoly_ExpandSRT(PlayState* play, DynaCollisionContext* dyna, s32 bgId, s
s16 polyIndex = pi; s16 polyIndex = pi;
DynaSSNodeList_SetSSListHead(&dyna->polyNodes, &dyna->bgActors[bgId].dynaLookup.floor, &polyIndex); DynaSSNodeList_SetSSListHead(&dyna->polyNodes, &dyna->bgActors[bgId].dynaLookup.floor, &polyIndex);
} else if (normalY < COLPOLY_SNORMAL(-0.8f)) { } else if (normalY < COLPOLY_SNORMAL(-0.8f)) {
if (!(dyna->bgActorFlags[bgId] & 8)) { if (!(dyna->bgActorFlags[bgId] & BGACTOR_CEILING_COLLISION_DISABLED)) {
s16 polyIndex = pi; s16 polyIndex = pi;
DynaSSNodeList_SetSSListHead(&dyna->polyNodes, &dyna->bgActors[bgId].dynaLookup.ceiling, DynaSSNodeList_SetSSListHead(&dyna->polyNodes, &dyna->bgActors[bgId].dynaLookup.ceiling,
&polyIndex); &polyIndex);
@ -2915,15 +2915,15 @@ void DynaPoly_ExpandSRT(PlayState* play, DynaCollisionContext* dyna, s32 bgId, s
} }
} }
void func_8003F8EC(PlayState* play, DynaCollisionContext* dyna, Actor* actor) { void DynaPoly_UnsetAllInteractFlags(PlayState* play, DynaCollisionContext* dyna, Actor* actor) {
DynaPolyActor* dynaActor; DynaPolyActor* dynaActor;
s32 i; s32 i;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (dyna->bgActorFlags[i] & 1) { if (dyna->bgActorFlags[i] & BGACTOR_IN_USE) {
dynaActor = DynaPoly_GetActor(&play->colCtx, i); dynaActor = DynaPoly_GetActor(&play->colCtx, i);
if (dynaActor != NULL && &dynaActor->actor == actor) { if (dynaActor != NULL && &dynaActor->actor == actor) {
func_800434A0((DynaPolyActor*)actor); DynaPolyActor_UnsetAllInteractFlags((DynaPolyActor*)actor);
return; return;
} }
} }
@ -2931,9 +2931,9 @@ void func_8003F8EC(PlayState* play, DynaCollisionContext* dyna, Actor* actor) {
} }
/** /**
* DynaPolyInfo_setup * Original name: "DynaPolyInfo_setup"
*/ */
void DynaPoly_Setup(PlayState* play, DynaCollisionContext* dyna) { void DynaPoly_UpdateContext(PlayState* play, DynaCollisionContext* dyna) {
DynaPolyActor* actor; DynaPolyActor* actor;
s32 vtxStartIndex; s32 vtxStartIndex;
s32 polyStartIndex; s32 polyStartIndex;
@ -2946,7 +2946,7 @@ void DynaPoly_Setup(PlayState* play, DynaCollisionContext* dyna) {
} }
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (dyna->bgActorFlags[i] & 2) { if (dyna->bgActorFlags[i] & BGACTOR_1) {
// Initialize BgActor // Initialize BgActor
osSyncPrintf(VT_FGCOL(GREEN)); osSyncPrintf(VT_FGCOL(GREEN));
osSyncPrintf("DynaPolyInfo_setup():削除 index=%d\n", i); osSyncPrintf("DynaPolyInfo_setup():削除 index=%d\n", i);
@ -2975,8 +2975,8 @@ void DynaPoly_Setup(PlayState* play, DynaCollisionContext* dyna) {
vtxStartIndex = 0; vtxStartIndex = 0;
polyStartIndex = 0; polyStartIndex = 0;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (dyna->bgActorFlags[i] & 1) { if (dyna->bgActorFlags[i] & BGACTOR_IN_USE) {
DynaPoly_ExpandSRT(play, dyna, i, &vtxStartIndex, &polyStartIndex); DynaPoly_AddBgActorToLookup(play, dyna, i, &vtxStartIndex, &polyStartIndex);
} }
} }
dyna->bitFlag &= ~DYNAPOLY_INVALIDATE_LOOKUP; dyna->bitFlag &= ~DYNAPOLY_INVALIDATE_LOOKUP;
@ -2989,7 +2989,7 @@ void DynaPoly_UpdateBgActorTransforms(PlayState* play, DynaCollisionContext* dyn
s32 i; s32 i;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (dyna->bgActorFlags[i] & 1) { if (dyna->bgActorFlags[i] & BGACTOR_IN_USE) {
DynaPoly_SetBgActorPrevTransform(play, &dyna->bgActors[i]); DynaPoly_SetBgActorPrevTransform(play, &dyna->bgActors[i]);
} }
} }
@ -3081,7 +3081,7 @@ f32 BgCheck_RaycastFloorDyna(DynaRaycast* dynaRaycast) {
*dynaRaycast->bgId = BGCHECK_SCENE; *dynaRaycast->bgId = BGCHECK_SCENE;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (!(dynaRaycast->colCtx->dyna.bgActorFlags[i] & 1)) { if (!(dynaRaycast->colCtx->dyna.bgActorFlags[i] & BGACTOR_IN_USE)) {
continue; continue;
} }
@ -3134,7 +3134,7 @@ f32 BgCheck_RaycastFloorDyna(DynaRaycast* dynaRaycast) {
if (pauseState == 0) { if (pauseState == 0) {
pauseState = dynaRaycast->play->pauseCtx.debugState != 0; pauseState = dynaRaycast->play->pauseCtx.debugState != 0;
} }
if (!pauseState && (dynaRaycast->colCtx->dyna.bgActorFlags[*dynaRaycast->bgId] & 2)) { if (!pauseState && (dynaRaycast->colCtx->dyna.bgActorFlags[*dynaRaycast->bgId] & BGACTOR_1)) {
curTransform = &dynaRaycast->dyna->bgActors[*dynaRaycast->bgId].curTransform; curTransform = &dynaRaycast->dyna->bgActors[*dynaRaycast->bgId].curTransform;
polyMin = polyMin =
&dynaRaycast->dyna->polyList[dynaRaycast->dyna->bgActors[*dynaRaycast->bgId].dynaLookup.polyStartIndex]; &dynaRaycast->dyna->polyList[dynaRaycast->dyna->bgActors[*dynaRaycast->bgId].dynaLookup.polyStartIndex];
@ -3387,7 +3387,7 @@ s32 BgCheck_SphVsDynaWall(CollisionContext* colCtx, u16 xpFlags, f32* outX, f32*
resultPos = *pos; resultPos = *pos;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (!(colCtx->dyna.bgActorFlags[i] & 1)) { if (!(colCtx->dyna.bgActorFlags[i] & BGACTOR_IN_USE)) {
continue; continue;
} }
if ((colCtx->dyna.bgActors + i)->actor == actor) { if ((colCtx->dyna.bgActors + i)->actor == actor) {
@ -3506,7 +3506,7 @@ s32 BgCheck_CheckDynaCeiling(CollisionContext* colCtx, u16 xpFlags, f32* outY, V
resultY = tempY; resultY = tempY;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (!(colCtx->dyna.bgActorFlags[i] & 1)) { if (!(colCtx->dyna.bgActorFlags[i] & BGACTOR_IN_USE)) {
continue; continue;
} }
if (actor == colCtx->dyna.bgActors[i].actor) { if (actor == colCtx->dyna.bgActors[i].actor) {
@ -3641,7 +3641,7 @@ s32 BgCheck_CheckLineAgainstDyna(CollisionContext* colCtx, u16 xpFlags, Vec3f* p
f32 by; f32 by;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (colCtx->dyna.bgActorFlags[i] & 1) { if (colCtx->dyna.bgActorFlags[i] & BGACTOR_IN_USE) {
if (actor != colCtx->dyna.bgActors[i].actor) { if (actor != colCtx->dyna.bgActors[i].actor) {
ay = posA->y; ay = posA->y;
by = posB->y; by = posB->y;
@ -3745,7 +3745,7 @@ s32 BgCheck_SphVsFirstDynaPoly(CollisionContext* colCtx, u16 xpFlags, CollisionP
Sphere16 testSphere; Sphere16 testSphere;
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
if (!(colCtx->dyna.bgActorFlags[i] & 1)) { if (!(colCtx->dyna.bgActorFlags[i] & BGACTOR_IN_USE)) {
continue; continue;
} }
if (colCtx->dyna.bgActors[i].actor == actor) { if (colCtx->dyna.bgActors[i].actor == actor) {
@ -3794,7 +3794,7 @@ void func_800418D0(CollisionContext* colCtx, PlayState* play) {
for (i = 0; i < BG_ACTOR_MAX; i++) { for (i = 0; i < BG_ACTOR_MAX; i++) {
flag = dyna->bgActorFlags[i]; flag = dyna->bgActorFlags[i];
if ((flag & 1) && !(flag & 2)) { if ((flag & BGACTOR_IN_USE) && !(flag & BGACTOR_1)) {
Actor_SetObjectDependency(play, dyna->bgActors[i].actor); Actor_SetObjectDependency(play, dyna->bgActors[i].actor);
CollisionHeader_SegmentedToVirtual(dyna->bgActors[i].colHeader); CollisionHeader_SegmentedToVirtual(dyna->bgActors[i].colHeader);
} }
@ -4453,7 +4453,7 @@ void BgCheck_DrawDynaCollision(PlayState* play, CollisionContext* colCtx) {
for (bgId = 0; bgId < BG_ACTOR_MAX; bgId++) { for (bgId = 0; bgId < BG_ACTOR_MAX; bgId++) {
if (!(colCtx->dyna.bgActorFlags[bgId] & 1)) { if (!(colCtx->dyna.bgActorFlags[bgId] & BGACTOR_IN_USE)) {
continue; continue;
} }
BgCheck_DrawBgActor(play, colCtx, bgId); BgCheck_DrawBgActor(play, colCtx, bgId);

View file

@ -113,7 +113,7 @@ void EnAObj_Init(Actor* thisx, PlayState* play) {
thisx->focus.pos = thisx->world.pos; thisx->focus.pos = thisx->world.pos;
this->dyna.bgId = BGACTOR_NEG_ONE; this->dyna.bgId = BGACTOR_NEG_ONE;
this->dyna.unk_160 = 0; this->dyna.interactFlags = 0;
this->dyna.unk_15C = DPM_UNK; this->dyna.unk_15C = DPM_UNK;
thisx->uncullZoneDownward = 1200.0f; thisx->uncullZoneDownward = 1200.0f;
thisx->uncullZoneScale = 200.0f; thisx->uncullZoneScale = 200.0f;
@ -224,7 +224,7 @@ void EnAObj_SetupBlockRot(EnAObj* this, s16 type) {
void EnAObj_BlockRot(EnAObj* this, PlayState* play) { void EnAObj_BlockRot(EnAObj* this, PlayState* play) {
if (this->rotateState == 0) { if (this->rotateState == 0) {
if (this->dyna.unk_160 != 0) { if (this->dyna.interactFlags != 0) {
this->rotateState++; this->rotateState++;
this->rotateForTimer = 20; this->rotateForTimer = 20;

View file

@ -560,7 +560,7 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
D_80157D90 = play->gameplayFrames; D_80157D90 = play->gameplayFrames;
D_80157D94[0] = 0; D_80157D94[0] = 0;
for (i = 0; i < 50; i++) { for (i = 0; i < 50; i++) {
if (play->colCtx.dyna.bgActorFlags[i] & 1) { if (play->colCtx.dyna.bgActorFlags[i] & BGACTOR_IN_USE) {
dynaActor = play->colCtx.dyna.bgActors[i].actor; dynaActor = play->colCtx.dyna.bgActors[i].actor;
if ((dynaActor != NULL) && (dynaActor->update != NULL)) { if ((dynaActor != NULL) && (dynaActor->update != NULL)) {
if ((dynaActor->world.pos.x != dynaActor->prevPos.x) || if ((dynaActor->world.pos.x != dynaActor->prevPos.x) ||

View file

@ -325,7 +325,7 @@ void func_8086C6EC(BgBdanObjects* this, PlayState* play) {
} }
void func_8086C76C(BgBdanObjects* this, PlayState* play) { void func_8086C76C(BgBdanObjects* this, PlayState* play) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->dyna.actor.xzDistToPlayer < 120.0f) { if (this->dyna.actor.xzDistToPlayer < 120.0f) {
this->actionFunc = func_8086C7D0; this->actionFunc = func_8086C7D0;
OnePointCutscene_Init(play, 3090, -99, &this->dyna.actor, CAM_ID_MAIN); OnePointCutscene_Init(play, 3090, -99, &this->dyna.actor, CAM_ID_MAIN);
@ -351,7 +351,7 @@ void func_8086C874(BgBdanObjects* this, PlayState* play) {
this->timer--; this->timer--;
} }
if (this->switchFlag == 0) { if (this->switchFlag == 0) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
this->cameraSetting = play->cameraPtrs[CAM_ID_MAIN]->setting; this->cameraSetting = play->cameraPtrs[CAM_ID_MAIN]->setting;
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_NORMAL2); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_NORMAL2);
func_8005AD1C(play->cameraPtrs[CAM_ID_MAIN], 4); func_8005AD1C(play->cameraPtrs[CAM_ID_MAIN], 4);
@ -359,7 +359,7 @@ void func_8086C874(BgBdanObjects* this, PlayState* play) {
} }
} else { } else {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_NORMAL2); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_NORMAL2);
if (!func_8004356C(&this->dyna)) { if (!DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->switchFlag != 0) { if (this->switchFlag != 0) {
this->switchFlag--; this->switchFlag--;
} }
@ -411,7 +411,7 @@ void func_8086CABC(BgBdanObjects* this, PlayState* play) {
} }
void func_8086CB10(BgBdanObjects* this, PlayState* play) { void func_8086CB10(BgBdanObjects* this, PlayState* play) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
Flags_SetSwitch(play, this->switchFlag); Flags_SetSwitch(play, this->switchFlag);
this->timer = 50; this->timer = 50;
this->actionFunc = func_8086CB8C; this->actionFunc = func_8086CB8C;

View file

@ -254,7 +254,7 @@ void func_8086D5E0(BgBdanSwitch* this, PlayState* play) {
} }
break; break;
case YELLOW: case YELLOW:
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
func_8086D67C(this); func_8086D67C(this);
func_8086D4B4(this, play); func_8086D4B4(this, play);
} }
@ -322,7 +322,7 @@ void func_8086D86C(BgBdanSwitch* this) {
} }
void func_8086D888(BgBdanSwitch* this, PlayState* play) { void func_8086D888(BgBdanSwitch* this, PlayState* play) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
func_8086D8BC(this); func_8086D8BC(this);
} }
} }
@ -365,7 +365,7 @@ void func_8086D9F8(BgBdanSwitch* this) {
void func_8086DA1C(BgBdanSwitch* this, PlayState* play) { void func_8086DA1C(BgBdanSwitch* this, PlayState* play) {
Actor* heldActor = GET_PLAYER(play)->heldActor; Actor* heldActor = GET_PLAYER(play)->heldActor;
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (heldActor != NULL && heldActor->id == ACTOR_EN_RU1) { if (heldActor != NULL && heldActor->id == ACTOR_EN_RU1) {
if (this->unk_1D8 <= 0) { if (this->unk_1D8 <= 0) {
func_8086D944(this); func_8086D944(this);

View file

@ -53,7 +53,7 @@ void BgGjyoBridge_Init(Actor* thisx, PlayState* play) {
this->actionFunc = func_808787A4; this->actionFunc = func_808787A4;
} else { } else {
this->dyna.actor.draw = NULL; this->dyna.actor.draw = NULL;
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->actionFunc = BgGjyoBridge_TriggerCutscene; this->actionFunc = BgGjyoBridge_TriggerCutscene;
} }
} }
@ -84,7 +84,7 @@ void BgGjyoBridge_SpawnBridge(BgGjyoBridge* this, PlayState* play) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[2] != NULL) && if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[2] != NULL) &&
(play->csCtx.npcActions[2]->action == 2)) { (play->csCtx.npcActions[2]->action == 2)) {
this->dyna.actor.draw = BgGjyoBridge_Draw; this->dyna.actor.draw = BgGjyoBridge_Draw;
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
SET_EVENTCHKINF(EVENTCHKINF_4D); SET_EVENTCHKINF(EVENTCHKINF_4D);
} }
} }

View file

@ -36,11 +36,11 @@ const ActorInit Bg_Gnd_Darkmeiro_InitVars = {
void BgGndDarkmeiro_ToggleBlock(BgGndDarkmeiro* this, PlayState* play) { void BgGndDarkmeiro_ToggleBlock(BgGndDarkmeiro* this, PlayState* play) {
if (this->actionFlags & 2) { if (this->actionFlags & 2) {
if (this->timer1 == 0) { if (this->timer1 == 0) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->actionFlags &= ~2; this->actionFlags &= ~2;
} }
} else if (this->timer1 != 0) { } else if (this->timer1 != 0) {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->actionFlags |= 2; this->actionFlags |= 2;
} }
} }
@ -68,7 +68,7 @@ void BgGndDarkmeiro_Init(Actor* thisx, PlayState* play2) {
thisx->draw = BgGndDarkmeiro_DrawSwitchBlock; thisx->draw = BgGndDarkmeiro_DrawSwitchBlock;
this->updateFunc = BgGndDarkmeiro_UpdateSwitchBlock; this->updateFunc = BgGndDarkmeiro_UpdateSwitchBlock;
if (!Flags_GetSwitch(play, (this->dyna.actor.params >> 8) & 0x3F)) { if (!Flags_GetSwitch(play, (this->dyna.actor.params >> 8) & 0x3F)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} else { } else {
this->timer1 = 64; this->timer1 = 64;
this->actionFlags |= 2; this->actionFlags |= 2;

View file

@ -60,7 +60,7 @@ void BgGndFiremeiro_Destroy(Actor* thisx, PlayState* play2) {
void BgGndFiremeiro_Sink(BgGndFiremeiro* this, PlayState* play) { void BgGndFiremeiro_Sink(BgGndFiremeiro* this, PlayState* play) {
f32 sunkHeight = this->initPos.y - 150.0f; f32 sunkHeight = this->initPos.y - 150.0f;
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
this->timer = 10; this->timer = 10;
} }
@ -85,7 +85,7 @@ void BgGndFiremeiro_Shake(BgGndFiremeiro* this, PlayState* play) {
s32 pad; s32 pad;
f32 randSign; f32 randSign;
if (func_8004356C(&this->dyna)) { // Player standing on it if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->timer > 0) { if (this->timer > 0) {
this->timer--; this->timer--;
@ -114,7 +114,7 @@ void BgGndFiremeiro_Rise(BgGndFiremeiro* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
Actor* thisx = &this->dyna.actor; Actor* thisx = &this->dyna.actor;
if ((player->currentBoots != PLAYER_BOOTS_HOVER) && func_8004356C(&this->dyna)) { // Player standing on it if ((player->currentBoots != PLAYER_BOOTS_HOVER) && DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (thisx->world.pos.y < this->initPos.y) { if (thisx->world.pos.y < this->initPos.y) {
this->actionFunc = BgGndFiremeiro_Sink; this->actionFunc = BgGndFiremeiro_Sink;
this->timer = 20; this->timer = 20;

View file

@ -242,7 +242,7 @@ void BgHakaGate_FloorClosed(BgHakaGate* this, PlayState* play) {
} else { } else {
func_80078884(NA_SE_SY_ERROR); func_80078884(NA_SE_SY_ERROR);
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_GROUND_GATE_OPEN); Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_GROUND_GATE_OPEN);
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->vTimer = 60; this->vTimer = 60;
this->actionFunc = BgHakaGate_FloorOpen; this->actionFunc = BgHakaGate_FloorOpen;
} }
@ -256,7 +256,7 @@ void BgHakaGate_FloorOpen(BgHakaGate* this, PlayState* play) {
} }
if (this->vTimer == 0) { if (this->vTimer == 0) {
if (Math_ScaledStepToS(&this->vOpenAngle, 0, 0x800)) { if (Math_ScaledStepToS(&this->vOpenAngle, 0, 0x800)) {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->actionFunc = BgHakaGate_FloorClosed; this->actionFunc = BgHakaGate_FloorClosed;
} }
} else { } else {

View file

@ -110,10 +110,10 @@ void func_8087DBF0(BgHakaMegane* this, PlayState* play) {
if (play->actorCtx.lensActive) { if (play->actorCtx.lensActive) {
thisx->flags |= ACTOR_FLAG_7; thisx->flags |= ACTOR_FLAG_7;
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} else { } else {
thisx->flags &= ~ACTOR_FLAG_7; thisx->flags &= ~ACTOR_FLAG_7;
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} }
} }

View file

@ -178,7 +178,8 @@ void BgHakaShip_CrashFall(BgHakaShip* this, PlayState* play) {
} }
} else { } else {
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_BLOCKSINK - SFX_FLAG); Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_BLOCKSINK - SFX_FLAG);
if ((this->dyna.actor.home.pos.y - this->dyna.actor.world.pos.y > 500.0f) && func_8004356C(&this->dyna)) { if ((this->dyna.actor.home.pos.y - this->dyna.actor.world.pos.y > 500.0f) &&
DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
Play_TriggerVoidOut(play); Play_TriggerVoidOut(play);
} }
} }

View file

@ -89,7 +89,7 @@ void func_80886FCC(BgHidanFslift* this, PlayState* play) {
if ((this->dyna.actor.world.pos.y - this->dyna.actor.home.pos.y) < 0.5f) { if ((this->dyna.actor.world.pos.y - this->dyna.actor.home.pos.y) < 0.5f) {
heightBool = true; heightBool = true;
} }
if (func_80043590(&this->dyna) && heightBool) { if (DynaPolyActor_IsPlayerAbove(&this->dyna) && heightBool) {
this->actionFunc = func_808870D8; this->actionFunc = func_808870D8;
} else if (!heightBool) { } else if (!heightBool) {
this->actionFunc = func_8088706C; this->actionFunc = func_8088706C;
@ -108,7 +108,7 @@ void func_8088706C(BgHidanFslift* this, PlayState* play) {
} }
void func_808870D8(BgHidanFslift* this, PlayState* play) { void func_808870D8(BgHidanFslift* this, PlayState* play) {
if (func_80043590(&this->dyna)) { if (DynaPolyActor_IsPlayerAbove(&this->dyna)) {
if (Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y + 790.0f, 4.0f)) { if (Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y + 790.0f, 4.0f)) {
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_BLOCK_BOUND); Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_BLOCK_BOUND);
func_80886FB4(this); func_80886FB4(this);
@ -125,12 +125,12 @@ void BgHidanFslift_Update(Actor* thisx, PlayState* play) {
BgHidanFslift* this = (BgHidanFslift*)thisx; BgHidanFslift* this = (BgHidanFslift*)thisx;
this->actionFunc(this, play); this->actionFunc(this, play);
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_16A == 0) { if (this->unk_16A == 0) {
this->unk_16A = 3; this->unk_16A = 3;
} }
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM);
} else if (!func_8004356C(&this->dyna)) { } else if (!DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_16A != 0) { if (this->unk_16A != 0) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0);
} }

View file

@ -215,7 +215,7 @@ void func_808896B8(BgHidanHrock* this, PlayState* play) {
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
} }
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y - 5.0f, 1.0f); Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y - 5.0f, 1.0f);
} else { } else {
Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y, 1.0f); Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y, 1.0f);

View file

@ -209,7 +209,7 @@ void func_8088B5F4(BgHidanRock* this, PlayState* play) {
} }
void func_8088B634(BgHidanRock* this, PlayState* play) { void func_8088B634(BgHidanRock* this, PlayState* play) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
this->timer = 20; this->timer = 20;
this->dyna.actor.world.rot.y = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x4000; this->dyna.actor.world.rot.y = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x4000;
this->actionFunc = func_8088B69C; this->actionFunc = func_8088B69C;
@ -260,12 +260,12 @@ void func_8088B79C(BgHidanRock* this, PlayState* play) {
this->unk_16C = CLAMP_MIN(this->unk_16C, 0.0f); this->unk_16C = CLAMP_MIN(this->unk_16C, 0.0f);
if (this->type == 0) { if (this->type == 0) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_169 == 0) { if (this->unk_169 == 0) {
this->unk_169 = 3; this->unk_169 = 3;
} }
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM);
} else if (!func_8004356C(&this->dyna)) { } else if (!DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_169 != 0) { if (this->unk_169 != 0) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0);
} }
@ -313,12 +313,12 @@ void func_8088B990(BgHidanRock* this, PlayState* play) {
this->unk_16C = (this->dyna.actor.world.pos.y + 50.0f - this->dyna.actor.home.pos.y + 40.0f) / 80.0f; this->unk_16C = (this->dyna.actor.world.pos.y + 50.0f - this->dyna.actor.home.pos.y + 40.0f) / 80.0f;
if (this->type == 0) { if (this->type == 0) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_169 == 0) { if (this->unk_169 == 0) {
this->unk_169 = 3; this->unk_169 = 3;
} }
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM);
} else if (!func_8004356C(&this->dyna)) { } else if (!DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_169 != 0) { if (this->unk_169 != 0) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0);
} }

View file

@ -117,7 +117,7 @@ void func_8088E518(BgHidanSima* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y, 3.4f); Math_StepToF(&this->dyna.actor.world.pos.y, this->dyna.actor.home.pos.y, 3.4f);
if (func_8004356C(&this->dyna) && !(player->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14))) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna) && !(player->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14))) {
this->timer = 20; this->timer = 20;
this->dyna.actor.world.rot.y = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x4000; this->dyna.actor.world.rot.y = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x4000;
if (this->dyna.actor.home.pos.y <= this->dyna.actor.world.pos.y) { if (this->dyna.actor.home.pos.y <= this->dyna.actor.world.pos.y) {
@ -149,7 +149,7 @@ void func_8088E5D0(BgHidanSima* this, PlayState* play) {
} }
void func_8088E6D0(BgHidanSima* this, PlayState* play) { void func_8088E6D0(BgHidanSima* this, PlayState* play) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
this->timer = 20; this->timer = 20;
} else if (this->timer != 0) { } else if (this->timer != 0) {
this->timer--; this->timer--;

View file

@ -60,7 +60,7 @@ void func_8088F47C(BgHidanSyoku* this) {
} }
void func_8088F4B8(BgHidanSyoku* this, PlayState* play) { void func_8088F4B8(BgHidanSyoku* this, PlayState* play) {
if (Flags_GetClear(play, this->dyna.actor.room) && func_8004356C(&this->dyna)) { if (Flags_GetClear(play, this->dyna.actor.room) && DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
this->timer = 140; this->timer = 140;
this->actionFunc = func_8088F514; this->actionFunc = func_8088F514;
} }
@ -108,12 +108,12 @@ void BgHidanSyoku_Update(Actor* thisx, PlayState* play) {
BgHidanSyoku* this = (BgHidanSyoku*)thisx; BgHidanSyoku* this = (BgHidanSyoku*)thisx;
this->actionFunc(this, play); this->actionFunc(this, play);
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_168 == 0) { if (this->unk_168 == 0) {
this->unk_168 = 3; this->unk_168 = 3;
} }
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM);
} else if (!func_8004356C(&this->dyna)) { } else if (!DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->unk_168 != 0) { if (this->unk_168 != 0) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0);
} }

View file

@ -144,7 +144,7 @@ void BgIceTurara_Shiver(BgIceTurara* this, PlayState* play) {
this->dyna.actor.world.pos.z = this->dyna.actor.home.pos.z; this->dyna.actor.world.pos.z = this->dyna.actor.home.pos.z;
Collider_UpdateCylinder(&this->dyna.actor, &this->collider); Collider_UpdateCylinder(&this->dyna.actor, &this->collider);
CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base); CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base);
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->actionFunc = BgIceTurara_Fall; this->actionFunc = BgIceTurara_Fall;
} else { } else {
sp28 = Rand_ZeroOne(); sp28 = Rand_ZeroOne();
@ -166,7 +166,7 @@ void BgIceTurara_Fall(BgIceTurara* this, PlayState* play) {
BgIceTurara_Break(this, play, 40.0f); BgIceTurara_Break(this, play, 40.0f);
if (this->dyna.actor.params == TURARA_STALACTITE_REGROW) { if (this->dyna.actor.params == TURARA_STALACTITE_REGROW) {
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y + 120.0f; this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y + 120.0f;
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->actionFunc = BgIceTurara_Regrow; this->actionFunc = BgIceTurara_Regrow;
} else { } else {
Actor_Kill(&this->dyna.actor); Actor_Kill(&this->dyna.actor);

View file

@ -186,7 +186,7 @@ void BgJya1flift_Update(Actor* thisx, PlayState* play2) {
// Room 0 is the first room and 6 is the room that the lift starts on // Room 0 is the first room and 6 is the room that the lift starts on
if (play->roomCtx.curRoom.num == 6 || play->roomCtx.curRoom.num == 0) { if (play->roomCtx.curRoom.num == 6 || play->roomCtx.curRoom.num == 0) {
this->actionFunc(this, play); this->actionFunc(this, play);
tempIsRiding = func_8004356C(&this->dyna) ? true : false; tempIsRiding = DynaPolyActor_IsPlayerOnTop(&this->dyna) ? true : false;
if ((this->actionFunc == BgJya1flift_Move) || (this->actionFunc == BgJya1flift_DelayMove)) { if ((this->actionFunc == BgJya1flift_Move) || (this->actionFunc == BgJya1flift_DelayMove)) {
if (tempIsRiding) { if (tempIsRiding) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FIRE_PLATFORM);

View file

@ -135,13 +135,14 @@ void BgJyaLift_Update(Actor* thisx, PlayState* play2) {
if (this->actionFunc != NULL) { if (this->actionFunc != NULL) {
this->actionFunc(this, play); this->actionFunc(this, play);
} }
if ((this->dyna.unk_160 & 4) && ((this->unk_16B & 4) == 0)) { if ((this->dyna.interactFlags & DYNA_INTERACT_PLAYER_ABOVE) && !(this->unk_16B & DYNA_INTERACT_PLAYER_ABOVE)) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DIRECTED_YAW); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DIRECTED_YAW);
} else if (((this->dyna.unk_160 & 4) == 0) && (this->unk_16B & 4) && } else if (!(this->dyna.interactFlags & DYNA_INTERACT_PLAYER_ABOVE) &&
(this->unk_16B & DYNA_INTERACT_PLAYER_ABOVE) &&
(play->cameraPtrs[CAM_ID_MAIN]->setting == CAM_SET_DIRECTED_YAW)) { (play->cameraPtrs[CAM_ID_MAIN]->setting == CAM_SET_DIRECTED_YAW)) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0);
} }
this->unk_16B = this->dyna.unk_160; this->unk_16B = this->dyna.interactFlags;
// Spirit Temple room 5 is the main room with the statue room 25 is directly above room 5 // Spirit Temple room 5 is the main room with the statue room 25 is directly above room 5
if ((play->roomCtx.curRoom.num != 5) && (play->roomCtx.curRoom.num != 25)) { if ((play->roomCtx.curRoom.num != 5) && (play->roomCtx.curRoom.num != 25)) {

View file

@ -50,7 +50,7 @@ void BgMenkuriKaiten_Destroy(Actor* thisx, PlayState* play) {
void BgMenkuriKaiten_Update(Actor* thisx, PlayState* play) { void BgMenkuriKaiten_Update(Actor* thisx, PlayState* play) {
BgMenkuriKaiten* this = (BgMenkuriKaiten*)thisx; BgMenkuriKaiten* this = (BgMenkuriKaiten*)thisx;
if (!Flags_GetSwitch(play, this->dyna.actor.params) && func_80043590(&this->dyna)) { if (!Flags_GetSwitch(play, this->dyna.actor.params) && DynaPolyActor_IsPlayerAbove(&this->dyna)) {
func_8002F974(&this->dyna.actor, NA_SE_EV_ELEVATOR_MOVE - SFX_FLAG); func_8002F974(&this->dyna.actor, NA_SE_EV_ELEVATOR_MOVE - SFX_FLAG);
this->dyna.actor.shape.rot.y += 0x80; this->dyna.actor.shape.rot.y += 0x80;
} }

View file

@ -184,7 +184,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
switch ((u16)this->dyna.actor.params & 0xF) { switch ((u16)this->dyna.actor.params & 0xF) {
case MIZUBWALL_FLOOR: case MIZUBWALL_FLOOR:
if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) { if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dList = NULL; this->dList = NULL;
this->actionFunc = BgMizuBwall_DoNothing; this->actionFunc = BgMizuBwall_DoNothing;
} else { } else {
@ -219,7 +219,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
break; break;
case MIZUBWALL_RUTO_ROOM: case MIZUBWALL_RUTO_ROOM:
if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) { if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dList = NULL; this->dList = NULL;
this->actionFunc = BgMizuBwall_DoNothing; this->actionFunc = BgMizuBwall_DoNothing;
} else { } else {
@ -254,7 +254,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
break; break;
case MIZUBWALL_UNUSED: case MIZUBWALL_UNUSED:
if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) { if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dList = NULL; this->dList = NULL;
this->actionFunc = BgMizuBwall_DoNothing; this->actionFunc = BgMizuBwall_DoNothing;
} else { } else {
@ -291,7 +291,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
break; break;
case MIZUBWALL_STINGER_ROOM_1: case MIZUBWALL_STINGER_ROOM_1:
if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) { if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dList = NULL; this->dList = NULL;
this->actionFunc = BgMizuBwall_DoNothing; this->actionFunc = BgMizuBwall_DoNothing;
} else { } else {
@ -329,7 +329,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
break; break;
case MIZUBWALL_STINGER_ROOM_2: case MIZUBWALL_STINGER_ROOM_2:
if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) { if (Flags_GetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dList = NULL; this->dList = NULL;
this->actionFunc = BgMizuBwall_DoNothing; this->actionFunc = BgMizuBwall_DoNothing;
} else { } else {
@ -467,7 +467,7 @@ void BgMizuBwall_Idle(BgMizuBwall* this, PlayState* play) {
this->collider.base.acFlags &= ~AC_HIT; this->collider.base.acFlags &= ~AC_HIT;
Flags_SetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F); Flags_SetSwitch(play, ((u16)this->dyna.actor.params >> 8) & 0x3F);
this->breakTimer = 1; this->breakTimer = 1;
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dList = NULL; this->dList = NULL;
BgMizuBwall_SpawnDebris(this, play); BgMizuBwall_SpawnDebris(this, play);
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_WALL_BROKEN); Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_WALL_BROKEN);

View file

@ -57,9 +57,9 @@ void func_8089F788(BgMizuUzu* this, PlayState* play) {
Actor* thisx = &this->dyna.actor; Actor* thisx = &this->dyna.actor;
if (GET_PLAYER(play)->currentBoots == PLAYER_BOOTS_IRON) { if (GET_PLAYER(play)->currentBoots == PLAYER_BOOTS_IRON) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} else { } else {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} }
Audio_PlayActorSound2(thisx, NA_SE_EV_WATER_CONVECTION - SFX_FLAG); Audio_PlayActorSound2(thisx, NA_SE_EV_WATER_CONVECTION - SFX_FLAG);
thisx->shape.rot.y += 0x1C0; thisx->shape.rot.y += 0x1C0;

View file

@ -231,7 +231,7 @@ void BgMoriBigst_Update(Actor* thisx, PlayState* play) {
if (this->waitTimer > 0) { if (this->waitTimer > 0) {
this->waitTimer--; this->waitTimer--;
} }
if (func_80043590(&this->dyna)) { if (DynaPolyActor_IsPlayerAbove(&this->dyna)) {
Environment_ChangeLightSetting(play, 6); Environment_ChangeLightSetting(play, 6);
} }
if (this->actionFunc != NULL) { if (this->actionFunc != NULL) {

View file

@ -124,7 +124,8 @@ void BgMoriElevator_Destroy(Actor* thisx, PlayState* play) {
} }
s32 BgMoriElevator_IsPlayerRiding(BgMoriElevator* this, PlayState* play) { s32 BgMoriElevator_IsPlayerRiding(BgMoriElevator* this, PlayState* play) {
return ((this->dyna.unk_160 & 2) && !(this->unk_170 & 2) && return ((this->dyna.interactFlags & DYNA_INTERACT_PLAYER_ON_TOP) &&
!(this->unk_170 & DYNA_INTERACT_PLAYER_ON_TOP) &&
((GET_PLAYER(play)->actor.world.pos.y - this->dyna.actor.world.pos.y) < 80.0f)); ((GET_PLAYER(play)->actor.world.pos.y - this->dyna.actor.world.pos.y) < 80.0f));
} }
@ -243,7 +244,7 @@ void BgMoriElevator_Update(Actor* thisx, PlayState* play) {
BgMoriElevator* this = (BgMoriElevator*)thisx; BgMoriElevator* this = (BgMoriElevator*)thisx;
this->actionFunc(this, play); this->actionFunc(this, play);
this->unk_170 = this->dyna.unk_160; this->unk_170 = this->dyna.interactFlags;
this->unk_16C = Flags_GetSwitch(play, (thisx->params & 0x3F)); this->unk_16C = Flags_GetSwitch(play, (thisx->params & 0x3F));
} }

View file

@ -81,7 +81,7 @@ void func_808ADEF0(BgSpot03Taki* this, PlayState* play) {
if (this->openingAlpha > 0) { if (this->openingAlpha > 0) {
this->openingAlpha -= 5; this->openingAlpha -= 5;
if (this->openingAlpha <= 0.0f) { if (this->openingAlpha <= 0.0f) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->timer = 400; this->timer = 400;
this->state = WATERFALL_OPENED; this->state = WATERFALL_OPENED;
this->openingAlpha = 0; this->openingAlpha = 0;
@ -96,7 +96,7 @@ void func_808ADEF0(BgSpot03Taki* this, PlayState* play) {
if (this->openingAlpha < 255.0f) { if (this->openingAlpha < 255.0f) {
this->openingAlpha += 5.0f; this->openingAlpha += 5.0f;
if (this->openingAlpha >= 255.0f) { if (this->openingAlpha >= 255.0f) {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->state = WATERFALL_CLOSED; this->state = WATERFALL_CLOSED;
this->openingAlpha = 255.0f; this->openingAlpha = 255.0f;
Flags_UnsetSwitch(play, this->switchFlag); Flags_UnsetSwitch(play, this->switchFlag);

View file

@ -98,8 +98,8 @@ void BgSpot08Iceblock_SinkUnderPlayer(BgSpot08Iceblock* this) {
break; break;
} }
// Sink under Player's weight if standing on it // Sink under an actor's weight if standing on it
target = (func_80043548(&this->dyna) ? -4.0f : 0.0f); target = (DynaPolyActor_IsActorOnTop(&this->dyna) ? -4.0f : 0.0f);
Math_StepToF(&this->sinkOffset, target, step); Math_StepToF(&this->sinkOffset, target, step);
} }
@ -198,7 +198,7 @@ void BgSpot08Iceblock_Roll(BgSpot08Iceblock* this, PlayState* play) {
surfaceNormalHorizontal.z = this->surfaceNormal.z; surfaceNormalHorizontal.z = this->surfaceNormal.z;
// If player is standing on it or holding the edge // If player is standing on it or holding the edge
if (func_8004356C(&this->dyna) && (playerCentroidDist > 3.0f)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna) && (playerCentroidDist > 3.0f)) {
Math_Vec3f_Diff(&playerCentroidDiff, &surfaceNormalHorizontal, &playerMoment); Math_Vec3f_Diff(&playerCentroidDiff, &surfaceNormalHorizontal, &playerMoment);
BgSpot08Iceblock_MultVectorScalar(&playerMoment, &playerMoment, BgSpot08Iceblock_MultVectorScalar(&playerMoment, &playerMoment,
(sInertias[rollDataIndex] * playerCentroidDist) / this->dyna.actor.scale.x); (sInertias[rollDataIndex] * playerCentroidDist) / this->dyna.actor.scale.x);

View file

@ -225,7 +225,7 @@ void func_808B7BCC(BgSpot18Basket* this, PlayState* play) {
this->dyna.actor.world.pos.z, this->dyna.actor.world.pos.x) < SQ(32.0f)) { this->dyna.actor.world.pos.z, this->dyna.actor.world.pos.x) < SQ(32.0f)) {
OnePointCutscene_Init(play, 4210, 240, &this->dyna.actor, CAM_ID_MAIN); OnePointCutscene_Init(play, 4210, 240, &this->dyna.actor, CAM_ID_MAIN);
func_808B7D38(this); func_808B7D38(this);
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} }
} }
} }
@ -333,7 +333,7 @@ void func_808B7FC0(BgSpot18Basket* this, PlayState* play) {
this->dyna.actor.shape.rot.y = arrayValue; this->dyna.actor.shape.rot.y = arrayValue;
func_808B818C(this); func_808B818C(this);
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} }
} }

View file

@ -60,13 +60,13 @@ void BgSstFloor_Update(Actor* thisx, PlayState* play) {
if (1) {} if (1) {}
if (func_80043590(&this->dyna) && (this->dyna.actor.yDistToPlayer < 1000.0f)) { if (DynaPolyActor_IsPlayerAbove(&this->dyna) && (this->dyna.actor.yDistToPlayer < 1000.0f)) {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_BOSS_BONGO); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_BOSS_BONGO);
} else { } else {
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0);
} }
if (func_8004356C(&this->dyna) && (player->fallDistance > 1000.0f)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna) && (player->fallDistance > 1000.0f)) {
this->dyna.actor.params = 1; this->dyna.actor.params = 1;
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EN_SHADEST_TAIKO_HIGH); Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EN_SHADEST_TAIKO_HIGH);
} }
@ -80,7 +80,8 @@ void BgSstFloor_Update(Actor* thisx, PlayState* play) {
this->dyna.actor.params = BONGOFLOOR_REST; this->dyna.actor.params = BONGOFLOOR_REST;
this->drumPhase = 28; this->drumPhase = 28;
if (func_8004356C(&this->dyna) && !(player->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14))) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna) &&
!(player->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14))) {
distFromRim = 600.0f - this->dyna.actor.xzDistToPlayer; distFromRim = 600.0f - this->dyna.actor.xzDistToPlayer;
if (distFromRim > 0.0f) { if (distFromRim > 0.0f) {
if (distFromRim > 350.0f) { if (distFromRim > 350.0f) {
@ -117,7 +118,7 @@ void BgSstFloor_Update(Actor* thisx, PlayState* play) {
this->drumPhase--; this->drumPhase--;
} }
if (1) {} if (1) {}
func_8003EE6C(play, &play->colCtx.dyna); DynaPoly_InvalidateLookup(play, &play->colCtx.dyna);
} }
void BgSstFloor_Draw(Actor* thisx, PlayState* play) { void BgSstFloor_Draw(Actor* thisx, PlayState* play) {

View file

@ -250,7 +250,7 @@ void BgYdanSp_FloorWebBreaking(BgYdanSp* this, PlayState* play) {
this->dyna.actor.world.pos.y = (sinf((f32)this->timer * (M_PI / 20)) * this->unk_16C) + this->dyna.actor.home.pos.y; this->dyna.actor.world.pos.y = (sinf((f32)this->timer * (M_PI / 20)) * this->unk_16C) + this->dyna.actor.home.pos.y;
if (this->dyna.actor.home.pos.y - this->dyna.actor.world.pos.y > 190.0f) { if (this->dyna.actor.home.pos.y - this->dyna.actor.world.pos.y > 190.0f) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->timer = 40; this->timer = 40;
func_80078884(NA_SE_SY_CORRECT_CHIME); func_80078884(NA_SE_SY_CORRECT_CHIME);
Flags_SetSwitch(play, this->isDestroyedSwitchFlag); Flags_SetSwitch(play, this->isDestroyedSwitchFlag);
@ -288,7 +288,7 @@ void BgYdanSp_FloorWebIdle(BgYdanSp* this, PlayState* play) {
BgYdanSp_BurnWeb(this, play); BgYdanSp_BurnWeb(this, play);
return; return;
} }
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
sqrtFallDistance = sqrtf(CLAMP_MIN(player->fallDistance, 0.0f)); sqrtFallDistance = sqrtf(CLAMP_MIN(player->fallDistance, 0.0f));
if (player->fallDistance > 750.0f) { if (player->fallDistance > 750.0f) {
if (this->dyna.actor.xzDistToPlayer < 80.0f) { if (this->dyna.actor.xzDistToPlayer < 80.0f) {

View file

@ -50,8 +50,8 @@ void DoorToki_Update(Actor* thisx, PlayState* play) {
DoorToki* this = (DoorToki*)thisx; DoorToki* this = (DoorToki*)thisx;
if (GET_EVENTCHKINF(EVENTCHKINF_4B)) { if (GET_EVENTCHKINF(EVENTCHKINF_4B)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} else { } else {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} }
} }

View file

@ -106,7 +106,7 @@ void EnBox_Init(Actor* thisx, PlayState* play2) {
DynaPolyActor_Init(&this->dyna, DPM_UNK); DynaPolyActor_Init(&this->dyna, DPM_UNK);
CollisionHeader_GetVirtual(&gTreasureChestCol, &colHeader); CollisionHeader_GetVirtual(&gTreasureChestCol, &colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
func_8003ECA8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCeilingCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->movementFlags = 0; this->movementFlags = 0;
this->type = thisx->params >> 12 & 0xF; this->type = thisx->params >> 12 & 0xF;
@ -126,7 +126,7 @@ void EnBox_Init(Actor* thisx, PlayState* play2) {
animFrameStart = endFrame; animFrameStart = endFrame;
} else if ((this->type == ENBOX_TYPE_SWITCH_FLAG_FALL_BIG || this->type == ENBOX_TYPE_SWITCH_FLAG_FALL_SMALL) && } else if ((this->type == ENBOX_TYPE_SWITCH_FLAG_FALL_BIG || this->type == ENBOX_TYPE_SWITCH_FLAG_FALL_SMALL) &&
!Flags_GetSwitch(play, this->switchFlag)) { !Flags_GetSwitch(play, this->switchFlag)) {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
if (Rand_ZeroOne() < 0.5f) { if (Rand_ZeroOne() < 0.5f) {
this->movementFlags |= ENBOX_MOVE_FALL_ANGLE_SIDE; this->movementFlags |= ENBOX_MOVE_FALL_ANGLE_SIDE;
} }
@ -138,7 +138,7 @@ void EnBox_Init(Actor* thisx, PlayState* play2) {
} else if ((this->type == ENBOX_TYPE_ROOM_CLEAR_BIG || this->type == ENBOX_TYPE_ROOM_CLEAR_SMALL) && } else if ((this->type == ENBOX_TYPE_ROOM_CLEAR_BIG || this->type == ENBOX_TYPE_ROOM_CLEAR_SMALL) &&
!Flags_GetClear(play, this->dyna.actor.room)) { !Flags_GetClear(play, this->dyna.actor.room)) {
EnBox_SetupAction(this, EnBox_AppearOnRoomClear); EnBox_SetupAction(this, EnBox_AppearOnRoomClear);
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->movementFlags |= ENBOX_MOVE_IMMOBILE; this->movementFlags |= ENBOX_MOVE_IMMOBILE;
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y - 50.0f; this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y - 50.0f;
this->alpha = 0; this->alpha = 0;
@ -146,14 +146,14 @@ void EnBox_Init(Actor* thisx, PlayState* play2) {
} else if (this->type == ENBOX_TYPE_9 || this->type == ENBOX_TYPE_10) { } else if (this->type == ENBOX_TYPE_9 || this->type == ENBOX_TYPE_10) {
EnBox_SetupAction(this, func_809C9700); EnBox_SetupAction(this, func_809C9700);
this->dyna.actor.flags |= ACTOR_FLAG_25; this->dyna.actor.flags |= ACTOR_FLAG_25;
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->movementFlags |= ENBOX_MOVE_IMMOBILE; this->movementFlags |= ENBOX_MOVE_IMMOBILE;
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y - 50.0f; this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y - 50.0f;
this->alpha = 0; this->alpha = 0;
this->dyna.actor.flags |= ACTOR_FLAG_4; this->dyna.actor.flags |= ACTOR_FLAG_4;
} else if (this->type == ENBOX_TYPE_SWITCH_FLAG_BIG && !Flags_GetSwitch(play, this->switchFlag)) { } else if (this->type == ENBOX_TYPE_SWITCH_FLAG_BIG && !Flags_GetSwitch(play, this->switchFlag)) {
EnBox_SetupAction(this, EnBox_AppearOnSwitchFlag); EnBox_SetupAction(this, EnBox_AppearOnSwitchFlag);
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->movementFlags |= ENBOX_MOVE_IMMOBILE; this->movementFlags |= ENBOX_MOVE_IMMOBILE;
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y - 50.0f; this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y - 50.0f;
this->alpha = 0; this->alpha = 0;
@ -273,7 +273,7 @@ void EnBox_FallOnSwitchFlag(EnBox* this, PlayState* play) {
if (this->unk_1A8 >= 0) { if (this->unk_1A8 >= 0) {
EnBox_SetupAction(this, EnBox_Fall); EnBox_SetupAction(this, EnBox_Fall);
this->subCamId = OnePointCutscene_Init(play, 4500, 9999, &this->dyna.actor, CAM_ID_MAIN); this->subCamId = OnePointCutscene_Init(play, 4500, 9999, &this->dyna.actor, CAM_ID_MAIN);
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} else if (this->unk_1A8 >= -11) { } else if (this->unk_1A8 >= -11) {
this->unk_1A8++; this->unk_1A8++;
} else if (Flags_GetSwitch(play, this->switchFlag)) { } else if (Flags_GetSwitch(play, this->switchFlag)) {
@ -367,7 +367,7 @@ void EnBox_AppearInit(EnBox* this, PlayState* play) {
} }
void EnBox_AppearAnimation(EnBox* this, PlayState* play) { void EnBox_AppearAnimation(EnBox* this, PlayState* play) {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
if (this->unk_1A8 < 0) { if (this->unk_1A8 < 0) {
this->unk_1A8++; this->unk_1A8++;

View file

@ -104,7 +104,7 @@ void EnBrob_Destroy(Actor* thisx, PlayState* play) {
} }
void func_809CADDC(EnBrob* this, PlayState* play) { void func_809CADDC(EnBrob* this, PlayState* play) {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->timer = this->actionFunc == func_809CB2B8 ? 200 : 0; this->timer = this->actionFunc == func_809CB2B8 ? 200 : 0;
this->unk_1AE = 0; this->unk_1AE = 0;
this->actionFunc = func_809CB054; this->actionFunc = func_809CB054;
@ -112,7 +112,7 @@ void func_809CADDC(EnBrob* this, PlayState* play) {
void func_809CAE44(EnBrob* this, PlayState* play) { void func_809CAE44(EnBrob* this, PlayState* play) {
Animation_PlayOnce(&this->skelAnime, &object_brob_Anim_001750); Animation_PlayOnce(&this->skelAnime, &object_brob_Anim_001750);
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->unk_1AE = 1000; this->unk_1AE = 1000;
this->actionFunc = func_809CB114; this->actionFunc = func_809CB114;
} }
@ -150,7 +150,7 @@ void func_809CB054(EnBrob* this, PlayState* play) {
this->timer--; this->timer--;
} }
if (this->timer == 0) { if (this->timer == 0) {
if (func_8004356C(&this->dyna) != 0) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
func_8002F71C(play, &this->dyna.actor, 5.0f, this->dyna.actor.yawTowardsPlayer, 1.0f); func_8002F71C(play, &this->dyna.actor, 5.0f, this->dyna.actor.yawTowardsPlayer, 1.0f);
func_809CAE44(this, play); func_809CAE44(this, play);
} else if (this->dyna.actor.xzDistToPlayer < 300.0f) { } else if (this->dyna.actor.xzDistToPlayer < 300.0f) {

View file

@ -119,7 +119,7 @@ void EnJj_Init(Actor* thisx, PlayState* play2) {
DynaPolyActor_Init(&this->dyna, 0); DynaPolyActor_Init(&this->dyna, 0);
CollisionHeader_GetVirtual(&gJabuJabuBodyCol, &colHeader); CollisionHeader_GetVirtual(&gJabuJabuBodyCol, &colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
func_8003ECA8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCeilingCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dyna.actor.update = EnJj_UpdateStaticCollision; this->dyna.actor.update = EnJj_UpdateStaticCollision;
this->dyna.actor.draw = NULL; this->dyna.actor.draw = NULL;
Actor_SetScale(&this->dyna.actor, 0.087f); Actor_SetScale(&this->dyna.actor, 0.087f);
@ -182,7 +182,7 @@ void EnJj_OpenMouth(EnJj* this, PlayState* play) {
this->mouthOpenAngle -= 102; this->mouthOpenAngle -= 102;
if (this->mouthOpenAngle < -2600) { if (this->mouthOpenAngle < -2600) {
func_8003EBF8(play, &play->colCtx.dyna, bodyCollisionActor->bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, bodyCollisionActor->bgId);
} }
} }
} }
@ -217,7 +217,7 @@ void EnJj_BeginCutscene(EnJj* this, PlayState* play) {
EnJj_SetupAction(this, EnJj_RemoveDust); EnJj_SetupAction(this, EnJj_RemoveDust);
play->csCtx.segment = &D_80A88164; play->csCtx.segment = &D_80A88164;
gSaveContext.cutsceneTrigger = 1; gSaveContext.cutsceneTrigger = 1;
func_8003EBF8(play, &play->colCtx.dyna, bodyCollisionActor->bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, bodyCollisionActor->bgId);
func_8005B1A4(GET_ACTIVE_CAM(play)); func_8005B1A4(GET_ACTIVE_CAM(play));
SET_EVENTCHKINF(EVENTCHKINF_3A); SET_EVENTCHKINF(EVENTCHKINF_3A);
func_80078884(NA_SE_SY_CORRECT_CHIME); func_80078884(NA_SE_SY_CORRECT_CHIME);

View file

@ -51,7 +51,7 @@ void EnLightbox_Init(Actor* thisx, PlayState* play) {
thisx->colChkInfo.cylRadius = 30; thisx->colChkInfo.cylRadius = 30;
thisx->colChkInfo.cylHeight = 50; thisx->colChkInfo.cylHeight = 50;
ActorShape_Init(&thisx->shape, 0.0f, ActorShadow_DrawCircle, 6.0f); ActorShape_Init(&thisx->shape, 0.0f, ActorShadow_DrawCircle, 6.0f);
this->dyna.unk_160 = 0; this->dyna.interactFlags = 0;
this->dyna.unk_15C = 0; this->dyna.unk_15C = 0;
thisx->targetMode = 0; thisx->targetMode = 0;
thisx->gravity = -2.0f; thisx->gravity = -2.0f;

View file

@ -51,7 +51,7 @@ void EnPubox_Init(Actor* thisx, PlayState* play) {
thisx->uncullZoneDownward = 1200.0f; thisx->uncullZoneDownward = 1200.0f;
thisx->uncullZoneScale = 720.0f; thisx->uncullZoneScale = 720.0f;
ActorShape_Init(&thisx->shape, 0.0f, ActorShadow_DrawCircle, 6.0f); ActorShape_Init(&thisx->shape, 0.0f, ActorShadow_DrawCircle, 6.0f);
this->dyna.unk_160 = 0; this->dyna.interactFlags = 0;
this->dyna.unk_15C = DPM_UNK; this->dyna.unk_15C = DPM_UNK;
thisx->targetMode = 1; thisx->targetMode = 1;
thisx->gravity = -2.0f; thisx->gravity = -2.0f;

View file

@ -127,7 +127,7 @@ void func_80AFBE8C(EnSiofuki* this, PlayState* play) {
if ((dX > (this->dyna.actor.scale.x * -346.0f)) && (dX < (this->dyna.actor.scale.x * 346.0f)) && if ((dX > (this->dyna.actor.scale.x * -346.0f)) && (dX < (this->dyna.actor.scale.x * 346.0f)) &&
(dZ > (this->dyna.actor.scale.z * -400.0f)) && (dZ < (this->dyna.actor.scale.z * 400.0f)) && (dY < 0.0f)) { (dZ > (this->dyna.actor.scale.z * -400.0f)) && (dZ < (this->dyna.actor.scale.z * 400.0f)) && (dY < 0.0f)) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->splashTimer <= 0) { if (this->splashTimer <= 0) {
EffectSsGSplash_Spawn(play, &player->actor.world.pos, NULL, NULL, 1, 1); EffectSsGSplash_Spawn(play, &player->actor.world.pos, NULL, NULL, 1, 1);
this->splashTimer = 10; this->splashTimer = 10;

View file

@ -750,7 +750,7 @@ void ObjBean_SetupWaitForPlayer(ObjBean* this) {
} }
void ObjBean_WaitForPlayer(ObjBean* this, PlayState* play) { void ObjBean_WaitForPlayer(ObjBean* this, PlayState* play) {
if (func_8004356C(&this->dyna)) { // Player is standing on if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
ObjBean_SetupFly(this); ObjBean_SetupFly(this);
if (play->sceneNum == SCENE_SPOT10) { // Lost woods if (play->sceneNum == SCENE_SPOT10) { // Lost woods
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_BEAN_LOST_WOODS); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_BEAN_LOST_WOODS);
@ -784,7 +784,7 @@ void ObjBean_Fly(ObjBean* this, PlayState* play) {
Camera_ChangeSetting(mainCam, CAM_SET_NORMAL0); Camera_ChangeSetting(mainCam, CAM_SET_NORMAL0);
} }
} else if (func_8004356C(&this->dyna) != 0) { // Player is on top } else if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
func_8002F974(&this->dyna.actor, NA_SE_PL_PLANT_MOVE - SFX_FLAG); func_8002F974(&this->dyna.actor, NA_SE_PL_PLANT_MOVE - SFX_FLAG);
@ -810,7 +810,7 @@ void ObjBean_SetupWaitForStepOff(ObjBean* this) {
} }
void ObjBean_WaitForStepOff(ObjBean* this, PlayState* play) { void ObjBean_WaitForStepOff(ObjBean* this, PlayState* play) {
if (!func_80043590(&this->dyna)) { if (!DynaPolyActor_IsPlayerAbove(&this->dyna)) {
ObjBean_SetupWaitForPlayer(this); ObjBean_SetupWaitForPlayer(this);
} }
ObjBean_UpdatePosition(this); ObjBean_UpdatePosition(this);
@ -822,7 +822,7 @@ void func_80B908EC(ObjBean* this) {
} }
void func_80B90918(ObjBean* this, PlayState* play) { void func_80B90918(ObjBean* this, PlayState* play) {
if (!func_8004356C(&this->dyna)) { if (!DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
ObjBean_SetupPathCount(this, play); ObjBean_SetupPathCount(this, play);
ObjBean_SetupPath(this, play); ObjBean_SetupPath(this, play);
ObjBean_Move(this); ObjBean_Move(this);
@ -856,9 +856,9 @@ void func_80B90A34(ObjBean* this, PlayState* play) {
func_80B8EE24(this); func_80B8EE24(this);
if (trampled) { if (trampled) {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} else { } else {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} }
if ((this->timer <= 0) && (!trampled)) { if ((this->timer <= 0) && (!trampled)) {
func_80B8EBC8(this); func_80B8EBC8(this);
@ -894,7 +894,7 @@ void ObjBean_Update(Actor* thisx, PlayState* play) {
osSyncPrintf("馬と豆の木リフト衝突!!!\n"); osSyncPrintf("馬と豆の木リフト衝突!!!\n");
osSyncPrintf(VT_RST); osSyncPrintf(VT_RST);
ObjBean_Break(this, play); ObjBean_Break(this, play);
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
func_80B908EC(this); func_80B908EC(this);
} }
} else { } else {
@ -902,7 +902,7 @@ void ObjBean_Update(Actor* thisx, PlayState* play) {
} }
Actor_SetFocus(&this->dyna.actor, 6.0f); Actor_SetFocus(&this->dyna.actor, 6.0f);
if (this->stateFlags & BEAN_STATE_DYNAPOLY_SET) { if (this->stateFlags & BEAN_STATE_DYNAPOLY_SET) {
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
this->stateFlags |= BEAN_STATE_PLAYER_ON_TOP; this->stateFlags |= BEAN_STATE_PLAYER_ON_TOP;
} else { } else {
this->stateFlags &= ~BEAN_STATE_PLAYER_ON_TOP; this->stateFlags &= ~BEAN_STATE_PLAYER_ON_TOP;

View file

@ -85,7 +85,7 @@ void func_80B92C80(ObjElevator* this, PlayState* play) {
f32 sub; f32 sub;
Actor* thisx = &this->dyna.actor; Actor* thisx = &this->dyna.actor;
if ((this->dyna.unk_160 & 2) && !(this->unk_170 & 2)) { if ((this->dyna.interactFlags & DYNA_INTERACT_PLAYER_ON_TOP) && !(this->unk_170 & DYNA_INTERACT_PLAYER_ON_TOP)) {
sub = thisx->world.pos.y - thisx->home.pos.y; sub = thisx->world.pos.y - thisx->home.pos.y;
if (fabsf(sub) < 0.1f) { if (fabsf(sub) < 0.1f) {
this->unk_168 = thisx->home.pos.y + ((thisx->params >> 0xC) & 0xF) * 80.0f; this->unk_168 = thisx->home.pos.y + ((thisx->params >> 0xC) & 0xF) * 80.0f;
@ -117,7 +117,7 @@ void ObjElevator_Update(Actor* thisx, PlayState* play) {
if (this->actionFunc) { if (this->actionFunc) {
this->actionFunc(this, play); this->actionFunc(this, play);
} }
this->unk_170 = this->dyna.unk_160; this->unk_170 = this->dyna.interactFlags;
} }
void ObjElevator_Draw(Actor* thisx, PlayState* play) { void ObjElevator_Draw(Actor* thisx, PlayState* play) {

View file

@ -148,7 +148,7 @@ void ObjKibako2_Idle(ObjKibako2* this, PlayState* play) {
ObjKibako2_Break(this, play); ObjKibako2_Break(this, play);
SoundSource_PlaySfxAtFixedWorldPos(play, &this->dyna.actor.world.pos, 20, NA_SE_EV_WOODBOX_BREAK); SoundSource_PlaySfxAtFixedWorldPos(play, &this->dyna.actor.world.pos, 20, NA_SE_EV_WOODBOX_BREAK);
this->dyna.actor.flags |= ACTOR_FLAG_4; this->dyna.actor.flags |= ACTOR_FLAG_4;
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
this->dyna.actor.draw = NULL; this->dyna.actor.draw = NULL;
this->actionFunc = ObjKibako2_Kill; this->actionFunc = ObjKibako2_Kill;
} else if (this->dyna.actor.xzDistToPlayer < 600.0f) { } else if (this->dyna.actor.xzDistToPlayer < 600.0f) {

View file

@ -137,7 +137,7 @@ void func_80B96560(ObjLift* this, PlayState* play) {
s32 pad; s32 pad;
s32 quakeIndex; s32 quakeIndex;
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
if (this->timer <= 0) { if (this->timer <= 0) {
if (((this->dyna.actor.params >> 8) & 7) == 7) { if (((this->dyna.actor.params >> 8) & 7) == 7) {
func_80B967C0(this); func_80B967C0(this);

View file

@ -491,7 +491,7 @@ void ObjOshihiki_OnActor(ObjOshihiki* this, PlayState* play) {
} else { } else {
dynaPolyActor = DynaPoly_GetActor(&play->colCtx, bgId); dynaPolyActor = DynaPoly_GetActor(&play->colCtx, bgId);
if (dynaPolyActor != NULL) { if (dynaPolyActor != NULL) {
func_800434A8(dynaPolyActor); DynaPolyActor_SetActorOnTop(dynaPolyActor);
func_80043538(dynaPolyActor); func_80043538(dynaPolyActor);
if ((this->timer <= 0) && (fabsf(this->dyna.unk_150) > 0.001f)) { if ((this->timer <= 0) && (fabsf(this->dyna.unk_150) > 0.001f)) {
@ -520,7 +520,7 @@ void ObjOshihiki_OnActor(ObjOshihiki* this, PlayState* play) {
dynaPolyActor = DynaPoly_GetActor(&play->colCtx, bgId); dynaPolyActor = DynaPoly_GetActor(&play->colCtx, bgId);
if ((dynaPolyActor != NULL) && (dynaPolyActor->unk_15C & 1)) { if ((dynaPolyActor != NULL) && (dynaPolyActor->unk_15C & 1)) {
func_800434A8(dynaPolyActor); DynaPolyActor_SetActorOnTop(dynaPolyActor);
func_80043538(dynaPolyActor); func_80043538(dynaPolyActor);
this->dyna.actor.world.pos.y = this->dyna.actor.floorHeight; this->dyna.actor.world.pos.y = this->dyna.actor.floorHeight;
} else { } else {

View file

@ -386,13 +386,14 @@ void ObjSwitch_FloorUp(ObjSwitch* this, PlayState* play) {
} else { } else {
switch (this->dyna.actor.params >> 4 & 7) { switch (this->dyna.actor.params >> 4 & 7) {
case OBJSWITCH_SUBTYPE_ONCE: case OBJSWITCH_SUBTYPE_ONCE:
if (func_8004356C(&this->dyna)) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) {
ObjSwitch_FloorPressInit(this); ObjSwitch_FloorPressInit(this);
ObjSwitch_SetOn(this, play); ObjSwitch_SetOn(this, play);
} }
break; break;
case OBJSWITCH_SUBTYPE_TOGGLE: case OBJSWITCH_SUBTYPE_TOGGLE:
if ((this->dyna.unk_160 & 2) && !(this->unk_17F & 2)) { if ((this->dyna.interactFlags & DYNA_INTERACT_PLAYER_ON_TOP) &&
!(this->unk_17F & DYNA_INTERACT_PLAYER_ON_TOP)) {
ObjSwitch_FloorPressInit(this); ObjSwitch_FloorPressInit(this);
ObjSwitch_SetOn(this, play); ObjSwitch_SetOn(this, play);
} }
@ -444,7 +445,8 @@ void ObjSwitch_FloorDown(ObjSwitch* this, PlayState* play) {
} }
break; break;
case OBJSWITCH_SUBTYPE_TOGGLE: case OBJSWITCH_SUBTYPE_TOGGLE:
if ((this->dyna.unk_160 & 2) && !(this->unk_17F & 2)) { if ((this->dyna.interactFlags & DYNA_INTERACT_PLAYER_ON_TOP) &&
!(this->unk_17F & DYNA_INTERACT_PLAYER_ON_TOP)) {
ObjSwitch_FloorReleaseInit(this); ObjSwitch_FloorReleaseInit(this);
ObjSwitch_SetOff(this, play); ObjSwitch_SetOff(this, play);
} }
@ -691,7 +693,7 @@ void ObjSwitch_Update(Actor* thisx, PlayState* play) {
switch (this->dyna.actor.params & 7) { switch (this->dyna.actor.params & 7) {
case OBJSWITCH_TYPE_FLOOR: case OBJSWITCH_TYPE_FLOOR:
case OBJSWITCH_TYPE_FLOOR_RUSTY: case OBJSWITCH_TYPE_FLOOR_RUSTY:
this->unk_17F = this->dyna.unk_160; this->unk_17F = this->dyna.interactFlags;
break; break;
case OBJSWITCH_TYPE_EYE: case OBJSWITCH_TYPE_EYE:
this->unk_17F = this->tris.col.base.acFlags; this->unk_17F = this->tris.col.base.acFlags;

View file

@ -147,7 +147,7 @@ void ObjTimeblock_Destroy(Actor* thisx, PlayState* play) {
} }
u8 ObjTimeblock_PlayerIsInRange(ObjTimeblock* this, PlayState* play) { u8 ObjTimeblock_PlayerIsInRange(ObjTimeblock* this, PlayState* play) {
if (this->isVisible && func_80043590(&this->dyna)) { if (this->isVisible && DynaPolyActor_IsPlayerAbove(&this->dyna)) {
return false; return false;
} }
@ -324,9 +324,9 @@ void ObjTimeblock_Update(Actor* thisx, PlayState* play) {
} }
if (this->isVisible) { if (this->isVisible) {
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} else { } else {
func_8003EBF8(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
} }
} }

View file

@ -80,7 +80,7 @@ s32 func_80BA1ECC(ObjWarp2block* this, PlayState* play) {
Vec3f sp20; Vec3f sp20;
f32 temp_f2; f32 temp_f2;
if (func_80043590(&this->dyna)) { if (DynaPolyActor_IsPlayerAbove(&this->dyna)) {
return 0; return 0;
} }

View file

@ -9598,13 +9598,13 @@ s32 func_80847A78(Player* this) {
if (!cond) { if (!cond) {
this->hoverBootsTimer = 19; this->hoverBootsTimer = 19;
} }
return 0; return false;
} }
D_808535E4 = 0; D_808535E4 = 0;
this->unk_898 = this->unk_89A = D_80853610 = 0; this->unk_898 = this->unk_89A = D_80853610 = 0;
return 1; return true;
} }
static Vec3f D_80854798 = { 0.0f, 18.0f, 0.0f }; static Vec3f D_80854798 = { 0.0f, 18.0f, 0.0f };
@ -9694,7 +9694,7 @@ void func_80847BA0(PlayState* play, Player* this) {
Environment_ChangeLightSetting( Environment_ChangeLightSetting(
play, SurfaceType_GetLightSettingIndex(&play->colCtx, floorPoly, this->actor.floorBgId)); play, SurfaceType_GetLightSettingIndex(&play->colCtx, floorPoly, this->actor.floorBgId));
} else { } else {
func_80043508(&play->colCtx, this->actor.floorBgId); DynaPoly_SetPlayerAbove(&play->colCtx, this->actor.floorBgId);
} }
} }
@ -9843,7 +9843,7 @@ void func_80847BA0(PlayState* play, Player* this) {
s32 pad3; s32 pad3;
if (this->actor.floorBgId != BGCHECK_SCENE) { if (this->actor.floorBgId != BGCHECK_SCENE) {
func_800434C8(&play->colCtx, this->actor.floorBgId); DynaPoly_SetPlayerOnTop(&play->colCtx, this->actor.floorBgId);
} }
floorPolyNormalX = COLPOLY_GET_NORMAL(floorPoly->normal.x); floorPolyNormalX = COLPOLY_GET_NORMAL(floorPoly->normal.x);