mirror of
https://github.com/blawar/ooot.git
synced 2024-06-30 16:29:55 +00:00
adjusted PosRot
This commit is contained in:
parent
6d0b976f32
commit
29a9879c8d
|
@ -197,7 +197,8 @@ void func_8003555C(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f*
|
|||
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_80035844(Vec3f* arg0, Vec3f* arg1, VecRot* arg2, s32 arg3);
|
||||
Actor* func_800358DC(Actor* actor, Vec3f* spawnPos, VecRot* spawnRot, f32* arg3, s32 timer, s16* unused, GlobalContext* globalCtx, s16 params, s32 arg8);
|
||||
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);
|
||||
|
|
|
@ -24,6 +24,7 @@ f32 Math_SmoothStepToF(f32* pValue, f32 target, f32 fraction, const Step& step,
|
|||
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_StepToAngleS(Rotation* 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);
|
||||
f32 Math_AngleDiffF(f32 a, f32 b);
|
||||
|
|
|
@ -108,6 +108,8 @@ class Timer
|
|||
return m_counter;
|
||||
}
|
||||
|
||||
float abs() const;
|
||||
|
||||
s16 toS16() const
|
||||
{
|
||||
return (s16)m_counter;
|
||||
|
@ -126,17 +128,21 @@ class Timer
|
|||
s64 m_counterInt;
|
||||
};
|
||||
|
||||
typedef Timer Counter;
|
||||
typedef Timer Rotation;
|
||||
|
||||
class Step
|
||||
{
|
||||
public:
|
||||
Step();
|
||||
Step(const Step& t);
|
||||
Step(float n);
|
||||
Step(const Rotation& r);
|
||||
|
||||
float value() const;
|
||||
|
||||
protected:
|
||||
float m_value;
|
||||
};
|
||||
|
||||
typedef Timer Counter;
|
||||
typedef Timer Rotation;
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ struct VecSph {
|
|||
|
||||
struct PosRot {
|
||||
Vec3f pos;
|
||||
Vec3s rot;
|
||||
VecRot rot;
|
||||
}; // size = 0x14
|
||||
|
||||
#define LERP(x, y, scale) (((y) - (x)) * (scale) + (x))
|
||||
|
|
|
@ -10,29 +10,29 @@ static FramerateProfile g_profile = PROFILE_BOOT;
|
|||
|
||||
#if FRAME_RATE == 20
|
||||
static Framerate g_profileRates[] = {
|
||||
FRAMERATE_30FPS, // PROFILE_BOOT
|
||||
FRAMERATE_60FPS, // PROFILE_PAUSE
|
||||
FRAMERATE_20FPS, // PROFILE_GAMEPLAY
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN1
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN2
|
||||
FRAMERATE_60FPS, // PROFILE_SAMPLE
|
||||
FRAMERATE_60FPS, // PROFILE_OPENING
|
||||
FRAMERATE_60FPS, // PROFILE_SELECT
|
||||
FRAMERATE_60FPS, // PROFILE_TITLE
|
||||
FRAMERATE_60FPS, // PROFILE_FILE_CHOOSE
|
||||
FRAMERATE_30FPS, // PROFILE_BOOT
|
||||
FRAMERATE_60FPS, // PROFILE_PAUSE
|
||||
FRAMERATE_20FPS, // PROFILE_GAMEPLAY
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN1
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN2
|
||||
FRAMERATE_60FPS, // PROFILE_SAMPLE
|
||||
FRAMERATE_60FPS, // PROFILE_OPENING
|
||||
FRAMERATE_60FPS, // PROFILE_SELECT
|
||||
FRAMERATE_60FPS, // PROFILE_TITLE
|
||||
FRAMERATE_60FPS, // PROFILE_FILE_CHOOSE
|
||||
};
|
||||
#else
|
||||
static Framerate g_profileRates[] = {
|
||||
FRAMERATE_30FPS, // PROFILE_BOOT
|
||||
FRAMERATE_60FPS, // PROFILE_PAUSE
|
||||
FRAMERATE_60FPS, // PROFILE_GAMEPLAY
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN1
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN2
|
||||
FRAMERATE_60FPS, // PROFILE_SAMPLE
|
||||
FRAMERATE_60FPS, // PROFILE_OPENING
|
||||
FRAMERATE_60FPS, // PROFILE_SELECT
|
||||
FRAMERATE_60FPS, // PROFILE_TITLE
|
||||
FRAMERATE_60FPS, // PROFILE_FILE_CHOOSE
|
||||
FRAMERATE_30FPS, // PROFILE_BOOT
|
||||
FRAMERATE_60FPS, // PROFILE_PAUSE
|
||||
FRAMERATE_60FPS, // PROFILE_GAMEPLAY
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN1
|
||||
FRAMERATE_60FPS, // PROFILE_UNKNOWN2
|
||||
FRAMERATE_60FPS, // PROFILE_SAMPLE
|
||||
FRAMERATE_60FPS, // PROFILE_OPENING
|
||||
FRAMERATE_60FPS, // PROFILE_SELECT
|
||||
FRAMERATE_60FPS, // PROFILE_TITLE
|
||||
FRAMERATE_60FPS, // PROFILE_FILE_CHOOSE
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -122,6 +122,18 @@ void Timer::update()
|
|||
m_counter = (float)m_counterInt * COUNTER_STEP;
|
||||
}
|
||||
|
||||
float Timer::abs() const
|
||||
{
|
||||
float v = toFloat();
|
||||
|
||||
if(v < 0.0f)
|
||||
{
|
||||
return -v;
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
Timer& Timer::operator++() // pre
|
||||
{
|
||||
m_counterInt++;
|
||||
|
@ -288,7 +300,6 @@ s32 Timer::operator>>(long n)
|
|||
return whole() >> n;
|
||||
}
|
||||
|
||||
|
||||
Step::Step() : m_value(0)
|
||||
{
|
||||
}
|
||||
|
@ -300,7 +311,12 @@ Step::Step(const Step& t)
|
|||
|
||||
Step::Step(float n)
|
||||
{
|
||||
m_value = n;// * FRAMERATE_SCALER;
|
||||
m_value = n; // * FRAMERATE_SCALER;
|
||||
}
|
||||
|
||||
Step::Step(const Rotation& r)
|
||||
{
|
||||
m_value = (s16)r;
|
||||
}
|
||||
|
||||
float Step::value() const
|
||||
|
|
|
@ -4141,7 +4141,8 @@ void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSph, s32 freezeFla
|
|||
}
|
||||
}
|
||||
|
||||
void func_80035844(Vec3f* arg0, Vec3f* arg1, Vec3s* arg2, s32 arg3) {
|
||||
template<class T>
|
||||
static inline void _func_80035844(Vec3f* arg0, Vec3f* arg1, T* arg2, s32 arg3) {
|
||||
f32 dx = arg1->x - arg0->x;
|
||||
f32 dz = arg1->z - arg0->z;
|
||||
f32 dy = arg3 ? (arg1->y - arg0->y) : (arg0->y - arg1->y);
|
||||
|
@ -4150,10 +4151,20 @@ void func_80035844(Vec3f* arg0, Vec3f* arg1, Vec3s* arg2, s32 arg3) {
|
|||
arg2->x = Math_Atan2S(sqrtf(SQ(dx) + SQ(dz)), dy);
|
||||
}
|
||||
|
||||
void func_80035844(Vec3f* arg0, Vec3f* arg1, Vec3s* arg2, s32 arg3)
|
||||
{
|
||||
_func_80035844(arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_80035844(Vec3f* arg0, Vec3f* arg1, VecRot* arg2, s32 arg3)
|
||||
{
|
||||
_func_80035844(arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Spawns En_Part (Dissipating Flames) actor as a child of the given actor.
|
||||
*/
|
||||
Actor* func_800358DC(Actor* actor, Vec3f* spawnPos, Vec3s* spawnRot, f32* arg3, s32 timer, s16* unused,
|
||||
Actor* func_800358DC(Actor* actor, Vec3f* spawnPos, VecRot* spawnRot, f32* arg3, s32 timer, s16* unused,
|
||||
GlobalContext* globalCtx, s16 params, s32 arg8) {
|
||||
EnPart* spawnedEnPart;
|
||||
|
||||
|
|
|
@ -6954,8 +6954,8 @@ s32 Camera_Special9(Camera* camera) {
|
|||
camera->unk_14C &= ~(0x4 | 0x2);
|
||||
camera->animState++;
|
||||
anim->targetYaw = ABS(playerPosRot->rot.y - adjustedPlayerPosRot.rot.y) >= 0x4000
|
||||
? BINANG_ROT180(adjustedPlayerPosRot.rot.y)
|
||||
: adjustedPlayerPosRot.rot.y;
|
||||
? BINANG_ROT180(adjustedPlayerPosRot.rot.y.whole())
|
||||
: adjustedPlayerPosRot.rot.y.whole();
|
||||
case 1:
|
||||
spec9->doorParams.timer1--;
|
||||
if (spec9->doorParams.timer1 <= 0) {
|
||||
|
|
|
@ -274,7 +274,8 @@ s32 Math_StepUntilS(Rotation* pValue, s16 limit, const Step& step)
|
|||
* Changes pValue by step towards target angle, setting it equal when the target is reached.
|
||||
* Returns true when target is reached, false otherwise.
|
||||
*/
|
||||
s32 Math_StepToAngleS(s16* pValue, s16 target, const Step& _step) {
|
||||
template<class T>
|
||||
static inline s32 _Math_StepToAngleS(T* pValue, s16 target, const Step& _step) {
|
||||
float step = _step.value();
|
||||
s32 diff = target - *pValue;
|
||||
|
||||
|
@ -304,6 +305,16 @@ s32 Math_StepToAngleS(s16* pValue, s16 target, const Step& _step) {
|
|||
return false;
|
||||
}
|
||||
|
||||
s32 Math_StepToAngleS(s16* pValue, s16 target, const Step& _step)
|
||||
{
|
||||
return _Math_StepToAngleS(pValue, target, _step);
|
||||
}
|
||||
|
||||
s32 Math_StepToAngleS(Rotation* pValue, s16 target, const Step& _step)
|
||||
{
|
||||
return _Math_StepToAngleS(pValue, target, _step);
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes pValue by step. If pvalue reaches limit, sets it equal to limit.
|
||||
* Returns true when limit is reached, false otherwise.
|
||||
|
|
|
@ -327,7 +327,7 @@ void func_8086C618(BgBdanObjects* pthis, GlobalContext* globalCtx) {
|
|||
pthis->actionFunc = func_8086C6EC;
|
||||
} else {
|
||||
pthis->dyna.actor.shape.rot.y += pthis->dyna.actor.world.rot.y;
|
||||
func_800F436C(&pthis->dyna.actor.projectedPos, 0x2063, ABS(pthis->dyna.actor.world.rot.y) / 512.0f);
|
||||
func_800F436C(&pthis->dyna.actor.projectedPos, 0x2063, pthis->dyna.actor.world.rot.y.abs() / 512.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ Actor* BgBreakwall_SpawnFragments(GlobalContext* globalCtx, BgBreakwall* pthis,
|
|||
}
|
||||
|
||||
for (i = 0; i < count; angle2 += 0x4000, i++) {
|
||||
angle1 = ABS(pthis->dyna.actor.world.rot.y) + angle2;
|
||||
angle1 = pthis->dyna.actor.world.rot.y.abs() + angle2;
|
||||
Matrix_Translate(pthis->dyna.actor.world.pos.x, pthis->dyna.actor.world.pos.y, pthis->dyna.actor.world.pos.z,
|
||||
MTXMODE_NEW);
|
||||
Matrix_RotateZYX(pthis->dyna.actor.world.rot.x, pthis->dyna.actor.world.rot.y, pthis->dyna.actor.world.rot.z,
|
||||
|
|
|
@ -107,7 +107,7 @@ void BgHidanKousi_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80889ACC(BgHidanKousi* pthis) {
|
||||
s32 pad[2];
|
||||
Vec3s* rot = &pthis->dyna.actor.world.rot;
|
||||
auto rot = &pthis->dyna.actor.world.rot;
|
||||
f32 temp1 = D_80889E40[pthis->dyna.actor.params & 0xFF] * Math_SinS(rot->y);
|
||||
f32 temp2 = D_80889E40[pthis->dyna.actor.params & 0xFF] * Math_CosS(rot->y);
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ void BgMizuShutter_Destroy(BgMizuShutter* thisx, GlobalContext* globalCtx) {
|
|||
|
||||
void BgMizuShutter_WaitForSwitch(BgMizuShutter* pthis, GlobalContext* globalCtx) {
|
||||
if (Flags_GetSwitch(globalCtx, (u16)pthis->dyna.actor.params & 0x3F)) {
|
||||
if (ABS(pthis->dyna.actor.world.rot.x) > 0x2C60) {
|
||||
if (pthis->dyna.actor.world.rot.x.abs() > 0x2C60) {
|
||||
OnePointCutscene_Init(globalCtx, 4510, -99, &pthis->dyna.actor, MAIN_CAM);
|
||||
} else {
|
||||
OnePointCutscene_Attention(globalCtx, &pthis->dyna.actor);
|
||||
|
|
|
@ -682,7 +682,7 @@ void EnGoroiwa_SetupWait(EnGoroiwa* pthis) {
|
|||
pthis->actionFunc = EnGoroiwa_Wait;
|
||||
pthis->actor.speedXZ = 0.0f;
|
||||
EnGoroiwa_UpdateFlags(pthis, ENGOROIWA_ENABLE_OC);
|
||||
pthis->waitTimer = waitDurations_84[pthis->actor.home.rot.z & 1];
|
||||
pthis->waitTimer = waitDurations_84[pthis->actor.home.rot.z.whole() & 1];
|
||||
pthis->rollRotSpeed = 0.0f;
|
||||
}
|
||||
|
||||
|
|
|
@ -322,8 +322,8 @@ void func_80AD95D8(EnPoSisters* pthis) {
|
|||
Animation_MorphToPlayOnce(&pthis->skelAnime, &gPoeSistersDamagedAnim, -3.0f);
|
||||
if (pthis->collider.base.ac != NULL) {
|
||||
pthis->actor.world.rot.y = (pthis->collider.info.acHitInfo->toucher.dmgFlags & 0x1F824)
|
||||
? pthis->collider.base.ac->world.rot.y
|
||||
: Actor_WorldYawTowardActor(&pthis->actor, pthis->collider.base.ac) + 0x8000;
|
||||
? (float)pthis->collider.base.ac->world.rot.y
|
||||
: (float)Actor_WorldYawTowardActor(&pthis->actor, pthis->collider.base.ac) + 0x8000;
|
||||
}
|
||||
if (pthis->unk_194 != 0) {
|
||||
pthis->actor.speedXZ = 10.0f;
|
||||
|
|
|
@ -322,7 +322,7 @@ void EnTrap_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
// if in initial position:
|
||||
} else if ((thisx->world.pos.x == thisx->home.pos.x) && (thisx->world.pos.z == thisx->home.pos.z)) {
|
||||
// of the available 4-way directions, get the one which is closest to the direction of player:
|
||||
pthis->vClosestDirection = ((thisx->yawTowardsPlayer - thisx->world.rot.y) + 0x2000) & 0xC000;
|
||||
pthis->vClosestDirection = ((thisx->yawTowardsPlayer - thisx->world.rot.y.whole()) + 0x2000) & 0xC000;
|
||||
pthis->vMovementMetric = 0.0f;
|
||||
if (thisx->xzDistToPlayer < 200.0f) {
|
||||
pthis->vMovementMetric = BEGIN_MOVE_OUT;
|
||||
|
|
|
@ -193,7 +193,7 @@ void func_80B53764(EnZl3* pthis, GlobalContext* globalCtx) {
|
|||
|
||||
s32 func_80B537E8(EnZl3* pthis) {
|
||||
s16 yawTowardsPlayer = pthis->actor.yawTowardsPlayer;
|
||||
s16* rotY = &pthis->actor.world.rot.y;
|
||||
auto rotY = &pthis->actor.world.rot.y;
|
||||
s16* unk_3D0 = &pthis->unk_3D0;
|
||||
s16 retVal;
|
||||
s16 pad[2];
|
||||
|
@ -206,7 +206,7 @@ s32 func_80B537E8(EnZl3* pthis) {
|
|||
|
||||
void func_80B538B0(EnZl3* pthis) {
|
||||
s16 yawTowardsPlayer = pthis->actor.yawTowardsPlayer;
|
||||
s16* rotY = &pthis->actor.world.rot.y;
|
||||
auto rotY = &pthis->actor.world.rot.y;
|
||||
|
||||
if (ABS((s16)(yawTowardsPlayer - *rotY)) >= 0x1556) {
|
||||
D_80B5A468 = 1;
|
||||
|
@ -1680,14 +1680,14 @@ s32 func_80B571FC(EnZl3* pthis) {
|
|||
|
||||
void func_80B57240(EnZl3* pthis) {
|
||||
s32 temp_a1 = func_80B571FC(pthis);
|
||||
s16* rotY = &pthis->actor.world.rot.y;
|
||||
auto rotY = &pthis->actor.world.rot.y;
|
||||
|
||||
Math_SmoothStepToS(rotY, temp_a1, 2, 6400, 1000);
|
||||
pthis->actor.shape.rot.y = *rotY;
|
||||
}
|
||||
|
||||
void func_80B57298(EnZl3* pthis) {
|
||||
s16* rotY = &pthis->actor.world.rot.y;
|
||||
auto rotY = &pthis->actor.world.rot.y;
|
||||
s16 temp_a1 = func_80B571A8(pthis);
|
||||
|
||||
Math_SmoothStepToS(rotY, temp_a1, 2, 6400, 1000);
|
||||
|
|
|
@ -389,24 +389,38 @@ f32 Fishing_RandZeroOne(void) {
|
|||
return fabsf(rand);
|
||||
}
|
||||
|
||||
s16 Fishing_SmoothStepToS(s16* pValue, s16 target, s16 scale, s16 step) {
|
||||
s16 stepSize;
|
||||
s16 diff;
|
||||
template<class T>
|
||||
static inline s16 _Fishing_SmoothStepToS(T* pValue, s16 target, s16 scale, s16 step)
|
||||
{
|
||||
s16 stepSize;
|
||||
s16 diff;
|
||||
|
||||
diff = target - *pValue;
|
||||
stepSize = diff / scale;
|
||||
diff = target - *pValue;
|
||||
stepSize = diff / scale;
|
||||
|
||||
if (stepSize > step) {
|
||||
stepSize = step;
|
||||
}
|
||||
if(stepSize > step)
|
||||
{
|
||||
stepSize = step;
|
||||
}
|
||||
|
||||
if (stepSize < -step) {
|
||||
stepSize = -step;
|
||||
}
|
||||
if(stepSize < -step)
|
||||
{
|
||||
stepSize = -step;
|
||||
}
|
||||
|
||||
*pValue += stepSize;
|
||||
*pValue += stepSize;
|
||||
|
||||
return stepSize;
|
||||
return stepSize;
|
||||
}
|
||||
|
||||
s16 Fishing_SmoothStepToS(s16* pValue, s16 target, s16 scale, s16 step)
|
||||
{
|
||||
return _Fishing_SmoothStepToS(pValue, target, scale, step);
|
||||
}
|
||||
|
||||
s16 Fishing_SmoothStepToS(Rotation* pValue, s16 target, s16 scale, s16 step)
|
||||
{
|
||||
return _Fishing_SmoothStepToS(pValue, target, scale, step);
|
||||
}
|
||||
|
||||
void Fishing_SpawnRipple(Vec3f* projectedPos, FishingEffect* effect, Vec3f* pos, f32 arg3, f32 arg4, s16 arg5,
|
||||
|
|
|
@ -48,7 +48,7 @@ static u32 sFlags[3][2] = { { 0, 0 }, { 1, 0 }, { 0, 1 } };
|
|||
static void (*sFlagSwitchFuncs[])(GlobalContext* globalCtx, s32 flag) = { Flags_UnsetSwitch, Flags_SetSwitch };
|
||||
|
||||
void ObjMakeoshihiki_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BlockConfig* block = &sBlocks[thisx->home.rot.z & 1];
|
||||
BlockConfig* block = &sBlocks[thisx->home.rot.z.whole() & 1];
|
||||
s32 typeIdx;
|
||||
Vec3f* spawnPos;
|
||||
|
||||
|
@ -80,7 +80,7 @@ void ObjMakeoshihiki_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
void ObjMakeoshihiki_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BlockConfig* block = &sBlocks[thisx->home.rot.z & 1];
|
||||
BlockConfig* block = &sBlocks[thisx->home.rot.z.whole() & 1];
|
||||
s32 i;
|
||||
s32 sfxCond1;
|
||||
s32 sfxCond2;
|
||||
|
|
|
@ -338,7 +338,7 @@ void ObjTimeblock_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
|
||||
void ObjTimeblock_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
if (((ObjTimeblock*)thisx)->isVisible) {
|
||||
Color_RGB8* primColor = &sPrimColors[thisx->home.rot.z & 7];
|
||||
Color_RGB8* primColor = &sPrimColors[thisx->home.rot.z.whole() & 7];
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_obj_timeblock.c", 762);
|
||||
|
||||
|
|
|
@ -312,7 +312,7 @@ void ObjWarp2block_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
void ObjWarp2block_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
Color_RGB8* sp44;
|
||||
|
||||
sp44 = &sColors[thisx->home.rot.z & 7];
|
||||
sp44 = &sColors[thisx->home.rot.z.whole() & 7];
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_obj_warp2block.c", 584);
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
|
|
|
@ -9223,7 +9223,7 @@ void Player_Init(Actor* pthisx, GlobalContext* globalCtx2) {
|
|||
MREG(64) = 0;
|
||||
}
|
||||
|
||||
void func_808471F4(s16* pValue) {
|
||||
static void func_808471F4(s16* pValue) {
|
||||
s16 step;
|
||||
|
||||
step = (ABS(*pValue) * 100.0f) / 1000.0f;
|
||||
|
@ -9232,6 +9232,16 @@ void func_808471F4(s16* pValue) {
|
|||
Math_ScaledStepToS(pValue, 0, step);
|
||||
}
|
||||
|
||||
static void func_808471F4(Rotation* pValue)
|
||||
{
|
||||
s16 step;
|
||||
|
||||
step = (pValue->abs() * 100.0f) / 1000.0f;
|
||||
step = CLAMP(step, 400, 4000);
|
||||
|
||||
Math_ScaledStepToS(pValue, 0, step);
|
||||
}
|
||||
|
||||
void func_80847298(Player* pthis) {
|
||||
s16 sp26;
|
||||
|
||||
|
@ -10589,7 +10599,7 @@ s16 func_8084ABD8(GlobalContext* globalCtx, Player* pthis, s32 arg2, s16 arg3) {
|
|||
temp3 = ((sControlInput->rel.stick_y >= 0) ? 1 : -1) *
|
||||
(s32)((1.0f - Math_CosS(sControlInput->rel.stick_y * 200)) * 1500.0f);
|
||||
pthis->actor.focus.rot.x += temp3;
|
||||
pthis->actor.focus.rot.x = CLAMP(pthis->actor.focus.rot.x, -temp1, temp1);
|
||||
pthis->actor.focus.rot.x = CLAMP((float)pthis->actor.focus.rot.x, -temp1, temp1);
|
||||
|
||||
temp1 = 19114;
|
||||
temp2 = pthis->actor.focus.rot.y - pthis->actor.shape.rot.y;
|
||||
|
|
Loading…
Reference in New Issue
Block a user