diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index 6468322bb5..27facad224 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -3783,6 +3783,11 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski this->jntSph.elements[i].dim.modelSphere.radius * this->jntSph.elements[i].dim.scale; } + //! @bug Setting colliders in a draw function allows for duplicate entries to be added to their respective lists + //! under certain conditions, like when pausing and unpausing the game. + //! Actors will draw for a couple of frames between the pauses, but some important logic updates will not occur. + //! In the case of OC, this can cause unwanted effects such as a very large amount of displacement being applied to + //! a colliding actor. CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->jntSph.base); CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->jntSph.base); } diff --git a/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c b/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c index e389b733ab..1af749de10 100644 --- a/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c +++ b/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c @@ -318,6 +318,8 @@ void func_80A68FA8(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) { this->colliderHead.elements[index].dim.worldSphere.radius = this->colliderHead.elements[index].dim.modelSphere.radius * this->colliderHead.elements[index].dim.scale; } + + //! @bug see relevant comment in `EnHorse_SkinCallback1` CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->colliderHead.base); } diff --git a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c index bad75d9a0f..3ea315bb99 100644 --- a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c +++ b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c @@ -598,6 +598,7 @@ void func_80A6ABF8(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) { this->headCollider.elements[i].dim.modelSphere.radius * this->headCollider.elements[i].dim.scale; } + //! @bug see relevant comment in `EnHorse_SkinCallback1` CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->headCollider.base); } diff --git a/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c b/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c index f4867875b7..f338e37368 100644 --- a/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c +++ b/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c @@ -607,6 +607,7 @@ void func_80A6CAFC(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) { this->headCollider.elements[i].dim.modelSphere.radius * this->headCollider.elements[i].dim.scale; } + //! @bug see relevant comment in `EnHorse_SkinCallback1` CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->headCollider.base); } diff --git a/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c b/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c index df9bc7f1ca..4c8549ffb4 100644 --- a/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c +++ b/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c @@ -262,6 +262,8 @@ void func_80A6DFD4(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) { this->colliderSphere.elements[i].dim.worldSphere.radius = this->colliderSphere.elements[i].dim.modelSphere.radius * this->colliderSphere.elements[i].dim.scale; } + + //! @bug see relevant comment in `EnHorse_SkinCallback1` CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->colliderSphere.base); }