diff --git a/include/def/sys_matrix.h b/include/def/sys_matrix.h index f9d38a037..836981fd9 100644 --- a/include/def/sys_matrix.h +++ b/include/def/sys_matrix.h @@ -3,6 +3,7 @@ struct GameState; struct GraphicsContext; struct Vec3s; struct Vec3f; +struct VecRot; extern Mtx gMtxClear; extern MtxF gMtxFClear; @@ -14,7 +15,9 @@ void Matrix_MtxFCopy(MtxF* dest, MtxF* src); Mtx* Matrix_MtxFToMtx(MtxF* src, Mtx* dest); Mtx* Matrix_MtxFToNewMtx(MtxF* src, GraphicsContext* gfxCtx); void Matrix_MtxFToYXZRotS(MtxF* mf, Vec3s* rotDest, s32 flag); +void Matrix_MtxFToYXZRotS(MtxF* mf, VecRot* rotDest, s32 flag); void Matrix_MtxFToZYXRotS(MtxF* mf, Vec3s* rotDest, s32 flag); +void Matrix_MtxFToZYXRotS(MtxF* mf, VecRot* rotDest, s32 flag); void Matrix_MtxToMtxF(Mtx* src, MtxF* dest); void Matrix_Mult(MtxF* mf, u8 mode); void Matrix_MultVec3f(Vec3f* src, Vec3f* dest); @@ -35,4 +38,5 @@ void Matrix_Translate(f32 x, f32 y, f32 z, u8 mode); void Matrix_TranslateRotateZYX(Vec3f* translation, Vec3s* rotation); void Matrix_Transpose(MtxF* mf); void func_800D1694(f32 x, f32 y, f32 z, Vec3s* vec); +void func_800D1694(f32 x, f32 y, f32 z, VecRot* vec); void func_800D1FD4(MtxF* mf); diff --git a/include/def/z_actor.h b/include/def/z_actor.h index 075c93fe7..19dc2d6d5 100644 --- a/include/def/z_actor.h +++ b/include/def/z_actor.h @@ -119,8 +119,8 @@ void TitleCard_InitPlaceName(GlobalContext* globalCtx, TitleCardContext* titleCt void func_8002BE04(GlobalContext* globalCtx, Vec3f* arg1, Vec3f* arg2, f32* arg3); void func_8002C124(TargetContext* targetCtx, GlobalContext* globalCtx); s32 func_8002D53C(GlobalContext* globalCtx, TitleCardContext* titleCtx); -void func_8002D7EC(Actor* actor); -void func_8002D868(Actor* actor); +void Actor_UpdatePosition(Actor* actor); +void Actor_UpdateVelocityWithGravity(Actor* actor); void func_8002D908(Actor* actor); void func_8002D97C(Actor* actor); void func_8002D9A4(Actor* actor, f32 arg1); @@ -198,7 +198,7 @@ void func_800355B8(GlobalContext* globalCtx, Vec3f* pos); u8 func_800355E4(GlobalContext* globalCtx, Collider* collider); void func_80035844(Vec3f* arg0, Vec3f* arg1, Vec3s* arg2, s32 arg3); Actor* func_800358DC(Actor* actor, Vec3f* spawnPos, Vec3s* spawnRot, f32* arg3, s32 timer, s16* unused, GlobalContext* globalCtx, s16 params, s32 arg8); -void func_800359B8(Actor* actor, s16 arg1, Vec3s* arg2); +void func_800359B8(Actor* actor, s16 arg1, VecRot* arg2); u16 func_80037C30(GlobalContext* globalCtx, s16 arg1); s32 func_80037D98(GlobalContext* globalCtx, Actor* actor, s16 arg2, s32* arg3); s32 func_80038290(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f arg4); diff --git a/include/def/z_lib.h b/include/def/z_lib.h index eaf652b1b..aa2e16663 100644 --- a/include/def/z_lib.h +++ b/include/def/z_lib.h @@ -12,14 +12,17 @@ void Color_RGBA8_Copy(Color_RGBA8* dst, Color_RGBA8* src); void Lib_MemSet(u8* dest, size_t size, u8 val); void Math_ApproachF(f32* pValue, f32 target, f32 fraction, const Step& step); void Math_ApproachS(s16* pValue, s16 target, s16 scale, const Step& step); +void Math_ApproachS(Rotation* pValue, s16 target, s16 scale, const Step& step); void Math_ApproachZeroF(f32* pValue, f32 fraction, const Step& step); s32 Math_AsymStepToF(f32* pValue, f32 target, const Step& incrStep, const Step& decrStep); f32 Math_CosS(s16 angle); s32 Math_ScaledStepToS(s16* pValue, s16 target, const Step& step); +s32 Math_ScaledStepToS(Rotation* pValue, s16 target, const Step& step); f32 Math_SinS(s16 angle); f32 Math_SmoothStepToDegF(f32* pValue, f32 target, f32 fraction, const Step& step, const Step& minStep); f32 Math_SmoothStepToF(f32* pValue, f32 target, f32 fraction, const Step& step, const Step& minStep); s16 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, const Step& step, const Step& minStep); +s16 Math_SmoothStepToS(Rotation* pValue, s16 target, s16 scale, const Step& step, const Step& minStep); s32 Math_StepToAngleS(s16* pValue, s16 target, const Step& step); s32 Math_StepToF(f32* pValue, f32 target, const Step& step); s32 Math_StepRotationToF(f32* pValue, f32 target, const Step& step); @@ -27,9 +30,11 @@ f32 Math_AngleDiffF(f32 a, f32 b); f32 Math_NormalizeAngleF(f32 angle); f32 Math_AngleF(Vec2f v); s32 Math_StepToS(s16* pValue, s16 target, const Step& step); +s32 Math_StepToS(Rotation* pValue, s16 target, const Step& step); s32 Math_StepUntilAngleS(s16* pValue, s16 limit, const Step& step); s32 Math_StepUntilF(f32* pValue, f32 limit, const Step& step); s32 Math_StepUntilS(s16* pValue, s16 limit, const Step& step); +s32 Math_StepUntilS(Rotation* pValue, s16 limit, const Step& step); void Math_Vec3f_Copy(Vec3f* dest, Vec3f* src); void Math_Vec3f_Diff(Vec3f* a, Vec3f* b, Vec3f* dest); f32 Math_Vec3f_DistXYZ(Vec3f* a, Vec3f* b); diff --git a/include/framerate.h b/include/framerate.h index 6ed489430..3abbad975 100644 --- a/include/framerate.h +++ b/include/framerate.h @@ -91,10 +91,8 @@ class Timer operator float() const; Timer& operator+=(const Timer f); Timer& operator-=(const Timer f); - /*Timer operator+(const Timer f) const; - Timer operator-(const Timer f) const; - Timer operator*(const Timer f) const; - Timer operator/(const Timer f) const;*/ + Timer& operator&=(u64 n); + Timer& operator|=(u64 n); s32 operator%(s32 n) const; Timer operator&(long n) const; s32 operator<<(long n); diff --git a/include/z64actor.h b/include/z64actor.h index 7206cc479..c707d6f59 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -109,7 +109,7 @@ struct CollisionCheckInfo { }; // size = 0x1C struct ActorShape { - /* 0x00 */ Vec3s rot; // Current actor shape rotation + /* 0x00 */ VecRot rot; // Current actor shape rotation /* 0x06 */ s16 face; // Used to index eyebrow/eye/mouth textures. Only used by player /* 0x08 */ f32 yOffset; // Model y axis offset. Represents model space units /* 0x0C */ ActorShadowFunc shadowDraw; // Shadow draw function diff --git a/include/z64math.h b/include/z64math.h index a4b825802..7c615cbb1 100644 --- a/include/z64math.h +++ b/include/z64math.h @@ -1,6 +1,7 @@ #pragma once #include "ultra64/types.h" #include +#include "framerate.h" #define VEC_SET(V,X,Y,Z) (V).x=(X);(V).y=(Y);(V).z=(Z) @@ -29,6 +30,18 @@ struct Vec3i { s32 x, y, z; }; // size = 0x0C +struct VecRot +{ + VecRot(); + VecRot(const Rotation& x, const Rotation& y, const Rotation& z); + VecRot(const VecRot& vec); + VecRot(const Vec3s& vec); + VecRot(const Vec3f& vec); + operator Vec3s() const; + operator Vec3f() const; + Rotation x, y, z; +}; + struct Sphere16 { Vec3s center; s16 radius; diff --git a/src/code/framerate.cpp b/src/code/framerate.cpp index 89d206c3e..083cca8cd 100644 --- a/src/code/framerate.cpp +++ b/src/code/framerate.cpp @@ -225,6 +225,18 @@ Timer& Timer::operator-=(const Timer f) return *this; } +Timer& Timer::operator&=(u64 n) +{ + *this = whole() & n; + return *this; +} + +Timer& Timer::operator|=(u64 n) +{ + *this = whole() | n; + return *this; +} + s32 Timer::operator%(s32 n) const { return whole() % n; diff --git a/src/code/sys_math.cpp b/src/code/sys_math.cpp index 6d60b401b..9465787c9 100644 --- a/src/code/sys_math.cpp +++ b/src/code/sys_math.cpp @@ -1,5 +1,6 @@ #define INTERNAL_SRC_CODE_SYS_MATH_C #include "global.h" +#include "z64math.h" #include "def/coss.h" #include "def/sins.h" #include "def/sys_math.h" @@ -49,3 +50,41 @@ f32 Math_SinF(f32 angle) { f32 Math_CosF(f32 angle) { return coss((s16)(angle * (32767.0f / M_PI))) * SHT_MINV; } + +VecRot::VecRot() : x(0), y(0), z(0) +{ +} + +VecRot::VecRot(const Rotation& x, const Rotation& y, const Rotation& z) : x(x), y(y), z(z) +{ +} + +VecRot::VecRot(const VecRot& vec) : x(vec.x), y(vec.y), z(vec.z) +{ +} + +VecRot::VecRot(const Vec3s& vec) : x(vec.x), y(vec.y), z(vec.z) +{ +} + +VecRot::VecRot(const Vec3f& vec) : x(vec.x), y(vec.y), z(vec.z) +{ +} + +VecRot::operator Vec3s() const +{ + Vec3s vec; + vec.x = x; + vec.y = y; + vec.z = z; + return vec; +} + +VecRot::operator Vec3f() const +{ + Vec3f vec; + vec.x = x; + vec.y = y; + vec.z = z; + return vec; +} \ No newline at end of file diff --git a/src/code/sys_matrix.cpp b/src/code/sys_matrix.cpp index 2d98e632b..43a2db191 100644 --- a/src/code/sys_matrix.cpp +++ b/src/code/sys_matrix.cpp @@ -487,7 +487,8 @@ void Matrix_TranslateRotateZYX(Vec3f* translation, Vec3s* rotation) { } } -void func_800D1694(f32 x, f32 y, f32 z, Vec3s* vec) { +template +static inline void _func_800D1694(f32 x, f32 y, f32 z, T* vec) { MtxF* cmf = sCurrentMatrix; f32 sp30 = Math_SinS(vec->y); f32 sp2C = Math_CosS(vec->y); @@ -545,6 +546,16 @@ void func_800D1694(f32 x, f32 y, f32 z, Vec3s* vec) { } } +void func_800D1694(f32 x, f32 y, f32 z, Vec3s* vec) +{ + _func_800D1694(x, y, z, vec); +} + +void func_800D1694(f32 x, f32 y, f32 z, VecRot* vec) +{ + _func_800D1694(x, y, z, vec); +} + Mtx* Matrix_MtxFToMtx(MtxF* src, Mtx* dest) { s32 temp; u16* m1 = (u16*)&dest->m[0][0]; @@ -763,7 +774,8 @@ void func_800D1FD4(MtxF* mf) { * Gets the rotation the specified matrix represents, using Tait-Bryan YXZ angles. * The flag value doesn't matter for a rotation matrix. Not 0 does extra calculation. */ -void Matrix_MtxFToYXZRotS(MtxF* mf, Vec3s* rotDest, s32 flag) { +template +static inline void _Matrix_MtxFToYXZRotS(MtxF* mf, T* rotDest, s32 flag) { f32 temp; f32 temp2; f32 temp3; @@ -812,11 +824,22 @@ void Matrix_MtxFToYXZRotS(MtxF* mf, Vec3s* rotDest, s32 flag) { } } +void Matrix_MtxFToYXZRotS(MtxF* mf, Vec3s* rotDest, s32 flag) +{ + _Matrix_MtxFToYXZRotS(mf, rotDest, flag); +} + +void Matrix_MtxFToYXZRotS(MtxF* mf, VecRot* rotDest, s32 flag) +{ + _Matrix_MtxFToYXZRotS(mf, rotDest, flag); +} + /** * Gets the rotation the specified matrix represents, using Tait-Bryan ZYX angles. * The flag value doesn't matter for a rotation matrix. Not 0 does extra calculation. */ -void Matrix_MtxFToZYXRotS(MtxF* mf, Vec3s* rotDest, s32 flag) { +template +static inline void _Matrix_MtxFToZYXRotS(MtxF* mf, T* rotDest, s32 flag) { f32 temp; f32 temp2; f32 temp3; @@ -861,6 +884,16 @@ void Matrix_MtxFToZYXRotS(MtxF* mf, Vec3s* rotDest, s32 flag) { } } +void Matrix_MtxFToZYXRotS(MtxF* mf, Vec3s* rotDest, s32 flag) +{ + _Matrix_MtxFToZYXRotS(mf, rotDest, flag); +} + +void Matrix_MtxFToZYXRotS(MtxF* mf, VecRot* rotDest, s32 flag) +{ + _Matrix_MtxFToZYXRotS(mf, rotDest, flag); +} + /* * Rotate the matrix by `f` radians around a unit vector `vec`. * NB: vec is assumed to be a unit vector. diff --git a/src/code/z_actor.cpp b/src/code/z_actor.cpp index 03c7c12e0..b68bd9c84 100644 --- a/src/code/z_actor.cpp +++ b/src/code/z_actor.cpp @@ -889,7 +889,7 @@ void Actor_Destroy(Actor* actor, GlobalContext* globalCtx) { } } -void func_8002D7EC(Actor* actor) { +void Actor_UpdatePosition(Actor* actor) { const f32 speedRate = FRAMERATE_ANIM_SCALER; actor->world.pos.x += (actor->velocity.x * speedRate) + actor->colChkInfo.displacement.x; @@ -897,7 +897,7 @@ void func_8002D7EC(Actor* actor) { actor->world.pos.z += (actor->velocity.z * speedRate) + actor->colChkInfo.displacement.z; } -void func_8002D868(Actor* actor) { +void Actor_UpdateVelocityWithGravity(Actor* actor) { actor->velocity.x = Math_SinS(actor->world.rot.y) * actor->speedXZ; actor->velocity.z = Math_CosS(actor->world.rot.y) * actor->speedXZ; @@ -908,8 +908,8 @@ void func_8002D868(Actor* actor) { } void Actor_MoveForward(Actor* actor) { - func_8002D868(actor); - func_8002D7EC(actor); + Actor_UpdateVelocityWithGravity(actor); + Actor_UpdatePosition(actor); } void func_8002D908(Actor* actor) { @@ -922,7 +922,7 @@ void func_8002D908(Actor* actor) { void func_8002D97C(Actor* actor) { func_8002D908(actor); - func_8002D7EC(actor); + Actor_UpdatePosition(actor); } void func_8002D9A4(Actor* actor, f32 arg1) { @@ -4174,7 +4174,7 @@ Actor* func_800358DC(Actor* actor, Vec3f* spawnPos, Vec3s* spawnRot, f32* arg3, return NULL; } -void func_800359B8(Actor* actor, s16 arg1, Vec3s* arg2) { +void func_800359B8(Actor* actor, s16 arg1, VecRot* arg2) { f32 sp44; f32 sp40; f32 sp3C; diff --git a/src/code/z_bgcheck.cpp b/src/code/z_bgcheck.cpp index 511d736d7..19385ee25 100644 --- a/src/code/z_bgcheck.cpp +++ b/src/code/z_bgcheck.cpp @@ -2447,7 +2447,7 @@ void ScaleRotPos_Initialize(ScaleRotPos* srp) { /** * Set ScaleRotPos */ -void ScaleRotPos_SetValue(ScaleRotPos* srp, Vec3f* scale, Vec3s* rot, Vec3f* pos) { +void ScaleRotPos_SetValue(ScaleRotPos* srp, Vec3f* scale, VecRot* rot, Vec3f* pos) { srp->scale = *scale; srp->rot = *rot; srp->pos = *pos; diff --git a/src/code/z_lib.cpp b/src/code/z_lib.cpp index a7749bc13..45eec3142 100644 --- a/src/code/z_lib.cpp +++ b/src/code/z_lib.cpp @@ -34,7 +34,8 @@ f32 Math_SinS(s16 angle) { * Changes pValue by step (scaled by the update rate) towards target, setting it equal when the target is reached. * Returns true when target is reached, false otherwise. */ -s32 Math_ScaledStepToS(s16* pValue, s16 target, const Step& _step) { +template +static inline s32 _Math_ScaledStepToS(T* pValue, s16 target, const Step& _step) { float step = _step.value(); if (step != 0) { f32 updateScale = FRAMERATE_ANIM_SCALER; @@ -43,7 +44,7 @@ s32 Math_ScaledStepToS(s16* pValue, s16 target, const Step& _step) { step = -step; } - *pValue += (s16)(step * updateScale); + *pValue = *pValue + (s16)(step * updateScale); if (((s16)(*pValue - target) * step) >= 0) { *pValue = target; @@ -56,18 +57,29 @@ s32 Math_ScaledStepToS(s16* pValue, s16 target, const Step& _step) { return false; } +s32 Math_ScaledStepToS(s16* pValue, s16 target, const Step& _step) +{ + return _Math_ScaledStepToS(pValue, target, _step); +} + +s32 Math_ScaledStepToS(Rotation* pValue, s16 target, const Step& _step) +{ + return _Math_ScaledStepToS(pValue, target, _step); +} + /** * Changes pValue by step towards target, setting it equal when the target is reached. * Returns true when target is reached, false otherwise. */ -s32 Math_StepToS(s16* pValue, s16 target, const Step& _step) { +template +static inline s32 _Math_StepToS(T* pValue, s16 target, const Step& _step) { float step = _step.value(); if (step != 0) { if (target < *pValue) { step = -step; } - *pValue += step; + *pValue = *pValue + step; if (((*pValue - target) * step) >= 0) { *pValue = target; @@ -80,6 +92,16 @@ s32 Math_StepToS(s16* pValue, s16 target, const Step& _step) { return false; } +s32 Math_StepToS(s16* pValue, s16 target, const Step& _step) +{ + return _Math_StepToS(pValue, target, _step); +} + +s32 Math_StepToS(Rotation* pValue, s16 target, const Step& _step) +{ + return _Math_StepToS(pValue, target, _step); +} + /** * Changes pValue by step towards target, setting it equal when the target is reached. * Returns true when target is reached, false otherwise. @@ -224,10 +246,11 @@ s32 Math_StepUntilAngleS(s16* pValue, s16 limit, const Step& step) { * Changes pValue by step. If pvalue reaches limit, sets it equal to limit. * Returns true when limit is reached, false otherwise. */ -s32 Math_StepUntilS(s16* pValue, s16 limit, const Step& step) { +template +static inline s32 _Math_StepUntilS(T* pValue, s16 limit, const Step& step) { s16 orig = *pValue; - *pValue += step.value(); + *pValue = *pValue + step.value(); if (((*pValue - limit) * (orig - limit)) <= 0) { *pValue = limit; @@ -237,6 +260,16 @@ s32 Math_StepUntilS(s16* pValue, s16 limit, const Step& step) { return false; } +s32 Math_StepUntilS(s16* pValue, s16 limit, const Step& step) +{ + return _Math_StepUntilS(pValue, limit, step); +} + +s32 Math_StepUntilS(Rotation* pValue, s16 limit, const Step& step) +{ + return _Math_StepUntilS(pValue, limit, step); +} + /** * Changes pValue by step towards target angle, setting it equal when the target is reached. * Returns true when target is reached, false otherwise. @@ -629,7 +662,8 @@ f32 Math_SmoothStepToDegF(f32* pValue, f32 target, f32 fraction, const Step& _st * Changes pValue by step towards target. If this step is more than 1/scale of the remaining distance, step by that * instead, with a minimum step of minStep. Returns remaining distance to target. */ -s16 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, const Step& _step, const Step& _minStep) { +template +static inline s16 _Math_SmoothStepToS(T* pValue, s16 target, s16 scale, const Step& _step, const Step& _minStep) { float step = _step.value(); float minStep = _minStep.value(); s16 stepSize = 0; @@ -647,16 +681,16 @@ s16 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, const Step& _step, co stepSize = -step; } - *pValue += stepSize; + *pValue = *pValue + stepSize; } else { if (diff >= 0) { - *pValue += minStep; + *pValue = *pValue + minStep; if ((s16)(target - *pValue) <= 0) { *pValue = target; } } else { - *pValue -= minStep; + *pValue = *pValue - minStep; if ((s16)(target - *pValue) >= 0) { *pValue = target; @@ -668,24 +702,46 @@ s16 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, const Step& _step, co return diff; } +s16 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, const Step& _step, const Step& _minStep) +{ + return _Math_SmoothStepToS(pValue, target, scale, _step, _minStep); +} + +s16 Math_SmoothStepToS(Rotation* pValue, s16 target, s16 scale, const Step& _step, const Step& _minStep) +{ + return _Math_SmoothStepToS(pValue, target, scale, _step, _minStep); +} + /** * Changes pValue by step towards target. If step is more than 1/scale of the remaining distance, step by that instead. */ -void Math_ApproachS(s16* pValue, s16 target, s16 scale, const Step& _maxStep) { +template +static inline void _Math_ApproachS(T* pValue, s16 target, s16 scale, const Step& _maxStep) +{ float maxStep = _maxStep.value(); s16 diff = target - *pValue; diff /= scale; if (diff > maxStep) { - *pValue += maxStep; + *pValue = *pValue + maxStep; } else if (diff < -maxStep) { - *pValue -= maxStep; + *pValue = *pValue - maxStep; } else { - *pValue += diff; + *pValue = *pValue + diff; } } +void Math_ApproachS(s16* pValue, s16 target, s16 scale, const Step& _maxStep) +{ + _Math_ApproachS(pValue, target, scale, _maxStep); +} + +void Math_ApproachS(Rotation* pValue, s16 target, s16 scale, const Step& _maxStep) +{ + _Math_ApproachS(pValue, target, scale, _maxStep); +} + void Color_RGBA8_Copy(Color_RGBA8* dst, Color_RGBA8* src) { dst->r = src->r; dst->g = src->g; diff --git a/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.cpp b/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.cpp index 7bca7c63a..b1531d2f8 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.cpp +++ b/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.cpp @@ -102,7 +102,7 @@ void BgHakaGate_Init(Actor* thisx, GlobalContext* globalCtx) { if (thisx->params == BGHAKAGATE_SKULL) { if (sSkullOfTruthRotY != 0x100) { pthis->actionFunc = BgHakaGate_FalseSkull; - } else if (ABS(thisx->shape.rot.y) < 0x4000) { + } else if (ABS((float)thisx->shape.rot.y) < 0x4000) { if ((Rand_ZeroOne() * 3.0f) < sPuzzleState) { pthis->vIsSkullOfTruth = true; sSkullOfTruthRotY = thisx->shape.rot.y + 0x8000; diff --git a/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.cpp b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.cpp index 5f9f92f1f..f8785b3b6 100644 --- a/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.cpp +++ b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.cpp @@ -193,7 +193,7 @@ void BgHeavyBlock_MovePiece(BgHeavyBlock* pthis, GlobalContext* globalCtx) { thisx->velocity.x *= 0.98f; thisx->velocity.z *= 0.98f; - func_8002D7EC(thisx); + Actor_UpdatePosition(thisx); thisx->shape.rot.x += thisx->world.rot.x; thisx->shape.rot.y += thisx->world.rot.y; thisx->shape.rot.z += thisx->world.rot.z; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.cpp b/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.cpp index 14a632870..f17f01608 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.cpp +++ b/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.cpp @@ -220,7 +220,7 @@ void BgHidanFwbig_MoveCollider(BgHidanFwbig* pthis, GlobalContext* globalCtx) { pthis->collider.dim.pos.z = pthis->actor.world.pos.z - (projPos.x * sn) + (projPos.z * cs); pthis->collider.dim.pos.y = pthis->actor.world.pos.y; - pthis->actor.world.rot.y = (projPos.z < 0.0f) ? pthis->actor.shape.rot.y : pthis->actor.shape.rot.y + 0x8000; + pthis->actor.world.rot.y = (projPos.z < 0.0f) ? (float)pthis->actor.shape.rot.y : pthis->actor.shape.rot.y + 0x8000; } void BgHidanFwbig_Update(Actor* thisx, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.cpp b/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.cpp index 463638c9a..5f4ef3751 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.cpp +++ b/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.cpp @@ -141,7 +141,7 @@ void func_80889C18(BgHidanKousi* pthis, GlobalContext* globalCtx) { } void func_80889C90(BgHidanKousi* pthis, GlobalContext* globalCtx) { - func_8002D7EC(&pthis->dyna.actor); + Actor_UpdatePosition(&pthis->dyna.actor); if (D_80889E40[pthis->dyna.actor.params & 0xFF] < Math_Vec3f_DistXYZ(&pthis->dyna.actor.home.pos, &pthis->dyna.actor.world.pos)) { func_80889ACC(pthis); diff --git a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.cpp b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.cpp index 20363521d..e688b222b 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.cpp +++ b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.cpp @@ -110,9 +110,9 @@ static InitChainEntry sInitChain[] = { ICHAIN_F32(uncullZoneDownward, 1000, ICHAIN_STOP), }; -static Vec3s D_80897538 = { 0, -0x4000, 0 }; +static VecRot D_80897538 = { 0, -0x4000, 0 }; -static Vec3s D_80897540 = { 0, 0x4000, 0 }; +static VecRot D_80897540 = { 0, 0x4000, 0 }; static Vec3f D_80897548[] = { { 0.1f, 0.1f, 0.1f }, @@ -571,7 +571,7 @@ void BgJyaCobra_DrawShadow(BgJyaCobra* pthis, GlobalContext* globalCtx) { s32 pad; s16 params = pthis->dyna.actor.params & 3; Vec3f sp64; - Vec3s* phi_a3; + VecRot* phi_a3; OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_jya_cobra.c", 966); diff --git a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.cpp b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.cpp index 45c8848e4..e5b0e3a0e 100644 --- a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.cpp +++ b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.cpp @@ -954,7 +954,7 @@ void BossFd_Fly(BossFd* pthis, GlobalContext* globalCtx) { if (pthis->work[BFD_ACTION_STATE] < BOSSFD_SKULL_FALL) { func_8002D908(&pthis->actor); } - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->work[BFD_LEAD_BODY_SEG]++; if (pthis->work[BFD_LEAD_BODY_SEG] >= 100) { diff --git a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.cpp b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.cpp index 31a52391e..697ecc09c 100644 --- a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.cpp +++ b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.cpp @@ -3950,7 +3950,7 @@ void BossGanon_LightBall_Update(Actor* thisx, GlobalContext* globalCtx2) { zDistFromLink = player->actor.world.pos.z - pthis->actor.world.pos.z; func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); switch (pthis->unk_1C2) { case 0: @@ -4223,7 +4223,7 @@ void func_808E1EB4(Actor* thisx, GlobalContext* globalCtx2) { } func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->unk_1A6++; @@ -4350,7 +4350,7 @@ void func_808E2544(Actor* thisx, GlobalContext* globalCtx) { } func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->unk_1A6++; @@ -4439,7 +4439,7 @@ void func_808E2544(Actor* thisx, GlobalContext* globalCtx) { pthis->unk_1C2 = 0xC; pthis->actor.speedXZ = -30.0f; func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->unk_1F0 = dorf->unk_1FC; numEffects = 10; break; @@ -4456,7 +4456,7 @@ void func_808E2544(Actor* thisx, GlobalContext* globalCtx) { pthis->actor.speedXZ = -30.0f; func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->unk_1F0.x = Rand_CenteredFloat(700.0f) + dorf->unk_1FC.x; pthis->unk_1F0.y = Rand_CenteredFloat(200.0f) + dorf->unk_1FC.y; diff --git a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.cpp b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.cpp index 51a27413f..ceb29e4e0 100644 --- a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.cpp +++ b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.cpp @@ -841,7 +841,7 @@ void BossGanondrof_Charge(BossGanondrof* pthis, GlobalContext* globalCtx) { } func_8002D908(thisx); - func_8002D7EC(thisx); + Actor_UpdatePosition(thisx); Math_ApproachF(&thisx->speedXZ, 10.0f, 1.0f, 0.5f); if ((sqrtf(SQ(dxCenter) + SQ(dzCenter)) > 280.0f) || (thisx->xyzDistToPlayerSq < SQ(100.0f))) { pthis->work[GND_ACTION_STATE] = CHARGE_FINISH; diff --git a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.cpp b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.cpp index 4ea8e8e59..0b5310b56 100644 --- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.cpp +++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.cpp @@ -2635,7 +2635,7 @@ void BossMo_Core(BossMo* pthis, GlobalContext* globalCtx) { pthis->actor.world.pos.y += pthis->actor.velocity.y; pthis->actor.velocity.y -= 1.0f; } - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); temp = (pthis->actor.world.pos.y < -200.0f) ? 5 : 1; pthis->actor.world.pos.y -= 20.0f; Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 50.0f, 20.0f, 100.0f, temp); diff --git a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.cpp b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.cpp index 57c11b296..866192b5a 100644 --- a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.cpp +++ b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.cpp @@ -652,7 +652,7 @@ void BossTw_TurnToPlayer(BossTw* pthis, GlobalContext* globalCtx) { Math_ApproachS(&pthis->actor.shape.rot.x, 0, 5, pthis->rotateSpeed); Math_ApproachF(&pthis->rotateSpeed, 4096.0f, 1.0f, 200.0f); func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); if (pthis->timers[0] == 0) { if ((otherTw->actionFunc != BossTw_ShootBeam) && pthis->work[CAN_SHOOT]) { pthis->work[CAN_SHOOT] = false; @@ -721,7 +721,7 @@ void BossTw_FlyTo(BossTw* pthis, GlobalContext* globalCtx) { Math_ApproachF(&pthis->rotateSpeed, 4096.0f, 1.0f, 100.0f); Math_ApproachF(&pthis->actor.speedXZ, 10.0f, 1.0f, 1.0f); func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); if ((pthis->timers[0] == 0) || (xzDist < 70.0f)) { BossTw_SetupTurnToPlayer(pthis, globalCtx); @@ -2388,7 +2388,7 @@ void BossTw_DeathBall(BossTw* pthis, GlobalContext* globalCtx) { pthis->rotateSpeed); Math_ApproachS(&pthis->actor.world.rot.y, yaw, 5, pthis->rotateSpeed); func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } void BossTw_TwinrovaSetupDeathCS(BossTw* pthis, GlobalContext* globalCtx) { @@ -3937,7 +3937,7 @@ void BossTw_BlastFire(BossTw* pthis, GlobalContext* globalCtx) { pthis->blastActive = true; if (pthis->timers[0] == 0) { func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Audio_PlayActorSound2(&pthis->actor, NA_SE_EN_TWINROBA_SHOOT_FIRE & ~SFX_FLAG); } else { Vec3f velocity; @@ -4127,7 +4127,7 @@ void BossTw_BlastIce(BossTw* pthis, GlobalContext* globalCtx) { if (pthis->timers[0] == 0) { func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Audio_PlayActorSound2(&pthis->actor, NA_SE_EN_TWINROBA_SHOOT_FREEZE - SFX_FLAG); } else { Vec3f velocity; diff --git a/src/overlays/actors/ovl_Door_Killer/z_door_killer.cpp b/src/overlays/actors/ovl_Door_Killer/z_door_killer.cpp index 328c4ce97..dec9d1bd4 100644 --- a/src/overlays/actors/ovl_Door_Killer/z_door_killer.cpp +++ b/src/overlays/actors/ovl_Door_Killer/z_door_killer.cpp @@ -233,7 +233,7 @@ void DoorKiller_FallAsRubble(DoorKiller* pthis, GlobalContext* globalCtx) { } else { Actor_Kill(&pthis->actor); } - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } s32 DoorKiller_IsHit(Actor* thisx, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.cpp b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.cpp index 55302136c..c9563f4d9 100644 --- a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.cpp +++ b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.cpp @@ -449,7 +449,7 @@ void EnAnubice_Update(Actor* thisx, GlobalContext* globalCtx) { pthis->actionFunc(pthis, globalCtx); pthis->actor.velocity.y += pthis->actor.gravity; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); if (!pthis->isLinkOutOfRange) { Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 5.0f, 5.0f, 10.0f, 0x1D); diff --git a/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.cpp b/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.cpp index c62eaf78f..2fb46370b 100644 --- a/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.cpp +++ b/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.cpp @@ -194,7 +194,7 @@ void EnAnubiceFire_Update(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&pthis->actor, pthis->scale); pthis->actionFunc(pthis, globalCtx); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->unk_160[0] = pthis->actor.world.pos; if (1) {} diff --git a/src/overlays/actors/ovl_En_Bubble/z_en_bubble.cpp b/src/overlays/actors/ovl_En_Bubble/z_en_bubble.cpp index 3f5e91925..b91bf1510 100644 --- a/src/overlays/actors/ovl_En_Bubble/z_en_bubble.cpp +++ b/src/overlays/actors/ovl_En_Bubble/z_en_bubble.cpp @@ -414,7 +414,7 @@ void EnBubble_Regrow(EnBubble* pthis, GlobalContext* globalCtx) { void EnBubble_Update(Actor* thisx, GlobalContext* globalCtx) { EnBubble* pthis = (EnBubble*)thisx; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 16.0f, 16.0f, 0.0f, 7); pthis->actionFunc(pthis, globalCtx); Actor_SetFocus(&pthis->actor, pthis->actor.shape.yOffset); diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.cpp b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.cpp index bb7ed25e4..2b05285cd 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.cpp +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.cpp @@ -258,7 +258,7 @@ void EnClearTag_Init(Actor* thisx, GlobalContext* globalCtx) { pthis->actor.speedXZ = 35.0f; func_8002D908(&pthis->actor); for (j = 0; j <= 0; j++) { - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } pthis->actor.scale.x = 0.4f; pthis->actor.scale.y = 0.4f; @@ -517,7 +517,7 @@ void EnClearTag_Update(Actor* thisx, GlobalContext* globalCtx2) { pthis->crashingTimer--; } - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_SetFocus(&pthis->actor, 0.0f); @@ -562,7 +562,7 @@ void EnClearTag_Update(Actor* thisx, GlobalContext* globalCtx2) { break; case CLEAR_TAG_STATE_LASER: - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); // Check if the laser has hit a target. if (pthis->collider.base.atFlags & AT_HIT) { diff --git a/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.cpp b/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.cpp index be30f26dc..fc5092be6 100644 --- a/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.cpp +++ b/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.cpp @@ -443,7 +443,7 @@ void func_809F74C4(EnDodojr* pthis, GlobalContext* globalCtx) { } void func_809F758C(EnDodojr* pthis, GlobalContext* globalCtx) { - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); func_809F6730(pthis, globalCtx, &pthis->actor.world.pos); if (DECR(pthis->timer4) == 0) { @@ -500,7 +500,7 @@ void func_809F773C(EnDodojr* pthis, GlobalContext* globalCtx) { void func_809F77AC(EnDodojr* pthis, GlobalContext* globalCtx) { pthis->rootScale = 1.2f; pthis->rootScale *= ((f32)pthis->actor.colorFilterTimer / 8); - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); if (func_809F68B0(pthis, globalCtx) != 0) { pthis->timer3 = 60; @@ -515,7 +515,7 @@ void func_809F784C(EnDodojr* pthis, GlobalContext* globalCtx) { } void func_809F786C(EnDodojr* pthis, GlobalContext* globalCtx) { - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); if (func_809F68B0(pthis, globalCtx) != 0) { func_809F6AC4(pthis); @@ -548,7 +548,7 @@ void func_809F78EC(EnDodojr* pthis, GlobalContext* globalCtx) { void func_809F799C(EnDodojr* pthis, GlobalContext* globalCtx) { pthis->actor.flags |= ACTOR_FLAG_24; - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); if (func_809F68B0(pthis, globalCtx) != 0) { func_809F6994(pthis); @@ -572,7 +572,7 @@ void func_809F7A00(EnDodojr* pthis, GlobalContext* globalCtx) { } void func_809F7AB8(EnDodojr* pthis, GlobalContext* globalCtx) { - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); Math_SmoothStepToS(&pthis->actor.shape.rot.y, 0, 4, 1000, 10); pthis->actor.world.rot.x = pthis->actor.shape.rot.x; diff --git a/src/overlays/actors/ovl_En_Du/z_en_du.cpp b/src/overlays/actors/ovl_En_Du/z_en_du.cpp index dd10674f0..65790bb8f 100644 --- a/src/overlays/actors/ovl_En_Du/z_en_du.cpp +++ b/src/overlays/actors/ovl_En_Du/z_en_du.cpp @@ -580,7 +580,7 @@ void EnDu_Update(Actor* thisx, GlobalContext* globalCtx) { pthis->actor.world.pos.y += pthis->actor.velocity.y; pthis->actor.world.pos.z += pthis->actor.velocity.z; } else { - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 0.0f, 0.0f, 0.0f, 4); diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.cpp b/src/overlays/actors/ovl_En_Elf/z_en_elf.cpp index bee524e53..ba6347d3f 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.cpp +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.cpp @@ -529,14 +529,14 @@ void func_80A02C98(EnElf* pthis, Vec3f* targetPos, f32 arg2) { func_80A02BD8(pthis, targetPos, arg2); Math_StepToF(&pthis->actor.velocity.x, xVelTarget, 1.5f); Math_StepToF(&pthis->actor.velocity.z, zVelTarget, 1.5f); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } void func_80A02E30(EnElf* pthis, Vec3f* targetPos) { func_80A02BD8(pthis, targetPos, 0.2f); pthis->actor.velocity.x = (targetPos->x + pthis->unk_28C.x) - pthis->actor.world.pos.x; pthis->actor.velocity.z = (targetPos->z + pthis->unk_28C.z) - pthis->actor.world.pos.z; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actor.world.pos.x = targetPos->x + pthis->unk_28C.x; pthis->actor.world.pos.z = targetPos->z + pthis->unk_28C.z; } @@ -544,7 +544,7 @@ void func_80A02E30(EnElf* pthis, Vec3f* targetPos) { void func_80A02EC0(EnElf* pthis, Vec3f* targetPos) { func_80A02BD8(pthis, targetPos, 0.2f); pthis->actor.velocity.x = pthis->actor.velocity.z = 0.0f; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actor.world.pos.x = targetPos->x + pthis->unk_28C.x; pthis->actor.world.pos.z = targetPos->z + pthis->unk_28C.z; } @@ -619,7 +619,7 @@ void func_80A03148(EnElf* pthis, Vec3f* arg1, f32 arg2, f32 arg3, f32 arg4) { Math_StepToF(&pthis->actor.velocity.x, xVelTarget, 5.0f); Math_StepToF(&pthis->actor.velocity.z, zVelTarget, 5.0f); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } void func_80A0329C(EnElf* pthis, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.cpp b/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.cpp index 05dd2f92e..b80da16b0 100644 --- a/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.cpp +++ b/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.cpp @@ -204,13 +204,13 @@ void EnFdFire_DanceTowardsPlayer(EnFdFire* pthis, GlobalContext* globalCtx) { if (pthis->actor.speedXZ < 0.1f) { pthis->actor.speedXZ = 5.0f; } - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); } } void EnFdFire_Disappear(EnFdFire* pthis, GlobalContext* globalCtx) { Math_SmoothStepToF(&pthis->actor.speedXZ, 0.0f, 0.6f, 9.0f, 0.0f); - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); Math_SmoothStepToF(&pthis->scale, 0.0f, 0.3f, 0.1f, 0.0f); pthis->actor.shape.shadowScale = 20.0f; pthis->actor.shape.shadowScale *= (pthis->scale / 3.0f); @@ -229,7 +229,7 @@ void EnFdFire_Update(Actor* thisx, GlobalContext* globalCtx) { } } - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actionFunc(pthis, globalCtx); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 12.0f, 10.0f, 0.0f, 5); diff --git a/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.cpp b/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.cpp index 543151519..9ee55c516 100644 --- a/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.cpp +++ b/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.cpp @@ -442,7 +442,7 @@ void EnFhgFire_EnergyBall(EnFhgFire* pthis, GlobalContext* globalCtx) { dyL = player->actor.world.pos.y + 40.0f - pthis->actor.world.pos.y; dzL = player->actor.world.pos.z - pthis->actor.world.pos.z; func_8002D908(&pthis->actor); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); if (pthis->work[FHGFIRE_VARIANCE_TIMER] & 1) { Actor_SetScale(&pthis->actor, 6.0f); } else { diff --git a/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.cpp b/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.cpp index 178365de3..c1ac023ed 100644 --- a/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.cpp +++ b/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.cpp @@ -301,7 +301,7 @@ void EnGSwitch_GalleryRupee(EnGSwitch* pthis, GlobalContext* globalCtx) { } break; case GSWITCH_LEFT: - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); if ((pthis->actor.velocity.x < 0.0f) && (pthis->actor.world.pos.x < pthis->targetPos.x)) { gallery = ((EnSyatekiItm*)pthis->actor.parent); if (gallery->actor.update != NULL) { @@ -311,7 +311,7 @@ void EnGSwitch_GalleryRupee(EnGSwitch* pthis, GlobalContext* globalCtx) { } break; case GSWITCH_RIGHT: - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); if (pthis->actor.world.pos.x > pthis->targetPos.x) { gallery = ((EnSyatekiItm*)pthis->actor.parent); if (gallery->actor.update != NULL) { diff --git a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.cpp b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.cpp index ad2a786d7..96a9f88c9 100644 --- a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.cpp +++ b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.cpp @@ -327,7 +327,7 @@ s32 EnGoroiwa_MoveAndFall(EnGoroiwa* pthis, GlobalContext* globalCtx) { Vec3s* nextPointPos; Math_StepToF(&pthis->actor.speedXZ, R_EN_GOROIWA_SPEED * 0.01f, 0.3f); - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); path = &globalCtx->setupPathList[pthis->actor.params & 0xFF]; nextPointPos = (Vec3s*)SEGMENTED_TO_VIRTUAL(path->points) + pthis->nextWaypoint; result = true; diff --git a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.cpp b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.cpp index 5e91822bf..0b99161f0 100644 --- a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.cpp +++ b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.cpp @@ -432,12 +432,12 @@ void EnHonotrap_FlameChase(EnHonotrap* pthis, GlobalContext* globalCtx) { Math_ScaledStepToS(&pthis->actor.world.rot.y, pthis->actor.yawTowardsPlayer, 0x300); Math_StepToF(&pthis->actor.speedXZ, 3.0f, 0.1f); pthis->actor.gravity = (-pthis->actor.yDistToPlayer < 10.0f) ? 0.08f : -0.08f; - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); if (pthis->actor.velocity.y > 1.0f) { pthis->actor.velocity.y = 1.0f; } pthis->actor.velocity.y *= 0.95f; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 7.0f, 10.0f, 0.0f, 0x1D); if (pthis->collider.cyl.base.atFlags & AT_BOUNCED) { Player* player = GET_PLAYER(globalCtx); diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.cpp b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.cpp index 8944475da..af223f04f 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.cpp +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.cpp @@ -414,7 +414,7 @@ void EnIshi_LiftedUp(EnIshi* pthis, GlobalContext* globalCtx) { EnIshi_SetupFly(pthis); EnIshi_Fall(pthis); func_80A7ED94(&pthis->actor.velocity, D_80A7FA28[pthis->actor.params & 1]); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 7.5f, 35.0f, 0.0f, 0xC5); } } @@ -481,7 +481,7 @@ void EnIshi_Fly(EnIshi* pthis, GlobalContext* globalCtx) { Math_StepToF(&pthis->actor.shape.yOffset, 0.0f, 2.0f); EnIshi_Fall(pthis); func_80A7ED94(&pthis->actor.velocity, D_80A7FA28[type]); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actor.shape.rot.x += sRotSpeedX; pthis->actor.shape.rot.y += sRotSpeedY; Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 7.5f, 35.0f, 0.0f, 0xC5); diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.cpp b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.cpp index 142948cb1..23ed02f41 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.cpp +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.cpp @@ -368,7 +368,7 @@ void EnKusa_LiftedUp(EnKusa* pthis, GlobalContext* globalCtx) { pthis->actor.gravity = -0.1f; EnKusa_UpdateVelY(pthis); EnKusa_RandScaleVecToZero(&pthis->actor.velocity, 0.005f); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 7.5f, 35.0f, 0.0f, 0xC5); pthis->actor.gravity = -3.2f; } @@ -428,7 +428,7 @@ void EnKusa_Fall(EnKusa* pthis, GlobalContext* globalCtx) { pthis->actor.shape.rot.x += rotSpeedX; pthis->actor.shape.rot.y += rotSpeedY; EnKusa_RandScaleVecToZero(&pthis->actor.velocity, 0.05f); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 7.5f, 35.0f, 0.0f, 0xC5); Collider_UpdateCylinder(&pthis->actor, &pthis->collider); CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &pthis->collider.base); diff --git a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.cpp b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.cpp index 135f5efe0..f9e7c9f8e 100644 --- a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.cpp +++ b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.cpp @@ -1059,7 +1059,7 @@ void func_80AECEB4(EnRu1* pthis, GlobalContext* globalCtx) { } s32 func_80AECF6C(EnRu1* pthis, GlobalContext* globalCtx) { - s16* shapeRotY; + Rotation* shapeRotY; Player* player = GET_PLAYER(globalCtx); Player* otherPlayer; s16 temp_f16; @@ -1487,7 +1487,7 @@ void func_80AEE050(EnRu1* pthis) { } pthis->actor.velocity.x = Math_SinS(pthis->actor.world.rot.y) * pthis->actor.speedXZ; pthis->actor.velocity.z = Math_CosS(pthis->actor.world.rot.y) * pthis->actor.speedXZ; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } } else { if (pthis->unk_350 == 1) { diff --git a/src/overlays/actors/ovl_En_Sa/z_en_sa.cpp b/src/overlays/actors/ovl_En_Sa/z_en_sa.cpp index bf0c8e495..6cc859538 100644 --- a/src/overlays/actors/ovl_En_Sa/z_en_sa.cpp +++ b/src/overlays/actors/ovl_En_Sa/z_en_sa.cpp @@ -723,7 +723,7 @@ void EnSa_Update(Actor* thisx, GlobalContext* globalCtx) { pthis->actor.world.pos.y += pthis->actor.velocity.y; pthis->actor.world.pos.z += pthis->actor.velocity.z; } else { - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } if (globalCtx->sceneNum != SCENE_SPOT05) { diff --git a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.cpp b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.cpp index 3d3598173..e6147360e 100644 --- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.cpp +++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.cpp @@ -826,7 +826,7 @@ void EnSsh_Update(Actor* thisx, GlobalContext* globalCtx) { EnSsh_Damaged(pthis); } else { SkelAnime_Update(&pthis->skelAnime); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 0.0f, 0.0f, 0.0f, 4); pthis->actionFunc(pthis, globalCtx); } diff --git a/src/overlays/actors/ovl_En_St/z_en_st.cpp b/src/overlays/actors/ovl_En_St/z_en_st.cpp index 320742d4c..b46d20950 100644 --- a/src/overlays/actors/ovl_En_St/z_en_st.cpp +++ b/src/overlays/actors/ovl_En_St/z_en_st.cpp @@ -945,7 +945,7 @@ void EnSt_ReturnToCeiling(EnSt* pthis, GlobalContext* globalCtx) { */ void EnSt_BounceAround(EnSt* pthis, GlobalContext* globalCtx) { pthis->actor.colorFilterTimer = pthis->deathTimer.whole(); - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); pthis->actor.world.rot.x += 0x800 * FRAMERATE_SCALER; pthis->actor.world.rot.z -= 0x800 * FRAMERATE_SCALER; pthis->actor.shape.rot = pthis->actor.world.rot; @@ -983,7 +983,7 @@ void EnSt_FinishBouncing(EnSt* pthis, GlobalContext* globalCtx) { pthis->actor.shape.rot = pthis->actor.world.rot; - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); pthis->groundBounces = 2; EnSt_IsDoneBouncing(pthis, globalCtx); } @@ -1027,7 +1027,7 @@ void EnSt_Update(Actor* pthisx, GlobalContext* globalCtx) { } if (pthis->swayTimer == 0 && pthis->stunTimer == 0) { - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 0.0f, 0.0f, 0.0f, 4); diff --git a/src/overlays/actors/ovl_En_Tite/z_en_tite.cpp b/src/overlays/actors/ovl_En_Tite/z_en_tite.cpp index e2ca764a6..8ebc115ef 100644 --- a/src/overlays/actors/ovl_En_Tite/z_en_tite.cpp +++ b/src/overlays/actors/ovl_En_Tite/z_en_tite.cpp @@ -638,7 +638,7 @@ void EnTite_Recoil(EnTite* pthis, GlobalContext* globalCtx) { pthis->actor.world.rot.y = pthis->actor.shape.rot.y; pthis->collider.base.atFlags &= ~AT_HIT; if ((pthis->actor.xzDistToPlayer > 300.0f) && (pthis->actor.yDistToPlayer > 80.0f) && - (ABS(pthis->actor.shape.rot.x) < 4000) && (ABS(pthis->actor.shape.rot.z) < 4000) && + (ABS((float)pthis->actor.shape.rot.x) < 4000) && (ABS((float)pthis->actor.shape.rot.z) < 4000) && ((pthis->actor.bgCheckFlags & 1) || ((pthis->actor.params == TEKTITE_BLUE) && (pthis->actor.bgCheckFlags & 0x20)))) { EnTite_SetupIdle(pthis); @@ -710,7 +710,7 @@ void EnTite_Stunned(EnTite* pthis, GlobalContext* globalCtx) { } else if (pthis->flipState == TEKTITE_FLIPPED) { EnTite_SetupFlipUpright(pthis); } else if (((pthis->actor.xzDistToPlayer > 300.0f) && (pthis->actor.yDistToPlayer > 80.0f) && - (ABS(pthis->actor.shape.rot.x) < 4000) && (ABS(pthis->actor.shape.rot.z) < 4000)) && + (ABS((float)pthis->actor.shape.rot.x) < 4000) && (ABS((float)pthis->actor.shape.rot.z) < 4000)) && ((pthis->actor.bgCheckFlags & 1) || ((pthis->actor.params == TEKTITE_BLUE) && (pthis->actor.bgCheckFlags & 0x20)))) { EnTite_SetupIdle(pthis); diff --git a/src/overlays/actors/ovl_En_Tp/z_en_tp.cpp b/src/overlays/actors/ovl_En_Tp/z_en_tp.cpp index f3a27ecd3..f5cccff74 100644 --- a/src/overlays/actors/ovl_En_Tp/z_en_tp.cpp +++ b/src/overlays/actors/ovl_En_Tp/z_en_tp.cpp @@ -357,7 +357,7 @@ void EnTp_Fragment_SetupFade(EnTp* pthis) { } void EnTp_Fragment_Fade(EnTp* pthis, GlobalContext* globalCtx) { - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->alpha -= 20; if (pthis->alpha < 20) { diff --git a/src/overlays/actors/ovl_En_Tr/z_en_tr.cpp b/src/overlays/actors/ovl_En_Tr/z_en_tr.cpp index 003025f21..44c464d34 100644 --- a/src/overlays/actors/ovl_En_Tr/z_en_tr.cpp +++ b/src/overlays/actors/ovl_En_Tr/z_en_tr.cpp @@ -504,7 +504,7 @@ void func_80B24038(EnTr* pthis, GlobalContext* globalCtx, s32 actionIndex) { Math_StepToF(&pthis->actor.velocity.x, endPos.x, 1.0f); Math_StepToF(&pthis->actor.velocity.y, endPos.y, 1.0f); Math_StepToF(&pthis->actor.velocity.z, endPos.z, 1.0f); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } void EnTr_UpdateRotation(EnTr* pthis, GlobalContext* globalCtx, s32 actionIndex) { diff --git a/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.cpp b/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.cpp index 52c6ca1e1..28073f2d5 100644 --- a/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.cpp +++ b/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.cpp @@ -192,7 +192,7 @@ void EnVbBall_Update(Actor* thisx, GlobalContext* globalCtx2) { pthis->actor.shape.rot.y += (s16)pthis->yRotVel; pthis->actor.velocity.y += -1.0f; pthis->actor.gravity = -1.0f; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); if (pthis->actor.params >= 200) { EnVbBall_UpdateBones(pthis, globalCtx); } else { diff --git a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.cpp b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.cpp index 09aafdcdd..0a9d82903 100644 --- a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.cpp +++ b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.cpp @@ -393,7 +393,7 @@ void EnWood02_Update(Actor* thisx, GlobalContext* globalCtx2) { pthis->unk_14C++; Math_ApproachF(&pthis->actor.velocity.x, 0.0f, 1.0f, 5 * 0.01f); Math_ApproachF(&pthis->actor.velocity.z, 0.0f, 1.0f, 5 * 0.01f); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actor.shape.rot.z = Math_SinS(3000 * pthis->unk_14C) * 0x4000; pthis->unk_14E[0]--; diff --git a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.cpp b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.cpp index 60356093f..7d97cb0a7 100644 --- a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.cpp +++ b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.cpp @@ -1994,7 +1994,7 @@ void func_80B57D60(EnZl3* pthis, GlobalContext* globalCtx) { s32 func_80B57D80(EnZl3* pthis, GlobalContext* globalCtx) { s32 pad; - s16* sp32 = &pthis->actor.shape.rot.y; + auto sp32 = &pthis->actor.shape.rot.y; struct_80034A14_arg1* unk_3F8 = &pthis->unk_3F8; Player* player = GET_PLAYER(globalCtx); s32 unk_314 = pthis->unk_314; diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.cpp b/src/overlays/actors/ovl_Fishing/z_fishing.cpp index 1e905919f..c4ca4e708 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.cpp +++ b/src/overlays/actors/ovl_Fishing/z_fishing.cpp @@ -4007,7 +4007,7 @@ void Fishing_UpdateFish(Actor* thisx, GlobalContext* globalCtx2) { func_8002D908(&pthis->actor); } - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actor.world.pos.y += (pthis->unk_184 * 1.5f); diff --git a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.cpp b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.cpp index f99a06546..639b45fb9 100644 --- a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.cpp +++ b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.cpp @@ -87,7 +87,7 @@ void ItemOcarina_Destroy(Actor* thisx, GlobalContext* globalCtx) { void ItemOcarina_Fly(ItemOcarina* pthis, GlobalContext* globalCtx) { Vec3f ripplePos; - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actor.shape.rot.x += pthis->spinRotOffset * 2; pthis->actor.shape.rot.y += pthis->spinRotOffset * 3; @@ -138,7 +138,7 @@ void ItemOcarina_GetThrown(ItemOcarina* pthis, GlobalContext* globalCtx) { } void func_80B864EC(ItemOcarina* pthis, GlobalContext* globalCtx) { - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); pthis->actor.shape.rot.x += pthis->spinRotOffset * 2; pthis->actor.shape.rot.y += pthis->spinRotOffset * 3; diff --git a/src/overlays/actors/ovl_Item_Shield/z_item_shield.cpp b/src/overlays/actors/ovl_Item_Shield/z_item_shield.cpp index caa0e4a86..410a2d698 100644 --- a/src/overlays/actors/ovl_Item_Shield/z_item_shield.cpp +++ b/src/overlays/actors/ovl_Item_Shield/z_item_shield.cpp @@ -210,7 +210,7 @@ void func_80B86F68(ItemShield* pthis, GlobalContext* globalCtx) { pthis->actor.shape.rot.y = Math_Atan2S(-shield->zz, -shield->xz); pthis->actor.shape.rot.x = Math_Atan2S(-shield->yz, sqrtf(shield->zz * shield->zz + shield->xz * shield->xz)); - if (ABS(pthis->actor.shape.rot.x) > 0x4000) { + if (ABS((float)pthis->actor.shape.rot.x) > 0x4000) { pthis->unk_19C |= 1; } diff --git a/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.cpp b/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.cpp index fc23a075e..7b3832e82 100644 --- a/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.cpp +++ b/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.cpp @@ -247,7 +247,7 @@ void ObjKibako_Held(ObjKibako* pthis, GlobalContext* globalCtx) { } else { ObjKibako_SetupThrown(pthis); ObjKibako_ApplyGravity(pthis); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); } Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 19.0f, 20.0f, 0.0f, 5); } @@ -276,7 +276,7 @@ void ObjKibako_Thrown(ObjKibako* pthis, GlobalContext* globalCtx) { Actor_Kill(&pthis->actor); } else { ObjKibako_ApplyGravity(pthis); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 19.0f, 20.0f, 0.0f, 5); Collider_UpdateCylinder(&pthis->actor, &pthis->collider); CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &pthis->collider.base); diff --git a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.cpp b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.cpp index 7c6637b30..43b8d41ba 100644 --- a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.cpp +++ b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.cpp @@ -298,7 +298,7 @@ void ObjTsubo_LiftedUp(ObjTsubo* pthis, GlobalContext* globalCtx) { pthis->actor.room = globalCtx->roomCtx.curRoom.num; ObjTsubo_SetupThrown(pthis); ObjTsubo_ApplyGravity(pthis); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Actor_UpdateBgCheckInfo(globalCtx, &pthis->actor, 5.0f, 15.0f, 0.0f, 0x85); } } @@ -329,7 +329,7 @@ void ObjTsubo_Thrown(ObjTsubo* pthis, GlobalContext* globalCtx) { Actor_Kill(&pthis->actor); } else { ObjTsubo_ApplyGravity(pthis); - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); Math_StepToS(&D_80BA1B54, D_80BA1B50, 0x64); Math_StepToS(&D_80BA1B5C, D_80BA1B58, 0x64); pthis->actor.shape.rot.x += D_80BA1B54; diff --git a/src/overlays/actors/ovl_player_actor/z_player.cpp b/src/overlays/actors/ovl_player_actor/z_player.cpp index 3556eac17..3041bbe44 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.cpp +++ b/src/overlays/actors/ovl_player_actor/z_player.cpp @@ -2543,7 +2543,7 @@ s32 func_808359FC(Player* pthis, GlobalContext* globalCtx) { } else if (LinkAnimation_OnFrame(&pthis->skelAnime2, 6.0f)) { f32 posX = (Math_SinS(pthis->actor.shape.rot.y) * 10.0f) + pthis->actor.world.pos.x; f32 posZ = (Math_CosS(pthis->actor.shape.rot.y) * 10.0f) + pthis->actor.world.pos.z; - s32 yaw = (pthis->unk_664 != NULL) ? pthis->actor.shape.rot.y + 14000 : pthis->actor.shape.rot.y; + s32 yaw = (pthis->unk_664 != NULL) ? pthis->actor.shape.rot.y + 14000 : (float)pthis->actor.shape.rot.y; EnBoom* boomerang = (EnBoom*)Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_BOOM, posX, pthis->actor.world.pos.y + 30.0f, posZ, pthis->actor.focus.rot.x, yaw, 0, 0); @@ -10082,7 +10082,7 @@ void Player_UpdateCommon(Player* pthis, GlobalContext* globalCtx, Input* input) pthis->actor.world.rot.y = pthis->currentYaw; } - func_8002D868(&pthis->actor); + Actor_UpdateVelocityWithGravity(&pthis->actor); if ((pthis->windSpeed != 0.0f) && !Player_InCsMode(globalCtx) && !(pthis->stateFlags1 & 0x206000) && (func_80845668 != pthis->playerUpdateFunct) && (func_808507F4 != pthis->playerUpdateFunct)) { @@ -10090,7 +10090,7 @@ void Player_UpdateCommon(Player* pthis, GlobalContext* globalCtx, Input* input) pthis->actor.velocity.z += pthis->windSpeed * Math_CosS(pthis->windDirection); } - func_8002D7EC(&pthis->actor); + Actor_UpdatePosition(&pthis->actor); func_80847BA0(globalCtx, pthis); } else { D_808535E4 = 0;