From ec4cd2394066a0032a8ef9c0230ba9e86a5dec1a Mon Sep 17 00:00:00 2001 From: Demur Rumed Date: Sun, 1 Jun 2025 16:50:14 +0000 Subject: [PATCH] Beacon for Master Sword pedestal. Don't store direction on beacons --- .../accessible-actors/AccessibleActorList.cpp | 145 +++++++++--------- .../accessible-actors/ActorAccessibility.cpp | 29 ++-- .../accessible-actors/ActorAccessibility.h | 4 +- .../accessible-actors/accessibility_cues.cpp | 73 +-------- 4 files changed, 93 insertions(+), 158 deletions(-) diff --git a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp index 611a5bb3a..df0ba68ac 100644 --- a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp +++ b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp @@ -218,7 +218,7 @@ void accessible_area_change(AccessibleActor* actor) { if (actor->play->sceneNum == 91 && gSaveContext.entranceIndex != 1504 && gSaveContext.entranceIndex != 1246) { return; } - if (actor->play->sceneNum == 85 && actor->world.pos.y < 0) { + if (actor->play->sceneNum == 85 && actor->pos.y < 0) { ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_HORSE_RUN_LEVEL, false); } else { ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_SARIA_MELODY, false); @@ -458,8 +458,8 @@ void accessible_audio_compass(AccessibleActor* actor) { AudioCompassData* data = (AudioCompassData*)actor->userData; bool compassCombo = trackerButtonsPressed != nullptr && trackerButtonsPressed[0].button & BTN_DDOWN && trackerButtonsPressed[0].button & BTN_L; - actor->world.pos = player->actor.world.pos; - actor->world.pos.z -= 50; + actor->pos = player->actor.world.pos; + actor->pos.z -= 50; if (data->framesUntilChime > 0) data->framesUntilChime--; @@ -471,8 +471,8 @@ void accessible_audio_compass(AccessibleActor* actor) { void accessible_stick_warning(AccessibleActor* actor) { Player* player = GET_PLAYER(actor->play); - actor->world.pos = player->actor.world.pos; - actor->world.pos.z -= 50; + actor->pos = player->actor.world.pos; + actor->pos.z -= 50; if (fabs(player->unk_860 - 25) < 24.0 && player->heldItemId == 0) { ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_SY_WARNING_COUNT_N, false); } @@ -581,6 +581,8 @@ void ActorAccessibility_InitActors() { policy.englishName = "Running Man"; ActorAccessibility_AddSupportedActor(ACTOR_EN_MM, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_MM2, policy); + policy.englishName = "Sheik"; + ActorAccessibility_AddSupportedActor(ACTOR_EN_XC, policy); policy.englishName = "Market Npc"; ActorAccessibility_AddSupportedActor(ACTOR_EN_HY, policy); policy.englishName = "Girl Chassing Cucco"; @@ -634,7 +636,6 @@ void ActorAccessibility_InitActors() { policy.n = 1; policy.aimAssist.isProvider = true; ActorAccessibility_AddSupportedActor(ACTOR_EN_KAKASI2, policy); - ActorAccessibility_InitPolicy(&policy, "Chest", [](AccessibleActor* actor) { Player* player = GET_PLAYER(actor->play); EnBox* chest = (EnBox*)actor->actor; @@ -1004,8 +1005,8 @@ void ActorAccessibility_InitActors() { ActorAccessibility_InitPolicy(&policy, "Ladder/climable", [](AccessibleActor* actor) { Player* player = GET_PLAYER(actor->play); f32 waterLoc = player->actor.yDistToWater + player->actor.world.pos.y; - if (actor->world.pos.y < waterLoc) { - actor->world.pos.y = waterLoc; + if (actor->pos.y < waterLoc) { + actor->pos.y = waterLoc; } if (actor->yDistToPlayer < 80) ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_PL_LAND_LADDER, false); @@ -1051,20 +1052,20 @@ void ActorAccessibility_InitActors() { AccessibleActor* temp; // Now place the actor. - ActorAccessibility_AddVirtualActor(list, VA_GENERAL_HELPER, { { 0, 0, 0 }, { 0, 0, 0 } }); - ActorAccessibility_AddVirtualActor(list, VA_AUDIO_COMPASS, { { 0, 0, 0 }, { 0, 0, 0 } }); - ActorAccessibility_AddVirtualActor(list, VA_STICK_WARNING, { { 0, 0, 0 }, { 0, 0, 0 } }); + ActorAccessibility_AddVirtualActor(list, VA_GENERAL_HELPER, { 0, 0, 0 }); + ActorAccessibility_AddVirtualActor(list, VA_AUDIO_COMPASS, { 0, 0, 0 }); + ActorAccessibility_AddVirtualActor(list, VA_STICK_WARNING, { 0, 0, 0 }); list = ActorAccessibility_GetVirtualActorList(SCENE_KOKIRI_FOREST, 0); - ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { { -784, 120, 1046 }, { 0, 14702, 0 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 2146, 1, -142.8 } }); + ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { -784, 120, 1046 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2146, 1, -142.8 }); // Kokiri Forest Room with boulder and kokiri sword list = ActorAccessibility_GetVirtualActorList(SCENE_KOKIRI_FOREST, 2); - ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { { -788, 120, 1392 }, { 0, 14702, 0 } }); + ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { -788, 120, 1392 }); list = ActorAccessibility_GetVirtualActorList(SCENE_LOST_WOODS, 1); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1348, 25, -25 } }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1348, 25, -25 }); temp->policy.aimAssist.isProvider = true; temp->policy.distance = 700; temp->policy.n = 1; @@ -1074,105 +1075,111 @@ void ActorAccessibility_InitActors() { list = ActorAccessibility_GetVirtualActorList(SCENE_DEKU_TREE, 10); // deku tree compass room list = ActorAccessibility_GetVirtualActorList(SCENE_DEKU_TREE, 7); // bombable wall room - ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { { -1209, -820.0, 3.5 } }); + ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { -1209, -820.0, 3.5 }); list = ActorAccessibility_GetVirtualActorList(SCENE_DEKU_TREE, 3); // basement 1 lobby - ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { { -901, -820, 0.5 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { -181.76, -905, -28.3 } }); + ActorAccessibility_AddVirtualActor(list, VA_CRAWLSPACE, { -901, -820, 0.5 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { -181.76, -905, -28.3 }); list = ActorAccessibility_GetVirtualActorList(SCENE_DODONGOS_CAVERN, 2); // dodongo bombflower stairs room - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { -1958, 20, -1297 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { -1958, 20, -1297 }); list = ActorAccessibility_GetVirtualActorList(SCENE_JABU_JABU, 2); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { -260, -400, -3377 } }); // green tentacle hole + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { -260, -400, -3377 }); // green tentacle hole temp->policy.distance = 200; temp->policy.sound = NA_SE_EN_DAIOCTA_DEAD; - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 230, -400, -3211 } }); // ruto hole + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 230, -400, -3211 }); // ruto hole temp->policy.distance = 200; temp->policy.sound = NA_SE_VO_RT_FALL; list = ActorAccessibility_GetVirtualActorList(SCENE_CASTLE_COURTYARD_GUARDS_DAY, 0); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1734.0, 0.0, 140.514 } }); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1734.0, 0.0, 140.514 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1734.0, 0.0, 140.514 }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1734.0, 0.0, 140.514 }); temp->policy.pitch = 0.3; temp->policy.volume = 0.5; - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1040.0, 0.0, 140.514 } }); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1734.0, 0.0, 140.514 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1040.0, 0.0, 140.514 }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1734.0, 0.0, 140.514 }); temp->policy.pitch = 0.6; temp->policy.volume = 0.5; - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 230.0, 0.0, 188.514 } }); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1734.0, 0.0, 140.514 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 230.0, 0.0, 188.514 }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1734.0, 0.0, 140.514 }); temp->policy.pitch = 0.9; temp->policy.volume = 0.5; - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { -426.0, 0.0, 130.514 } }); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1734.0, 0.0, 140.514 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { -426.0, 0.0, 130.514 }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1734.0, 0.0, 140.514 }); temp->policy.pitch = 1.2; temp->policy.volume = 0.5; - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { -1206.0, 0.0, 133.514 } }); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1734.0, 0.0, 140.514 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { -1206.0, 0.0, 133.514 }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1734.0, 0.0, 140.514 }); temp->policy.pitch = 1.5; temp->policy.volume = 0.5; - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { -1571.0, 0.0, -834.514 } }); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1734.0, 0.0, 140.514 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { -1571.0, 0.0, -834.514 }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1734.0, 0.0, 140.514 }); temp->policy.pitch = 1.8; temp->policy.volume = 0.5; + list = ActorAccessibility_GetVirtualActorList(SCENE_TEMPLE_OF_TIME, 0); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 0, 0, 0 }); + temp->policy.englishName = "Master Sword Pedestal"; + temp->policy.distance = 1500; + temp->policy.sound = NA_SE_PL_SWORD_CHARGE; + list = ActorAccessibility_GetVirtualActorList(SCENE_WINDMILL_AND_DAMPES_GRAVE, 0); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { -50, -530, -2300 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 25, -530, -2875 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 300, -530, -3020 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { -50, -530, -2300 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 25, -530, -2875 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 300, -530, -3020 }); list = ActorAccessibility_GetVirtualActorList(SCENE_WINDMILL_AND_DAMPES_GRAVE, 1); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 370, -500, -3430 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 410, -530, -3770 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 675, -570, -3930 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 675, -610, -4300 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 560, -600, -4500 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 470, -570, -4775 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 300, -570, -4910 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 230, -570, -5300 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 370, -500, -3430 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 410, -530, -3770 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 675, -570, -3930 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 675, -610, -4300 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 560, -600, -4500 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 470, -570, -4775 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 300, -570, -4910 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 230, -570, -5300 }); list = ActorAccessibility_GetVirtualActorList(SCENE_WINDMILL_AND_DAMPES_GRAVE, 2); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 300, -570, -5400 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 500, -570, -5400 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 650, -570, -5275 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1200, -730, -5125 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1345, -730, -4930 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1560, -730, -4765 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1730, -730, -4550 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1940, -730, -4430 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 300, -570, -5400 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 500, -570, -5400 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 650, -570, -5275 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1200, -730, -5125 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1345, -730, -4930 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1560, -730, -4765 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1730, -730, -4550 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1940, -730, -4430 }); list = ActorAccessibility_GetVirtualActorList(SCENE_WINDMILL_AND_DAMPES_GRAVE, 3); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1990, -730, -4185 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1800, -730, -3950 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1720, -730, -3850 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1690, -730, -3145 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1655, -668, -3035 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1710, -668, -2660 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 2285, -610, -2650 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 2625, -610, -2700 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 3080, -530, -2700 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 3230, -470, -2515 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 3170, -420, -2300 } }); - ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 2960, -410, -2000 } }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1990, -730, -4185 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1800, -730, -3950 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1720, -730, -3850 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1690, -730, -3145 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1655, -668, -3035 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1710, -668, -2660 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2285, -610, -2650 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2625, -610, -2700 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 3080, -530, -2700 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 3230, -470, -2515 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 3170, -420, -2300 }); + ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2960, -410, -2000 }); list = ActorAccessibility_GetVirtualActorList(SCENE_FOREST_TEMPLE, 15); // falling ceiling safe spots - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 2070, -403, -3000 } }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2070, -403, -3000 }); temp->policy.volume = 0.5; temp->policy.distance = 1500; - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 2150, -403, -2560 } }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2150, -403, -2560 }); temp->policy.volume = 0.5; temp->policy.distance = 1500; - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 2070, -403, -3000 } }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2070, -403, -3000 }); temp->policy.volume = 0.5; temp->policy.distance = 1500; - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 1990, -403, -1850 } }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 1990, -403, -1850 }); temp->policy.volume = 0.5; temp->policy.distance = 1500; list = ActorAccessibility_GetVirtualActorList(SCENE_ICE_CAVERN, 9); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { { 860, 180, -2400 } }); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 860, 180, -2400 }); temp->policy.distance = 300; temp->policy.ydist = 100; temp->policy.sound = NA_SE_EV_BLOCK_SHAKE; diff --git a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp index 370aea513..896168acb 100644 --- a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp +++ b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp @@ -318,7 +318,7 @@ void ActorAccessibility_CopyParamsFromRealActor(AccessibleActor* actor) { actor->projectedPos = actor->actor->projectedPos; actor->xzDistToPlayer = actor->actor->xzDistToPlayer; actor->isDrawn = actor->actor->isDrawn; - actor->world = actor->actor->world; + actor->pos = actor->actor->world.pos; actor->xyzDistToPlayer = sqrtf(actor->actor->xyzDistToPlayerSq); } @@ -339,10 +339,10 @@ void ActorAccessibility_RunAccessibilityForActor(PlayState* play, AccessibleActo Player* player = GET_PLAYER(play); f32 w = 0.0f; // Set actor->projectedPos. - SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, &actor->world.pos, &actor->projectedPos, &w); - actor->xzDistToPlayer = Math_Vec3f_DistXZ(&actor->world.pos, &player->actor.world.pos); - actor->xyzDistToPlayer = Math_Vec3f_DistXYZ(&actor->world.pos, &player->actor.world.pos); - actor->yDistToPlayer = fabs((actor->world.pos.y) - (player->actor.world.pos.y)); + SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, &actor->pos, &actor->projectedPos, &w); + actor->xzDistToPlayer = Math_Vec3f_DistXZ(&actor->pos, &player->actor.world.pos); + actor->xyzDistToPlayer = Math_Vec3f_DistXYZ(&actor->pos, &player->actor.world.pos); + actor->yDistToPlayer = fabs((actor->pos.y) - (player->actor.world.pos.y)); } if (actor->actor != NULL && fabs(actor->actor->yDistToPlayer) > actor->policy.ydist) { @@ -520,7 +520,7 @@ VirtualActorList* ActorAccessibility_GetVirtualActorList(s16 sceneNum, s8 roomNu return (VirtualActorList*)&aa->vaZones[sr.raw]; } -AccessibleActor* ActorAccessibility_AddVirtualActor(VirtualActorList* list, VIRTUAL_ACTOR_TABLE type, PosRot where) { +AccessibleActor* ActorAccessibility_AddVirtualActor(VirtualActorList* list, VIRTUAL_ACTOR_TABLE type, Vec3f where) { ActorAccessibilityPolicy* policy = ActorAccessibility_GetPolicyForActor(type); if (policy == NULL) return NULL; @@ -536,7 +536,7 @@ AccessibleActor* ActorAccessibility_AddVirtualActor(VirtualActorList* list, VIRT actor.instanceID = ActorAccessibility_GetNextID(); actor.isDrawn = 1; actor.play = NULL; - actor.world = where; + actor.pos = where; actor.sceneIndex = 0; actor.managedSoundSlots = 0; actor.aimAssist.framesSinceAimAssist = 0; @@ -580,15 +580,14 @@ void ActorAccessibility_PolyToVirtualActor(PlayState* play, CollisionPoly* poly, VirtualActorList* destination) { Vec3f polyVerts[3]; CollisionPoly_GetVertices(poly, play->colCtx.colHeader->vtxList, polyVerts); - PosRot where; - where.pos.y = std::min(polyVerts[0].y, std::min(polyVerts[1].y, polyVerts[2].y)); + Vec3f where; + where.y = std::min(polyVerts[0].y, std::min(polyVerts[1].y, polyVerts[2].y)); f32 minX = std::min(polyVerts[0].x, std::min(polyVerts[1].x, polyVerts[2].x)); f32 maxX = std::max(polyVerts[0].x, std::max(polyVerts[1].x, polyVerts[2].x)); f32 minZ = std::min(polyVerts[0].z, std::min(polyVerts[1].z, polyVerts[2].z)); f32 maxZ = std::max(polyVerts[0].z, std::max(polyVerts[1].z, polyVerts[2].z)); - where.pos.x = maxX - ((maxX - minX) / 2); - where.pos.z = maxZ - ((maxZ - minZ) / 2); - where.rot = { 0, 0, 0 }; + where.x = maxX - ((maxX - minX) / 2); + where.z = maxZ - ((maxZ - minZ) / 2); AccessibleActor* actor = ActorAccessibility_AddVirtualActor(destination, va, where); if (actor == NULL) return; @@ -615,7 +614,7 @@ AimAssistProps ActorAccessibility_ProvideAimAssistForActor(AccessibleActor* acto angle = angle / -14000.0 * 16384; f32 slope = Math_SinS(angle) / Math_CosS(angle) * 1.0; s32 yIntercept = slope * actor->xzDistToPlayer + player->actor.focus.pos.y; - s32 yHeight = actor->world.pos.y + 25; + s32 yHeight = actor->pos.y + 25; if (slope < 1) { slope = 1; } @@ -638,8 +637,8 @@ AimAssistProps ActorAccessibility_ProvideAimAssistForActor(AccessibleActor* acto } else { actor->aimAssist.frequency = 1 + (uint8_t)(yDiff / 5); } - s16 yawdiff = player->yaw - Math_Atan2S(actor->world.pos.z - player->actor.world.pos.z, - actor->world.pos.x - player->actor.world.pos.x); + s16 yawdiff = player->yaw - Math_Atan2S(actor->pos.z - player->actor.world.pos.z, + actor->pos.x - player->actor.world.pos.x); if (yawdiff > -0x1000 && yawdiff < 0x1000) { aimAssistProps.volume = 1.0 - (yawdiff * yawdiff) / (float)0x2000000; } else if (yawdiff > -0x2000 && yawdiff < 0x2000) { diff --git a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.h b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.h index 2a33b4ca6..289e64000 100644 --- a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.h +++ b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.h @@ -51,7 +51,7 @@ struct AccessibleActor { f32 yDistToPlayer; f32 xzDistToPlayer; f32 xyzDistToPlayer; - PosRot world; + Vec3f pos; Vec3f projectedPos; PlayState* play; u8 isDrawn; // Do we just never play accessibility sounds for actors that aren't drawn? @@ -163,7 +163,7 @@ typedef enum { // Get the list of virtual actors for a given scene and room index. VirtualActorList* ActorAccessibility_GetVirtualActorList(s16 sceneNum, s8 roomNum); -AccessibleActor* ActorAccessibility_AddVirtualActor(VirtualActorList* list, VIRTUAL_ACTOR_TABLE type, PosRot where); +AccessibleActor* ActorAccessibility_AddVirtualActor(VirtualActorList* list, VIRTUAL_ACTOR_TABLE type, Vec3f where); // Parses the loaded seen and converts select polygons (like ladders, spikes and scene exits) into virtual actors. void ActorAccessibility_InterpretCurrentScene(PlayState* play); // Convert a collision polygon into a virtual actor. diff --git a/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp b/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp index a17a8366b..878f096dc 100644 --- a/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp +++ b/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp @@ -1379,77 +1379,6 @@ void accessible_va_terrain_cue(AccessibleActor* actor) { state->directions[i].scan(); } -/* - void accessible_va_wall_cue(AccessibleActor* actor) { -Player* player = GET_PLAYER(actor->play); -//The virtual cue actors travel in lines relative to Link's angle. -Vec3s rot = computeRelativeAngle(player->actor.world.rot, actor->world.rot); -Vec3f velocity; -velocity.x = Math_SinS(rot.y); -velocity.z = Math_CosS(rot.y); -//Draw a line from Link's position to the max detection distance based on the configured relative angle. -Vec3f pos = player->actor.world.pos; -Vec3f headPos = player->bodyPartsPos[PLAYER_BODYPART_TORSO]; -f32 headDistY = headPos.y - pos.y; - -f32 step = fabs(velocity.x + velocity.z); -f32 distToTravel = detectionDistance; -CollisionPoly* poly = NULL; -Vec3f collisionResult; -s32 bgId = 0; -while (true) { -Vec3f prevPos = pos; -Vec3f prevHeadPos = headPos; - -pos.x += velocity.x; -pos.y += 1; -pos.z += velocity.z; -headPos.x += velocity.x; -headPos.y += 1; -headPos.z += velocity.z; - -distToTravel -= step; -f32 floorHeight = 0; -CollisionPoly tempPoly; -floorHeight = BgCheck_AnyRaycastFloor1(&actor->play->colCtx, &tempPoly, &pos); - pos.y = floorHeight; -headPos.y = floorHeight + headDistY; - -if (BgCheck_AnyLineTest3(&actor->play->colCtx, &prevPos, &pos, &collisionResult, &poly, 1, 0, 0, 0, &bgId)) { - s16 wallYaw = Math_Atan2S(poly->normal.z, poly->normal.x); - CollisionPoly* headPoly = NULL; - - BgCheck_AnyLineTest3(&actor->play->colCtx, &prevHeadPos, &headPos, &collisionResult, &headPoly, 1, 0, 0, 0, - &bgId); - if (headPoly != NULL) - break; - - poly = NULL; - -} - -if (distToTravel <= 0) - break; - -} -if (poly == NULL) { -//Audio_StopSfxByPosAndId(&actor->world.pos, wallCueSound); -return; // Nothing found. - -} -// Move the virtual actor to the position of the discovered wall so we can use preexisting sound - // logic. -actor->world.pos = collisionResult; -framesUntilCue--; -if (framesUntilCue < 1) { -framesUntilCue = 10; -ActorAccessibility_PlaySpecialSound(actor, wallCueSound); - -} - -} -*/ - void ActorAccessibility_InitCues() { ActorAccessibilityPolicy policy; ActorAccessibility_InitPolicy(&policy, "Terrain cue helper", accessible_va_terrain_cue); @@ -1461,5 +1390,5 @@ void ActorAccessibility_InitCues() { ActorAccessibility_AddSupportedActor(VA_TERRAIN_CUE, policy); VirtualActorList* list = ActorAccessibility_GetVirtualActorList(EVERYWHERE, 0); - ActorAccessibility_AddVirtualActor(list, VA_TERRAIN_CUE, { { 0, 0, 0 }, { 0, 0, 0 } }); + ActorAccessibility_AddVirtualActor(list, VA_TERRAIN_CUE, { 0, 0, 0 }); } \ No newline at end of file