From 52960d5c2fd0bc957bf743fc8f0d43d1e4e6b99d Mon Sep 17 00:00:00 2001 From: Lucas Shaw <49287729+shawlucas@users.noreply.github.com> Date: Wed, 3 Nov 2021 09:55:08 -0400 Subject: z_path.c OK (#379) * z_path.c OK * Ran format --- src/code/z_path.c | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) (limited to 'src/code/z_path.c') 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; + } +} -- cgit v1.2.3