mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-22 14:23:44 -07:00
Beacon for Master Sword pedestal. Don't store direction on beacons
This commit is contained in:
parent
6810bb7d03
commit
ec4cd23940
4 changed files with 93 additions and 158 deletions
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 });
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue