2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 21:47:42 +00:00

CCameraManager imps

This commit is contained in:
2016-10-31 15:56:44 -07:00
parent 5bbfd3bec9
commit d733dce1cf
17 changed files with 253 additions and 94 deletions

View File

@@ -75,13 +75,13 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
if (player->x3dc_)
{
float angle = player->x3ec_;
if (std::fabs(player->x3ec_) > (g_tweakPlayer->GetPlayerSomething4() - std::fabs(x1c0_)))
if (std::fabs(player->x3ec_) > (g_tweakPlayer->GetX124() - std::fabs(x1c0_)))
angle = (player->x3ec_ > -0.f ? -1.f : 1.f);
zeus::CVector3f vec;
vec.z = std::sin(angle);
vec.y = std::cos(-player->x3e4_) * std::cos(angle);
vec.x = std::sin(-player->x3e4_) * std::cos(angle);
if (g_tweakPlayer->GetPlayerSomething5() && !zeus::close_enough(vec, zeus::CVector3f::skZero))
if (g_tweakPlayer->GetX228_24() && !zeus::close_enough(vec, zeus::CVector3f::skZero))
vec.normalize();
rVec = zeus::CQuaternion::lookAt({0.f, 1.f, 0.f}, rVec, zeus::CRelAngle::FromDegrees(360.f)).transform(vec);
@@ -112,10 +112,10 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
{
if (player->x294_ > 0.f)
{
float angle = zeus::clamp(0.f, (player->x294_ - g_tweakPlayer->GetPlayerSomething6()) /
g_tweakPlayer->GetPlayerSomething7(),
float angle = zeus::clamp(0.f, (player->x294_ - g_tweakPlayer->GetX288()) /
g_tweakPlayer->GetX28c(),
1.f) *
g_tweakPlayer->GetPlayerSomething8();
g_tweakPlayer->GetX290();
angle += x1c0_;
rVec.x = 0.f;
rVec.y = std::cos(angle);
@@ -125,10 +125,10 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
}
else if (player->x29c_ > 0.f)
{
float angle = zeus::clamp(0.f, (player->x29c_ - g_tweakPlayer->GetPlayerSomething9()) /
g_tweakPlayer->GetPlayerSomething10(),
float angle = zeus::clamp(0.f, (player->x29c_ - g_tweakPlayer->GetX294()) /
g_tweakPlayer->GetX298(),
1.f) *
g_tweakPlayer->GetPlayerSomething11();
g_tweakPlayer->GetX29C();
rVec.x = 0.f;
rVec.y = std::cos(angle);
rVec.z = -std::sin(angle);
@@ -152,7 +152,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
if (gunFrontVec.canBeNormalized())
gunFrontVec.normalize();
float scaledDt = (dt * g_tweakPlayer->GetPlayerSomething14());
float scaledDt = (dt * g_tweakPlayer->GetX184());
float angle = gunFrontVec.dot(rVec);
if (std::fabs(angle) > 1.f)
angle = (angle > -0.f ? -1.f : 1.f);
@@ -183,7 +183,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
/* BUG: This is exactly what the runtime is doing, should we restore the intended behavior? */
float angle = gunFrontVec.dot(rVec);
float sdt = dt * g_tweakPlayer->GetPlayerSomething13();
float sdt = dt * g_tweakPlayer->GetX2B0();
if (std::fabs(angle) > 1.0f)
angle = (angle > -0.f ? -1.f : 1.f);
@@ -194,17 +194,17 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
}
else if (player->x304_ == 2 || player->x304_ == 3)
{
dt *= g_tweakPlayer->GetPlayerSomething14();
dt *= g_tweakPlayer->GetX184();
CalculateGunFollowOrientationAndTransform(gunXf, qGun, dt, rVec);
}
else if (player->x304_ == 5)
{
dt *= g_tweakPlayer->GetPlayerSomething13();
dt *= g_tweakPlayer->GetX2B0();
CalculateGunFollowOrientationAndTransform(gunXf, qGun, dt, rVec);
}
else
{
dt *= g_tweakPlayer->GetPlayerSomething12();
dt *= g_tweakPlayer->GetX280();
CalculateGunFollowOrientationAndTransform(gunXf, qGun, dt, rVec);
}
}
@@ -227,9 +227,9 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
float angle = gunFront.dot(rVec);
if (std::fabs(angle) > 1.f)
angle = (angle > -0.f ? -1.f : 1.f);
float sdt = dt * g_tweakPlayer->GetPlayerSomething15();
float sdt = dt * g_tweakPlayer->GetX138();
qGun = zeus::CQuaternion::lookAt(
rVec, gunFront, sdt * zeus::clamp(0.f, g_tweakPlayer->GetPlayerSomething16() * (std::acos(angle) / sdt), 1.f));
rVec, gunFront, sdt * zeus::clamp(0.f, g_tweakPlayer->GetX14C() * (std::acos(angle) / sdt), 1.f));
}
zeus::CTransform bobXf = player->GetCameraBob()->GetCameraBobTransformation();