summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRozelette <Rozelette@users.noreply.github.com>2023-05-22 08:20:06 -0500
committerGitHub <noreply@github.com>2023-05-22 09:20:06 -0400
commitf005bd3b7fcd2ecd7c286cf0c5877ce6deb2fb48 (patch)
tree3b0cd8c2c1a09ea12facb3b80cf39f8015c5d799
parent7962e0e6d6a87e73540f809c1897510fd971695c (diff)
add skeleton unregistration to actors that manage their own skeletons (#2908)
-rw-r--r--soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c4
-rw-r--r--soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c2
-rw-r--r--soh/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c3
-rw-r--r--soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c3
-rw-r--r--soh/src/overlays/actors/ovl_Door_Killer/z_door_killer.c2
-rw-r--r--soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c11
-rw-r--r--soh/src/overlays/actors/ovl_En_Am/z_en_am.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Bili/z_en_bili.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Bird/z_en_bird.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Box/z_en_box.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Brob/z_en_brob.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Butte/z_en_butte.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Bw/z_en_bw.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Cow/z_en_cow.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Crow/z_en_crow.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dh/z_en_dh.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dha/z_en_dha.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Door/z_en_door.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Fd/z_en_fd.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Fish/z_en_fish.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Fr/z_en_fr.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Fw/z_en_fw.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Gb/z_en_gb.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_GirlA/z_en_girla.c5
-rw-r--r--soh/src/overlays/actors/ovl_En_Gm/z_en_gm.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Guest/z_en_guest.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_In/z_en_in.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Insect/z_en_insect.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Js/z_en_js.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Mb/z_en_mb.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Md/z_en_md.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Mm/z_en_mm.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ms/z_en_ms.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Nb/z_en_nb.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c4
-rw-r--r--soh/src/overlays/actors/ovl_En_Owl/z_en_owl.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Poh/z_en_poh.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Sa/z_en_sa.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Skj/z_en_skj.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_St/z_en_st.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Sw/z_en_sw.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c9
-rw-r--r--soh/src/overlays/actors/ovl_En_Test/z_en_test.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Tite/z_en_tite.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Tr/z_en_tr.c3
-rw-r--r--soh/src/overlays/actors/ovl_En_Vali/z_en_vali.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Xc/z_en_xc.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Zf/z_en_zf.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c2
-rw-r--r--soh/src/overlays/actors/ovl_En_Zo/z_en_zo.c3
-rw-r--r--soh/src/overlays/actors/ovl_player_actor/z_player.c3
126 files changed, 279 insertions, 14 deletions
diff --git a/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c b/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c
index 34a8e5f2a..49584e2cd 100644
--- a/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c
+++ b/soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c
@@ -109,7 +109,9 @@ void BgDyYoseizo_Init(Actor* thisx, PlayState* play2) {
this->actionFunc = BgDyYoseizo_CheckMagicAcquired;
}
-void BgDyYoseizo_Destroy(Actor* this, PlayState* play) {
+void BgDyYoseizo_Destroy(Actor* thisx, PlayState* play) {
+ BgDyYoseizo* this = (BgDyYoseizo*)thisx;
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
static Color_RGB8 sParticlePrimColors[] = {
diff --git a/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c b/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c
index 4f1d8244f..98d1da158 100644
--- a/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c
+++ b/soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c
@@ -346,6 +346,8 @@ void BossSst_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyJntSph(play, &this->colliderJntSph);
Collider_DestroyCylinder(play, &this->colliderCyl);
Audio_StopSfxByPos(&this->center);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void BossSst_HeadSetupLurk(BossSst* this) {
diff --git a/soh/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c b/soh/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c
index db9c80fe6..fb302bb27 100644
--- a/soh/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c
+++ b/soh/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c
@@ -24,6 +24,9 @@ void DemoIk_Type1Draw(DemoIk* this, PlayState* play);
void DemoIk_Type2Draw(DemoIk* this, PlayState* play);
void DemoIk_Destroy(Actor* thisx, PlayState* play) {
+ DemoIk* this = (DemoIk*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void DemoIk_BgCheck(DemoIk* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c b/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
index 5ea59cef7..05a292f16 100644
--- a/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
+++ b/soh/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
@@ -1163,7 +1163,10 @@ void DemoIm_Init(Actor* thisx, PlayState* play) {
}
void DemoIm_Destroy(Actor* thisx, PlayState* play) {
+ DemoIm* this = (DemoIm*)thisx;
DemoIm_DestroyCollider(thisx, play);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 DemoIm_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
diff --git a/soh/src/overlays/actors/ovl_Door_Killer/z_door_killer.c b/soh/src/overlays/actors/ovl_Door_Killer/z_door_killer.c
index 8784647b0..4558838cb 100644
--- a/soh/src/overlays/actors/ovl_Door_Killer/z_door_killer.c
+++ b/soh/src/overlays/actors/ovl_Door_Killer/z_door_killer.c
@@ -203,6 +203,8 @@ void DoorKiller_Destroy(Actor* thisx, PlayState* play) {
if ((thisx->params & 0xFF) == DOOR_KILLER_DOOR) {
Collider_DestroyCylinder(play, &this->colliderCylinder);
Collider_DestroyJntSph(play, &this->colliderJntSph);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
}
diff --git a/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c
index 5152d290a..965409ac2 100644
--- a/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c
+++ b/soh/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c
@@ -97,7 +97,16 @@ void DoorWarp1_Destroy(Actor* thisx, PlayState* play) {
play->envCtx.adjAmbientColor[i] = play->envCtx.adjFogColor[i] = play->envCtx.adjLight1Color[i] =
0;
}
- //! @bug SkelAnime_Free is not called for crystal variants
+
+ switch (this->actor.params) {
+ case WARP_DUNGEON_ADULT:
+ case WARP_BLUE_CRYSTAL:
+ case WARP_PURPLE_CRYSTAL:
+ SkelAnime_Free(&this->skelAnime, play);
+ break;
+ default:
+ break;
+ }
}
void DoorWarp1_SetupWarp(DoorWarp1* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Am/z_en_am.c b/soh/src/overlays/actors/ovl_En_Am/z_en_am.c
index 44d6f036c..71b562eff 100644
--- a/soh/src/overlays/actors/ovl_En_Am/z_en_am.c
+++ b/soh/src/overlays/actors/ovl_En_Am/z_en_am.c
@@ -249,6 +249,8 @@ void EnAm_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->hurtCollider);
Collider_DestroyCylinder(play, &this->blockCollider);
//! @bug Quad collider is not destroyed (though destroy doesnt really do anything anyway)
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnAm_SpawnEffects(EnAm* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c b/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c
index f9d76b60e..97664aa17 100644
--- a/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c
+++ b/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c
@@ -95,6 +95,8 @@ void EnAni_Destroy(Actor* thisx, PlayState* play) {
EnAni* this = (EnAni*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnAni_SetText(EnAni* this, PlayState* play, u16 textId) {
diff --git a/soh/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c b/soh/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c
index 7b99e4bcb..08e06ac04 100644
--- a/soh/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c
+++ b/soh/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c
@@ -167,6 +167,8 @@ void EnAnubice_Destroy(Actor* thisx, PlayState* play) {
tag->anubis = NULL;
}
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnAnubice_FindFlameCircles(EnAnubice* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c b/soh/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c
index a73c542c6..fd824bed7 100644
--- a/soh/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c
+++ b/soh/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c
@@ -68,6 +68,8 @@ void EnAttackNiw_Destroy(Actor* thisx, PlayState* play) {
cucco->unk_296--;
}
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_809B5268(EnAttackNiw* this, PlayState* play, s16 arg2) {
diff --git a/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c b/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c
index 35f6eb064..9f07839da 100644
--- a/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c
+++ b/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c
@@ -403,6 +403,8 @@ void EnBb_Destroy(Actor* thisx, PlayState* play) {
EnBb* this = (EnBb*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnBb_SetupFlameTrail(EnBb* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c b/soh/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c
index 24b2ff9f3..8e544a151 100644
--- a/soh/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c
+++ b/soh/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c
@@ -196,6 +196,8 @@ void EnBigokuta_Destroy(Actor* thisx, PlayState* play) {
for (i = 0; i < ARRAY_COUNT(this->cylinder); i++) {
Collider_DestroyCylinder(play, &this->cylinder[i]);
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_809BCE3C(EnBigokuta* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Bili/z_en_bili.c b/soh/src/overlays/actors/ovl_En_Bili/z_en_bili.c
index d2ce6686e..971ac0f20 100644
--- a/soh/src/overlays/actors/ovl_En_Bili/z_en_bili.c
+++ b/soh/src/overlays/actors/ovl_En_Bili/z_en_bili.c
@@ -136,6 +136,8 @@ void EnBili_Destroy(Actor* thisx, PlayState* play) {
EnBili* this = (EnBili*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
// Setup Action Functions
diff --git a/soh/src/overlays/actors/ovl_En_Bird/z_en_bird.c b/soh/src/overlays/actors/ovl_En_Bird/z_en_bird.c
index fc0c673a1..f521e1718 100644
--- a/soh/src/overlays/actors/ovl_En_Bird/z_en_bird.c
+++ b/soh/src/overlays/actors/ovl_En_Bird/z_en_bird.c
@@ -62,6 +62,9 @@ void EnBird_Init(Actor* thisx, PlayState* play) {
}
void EnBird_Destroy(Actor* thisx, PlayState* play) {
+ EnBird* this = (EnBird*)thisx;
+
+ SkelAnime_Free(&this->skelAnime, play);
}
void func_809C1CAC(EnBird* this, s16 params) {
diff --git a/soh/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/soh/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c
index db092c862..75f27576b 100644
--- a/soh/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c
+++ b/soh/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c
@@ -89,6 +89,9 @@ void EnBomBowlMan_Init(Actor* thisx, PlayState* play2) {
}
void EnBomBowlMan_Destroy(Actor* thisx, PlayState* play) {
+ EnBomBowlMan* this = (EnBomBowlMan*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnBomBowMan_SetupWaitAsleep(EnBomBowlMan* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Box/z_en_box.c b/soh/src/overlays/actors/ovl_En_Box/z_en_box.c
index 2a83e587e..54ec3cf29 100644
--- a/soh/src/overlays/actors/ovl_En_Box/z_en_box.c
+++ b/soh/src/overlays/actors/ovl_En_Box/z_en_box.c
@@ -208,6 +208,8 @@ void EnBox_Destroy(Actor* thisx, PlayState* play) {
EnBox* this = (EnBox*)thisx;
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelanime);
}
void EnBox_RandomDustKinematic(EnBox* this, Vec3f* pos, Vec3f* velocity, Vec3f* accel) {
diff --git a/soh/src/overlays/actors/ovl_En_Brob/z_en_brob.c b/soh/src/overlays/actors/ovl_En_Brob/z_en_brob.c
index a7c2d119c..78607e0fe 100644
--- a/soh/src/overlays/actors/ovl_En_Brob/z_en_brob.c
+++ b/soh/src/overlays/actors/ovl_En_Brob/z_en_brob.c
@@ -102,6 +102,8 @@ void EnBrob_Destroy(Actor* thisx, PlayState* play) {
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
Collider_DestroyCylinder(play, &this->colliders[0]);
Collider_DestroyCylinder(play, &this->colliders[1]);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_809CADDC(EnBrob* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Butte/z_en_butte.c b/soh/src/overlays/actors/ovl_En_Butte/z_en_butte.c
index cfe109185..a775137f4 100644
--- a/soh/src/overlays/actors/ovl_En_Butte/z_en_butte.c
+++ b/soh/src/overlays/actors/ovl_En_Butte/z_en_butte.c
@@ -180,6 +180,8 @@ void EnButte_Destroy(Actor* thisx, PlayState* play2) {
EnButte* this = (EnButte*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_809CD56C(EnButte* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Bw/z_en_bw.c b/soh/src/overlays/actors/ovl_En_Bw/z_en_bw.c
index acf4727b4..3b7155b5e 100644
--- a/soh/src/overlays/actors/ovl_En_Bw/z_en_bw.c
+++ b/soh/src/overlays/actors/ovl_En_Bw/z_en_bw.c
@@ -161,6 +161,8 @@ void EnBw_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->collider1);
Collider_DestroyCylinder(play, &this->collider2);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_809CE884(EnBw* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/soh/src/overlays/actors/ovl_En_Cow/z_en_cow.c
index 1c9df2c7c..b9e0136f1 100644
--- a/soh/src/overlays/actors/ovl_En_Cow/z_en_cow.c
+++ b/soh/src/overlays/actors/ovl_En_Cow/z_en_cow.c
@@ -162,6 +162,8 @@ void EnCow_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->colliders[0]);
Collider_DestroyCylinder(play, &this->colliders[1]);
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_809DF494(EnCow* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Crow/z_en_crow.c b/soh/src/overlays/actors/ovl_En_Crow/z_en_crow.c
index 40af76a4d..6598406ce 100644
--- a/soh/src/overlays/actors/ovl_En_Crow/z_en_crow.c
+++ b/soh/src/overlays/actors/ovl_En_Crow/z_en_crow.c
@@ -124,6 +124,8 @@ void EnCrow_Destroy(Actor* thisx, PlayState* play) {
EnCrow* this = (EnCrow*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
// Setup Action functions
diff --git a/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c b/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c
index 497a6d527..a3006daec 100644
--- a/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c
+++ b/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c
@@ -161,6 +161,8 @@ void EnCs_Destroy(Actor* thisx, PlayState* play) {
EnCs* this = (EnCs*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnCs_GetTalkState(EnCs* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/soh/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c
index 57d2b9055..635f77e41 100644
--- a/soh/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c
+++ b/soh/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c
@@ -219,6 +219,8 @@ void EnDaiku_Destroy(Actor* thisx, PlayState* play) {
EnDaiku* this = (EnDaiku*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnDaiku_UpdateTalking(EnDaiku* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c b/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c
index a7a107d3a..e098051c7 100644
--- a/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c
+++ b/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c
@@ -208,6 +208,8 @@ void EnDaikuKakariko_Destroy(Actor* thisx, PlayState* play) {
EnDaikuKakariko* this = (EnDaikuKakariko*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnDaikuKakariko_GetTalkState(EnDaikuKakariko* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c b/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c
index 5fa65f49c..9f1658ed9 100644
--- a/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c
+++ b/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c
@@ -278,6 +278,8 @@ void EnDekubaba_Destroy(Actor* thisx, PlayState* play) {
EnDekubaba* this = (EnDekubaba*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDekubaba_DisableHitboxes(EnDekubaba* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c b/soh/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c
index 3305700ec..86daf5187 100644
--- a/soh/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c
+++ b/soh/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c
@@ -136,6 +136,8 @@ void EnDekunuts_Destroy(Actor* thisx, PlayState* play) {
if (this->actor.params != DEKUNUTS_FLOWER) {
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
}
diff --git a/soh/src/overlays/actors/ovl_En_Dh/z_en_dh.c b/soh/src/overlays/actors/ovl_En_Dh/z_en_dh.c
index b41e9cdff..b64d327a9 100644
--- a/soh/src/overlays/actors/ovl_En_Dh/z_en_dh.c
+++ b/soh/src/overlays/actors/ovl_En_Dh/z_en_dh.c
@@ -164,6 +164,8 @@ void EnDh_Destroy(Actor* thisx, PlayState* play) {
func_800F5B58();
Collider_DestroyCylinder(play, &this->collider1);
Collider_DestroyJntSph(play, &this->collider2);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDh_SpawnDebris(PlayState* play, EnDh* this, Vec3f* spawnPos, f32 spread, s32 arg4, f32 accelXZ,
diff --git a/soh/src/overlays/actors/ovl_En_Dha/z_en_dha.c b/soh/src/overlays/actors/ovl_En_Dha/z_en_dha.c
index dda60bfe4..090bac2d2 100644
--- a/soh/src/overlays/actors/ovl_En_Dha/z_en_dha.c
+++ b/soh/src/overlays/actors/ovl_En_Dha/z_en_dha.c
@@ -177,6 +177,8 @@ void EnDha_Destroy(Actor* thisx, PlayState* play) {
EnDha* this = (EnDha*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDha_SetupWait(EnDha* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c b/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c
index cbd6cee2b..a54b87e7b 100644
--- a/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c
+++ b/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c
@@ -108,6 +108,8 @@ void EnDivingGame_Destroy(Actor* thisx, PlayState* play) {
gSaveContext.timer1State = 0;
}
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDivingGame_SpawnRuppy(EnDivingGame* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c
index 6df63c4de..3942e3b2f 100644
--- a/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c
+++ b/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c
@@ -200,6 +200,8 @@ void EnDns_Destroy(Actor* thisx, PlayState* play) {
EnDns* this = (EnDns*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDns_ChangeAnim(EnDns* this, u8 index) {
diff --git a/soh/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c b/soh/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c
index 215331857..6a0d204bf 100644
--- a/soh/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c
+++ b/soh/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c
@@ -96,6 +96,8 @@ void EnDntJiji_Destroy(Actor* thisx, PlayState* play) {
EnDntJiji* this = (EnDntJiji*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDntJiji_SetFlower(EnDntJiji* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c b/soh/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c
index 030735f5b..5f05992ca 100644
--- a/soh/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c
+++ b/soh/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c
@@ -167,6 +167,8 @@ void EnDntNomal_Destroy(Actor* thisx, PlayState* play) {
} else {
Collider_DestroyCylinder(play, &this->bodyCyl);
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDntNomal_WaitForObject(EnDntNomal* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c b/soh/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c
index 3f459e84d..62c83a231 100644
--- a/soh/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c
+++ b/soh/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c
@@ -88,6 +88,8 @@ void EnDodojr_Destroy(Actor* thisx, PlayState* play) {
EnDodojr* this = (EnDodojr*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_809F64D0(EnDodojr* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c b/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c
index 0f841389d..f6b0939e1 100644
--- a/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c
+++ b/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c
@@ -353,6 +353,8 @@ void EnDodongo_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyTris(play, &this->colliderHard);
Collider_DestroyJntSph(play, &this->colliderBody);
Collider_DestroyQuad(play, &this->colliderAT);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDodongo_SetupIdle(EnDodongo* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c b/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c
index e2e63fc03..c860abe26 100644
--- a/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c
+++ b/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c
@@ -300,6 +300,8 @@ void EnDog_Init(Actor* thisx, PlayState* play) {
void EnDog_Destroy(Actor* thisx, PlayState* play) {
EnDog* this = (EnDog*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDog_FollowPath(EnDog* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Door/z_en_door.c b/soh/src/overlays/actors/ovl_En_Door/z_en_door.c
index bd60075fd..2e830f250 100644
--- a/soh/src/overlays/actors/ovl_En_Door/z_en_door.c
+++ b/soh/src/overlays/actors/ovl_En_Door/z_en_door.c
@@ -143,6 +143,8 @@ void EnDoor_Destroy(Actor* thisx, PlayState* play) {
if (transitionEntry->id < 0) {
transitionEntry->id = -transitionEntry->id;
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDoor_SetupType(EnDoor* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c b/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c
index 84b4cd816..cebceaf9e 100644
--- a/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c
+++ b/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c
@@ -50,6 +50,9 @@ void EnDs_Init(Actor* thisx, PlayState* play) {
}
void EnDs_Destroy(Actor* thisx, PlayState* play) {
+ EnDs* this = (EnDs*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnDs_Talk(EnDs* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c b/soh/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c
index b7bfa42f4..7690dfaf5 100644
--- a/soh/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c
+++ b/soh/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c
@@ -171,6 +171,8 @@ void EnEiyer_Init(Actor* thisx, PlayState* play) {
void EnEiyer_Destroy(Actor* thisx, PlayState* play) {
EnEiyer* this = (EnEiyer*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelanime);
}
void EnEiyer_RotateAroundHome(EnEiyer* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c
index fe39cea99..7911cbddd 100644
--- a/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c
+++ b/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c
@@ -437,6 +437,8 @@ void EnElf_Destroy(Actor* thisx, PlayState* play) {
LightContext_RemoveLight(play, &play->lightCtx, this->lightNodeGlow);
LightContext_RemoveLight(play, &play->lightCtx, this->lightNodeNoGlow);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80A02A20(EnElf* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Fd/z_en_fd.c b/soh/src/overlays/actors/ovl_En_Fd/z_en_fd.c
index de2aaf391..39988998f 100644
--- a/soh/src/overlays/actors/ovl_En_Fd/z_en_fd.c
+++ b/soh/src/overlays/actors/ovl_En_Fd/z_en_fd.c
@@ -472,6 +472,8 @@ void EnFd_Destroy(Actor* thisx, PlayState* play) {
EnFd* this = (EnFd*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnFd_Reappear(EnFd* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c b/soh/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c
index a62dc583c..231629b0b 100644
--- a/soh/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c
+++ b/soh/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c
@@ -198,6 +198,8 @@ void EnFirefly_Destroy(Actor* thisx, PlayState* play) {
EnFirefly* this = (EnFirefly*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnFirefly_SetupFlyIdle(EnFirefly* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Fish/z_en_fish.c b/soh/src/overlays/actors/ovl_En_Fish/z_en_fish.c
index be42dc521..4c1a9ba1f 100644
--- a/soh/src/overlays/actors/ovl_En_Fish/z_en_fish.c
+++ b/soh/src/overlays/actors/ovl_En_Fish/z_en_fish.c
@@ -157,6 +157,8 @@ void EnFish_Destroy(Actor* thisx, PlayState* play2) {
EnFish* this = (EnFish*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnFish_SetYOffset(EnFish* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c b/soh/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c
index 068e255f4..84725221a 100644
--- a/soh/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c
+++ b/soh/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c
@@ -179,6 +179,8 @@ void EnFloormas_Destroy(Actor* thisx, PlayState* play) {
EnFloormas* this = (EnFloormas*)thisx;
ColliderCylinder* col = &this->collider;
Collider_DestroyCylinder(play, col);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnFloormas_MakeInvulnerable(EnFloormas* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Fr/z_en_fr.c b/soh/src/overlays/actors/ovl_En_Fr/z_en_fr.c
index 5c7159da0..fa131fe00 100644
--- a/soh/src/overlays/actors/ovl_En_Fr/z_en_fr.c
+++ b/soh/src/overlays/actors/ovl_En_Fr/z_en_fr.c
@@ -309,6 +309,9 @@ void EnFr_Destroy(Actor* thisx, PlayState* play) {
EnFr* this = (EnFr*)thisx;
LightContext_RemoveLight(play, &play->lightCtx, this->lightNode);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
+ ResourceMgr_UnregisterSkeleton(&this->skelAnimeButterfly);
}
void EnFr_IsDivingIntoWater(EnFr* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c
index 13d32d757..20bc6dff6 100644
--- a/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c
+++ b/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c
@@ -99,6 +99,8 @@ void EnFu_Init(Actor* thisx, PlayState* play) {
void EnFu_Destroy(Actor* thisx, PlayState* play) {
EnFu* this = (EnFu*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelanime);
}
s32 func_80A1D94C(EnFu* this, PlayState* play, u16 textID, EnFuActionFunc actionFunc) {
diff --git a/soh/src/overlays/actors/ovl_En_Fw/z_en_fw.c b/soh/src/overlays/actors/ovl_En_Fw/z_en_fw.c
index b1b25bed5..ffac1fa0c 100644
--- a/soh/src/overlays/actors/ovl_En_Fw/z_en_fw.c
+++ b/soh/src/overlays/actors/ovl_En_Fw/z_en_fw.c
@@ -208,6 +208,8 @@ void EnFw_Init(Actor* thisx, PlayState* play) {
void EnFw_Destroy(Actor* thisx, PlayState* play) {
EnFw* this = (EnFw*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnFw_Bounce(EnFw* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Gb/z_en_gb.c b/soh/src/overlays/actors/ovl_En_Gb/z_en_gb.c
index 0110c3017..ff4be49e6 100644
--- a/soh/src/overlays/actors/ovl_En_Gb/z_en_gb.c
+++ b/soh/src/overlays/actors/ovl_En_Gb/z_en_gb.c
@@ -224,6 +224,8 @@ void EnGb_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->collider);
LightContext_RemoveLight(play, &play->lightCtx, this->light);
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80A2F608(EnGb* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c b/soh/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
index c3b56c44e..7e397050f 100644
--- a/soh/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
+++ b/soh/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
@@ -203,6 +203,8 @@ void EnGe1_Destroy(Actor* thisx, PlayState* play) {
EnGe1* this = (EnGe1*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnGe1_SetTalkAction(EnGe1* this, PlayState* play, u16 textId, f32 arg3, EnGe1ActionFunc actionFunc) {
diff --git a/soh/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c b/soh/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c
index ab5a48b7a..9437100d5 100644
--- a/soh/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c
+++ b/soh/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c
@@ -174,6 +174,8 @@ void EnGe2_Destroy(Actor* thisx, PlayState* play) {
EnGe2* this = (EnGe2*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
// Detection/check functions
diff --git a/soh/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c b/soh/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c
index fecf3e9ea..4da2b2db7 100644
--- a/soh/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c
+++ b/soh/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c
@@ -90,6 +90,8 @@ void EnGe3_Destroy(Actor* thisx, PlayState* play) {
EnGe3* this = (EnGe3*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnGe3_TurnToFacePlayer(EnGe3* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c b/soh/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
index 909aa91b4..040f516ad 100644
--- a/soh/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
+++ b/soh/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
@@ -269,6 +269,8 @@ void EnGeldB_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyTris(play, &this->blockCollider);
Collider_DestroyCylinder(play, &this->bodyCollider);
Collider_DestroyQuad(play, &this->swordCollider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnGeldB_ReactToPlayer(PlayState* play, EnGeldB* this, s16 arg2) {
diff --git a/soh/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/soh/src/overlays/actors/ovl_En_GirlA/z_en_girla.c
index ea41a2e69..bd99a9ba1 100644
--- a/soh/src/overlays/actors/ovl_En_GirlA/z_en_girla.c
+++ b/soh/src/overlays/actors/ovl_En_GirlA/z_en_girla.c
@@ -452,11 +452,6 @@ void EnGirlA_Init(Actor* thisx, PlayState* play) {
}
void EnGirlA_Destroy(Actor* thisx, PlayState* play) {
- EnGirlA* this = (EnGirlA*)thisx;
-
- if (this->isInitialized) {
- SkelAnime_Free(&this->skelAnime, play);
- }
}
s32 EnGirlA_CanBuy_Arrows(PlayState* play, EnGirlA* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/soh/src/overlays/actors/ovl_En_Gm/z_en_gm.c
index 2519fcb1e..3f6ae565d 100644
--- a/soh/src/overlays/actors/ovl_En_Gm/z_en_gm.c
+++ b/soh/src/overlays/actors/ovl_En_Gm/z_en_gm.c
@@ -88,6 +88,8 @@ void EnGm_Destroy(Actor* thisx, PlayState* play) {
EnGm* this = (EnGm*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80A3D7C8(void) {
diff --git a/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c b/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c
index c70a55932..ad7d99686 100644
--- a/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c
+++ b/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c
@@ -1691,6 +1691,9 @@ void EnGo2_Init(Actor* thisx, PlayState* play) {
}
void EnGo2_Destroy(Actor* thisx, PlayState* play) {
+ EnGo2* this = (EnGo2*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnGo2_CurledUp(EnGo2* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c b/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c
index decc90f5b..641eb0872 100644
--- a/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c
+++ b/soh/src/overlays/actors/ovl_En_Goma/z_en_goma.c
@@ -177,6 +177,8 @@ void EnGoma_Destroy(Actor* thisx, PlayState* play) {
if (this->actor.params < 10) {
Collider_DestroyCylinder(play, &this->colCyl1);
Collider_DestroyCylinder(play, &this->colCyl2);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelanime);
}
}
diff --git a/soh/src/overlays/actors/ovl_En_Guest/z_en_guest.c b/soh/src/overlays/actors/ovl_En_Guest/z_en_guest.c
index bdf90381a..69d543d27 100644
--- a/soh/src/overlays/actors/ovl_En_Guest/z_en_guest.c
+++ b/soh/src/overlays/actors/ovl_En_Guest/z_en_guest.c
@@ -71,6 +71,8 @@ void EnGuest_Destroy(Actor* thisx, PlayState* play) {
EnGuest* this = (EnGuest*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnGuest_Update(Actor* thisx, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c b/soh/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c
index 7c06608ff..507d480b2 100644
--- a/soh/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c
+++ b/soh/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c
@@ -142,6 +142,9 @@ void EnHeishi1_Init(Actor* thisx, PlayState* play) {
}
void EnHeishi1_Destroy(Actor* thisx, PlayState* play) {
+ EnHeishi1* this = (EnHeishi1*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnHeishi1_SetupWalk(EnHeishi1* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c b/soh/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c
index 89ea0e499..35c351827 100644
--- a/soh/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c
+++ b/soh/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c
@@ -166,6 +166,8 @@ void EnHeishi2_Destroy(Actor* thisx, PlayState* play) {
if ((this->collider.dim.radius != 0) || (this->collider.dim.height != 0)) {
Collider_DestroyCylinder(play, &this->collider);
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnHeishi2_DoNothing1(EnHeishi2* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c b/soh/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
index 06407227f..83dae5d81 100644
--- a/soh/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
+++ b/soh/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
@@ -90,6 +90,8 @@ void EnHeishi3_Destroy(Actor* thisx, PlayState* play) {
EnHeishi3* this = (EnHeishi3*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnHeishi3_SetupGuardType(EnHeishi3* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c b/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c
index f3a9ddc3a..f684f4ae5 100644
--- a/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c
+++ b/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c
@@ -107,6 +107,8 @@ void EnHeishi4_Destroy(Actor* thisx, PlayState* play) {
EnHeishi4* this = (EnHeishi4*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80A56328(EnHeishi4* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c b/soh/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c
index 8f6cc3ec6..f21966d93 100644
--- a/soh/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c
+++ b/soh/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c
@@ -105,6 +105,8 @@ void EnHintnuts_Destroy(Actor* thisx, PlayState* play) {
if (this->actor.params != 0xA) {
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
}
diff --git a/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c
index 17efce312..b730915e6 100644
--- a/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c
+++ b/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c
@@ -116,6 +116,8 @@ void EnHs_Destroy(Actor* thisx, PlayState* play) {
EnHs* this = (EnHs*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80A6E53C(EnHs* this, PlayState* play, u16 textId, EnHsActionFunc actionFunc) {
diff --git a/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c b/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c
index 6e0e58913..01deb32fb 100644
--- a/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c
+++ b/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c
@@ -71,6 +71,8 @@ void EnHs2_Destroy(Actor* thisx, PlayState* play) {
EnHs2* this = (EnHs2*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80A6F0B4(EnHs2* this, PlayState* play, u16 textId, EnHs2ActionFunc actionFunc) {
diff --git a/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c
index b7eb3a301..248094843 100644
--- a/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c
+++ b/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c
@@ -906,6 +906,8 @@ void EnHy_Destroy(Actor* thisx, PlayState* play) {
EnHy* this = (EnHy*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnHy_InitImpl(EnHy* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c
index 17825746d..d57ec0d45 100644
--- a/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c
+++ b/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c
@@ -175,6 +175,8 @@ void EnIk_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyTris(play, &this->shieldCollider);
Collider_DestroyCylinder(play, &this->bodyCollider);
Collider_DestroyQuad(play, &this->axeCollider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnIk_SetupAction(EnIk* this, EnIkActionFunc actionFunc) {
diff --git a/soh/src/overlays/actors/ovl_En_In/z_en_in.c b/soh/src/overlays/actors/ovl_En_In/z_en_in.c
index 720f371b4..246a0f3ac 100644
--- a/soh/src/overlays/actors/ovl_En_In/z_en_in.c
+++ b/soh/src/overlays/actors/ovl_En_In/z_en_in.c
@@ -503,6 +503,8 @@ void EnIn_Destroy(Actor* thisx, PlayState* play) {
if (this->actionFunc != NULL && this->actionFunc != func_80A79FB0) {
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
}
diff --git a/soh/src/overlays/actors/ovl_En_Insect/z_en_insect.c b/soh/src/overlays/actors/ovl_En_Insect/z_en_insect.c
index c6da75926..8e1604e9a 100644
--- a/soh/src/overlays/actors/ovl_En_Insect/z_en_insect.c
+++ b/soh/src/overlays/actors/ovl_En_Insect/z_en_insect.c
@@ -234,6 +234,8 @@ void EnInsect_Destroy(Actor* thisx, PlayState* play) {
if ((temp_v0 == 2 || temp_v0 == 3) && D_80A7DEB8 > 0) {
D_80A7DEB8--;
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80A7C3A0(EnInsect* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c b/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c
index 9b729d260..fbea8b130 100644
--- a/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c
+++ b/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c
@@ -143,6 +143,8 @@ void EnJj_Destroy(Actor* thisx, PlayState* play) {
case JABUJABU_MAIN:
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
break;
case JABUJABU_COLLISION:
diff --git a/soh/src/overlays/actors/ovl_En_Js/z_en_js.c b/soh/src/overlays/actors/ovl_En_Js/z_en_js.c
index 3248ad33f..12f443ec3 100644
--- a/soh/src/overlays/actors/ovl_En_Js/z_en_js.c
+++ b/soh/src/overlays/actors/ovl_En_Js/z_en_js.c
@@ -76,6 +76,8 @@ void EnJs_Destroy(Actor* thisx, PlayState* play) {
EnJs* this = (EnJs*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
u8 func_80A88F64(EnJs* this, PlayState* play, u16 textId) {
diff --git a/soh/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/soh/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c
index 2d2e2c6a6..10baf4b03 100644
--- a/soh/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c
+++ b/soh/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c
@@ -59,8 +59,7 @@ void EnKakasi_Destroy(Actor* thisx, PlayState* play) {
EnKakasi* this = (EnKakasi*)thisx;
Collider_DestroyCylinder(play, &this->collider);
- SkelAnime_Free(&this->skelanime, play); // OTR - Fixed this memory leak
- //! @bug SkelAnime_Free is not called
+ SkelAnime_Free(&this->skelanime, play);
}
void EnKakasi_Init(Actor* thisx, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c b/soh/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c
index efb05975e..a61323f38 100644
--- a/soh/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c
+++ b/soh/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c
@@ -109,8 +109,7 @@ void EnKakasi2_Destroy(Actor* thisx, PlayState* play) {
EnKakasi2* this = (EnKakasi2*)thisx;
Collider_DestroyCylinder(play, &this->collider);
- SkelAnime_Free(&this->skelAnime, play); // OTR - Fixed this memory leak
- //! @bug SkelAnime_Free is not called
+ SkelAnime_Free(&this->skelAnime, play);
}
void func_80A90264(EnKakasi2* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c b/soh/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c
index 95b0e405f..6d000d6fe 100644
--- a/soh/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c
+++ b/soh/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c
@@ -63,8 +63,7 @@ void EnKakasi3_Destroy(Actor* thisx, PlayState* play) {
EnKakasi3* this = (EnKakasi3*)thisx;
Collider_DestroyCylinder(play, &this->collider);
- SkelAnime_Free(&this->skelAnime, play); //OTR - Fixed this memory leak
- //! @bug SkelAnime_Free is not called
+ SkelAnime_Free(&this->skelAnime, play);
}
void EnKakasi3_Init(Actor* thisx, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c b/soh/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c
index de209a242..6632b949b 100644
--- a/soh/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c
+++ b/soh/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c
@@ -119,6 +119,8 @@ void EnKarebaba_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->bodyCollider);
Collider_DestroyCylinder(play, &this->headCollider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnKarebaba_ResetCollider(EnKarebaba* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c b/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c
index 5c8a41671..6dec44fe6 100644
--- a/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c
+++ b/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c
@@ -1145,6 +1145,8 @@ void EnKo_Init(Actor* thisx, PlayState* play) {
void EnKo_Destroy(Actor* thisx, PlayState* play) {
EnKo* this = (EnKo*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80A99048(EnKo* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c b/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c
index c9f3f6112..30a8d39b9 100644
--- a/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c
+++ b/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c
@@ -385,6 +385,8 @@ void EnKz_Destroy(Actor* thisx, PlayState* play) {
EnKz* this = (EnKz*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelanime);
}
void EnKz_PreMweepWait(EnKz* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Mb/z_en_mb.c b/soh/src/overlays/actors/ovl_En_Mb/z_en_mb.c
index f932e9aa5..b8c7bfc19 100644
--- a/soh/src/overlays/actors/ovl_En_Mb/z_en_mb.c
+++ b/soh/src/overlays/actors/ovl_En_Mb/z_en_mb.c
@@ -336,6 +336,8 @@ void EnMb_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyTris(play, &this->frontShielding);
Collider_DestroyCylinder(play, &this->hitbox);
Collider_DestroyQuad(play, &this->attackCollider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnMb_FaceWaypoint(EnMb* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Md/z_en_md.c b/soh/src/overlays/actors/ovl_En_Md/z_en_md.c
index b4b4a7b07..72ecf32be 100644
--- a/soh/src/overlays/actors/ovl_En_Md/z_en_md.c
+++ b/soh/src/overlays/actors/ovl_En_Md/z_en_md.c
@@ -699,6 +699,8 @@ void EnMd_Init(Actor* thisx, PlayState* play) {
void EnMd_Destroy(Actor* thisx, PlayState* play) {
EnMd* this = (EnMd*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AAB874(EnMd* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c b/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c
index 1ffca5429..67399b3d6 100644
--- a/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c
+++ b/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c
@@ -79,6 +79,8 @@ void EnMk_Destroy(Actor* thisx, PlayState* play) {
EnMk* this = (EnMk*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AACA40(EnMk* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Mm/z_en_mm.c b/soh/src/overlays/actors/ovl_En_Mm/z_en_mm.c
index ce31cf2c7..bd5f3107a 100644
--- a/soh/src/overlays/actors/ovl_En_Mm/z_en_mm.c
+++ b/soh/src/overlays/actors/ovl_En_Mm/z_en_mm.c
@@ -198,6 +198,8 @@ void EnMm_Destroy(Actor* thisx, PlayState* play) {
EnMm* this = (EnMm*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80AADA70(void) {
diff --git a/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c b/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c
index d48517704..f567727c5 100644
--- a/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c
+++ b/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c
@@ -161,6 +161,8 @@ void EnMm2_Destroy(Actor* thisx, PlayState* play) {
EnMm2* this = (EnMm2*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80AAF224(EnMm2* this, PlayState* play, EnMm2ActionFunc actionFunc) {
diff --git a/soh/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/soh/src/overlays/actors/ovl_En_Ms/z_en_ms.c
index 3e0321b49..923cb5011 100644
--- a/soh/src/overlays/actors/ovl_En_Ms/z_en_ms.c
+++ b/soh/src/overlays/actors/ovl_En_Ms/z_en_ms.c
@@ -99,6 +99,8 @@ void EnMs_Destroy(Actor* thisx, PlayState* play) {
EnMs* this = (EnMs*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnMs_Wait(EnMs* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/soh/src/overlays/actors/ovl_En_Nb/z_en_nb.c
index 06dc6b868..560cb6cfa 100644
--- a/soh/src/overlays/actors/ovl_En_Nb/z_en_nb.c
+++ b/soh/src/overlays/actors/ovl_En_Nb/z_en_nb.c
@@ -147,6 +147,8 @@ void EnNb_Destroy(Actor* thisx, PlayState* play) {
D_80AB4318 = 0;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AB0FBC(EnNb* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c
index 6659350ff..e36296654 100644
--- a/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c
+++ b/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c
@@ -246,6 +246,8 @@ void EnNiw_Destroy(Actor* thisx, PlayState* play) {
EnNiw* this = (EnNiw*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AB5BF8(EnNiw* this, PlayState* play, s16 arg2) {
diff --git a/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c b/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c
index d6013fc79..db41089e8 100644
--- a/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c
+++ b/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c
@@ -93,6 +93,9 @@ void EnNiwGirl_Init(Actor* thisx, PlayState* play) {
}
void EnNiwGirl_Destroy(Actor* thisx, PlayState* play) {
+ EnNiwGirl* this = (EnNiwGirl*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnNiwGirl_Jump(EnNiwGirl* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c b/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c
index 63522dc64..088381c70 100644
--- a/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c
+++ b/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c
@@ -96,6 +96,8 @@ void EnNiwLady_Destroy(Actor* thisx, PlayState* play) {
EnNiwLady* this = (EnNiwLady*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnNiwLady_ChoseAnimation(EnNiwLady* this, PlayState* play, s32 arg2) {
diff --git a/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c b/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c
index 92a49fc57..9d958d0c5 100644
--- a/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c
+++ b/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c
@@ -163,6 +163,10 @@ void EnOkuta_Destroy(Actor* thisx, PlayState* play) {
EnOkuta* this = (EnOkuta*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ if (thisx->params == 0) {
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
+ }
}
void EnOkuta_SpawnBubbles(EnOkuta* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/soh/src/overlays/actors/ovl_En_Owl/z_en_owl.c
index 20c5373c1..eb7932aed 100644
--- a/soh/src/overlays/actors/ovl_En_Owl/z_en_owl.c
+++ b/soh/src/overlays/actors/ovl_En_Owl/z_en_owl.c
@@ -240,6 +240,9 @@ void EnOwl_Destroy(Actor* thisx, PlayState* play) {
EnOwl* this = (EnOwl*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime2);
}
/**
diff --git a/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c b/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
index c284af550..e3c5028e5 100644
--- a/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
+++ b/soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
@@ -124,6 +124,8 @@ void EnPartner_Destroy(Actor* thisx, PlayState* play) {
LightContext_RemoveLight(play, &play->lightCtx, this->lightNodeNoGlow);
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnPartner_UpdateLights(EnPartner* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c b/soh/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c
index 318fe2b8b..ec1bcd28b 100644
--- a/soh/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c
+++ b/soh/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c
@@ -256,6 +256,8 @@ void EnPeehat_Destroy(Actor* thisx, PlayState* play) {
parent->unk_2FA--;
}
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnPeehat_SpawnDust(PlayState* play, EnPeehat* this, Vec3f* pos, f32 arg3, s32 arg4, f32 arg5, f32 arg6) {
diff --git a/soh/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c b/soh/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c
index b5771c87d..8c2e6d569 100644
--- a/soh/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c
+++ b/soh/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c
@@ -86,6 +86,8 @@ void EnPoDesert_Destroy(Actor* thisx, PlayState* play) {
LightContext_RemoveLight(play, &play->lightCtx, this->lightNode);
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnPoDesert_SetNextPathPoint(EnPoDesert* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c b/soh/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c
index c7e8bf877..882ea5baf 100644
--- a/soh/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c
+++ b/soh/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c
@@ -188,6 +188,8 @@ void EnPoField_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->flameCollider);
Collider_DestroyCylinder(play, &this->collider);
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnPoField_SetupWaitForSpawn(EnPoField* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c
index e271da21a..7db0fcc16 100644
--- a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c
+++ b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c
@@ -117,6 +117,8 @@ void EnPoRelay_Destroy(Actor* thisx, PlayState* play) {
D_80AD8D24 = 0;
LightContext_RemoveLight(play, &play->lightCtx, this->lightNode);
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnPoRelay_SetupIdle(EnPoRelay* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c b/soh/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c
index 77dc6cbb0..def561831 100644
--- a/soh/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c
+++ b/soh/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c
@@ -238,6 +238,8 @@ void EnPoSisters_Destroy(Actor* thisx, PlayState* play) {
func_800F5B58();
}
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AD9240(EnPoSisters* this, s32 arg1, Vec3f* arg2) {
diff --git a/soh/src/overlays/actors/ovl_En_Poh/z_en_poh.c b/soh/src/overlays/actors/ovl_En_Poh/z_en_poh.c
index 117752a8e..dcf933967 100644
--- a/soh/src/overlays/actors/ovl_En_Poh/z_en_poh.c
+++ b/soh/src/overlays/actors/ovl_En_Poh/z_en_poh.c
@@ -254,6 +254,8 @@ void EnPoh_Destroy(Actor* thisx, PlayState* play) {
if (this->actor.params == EN_POH_RUPEE) {
D_80AE1A50--;
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80ADE114(EnPoh* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c b/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c
index cde57a6bf..bccf64b30 100644
--- a/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c
+++ b/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c
@@ -175,6 +175,8 @@ void EnRd_Destroy(Actor* thisx, PlayState* play) {
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
}
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AE2630(PlayState* play, Actor* thisx, s32 arg2) {
diff --git a/soh/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c b/soh/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c
index 9015f3407..a12149145 100644
--- a/soh/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c
+++ b/soh/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c
@@ -161,6 +161,8 @@ void EnReeba_Destroy(Actor* thisx, PlayState* play) {
}
}
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelanime);
}
void func_80AE4F40(EnReeba* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c b/soh/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c
index 6894a1c9c..557be5e40 100644
--- a/soh/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c
+++ b/soh/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c
@@ -205,6 +205,8 @@ void EnRu1_Destroy(Actor* thisx, PlayState* play) {
D_80AF1938 = 0;
EnRu1_DestroyColliders(this, play);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnRu1_UpdateEyes(EnRu1* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c b/soh/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
index 697871524..7e06207f0 100644
--- a/soh/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
+++ b/soh/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
@@ -108,6 +108,8 @@ void EnRu2_Destroy(Actor* thisx, PlayState* play) {
EnRu2* this = (EnRu2*)thisx;
D_80AF4118 = 0;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AF2608(EnRu2* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Sa/z_en_sa.c b/soh/src/overlays/actors/ovl_En_Sa/z_en_sa.c
index bb700f82b..3e1bc7fe5 100644
--- a/soh/src/overlays/actors/ovl_En_Sa/z_en_sa.c
+++ b/soh/src/overlays/actors/ovl_En_Sa/z_en_sa.c
@@ -532,6 +532,8 @@ void EnSa_Destroy(Actor* thisx, PlayState* play) {
EnSa* this = (EnSa*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AF6448(EnSa* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c b/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c
index 582e66a97..23a530fd7 100644
--- a/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c
+++ b/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c
@@ -91,6 +91,8 @@ void EnShopnuts_Destroy(Actor* thisx, PlayState* play) {
EnShopnuts* this = (EnShopnuts*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnShopnuts_SetupWait(EnShopnuts* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c
index 185eb265f..ef88637bf 100644
--- a/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c
+++ b/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c
@@ -185,6 +185,8 @@ void EnSkb_Destroy(Actor* thisx, PlayState* play) {
}
}
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80AFCD60(EnSkb* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Skj/z_en_skj.c b/soh/src/overlays/actors/ovl_En_Skj/z_en_skj.c
index a93e30107..a5ba6ef0a 100644
--- a/soh/src/overlays/actors/ovl_En_Skj/z_en_skj.c
+++ b/soh/src/overlays/actors/ovl_En_Skj/z_en_skj.c
@@ -464,6 +464,8 @@ void EnSkj_Destroy(Actor* thisx, PlayState* play) {
EnSkj* this = (EnSkj*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnSkj_RangeCheck(Player* player, EnSkj* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c b/soh/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c
index 3a05dbfd9..45768898c 100644
--- a/soh/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c
+++ b/soh/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c
@@ -643,6 +643,8 @@ void EnSsh_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->colCylinder[i]);
}
Collider_DestroyJntSph(play, &this->colSph);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnSsh_Wait(EnSsh* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_St/z_en_st.c b/soh/src/overlays/actors/ovl_En_St/z_en_st.c
index c9de2bb59..66eb44abc 100644
--- a/soh/src/overlays/actors/ovl_En_St/z_en_st.c
+++ b/soh/src/overlays/actors/ovl_En_St/z_en_st.c
@@ -815,6 +815,8 @@ void EnSt_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->colCylinder[i]);
}
Collider_DestroyJntSph(play, &this->colSph);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnSt_WaitOnCeiling(EnSt* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c
index 064de26fe..b45560a04 100644
--- a/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c
+++ b/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c
@@ -173,6 +173,8 @@ void EnSth_Destroy(Actor* thisx, PlayState* play) {
EnSth* this = (EnSth*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnSth_WaitForObjectLoaded(EnSth* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/soh/src/overlays/actors/ovl_En_Sw/z_en_sw.c
index da860cb21..7c5473055 100644
--- a/soh/src/overlays/actors/ovl_En_Sw/z_en_sw.c
+++ b/soh/src/overlays/actors/ovl_En_Sw/z_en_sw.c
@@ -328,6 +328,8 @@ void EnSw_Destroy(Actor* thisx, PlayState* play) {
EnSw* this = (EnSw*)thisx;
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80B0C9F0(EnSw* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
index d3371f345..279ac1af3 100644
--- a/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
+++ b/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
@@ -183,6 +183,9 @@ void EnSyatekiMan_Init(Actor* thisx, PlayState* play) {
}
void EnSyatekiMan_Destroy(Actor* thisx, PlayState* play) {
+ EnSyatekiMan* this = (EnSyatekiMan*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnSyatekiMan_Start(EnSyatekiMan* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c b/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c
index cfbe70085..8c231a09c 100644
--- a/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c
+++ b/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c
@@ -103,6 +103,8 @@ void EnSyatekiNiw_Destroy(Actor* thisx, PlayState* play) {
EnSyatekiNiw* this = (EnSyatekiNiw*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80B11A94(EnSyatekiNiw* this, PlayState* play, s16 arg2) {
diff --git a/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c b/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c
index d3fb9ddba..3fa33d6b4 100644
--- a/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c
+++ b/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c
@@ -243,6 +243,8 @@ void EnTa_Destroy(Actor* thisx, PlayState* play) {
if (this->unk_2E0 & 0x200) {
func_800F5B58();
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80B142F4(EnTa* this, PlayState* play, u16 textId) {
diff --git a/soh/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c b/soh/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c
index 975bb3f14..8a208f104 100644
--- a/soh/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c
+++ b/soh/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c
@@ -14,6 +14,7 @@ void EnTakaraMan_Init(Actor* thisx, PlayState* play);
void EnTakaraMan_Reset(Actor* thisx, PlayState* play);
void EnTakaraMan_Update(Actor* thisx, PlayState* play);
void EnTakaraMan_Draw(Actor* thisx, PlayState* play);
+void EnTakaraMan_Destroy(Actor* thisx, PlayState* play);
void func_80B176E0(EnTakaraMan* this, PlayState* play);
void func_80B1778C(EnTakaraMan* this, PlayState* play);
@@ -29,7 +30,7 @@ const ActorInit En_Takara_Man_InitVars = {
OBJECT_TS,
sizeof(EnTakaraMan),
(ActorFunc)EnTakaraMan_Init,
- NULL,
+ (ActorFunc)EnTakaraMan_Destroy,
(ActorFunc)EnTakaraMan_Update,
(ActorFunc)EnTakaraMan_Draw,
(ActorResetFunc)EnTakaraMan_Reset,
@@ -72,6 +73,12 @@ void EnTakaraMan_Init(Actor* thisx, PlayState* play) {
this->actionFunc = func_80B176E0;
}
+void EnTakaraMan_Destroy(Actor* thisx, PlayState* play) {
+ EnTakaraMan* this = (EnTakaraMan*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
+}
+
void func_80B176E0(EnTakaraMan* this, PlayState* play) {
f32 frameCount = Animation_GetLastFrame(&object_ts_Anim_000498);
diff --git a/soh/src/overlays/actors/ovl_En_Test/z_en_test.c b/soh/src/overlays/actors/ovl_En_Test/z_en_test.c
index e30f94c48..be9033e96 100644
--- a/soh/src/overlays/actors/ovl_En_Test/z_en_test.c
+++ b/soh/src/overlays/actors/ovl_En_Test/z_en_test.c
@@ -321,6 +321,9 @@ void EnTest_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->shieldCollider);
Collider_DestroyCylinder(play, &this->bodyCollider);
Collider_DestroyQuad(play, &this->swordCollider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
+ ResourceMgr_UnregisterSkeleton(&this->upperSkelanime);
}
/**
diff --git a/soh/src/overlays/actors/ovl_En_Tite/z_en_tite.c b/soh/src/overlays/actors/ovl_En_Tite/z_en_tite.c
index f64d81163..c4741204b 100644
--- a/soh/src/overlays/actors/ovl_En_Tite/z_en_tite.c
+++ b/soh/src/overlays/actors/ovl_En_Tite/z_en_tite.c
@@ -217,6 +217,8 @@ void EnTite_Destroy(Actor* thisx, PlayState* play) {
osSyncPrintf("\n\n");
}
Collider_DestroyJntSph(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnTite_SetupIdle(EnTite* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c
index 60c78d04f..5bcbe6e22 100644
--- a/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c
+++ b/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c
@@ -526,6 +526,8 @@ void EnTk_Destroy(Actor* thisx, PlayState* play) {
EnTk* this = (EnTk*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnTk_Rest(EnTk* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c b/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c
index 7ec5db7e5..704790caf 100644
--- a/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c
+++ b/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c
@@ -138,6 +138,8 @@ void EnToryo_Destroy(Actor* thisx, PlayState* play) {
EnToryo* this = (EnToryo*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 func_80B203D8(EnToryo* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Tr/z_en_tr.c b/soh/src/overlays/actors/ovl_En_Tr/z_en_tr.c
index e9b2f6db4..6cc2e90c9 100644
--- a/soh/src/overlays/actors/ovl_En_Tr/z_en_tr.c
+++ b/soh/src/overlays/actors/ovl_En_Tr/z_en_tr.c
@@ -120,6 +120,9 @@ void EnTr_Init(Actor* thisx, PlayState* play) {
}
void EnTr_Destroy(Actor* thisx, PlayState* play) {
+ EnTr* this = (EnTr*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnTr_CrySpellcast(EnTr* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Vali/z_en_vali.c b/soh/src/overlays/actors/ovl_En_Vali/z_en_vali.c
index 90254a29e..5ca56ead7 100644
--- a/soh/src/overlays/actors/ovl_En_Vali/z_en_vali.c
+++ b/soh/src/overlays/actors/ovl_En_Vali/z_en_vali.c
@@ -171,6 +171,8 @@ void EnVali_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyQuad(play, &this->leftArmCollider);
Collider_DestroyQuad(play, &this->rightArmCollider);
Collider_DestroyCylinder(play, &this->bodyCollider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnVali_SetupLurk(EnVali* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c b/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c
index 2e88d20ad..4eac68129 100644
--- a/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c
+++ b/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c
@@ -162,6 +162,8 @@ void EnVm_Destroy(Actor* thisx, PlayState* play) {
EnVm* this = (EnVm*)thisx;
Collider_DestroyCylinder(play, &this->colliderCylinder);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnVm_SetupWait(EnVm* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c b/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c
index 07ee9fe23..c015413db 100644
--- a/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c
+++ b/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c
@@ -148,6 +148,8 @@ void EnWallmas_Destroy(Actor* thisx, PlayState* play) {
EnWallmas* this = (EnWallmas*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnWallmas_TimerInit(EnWallmas* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c b/soh/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c
index 31ceb7071..f7a6d3638 100644
--- a/soh/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c
+++ b/soh/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c
@@ -118,6 +118,8 @@ void EnWeiyer_Destroy(Actor* thisx, PlayState* play) {
EnWeiyer* this = (EnWeiyer*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80B32384(EnWeiyer* this) {
diff --git a/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c b/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c
index 6ec5e00cc..522034446 100644
--- a/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c
+++ b/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c
@@ -279,6 +279,8 @@ void EnWf_Destroy(Actor* thisx, PlayState* play) {
osSyncPrintf("\n\n");
}
}
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnWf_ChangeAction(PlayState* play, EnWf* this, s16 mustChoose) {
diff --git a/soh/src/overlays/actors/ovl_En_Xc/z_en_xc.c b/soh/src/overlays/actors/ovl_En_Xc/z_en_xc.c
index 89c478cb5..83d58e069 100644
--- a/soh/src/overlays/actors/ovl_En_Xc/z_en_xc.c
+++ b/soh/src/overlays/actors/ovl_En_Xc/z_en_xc.c
@@ -74,6 +74,8 @@ void EnXc_Destroy(Actor* thisx, PlayState* play) {
EnXc* this = (EnXc*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnXc_CalculateHeadTurn(EnXc* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_En_Zf/z_en_zf.c b/soh/src/overlays/actors/ovl_En_Zf/z_en_zf.c
index eeb88ea39..254d2a757 100644
--- a/soh/src/overlays/actors/ovl_En_Zf/z_en_zf.c
+++ b/soh/src/overlays/actors/ovl_En_Zf/z_en_zf.c
@@ -364,6 +364,8 @@ void EnZf_Destroy(Actor* thisx, PlayState* play) {
Effect_Delete(play, this->blureIndex);
Collider_DestroyCylinder(play, &this->bodyCollider);
Collider_DestroyQuad(play, &this->swordCollider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
/**
diff --git a/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c b/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c
index a5d09cfbd..832fac222 100644
--- a/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c
+++ b/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c
@@ -84,6 +84,8 @@ void EnZl3_Destroy(Actor* thisx, PlayState* play) {
EnZl3* this = (EnZl3*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void func_80B53468(void) {
diff --git a/soh/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c b/soh/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c
index 3d32a0524..2f6f05a63 100644
--- a/soh/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c
+++ b/soh/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c
@@ -422,6 +422,8 @@ void EnZl4_Destroy(Actor* thisx, PlayState* play) {
EnZl4* this = (EnZl4*)thisx;
Collider_DestroyCylinder(play, &this->collider);
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
s32 EnZl4_SetNextAnim(EnZl4* this, s32 nextAnim) {
diff --git a/soh/src/overlays/actors/ovl_En_Zo/z_en_zo.c b/soh/src/overlays/actors/ovl_En_Zo/z_en_zo.c
index 885c58708..8a413d1c3 100644
--- a/soh/src/overlays/actors/ovl_En_Zo/z_en_zo.c
+++ b/soh/src/overlays/actors/ovl_En_Zo/z_en_zo.c
@@ -615,6 +615,9 @@ void EnZo_Init(Actor* thisx, PlayState* play) {
}
void EnZo_Destroy(Actor* thisx, PlayState* play) {
+ EnZo* this = (EnZo*)thisx;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
}
void EnZo_Standing(EnZo* this, PlayState* play) {
diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c
index 58147efd5..bd41af963 100644
--- a/soh/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c
@@ -11335,6 +11335,9 @@ void Player_Destroy(Actor* thisx, PlayState* play) {
func_800876C8(play);
gSaveContext.linkAge = play->linkAgeOnLoad;
+
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime);
+ ResourceMgr_UnregisterSkeleton(&this->skelAnime2);
}
//first person manipulate player actor