summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLucas Shaw <49287729+shawlucas@users.noreply.github.com>2021-11-03 09:55:08 -0400
committerGitHub <noreply@github.com>2021-11-03 10:55:08 -0300
commit52960d5c2fd0bc957bf743fc8f0d43d1e4e6b99d (patch)
tree47b7597d133b822ebda7b41190030847a9fb6920 /src
parentb37e3db802945d95f7a67a7b648fc151349bbe45 (diff)
z_path.c OK (#379)
* z_path.c OK * Ran format
Diffstat (limited to 'src')
-rw-r--r--src/code/z_path.c44
-rw-r--r--src/overlays/actors/ovl_En_Owl/z_en_owl.c2
2 files changed, 42 insertions, 4 deletions
diff --git a/src/code/z_path.c b/src/code/z_path.c
index 15d940923..0462a40cd 100644
--- a/src/code/z_path.c
+++ b/src/code/z_path.c
@@ -1,7 +1,45 @@
#include "global.h"
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_path/func_801224E0.s")
+Path* Path_GetByIndex(GlobalContext* globalCtx, s16 index, s16 max) {
+ Path* path;
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_path/func_80122524.s")
+ if (index != max) {
+ path = &globalCtx->setupPathList[index];
+ } else {
+ path = NULL;
+ }
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_path/func_801225CC.s")
+ return path;
+}
+
+f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw) {
+ f32 dx;
+ f32 dz;
+ Vec3s* pointPos;
+
+ if (path == NULL) {
+ return -1.0;
+ }
+
+ pointPos = Lib_SegmentedToVirtual(path->points);
+ pointPos = &pointPos[waypoint];
+
+ dx = pointPos->x - actor->world.pos.x;
+ dz = pointPos->z - actor->world.pos.z;
+
+ *yaw = Math_Atan2S(dx, dz);
+
+ return SQ(dx) + SQ(dz);
+}
+
+void Path_CopyLastPoint(Path* path, Vec3f* dest) {
+ Vec3s* pointPos;
+
+ if (path != NULL) {
+ pointPos = &((Vec3s*)Lib_SegmentedToVirtual(path->points))[path->count - 1];
+
+ dest->x = pointPos->x;
+ dest->y = pointPos->y;
+ dest->z = pointPos->z;
+ }
+}
diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c
index f0a2327fd..c325a2b07 100644
--- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c
+++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c
@@ -545,7 +545,7 @@ void func_8095B6C8(EnOwl* this, GlobalContext* globalCtx) {
void func_8095B76C(EnOwl* this, GlobalContext* globalCtx) {
s32 pad;
s16 sp4A;
- f32 sp44 = func_80122524(&this->actor, this->path, this->unk_3F8, &sp4A);
+ f32 sp44 = Path_OrientAndGetDistSq(&this->actor, this->path, this->unk_3F8, &sp4A);
Vec3s* points;
Math_SmoothStepToS(&this->actor.world.rot.y, sp4A, 6, 0x800, 0x200);