mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-08 13:44:56 +00:00
zeus constexpr refactor and thermal visor fixes
This commit is contained in:
@@ -138,8 +138,8 @@ void CBallCamera::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CSt
|
||||
colAct->SetTranslation(GetTranslation());
|
||||
stateMgr.AddObject(colAct);
|
||||
colAct->SetMovable(false);
|
||||
CMotionState mState(GetTranslation(), zeus::CNUQuaternion::fromAxisAngle(zeus::CVector3f::skForward, 0.f),
|
||||
zeus::CVector3f::skZero, zeus::CAxisAngle::sIdentity);
|
||||
CMotionState mState(GetTranslation(), zeus::CNUQuaternion::fromAxisAngle(zeus::skForward, 0.f),
|
||||
zeus::skZero3f, zeus::CAxisAngle());
|
||||
colAct->SetLastNonCollidingState(mState);
|
||||
SetMaterialFilter(CMaterialFilter::MakeIncludeExclude(
|
||||
{}, {EMaterialTypes::Solid, EMaterialTypes::ProjectilePassthrough, EMaterialTypes::Player,
|
||||
@@ -212,15 +212,15 @@ void CBallCamera::Reset(const zeus::CTransform& xf, CStateManager& mgr) {
|
||||
x2e8_ballVelFlat = 0.f;
|
||||
x2ec_maxBallVel = 0.f;
|
||||
x190_curMinDistance = x194_targetMinDistance;
|
||||
x2fc_ballDeltaFlat = zeus::CVector3f::skZero;
|
||||
x2f0_ballDelta = zeus::CVector3f::skZero;
|
||||
x2fc_ballDeltaFlat = zeus::skZero3f;
|
||||
x2f0_ballDelta = zeus::skZero3f;
|
||||
x18d_28_obtuseDirection = false;
|
||||
x308_speedFactor = 0.f;
|
||||
x2dc_prevBallPos = player->GetBallPosition();
|
||||
x294_dampedPos = GetTranslation();
|
||||
x2a0_smallCentroid = zeus::CVector3f::skZero;
|
||||
x2ac_mediumCentroid = zeus::CVector3f::skZero;
|
||||
x2b8_largeCentroid = zeus::CVector3f::skZero;
|
||||
x2a0_smallCentroid = zeus::skZero3f;
|
||||
x2ac_mediumCentroid = zeus::skZero3f;
|
||||
x2b8_largeCentroid = zeus::skZero3f;
|
||||
x2c4_smallCollidersObsCount = 0;
|
||||
x2c8_mediumCollidersObsCount = 0;
|
||||
x2cc_largeCollidersObsCount = 0;
|
||||
@@ -278,27 +278,27 @@ void CBallCamera::BuildSplineNav(CStateManager& mgr) {
|
||||
TUniqueId intersectId = kInvalidUniqueId;
|
||||
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
||||
CRayCastResult result =
|
||||
mgr.RayWorldIntersection(intersectId, ballPos, zeus::CVector3f::skDown, 20.f, BallCameraFilter, nearList);
|
||||
mgr.RayWorldIntersection(intersectId, ballPos, zeus::skDown, 20.f, BallCameraFilter, nearList);
|
||||
float downFactor = result.IsValid() ? zeus::clamp(0.f, result.GetT() / 20.f, 1.f) : 1.f;
|
||||
x36c_splineState = ESplineState::Nav;
|
||||
x370_24_reevalSplineEnd = true;
|
||||
x3d0_24_camBehindFloorOrWall = false;
|
||||
x37c_camSpline.Reset(4);
|
||||
x37c_camSpline.AddKnot(GetTranslation(), zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(GetTranslation(), zeus::skForward);
|
||||
float elevation = x1a0_elevation;
|
||||
float distance = x190_curMinDistance;
|
||||
ConstrainElevationAndDistance(elevation, distance, 0.f, mgr);
|
||||
zeus::CVector3f pt1(x35c_splineIntermediatePos.x(), x35c_splineIntermediatePos.y(), GetTranslation().z());
|
||||
x37c_camSpline.AddKnot(pt1, zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(pt1, zeus::skForward);
|
||||
zeus::CVector3f pt2 = pt1 + (x35c_splineIntermediatePos - GetTranslation()) * (0.5f + downFactor);
|
||||
x37c_camSpline.AddKnot(pt2, zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(pt2, zeus::skForward);
|
||||
zeus::CVector3f pt2Ball = ballPos - pt2;
|
||||
if (pt2Ball.canBeNormalized())
|
||||
pt2Ball.normalize();
|
||||
else
|
||||
pt2Ball = mgr.GetPlayer().GetMoveDir();
|
||||
zeus::CVector3f desiredPosition = FindDesiredPosition(distance, elevation, pt2Ball, mgr, false);
|
||||
x37c_camSpline.AddKnot(desiredPosition, zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(desiredPosition, zeus::skForward);
|
||||
x37c_camSpline.UpdateSplineLength();
|
||||
x3d0_24_camBehindFloorOrWall = false;
|
||||
CMaterialList intersectMat;
|
||||
@@ -318,7 +318,7 @@ void CBallCamera::BuildSplineArc(CStateManager& mgr) {
|
||||
x36c_splineState = ESplineState::Arc;
|
||||
x370_24_reevalSplineEnd = false;
|
||||
x37c_camSpline.Reset(4);
|
||||
x37c_camSpline.AddKnot(GetTranslation(), zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(GetTranslation(), zeus::skForward);
|
||||
float elevation = x1a0_elevation;
|
||||
float distance = x190_curMinDistance;
|
||||
ConstrainElevationAndDistance(elevation, distance, 0.f, mgr);
|
||||
@@ -341,7 +341,7 @@ void CBallCamera::BuildSplineArc(CStateManager& mgr) {
|
||||
pt1 = delta.normalized() * 1.5f + result.GetPoint();
|
||||
else
|
||||
pt1 = halfwayPoint + delta;
|
||||
x37c_camSpline.AddKnot(pt1, zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(pt1, zeus::skForward);
|
||||
FindDesiredPosition(distance, elevation, mgr.GetPlayer().GetMoveDir(), mgr, false);
|
||||
delta = rot.transform(delta);
|
||||
zeus::CVector3f pt2 = halfwayPoint + delta;
|
||||
@@ -351,7 +351,7 @@ void CBallCamera::BuildSplineArc(CStateManager& mgr) {
|
||||
pt2 = delta.normalized() * 2.f + result.GetPoint();
|
||||
else
|
||||
pt2 = halfwayPoint + delta;
|
||||
x37c_camSpline.AddKnot(pt2, zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(pt2, zeus::skForward);
|
||||
delta = rot.transform(delta);
|
||||
zeus::CVector3f pt3 = delta + halfwayPoint;
|
||||
result =
|
||||
@@ -360,7 +360,7 @@ void CBallCamera::BuildSplineArc(CStateManager& mgr) {
|
||||
pt3 = delta.normalized() * 2.f + result.GetPoint();
|
||||
else
|
||||
pt3 = halfwayPoint + delta;
|
||||
x37c_camSpline.AddKnot(pt3, zeus::CVector3f::skForward);
|
||||
x37c_camSpline.AddKnot(pt3, zeus::skForward);
|
||||
CMaterialList intersectMat;
|
||||
if (!SplineIntersectTest(intersectMat, mgr) && intersectMat.HasMaterial(EMaterialTypes::Wall)) {
|
||||
delta = pt1 - halfwayPoint;
|
||||
@@ -451,7 +451,7 @@ void CBallCamera::UpdateTransform(const zeus::CVector3f& lookDir, const zeus::CV
|
||||
} else {
|
||||
float angleSpeedMul = zeus::clamp(0.f, std::acos(lookDirDot) / (zeus::degToRad(60.f) * dt), 1.f);
|
||||
float angleDelta = dt * x1a4_curAnglePerSecond * angleSpeedMul;
|
||||
float lookUpDot = std::fabs(zeus::clamp(-1.f, useLookDir.dot(zeus::CVector3f::skUp), 1.f));
|
||||
float lookUpDot = std::fabs(zeus::clamp(-1.f, useLookDir.dot(zeus::skUp), 1.f));
|
||||
float maxAngleDelta = (1.f - lookUpDot) * zeus::degToRad(720.f) * dt;
|
||||
if (x36c_splineState == ESplineState::Nav) {
|
||||
maxAngleDelta = zeus::degToRad(240.f) * dt;
|
||||
@@ -622,8 +622,8 @@ zeus::CVector3f CBallCamera::GetFixedLookTarget(const zeus::CVector3f& hintToLoo
|
||||
hintDir.normalize();
|
||||
hintDirFlat.normalize();
|
||||
} else {
|
||||
hintDir = zeus::CVector3f::skForward;
|
||||
hintDirFlat = zeus::CVector3f::skForward;
|
||||
hintDir = zeus::skForward;
|
||||
hintDirFlat = zeus::skForward;
|
||||
}
|
||||
|
||||
zeus::CVector3f hintToLookDirFlat = hintToLookDir;
|
||||
@@ -848,7 +848,7 @@ zeus::CVector3f CBallCamera::InterpolateCameraElevation(const zeus::CVector3f& c
|
||||
zeus::CVector3f CBallCamera::CalculateCollidersCentroid(const std::vector<CCameraCollider>& colliderList,
|
||||
int numObscured) const {
|
||||
if (colliderList.size() < 3)
|
||||
return zeus::CVector3f::skForward;
|
||||
return zeus::skForward;
|
||||
|
||||
int clearColliders = 0;
|
||||
const CCameraCollider* prevCol = &colliderList.back();
|
||||
@@ -873,7 +873,7 @@ zeus::CVector3f CBallCamera::CalculateCollidersCentroid(const std::vector<CCamer
|
||||
}
|
||||
|
||||
if (clearColliders / float(colliderList.size()) <= x330_clearColliderThreshold) {
|
||||
return zeus::CVector3f::skForward;
|
||||
return zeus::skForward;
|
||||
} else if (0.f != accumCross) {
|
||||
float baryCross = 3.f * accumCross;
|
||||
return {accumX / baryCross, 0.f, accumZ / baryCross};
|
||||
@@ -890,7 +890,7 @@ zeus::CVector3f CBallCamera::ApplyColliders() {
|
||||
if (smallCentroid.y() == 0.f)
|
||||
x2a0_smallCentroid = smallCentroid;
|
||||
else
|
||||
x2a0_smallCentroid = zeus::CVector3f::skZero;
|
||||
x2a0_smallCentroid = zeus::skZero3f;
|
||||
|
||||
float centroidX = x2a0_smallCentroid.x();
|
||||
float centroidZ = x2a0_smallCentroid.z();
|
||||
@@ -898,7 +898,7 @@ zeus::CVector3f CBallCamera::ApplyColliders() {
|
||||
if (mediumCentroid.y() == 0.f)
|
||||
x2ac_mediumCentroid = mediumCentroid;
|
||||
else
|
||||
x2ac_mediumCentroid = zeus::CVector3f::skZero;
|
||||
x2ac_mediumCentroid = zeus::skZero3f;
|
||||
|
||||
centroidX += x2ac_mediumCentroid.x();
|
||||
centroidZ += x2ac_mediumCentroid.z();
|
||||
@@ -906,7 +906,7 @@ zeus::CVector3f CBallCamera::ApplyColliders() {
|
||||
if (largeCentroid.y() == 0.f)
|
||||
x2b8_largeCentroid = largeCentroid;
|
||||
else
|
||||
x2b8_largeCentroid = zeus::CVector3f::skZero;
|
||||
x2b8_largeCentroid = zeus::skZero3f;
|
||||
|
||||
centroidX += x2b8_largeCentroid.x();
|
||||
centroidZ += x2b8_largeCentroid.z();
|
||||
@@ -927,7 +927,7 @@ zeus::CVector3f CBallCamera::ApplyColliders() {
|
||||
}
|
||||
|
||||
if (!x18c_28_volumeCollider)
|
||||
return zeus::CVector3f::skZero;
|
||||
return zeus::skZero3f;
|
||||
|
||||
if (std::fabs(centroidX) < 0.05f)
|
||||
centroidX = 0.f;
|
||||
@@ -1224,7 +1224,7 @@ void CBallCamera::UpdateUsingColliders(float dt, CStateManager& mgr) {
|
||||
colliderPointLocal = colliderPointLocal * x308_speedFactor;
|
||||
}
|
||||
if (d < 1.f)
|
||||
colliderPointLocal = zeus::CVector3f::skZero;
|
||||
colliderPointLocal = zeus::skZero3f;
|
||||
}
|
||||
|
||||
zeus::CVector3f camDelta = lookXf.rotate(colliderPointLocal) + desiredCamPos - ballPos;
|
||||
@@ -1379,7 +1379,7 @@ void CBallCamera::UpdateUsingTransitions(float dt, CStateManager& mgr) {
|
||||
SetTransform(zeus::CQuaternion::lookAt(xe8.basis[1], camToLookDir, devAngle).toTransform() *
|
||||
xe8.getRotation());
|
||||
else
|
||||
SetTransform(zeus::lookAt(zeus::CVector3f::skZero, camToLookDir));
|
||||
SetTransform(zeus::lookAt(zeus::skZero3f, camToLookDir));
|
||||
}
|
||||
}
|
||||
SetTransform(ValidateCameraTransform(x34_transform, xe8));
|
||||
@@ -1613,9 +1613,9 @@ zeus::CVector3f CBallCamera::FindDesiredPosition(float distance, float elevation
|
||||
|
||||
zeus::CVector3f useDir = dir;
|
||||
if (!dir.canBeNormalized())
|
||||
useDir = zeus::CVector3f::skForward;
|
||||
useDir = zeus::skForward;
|
||||
|
||||
zeus::CTransform lookDirXf = zeus::lookAt(zeus::CVector3f::skZero, useDir);
|
||||
zeus::CTransform lookDirXf = zeus::lookAt(zeus::skZero3f, useDir);
|
||||
zeus::CVector3f ballPos = player->GetBallPosition();
|
||||
float elev = elevation;
|
||||
float dist = distance;
|
||||
@@ -1763,7 +1763,7 @@ bool CBallCamera::DetectCollision(const zeus::CVector3f& from, const zeus::CVect
|
||||
CGameCollision::BuildAreaCollisionCache(mgr, cache);
|
||||
if (cache.HasCacheOverflowed())
|
||||
clear = false;
|
||||
CCollidableSphere cSphere({zeus::CVector3f::skZero, radius}, {EMaterialTypes::Solid});
|
||||
CCollidableSphere cSphere({zeus::skZero3f, radius}, {EMaterialTypes::Solid});
|
||||
if (CGameCollision::DetectCollisionBoolean_Cached(
|
||||
mgr, cache, cSphere, zeus::CTransform::Translate(from),
|
||||
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid},
|
||||
@@ -1881,7 +1881,7 @@ bool CBallCamera::CheckTransitionLineOfSight(const zeus::CVector3f& eyePos, cons
|
||||
CCollisionInfo cinfo;
|
||||
double d = eyeToBehindMag;
|
||||
TUniqueId intersectId = kInvalidUniqueId;
|
||||
CCollidableSphere cSphere({zeus::CVector3f::skZero, colRadius}, {EMaterialTypes::Solid});
|
||||
CCollidableSphere cSphere({zeus::skZero3f, colRadius}, {EMaterialTypes::Solid});
|
||||
if (CGameCollision::DetectCollision_Cached_Moving(
|
||||
mgr, cache, cSphere, zeus::CTransform::Translate(eyePos),
|
||||
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid},
|
||||
@@ -2052,7 +2052,7 @@ void CBallCamera::UpdateLookAtPosition(float dt, CStateManager& mgr) {
|
||||
zeus::CTransform CBallCamera::UpdateLookDirection(const zeus::CVector3f& dir, CStateManager& mgr) {
|
||||
zeus::CVector3f useDir = dir;
|
||||
if (!dir.canBeNormalized())
|
||||
useDir = zeus::CVector3f::skForward;
|
||||
useDir = zeus::skForward;
|
||||
float elevation = x1a0_elevation;
|
||||
float distance = x190_curMinDistance;
|
||||
ConstrainElevationAndDistance(elevation, distance, 0.f, mgr);
|
||||
|
||||
@@ -114,9 +114,9 @@ private:
|
||||
std::vector<CCameraCollider> x274_mediumColliders;
|
||||
std::vector<CCameraCollider> x284_largeColliders;
|
||||
zeus::CVector3f x294_dampedPos;
|
||||
zeus::CVector3f x2a0_smallCentroid = zeus::CVector3f::skUp;
|
||||
zeus::CVector3f x2ac_mediumCentroid = zeus::CVector3f::skUp;
|
||||
zeus::CVector3f x2b8_largeCentroid = zeus::CVector3f::skUp;
|
||||
zeus::CVector3f x2a0_smallCentroid = zeus::skUp;
|
||||
zeus::CVector3f x2ac_mediumCentroid = zeus::skUp;
|
||||
zeus::CVector3f x2b8_largeCentroid = zeus::skUp;
|
||||
int x2c4_smallCollidersObsCount = 0;
|
||||
int x2c8_mediumCollidersObsCount = 0;
|
||||
int x2cc_largeCollidersObsCount = 0;
|
||||
@@ -135,7 +135,7 @@ private:
|
||||
u32 x328_avoidGeomCycle = 0;
|
||||
float x32c_colliderMag = 1.f;
|
||||
float x330_clearColliderThreshold = 0.2f;
|
||||
zeus::CAABox x334_collidersAABB = zeus::CAABox::skNullBox;
|
||||
zeus::CAABox x334_collidersAABB = zeus::skNullBox;
|
||||
float x34c_obscuredTime = 0.f;
|
||||
CMaterialList x350_obscuringMaterial = {EMaterialTypes::NoStepLogic};
|
||||
float x358_unobscureMag = 0.f;
|
||||
|
||||
@@ -71,13 +71,13 @@ void CCameraFilterPass<S>::SetFilter(EFilterType type, EFilterShape shape, float
|
||||
x4_nextType = type;
|
||||
if (type == EFilterType::Passthru) {
|
||||
if (x0_curType == EFilterType::Multiply)
|
||||
x1c_nextColor = zeus::CColor::skWhite;
|
||||
x1c_nextColor = zeus::skWhite;
|
||||
else if (x0_curType == EFilterType::Add || x0_curType == EFilterType::Blend)
|
||||
x1c_nextColor.a() = 0.f;
|
||||
} else {
|
||||
if (x0_curType == EFilterType::Passthru) {
|
||||
if (type == EFilterType::Multiply) {
|
||||
x18_curColor = zeus::CColor::skWhite;
|
||||
x18_curColor = zeus::skWhite;
|
||||
} else if (type == EFilterType::Add || type == EFilterType::Blend) {
|
||||
x18_curColor = x1c_nextColor;
|
||||
x18_curColor.a() = 0.f;
|
||||
@@ -96,7 +96,7 @@ void CCameraFilterPass<S>::SetFilter(EFilterType type, EFilterShape shape, float
|
||||
|
||||
template <class S>
|
||||
void CCameraFilterPass<S>::DisableFilter(float time) {
|
||||
SetFilter(EFilterType::Passthru, x8_shape, time, zeus::CColor::skWhite, -1);
|
||||
SetFilter(EFilterType::Passthru, x8_shape, time, zeus::skWhite, -1);
|
||||
}
|
||||
|
||||
template <class S>
|
||||
|
||||
@@ -22,7 +22,7 @@ float CCameraManager::sFirstPersonFOV = 55.f;
|
||||
float CCameraManager::sThirdPersonFOV = 60.f;
|
||||
|
||||
CCameraManager::CCameraManager(TUniqueId curCameraId) : x0_curCameraId(curCameraId) {
|
||||
CSfxManager::AddListener(CSfxManager::ESfxChannels::Game, zeus::CVector3f::skZero, zeus::CVector3f::skZero,
|
||||
CSfxManager::AddListener(CSfxManager::ESfxChannels::Game, zeus::skZero3f, zeus::skZero3f,
|
||||
{1.f, 0.f, 0.f}, {0.f, 0.f, 1.f}, 50.f, 50.f, 1000.f, 1, 1.f);
|
||||
sFirstPersonFOV = g_tweakGame->GetFirstPersonFOV();
|
||||
}
|
||||
@@ -58,7 +58,7 @@ int CCameraManager::AddCameraShaker(const CCameraShakeData& data, bool sfx) {
|
||||
float vol = zeus::clamp(100.f, std::max(data.GetMaxAMComponent(), data.GetMaxFMComponent()) * 9.f + 100.f, 127.f);
|
||||
CSfxHandle sfxHandle;
|
||||
if (data.xc0_flags & 0x1)
|
||||
sfxHandle = CSfxManager::AddEmitter(SFXamb_x_rumble_lp_00, data.xc4_sfxPos, zeus::CVector3f::skZero, vol / 127.f,
|
||||
sfxHandle = CSfxManager::AddEmitter(SFXamb_x_rumble_lp_00, data.xc4_sfxPos, zeus::skZero3f, vol / 127.f,
|
||||
false, false, 0x7f, kInvalidAreaId);
|
||||
else
|
||||
sfxHandle = CSfxManager::SfxStart(SFXamb_x_rumble_lp_00, vol / 127.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||
@@ -134,17 +134,17 @@ const CGameCamera* CCameraManager::GetCurrentCamera(const CStateManager& stateMg
|
||||
void CCameraManager::CreateStandardCameras(CStateManager& stateMgr) {
|
||||
TUniqueId fpId = stateMgr.AllocateUniqueId();
|
||||
x7c_fpCamera =
|
||||
new CFirstPersonCamera(fpId, zeus::CTransform::Identity(), stateMgr.Player()->GetUniqueId(),
|
||||
new CFirstPersonCamera(fpId, zeus::CTransform(), stateMgr.Player()->GetUniqueId(),
|
||||
g_tweakPlayer->GetOrbitCameraSpeed(), sFirstPersonFOV, sNearPlane, sFarPlane, sAspect);
|
||||
stateMgr.AddObject(x7c_fpCamera);
|
||||
stateMgr.Player()->SetCameraState(CPlayer::EPlayerCameraState::FirstPerson, stateMgr);
|
||||
SetCurrentCameraId(fpId, stateMgr);
|
||||
|
||||
x80_ballCamera = new CBallCamera(stateMgr.AllocateUniqueId(), stateMgr.Player()->GetUniqueId(),
|
||||
zeus::CTransform::Identity(), sThirdPersonFOV, sNearPlane, sFarPlane, sAspect);
|
||||
zeus::CTransform(), sThirdPersonFOV, sNearPlane, sFarPlane, sAspect);
|
||||
stateMgr.AddObject(x80_ballCamera);
|
||||
|
||||
x88_interpCamera = new CInterpolationCamera(stateMgr.AllocateUniqueId(), zeus::CTransform::Identity());
|
||||
x88_interpCamera = new CInterpolationCamera(stateMgr.AllocateUniqueId(), zeus::CTransform());
|
||||
stateMgr.AddObject(x88_interpCamera);
|
||||
}
|
||||
|
||||
@@ -500,7 +500,7 @@ void CCameraManager::UpdateFog(float dt, CStateManager& mgr) {
|
||||
}
|
||||
|
||||
void CCameraManager::UpdateRumble(float dt, CStateManager& mgr) {
|
||||
x30_shakeOffset = zeus::CVector3f::skZero;
|
||||
x30_shakeOffset = zeus::skZero3f;
|
||||
for (auto it = x14_shakers.begin(); it != x14_shakers.end();) {
|
||||
CCameraShakeData& shaker = *it;
|
||||
shaker.Update(dt, mgr);
|
||||
@@ -525,12 +525,12 @@ void CCameraManager::UpdateRumble(float dt, CStateManager& mgr) {
|
||||
}
|
||||
|
||||
if (mgr.GetPlayer().GetCameraState() != CPlayer::EPlayerCameraState::FirstPerson && !IsInCinematicCamera())
|
||||
x30_shakeOffset = zeus::CVector3f::skZero;
|
||||
x30_shakeOffset = zeus::skZero3f;
|
||||
}
|
||||
|
||||
void CCameraManager::UpdateListener(CStateManager& mgr) {
|
||||
const zeus::CTransform xf = GetCurrentCameraTransform(mgr);
|
||||
CSfxManager::UpdateListener(xf.origin, zeus::CVector3f::skZero, xf.frontVector(), xf.upVector(), 1.f);
|
||||
CSfxManager::UpdateListener(xf.origin, zeus::skZero3f, xf.frontVector(), xf.upVector(), 1.f);
|
||||
}
|
||||
|
||||
float CCameraManager::CalculateFogDensity(CStateManager& mgr, const CScriptWater* water) {
|
||||
@@ -600,7 +600,7 @@ void CCameraManager::SetPlayerCamera(CStateManager& mgr, TUniqueId newCamId) {
|
||||
float CCameraManager::GetCameraBobMagnitude() const {
|
||||
return 1.f - zeus::clamp(
|
||||
-1.f,
|
||||
std::fabs(zeus::clamp(-1.f, x7c_fpCamera->GetTransform().basis[1].dot(zeus::CVector3f::skUp), 1.f)) /
|
||||
std::fabs(zeus::clamp(-1.f, x7c_fpCamera->GetTransform().basis[1].dot(zeus::skUp), 1.f)) /
|
||||
std::cos(2.f * M_PIF / 12.f),
|
||||
1.f);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ CCameraShakeData::CCameraShakeData(float duration, float sfxDist, u32 flags, con
|
||||
, xd0_sfxDist(sfxDist) {}
|
||||
|
||||
CCameraShakeData::CCameraShakeData(float duration, float magnitude)
|
||||
: CCameraShakeData(duration, 100.f, 0, zeus::CVector3f::skZero, CCameraShakerComponent{}, CCameraShakerComponent{},
|
||||
: CCameraShakeData(duration, 100.f, 0, zeus::skZero3f, CCameraShakerComponent{}, CCameraShakerComponent{},
|
||||
CCameraShakerComponent{1, SCameraShakePoint{0, 0.25f * duration, 0.f, 0.75f * duration, magnitude},
|
||||
SCameraShakePoint{1, 0.f, 0.f, 0.5f * duration, 2.f}}) {}
|
||||
|
||||
@@ -53,7 +53,7 @@ CCameraShakeData CCameraShakeData::BuildLandingCameraShakeData(float duration, f
|
||||
return {duration,
|
||||
100.f,
|
||||
0,
|
||||
zeus::CVector3f::skZero,
|
||||
zeus::skZero3f,
|
||||
CCameraShakerComponent(1, SCameraShakePoint(0, 0.15f * duration, 0.f, 0.85f * duration, magnitude),
|
||||
SCameraShakePoint(1, 0.f, 0.f, 0.4f * duration, 1.5f)),
|
||||
CCameraShakerComponent(),
|
||||
@@ -65,7 +65,7 @@ CCameraShakeData CCameraShakeData::BuildProjectileCameraShake(float duration, fl
|
||||
return {duration,
|
||||
100.f,
|
||||
0,
|
||||
zeus::CVector3f::skZero,
|
||||
zeus::skZero3f,
|
||||
CCameraShakerComponent(1, SCameraShakePoint(0, 0.f, 0.f, duration, magnitude),
|
||||
SCameraShakePoint(1, 0.f, 0.f, 0.5f * duration, 3.f)),
|
||||
CCameraShakerComponent(),
|
||||
@@ -83,7 +83,7 @@ CCameraShakeData CCameraShakeData::BuildPhazonCameraShakeData(float duration, fl
|
||||
return {duration,
|
||||
100.f,
|
||||
0,
|
||||
zeus::CVector3f::skZero,
|
||||
zeus::skZero3f,
|
||||
CCameraShakerComponent(1, SCameraShakePoint(0, 0.15f * duration, 0.f, 0.25f * duration, magnitude),
|
||||
SCameraShakePoint(1, 0.f, 0.f, 0.4f * duration, 0.3f)),
|
||||
CCameraShakerComponent(),
|
||||
@@ -95,7 +95,7 @@ CCameraShakeData CCameraShakeData::BuildPatternedExplodeShakeData(float duration
|
||||
return {duration,
|
||||
100.f,
|
||||
0,
|
||||
zeus::CVector3f::skZero,
|
||||
zeus::skZero3f,
|
||||
CCameraShakerComponent(1, SCameraShakePoint(0, 0.25f * duration, 0.f, 0.75f * duration, magnitude),
|
||||
SCameraShakePoint(1, 0.f, 0.f, 0.5f * duration, 2.0f)),
|
||||
CCameraShakerComponent(),
|
||||
@@ -188,14 +188,14 @@ CCameraShakeData CCameraShakeData::LoadCameraShakeData(CInputStream& in) {
|
||||
CCameraShakerComponent shakerY;
|
||||
CCameraShakerComponent shakerZ(1, zAM, zFM);
|
||||
|
||||
return {duration, 100.f, 0, zeus::CVector3f::skZero, shakerX, shakerY, shakerZ};
|
||||
return {duration, 100.f, 0, zeus::skZero3f, shakerX, shakerY, shakerZ};
|
||||
}
|
||||
|
||||
const CCameraShakeData CCameraShakeData::skChargedShotCameraShakeData = {
|
||||
0.3f,
|
||||
100.f,
|
||||
0,
|
||||
zeus::CVector3f::skZero,
|
||||
zeus::skZero3f,
|
||||
CCameraShakerComponent(),
|
||||
CCameraShakerComponent(1, {0, 0.f, 0.f, 0.3f, -1.f}, {1, 0.f, 0.f, 0.05f, 0.3f}),
|
||||
CCameraShakerComponent()};
|
||||
|
||||
@@ -72,7 +72,7 @@ void CCameraSpline::SetKnotPosition(int idx, const zeus::CVector3f& pos) {
|
||||
|
||||
const zeus::CVector3f& CCameraSpline::GetKnotPosition(int idx) const {
|
||||
if (idx >= x4_positions.size())
|
||||
return zeus::CVector3f::skZero;
|
||||
return zeus::skZero3f;
|
||||
return x4_positions[idx];
|
||||
}
|
||||
|
||||
@@ -211,12 +211,12 @@ zeus::CTransform CCameraSpline::GetInterpolatedSplinePointByLength(float pos) co
|
||||
if (GetSurroundingPoints(baseIdx, positions, directions)) {
|
||||
float f1 = zeus::clamp(-1.f, directions[1].dot(directions[2]), 1.f);
|
||||
if (f1 >= 1.f) {
|
||||
zeus::CTransform ret = zeus::lookAt(zeus::CVector3f::skZero, directions[2]);
|
||||
zeus::CTransform ret = zeus::lookAt(zeus::skZero3f, directions[2]);
|
||||
ret.origin = zeus::getCatmullRomSplinePoint(positions[0], positions[1], positions[2], positions[3], t);
|
||||
return ret;
|
||||
} else {
|
||||
zeus::CTransform ret = zeus::lookAt(
|
||||
zeus::CVector3f::skZero,
|
||||
zeus::skZero3f,
|
||||
zeus::CQuaternion::lookAt(directions[1], directions[2], std::acos(f1) * t).transform(directions[1]));
|
||||
ret.origin = zeus::getCatmullRomSplinePoint(positions[0], positions[1], positions[2], positions[3], t);
|
||||
return ret;
|
||||
|
||||
@@ -159,7 +159,7 @@ void CCinematicCamera::Think(float dt, CStateManager& mgr) {
|
||||
x1f8_passedTarget = idx;
|
||||
SendArrivedMsg(x1c8_targetArrivals[x1f8_passedTarget], mgr);
|
||||
}
|
||||
zeus::CVector3f upVec = orientation.transform(zeus::CVector3f::skUp);
|
||||
zeus::CVector3f upVec = orientation.transform(zeus::skUp);
|
||||
if ((target - viewPoint).toVec2f().magnitude() < 0.0011920929f)
|
||||
SetTranslation(target);
|
||||
else
|
||||
@@ -174,7 +174,7 @@ void CCinematicCamera::Think(float dt, CStateManager& mgr) {
|
||||
else
|
||||
target.z() += mgr.GetPlayer().GetEyeHeight();
|
||||
|
||||
zeus::CVector3f upVec = orientation.transform(zeus::CVector3f::skUp);
|
||||
zeus::CVector3f upVec = orientation.transform(zeus::skUp);
|
||||
if ((target - viewPoint).toVec2f().magnitude() < 0.0011920929f)
|
||||
SetTranslation(target);
|
||||
else
|
||||
|
||||
@@ -62,7 +62,7 @@ void CFirstPersonCamera::Reset(const zeus::CTransform& xf, CStateManager& mgr) {
|
||||
}
|
||||
|
||||
void CFirstPersonCamera::SkipCinematic() {
|
||||
x1c8_closeInVec = zeus::CVector3f::skZero;
|
||||
x1c8_closeInVec = zeus::skZero3f;
|
||||
x1d4_closeInTimer = 0.f;
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ void CFirstPersonCamera::CalculateGunFollowOrientationAndTransform(zeus::CTransf
|
||||
void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt) {
|
||||
TCastToPtr<CPlayer> player(mgr.ObjectById(GetWatchedObject()));
|
||||
if (!player) {
|
||||
SetTransform(zeus::CTransform::Identity());
|
||||
SetTransform(zeus::CTransform());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt) {
|
||||
vec.x() = std::sin(-player->x3e4_freeLookYawAngle) * std::cos(angle);
|
||||
if (g_tweakPlayer->GetFreeLookTurnsPlayer()) {
|
||||
vec.x() = 0.f;
|
||||
if (!zeus::close_enough(vec, zeus::CVector3f::skZero))
|
||||
if (!zeus::close_enough(vec, zeus::skZero3f))
|
||||
vec.normalize();
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt) {
|
||||
if (x1d4_closeInTimer > 0.f) {
|
||||
eyePos += zeus::clamp(0.f, 0.5f * x1d4_closeInTimer, 1.f) * x1c8_closeInVec;
|
||||
player->GetCameraBob()->ResetCameraBobTime();
|
||||
player->GetCameraBob()->SetCameraBobTransform(zeus::CTransform::Identity());
|
||||
player->GetCameraBob()->SetCameraBobTransform(zeus::CTransform());
|
||||
}
|
||||
|
||||
switch (player->GetOrbitState()) {
|
||||
@@ -183,7 +183,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt) {
|
||||
rVec.normalize();
|
||||
|
||||
zeus::CTransform gunXf = x190_gunFollowXf;
|
||||
zeus::CQuaternion qGun = zeus::CQuaternion::skNoRotation;
|
||||
zeus::CQuaternion qGun;
|
||||
|
||||
if (!player->x3dc_inFreeLook) {
|
||||
switch (player->GetOrbitState()) {
|
||||
@@ -275,7 +275,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt) {
|
||||
player->GetGrappleState() != CPlayer::EGrappleState::None ||
|
||||
mgr.GetGameState() == CStateManager::EGameState::SoftPaused || mgr.GetCameraManager()->IsInCinematicCamera() ||
|
||||
x1d4_closeInTimer > 0.f) {
|
||||
bobXf = zeus::CTransform::Identity();
|
||||
bobXf = zeus::CTransform();
|
||||
player->GetCameraBob()->SetCameraBobTransform(bobXf);
|
||||
}
|
||||
|
||||
@@ -294,7 +294,7 @@ void CFirstPersonCamera::UpdateElevation(CStateManager& mgr) {
|
||||
zeus::CVector3f pitchDirFlat = pvol->GetTransform().basis[1];
|
||||
pitchDirFlat.z() = 0.f;
|
||||
if (!pitchDirFlat.canBeNormalized())
|
||||
pitchDirFlat = zeus::CVector3f::skForward;
|
||||
pitchDirFlat = zeus::skForward;
|
||||
|
||||
zeus::CVector3f playerDirFlat = player->GetTransform().basis[1];
|
||||
playerDirFlat.z() = 0.f;
|
||||
|
||||
@@ -69,7 +69,7 @@ zeus::CTransform CGameCamera::ValidateCameraTransform(const zeus::CTransform& ne
|
||||
!zeus::close_enough(newXf.frontVector().magnitude(), 1.f) ||
|
||||
!zeus::close_enough(newXf.upVector().magnitude(), 1.f))
|
||||
xfCpy.orthonormalize();
|
||||
float f2 = zeus::clamp(-1.f, newXf.frontVector().dot(zeus::CVector3f::skUp), 1.f);
|
||||
float f2 = zeus::clamp(-1.f, newXf.frontVector().dot(zeus::skUp), 1.f);
|
||||
if (std::fabs(f2) > 0.999f)
|
||||
xfCpy = oldXf;
|
||||
|
||||
@@ -78,7 +78,7 @@ zeus::CTransform CGameCamera::ValidateCameraTransform(const zeus::CTransform& ne
|
||||
|
||||
if (!zeus::close_enough(xfCpy.rightVector().z(), 0.f) && !zeus::close_enough(xfCpy.upVector().z(), 0.f)) {
|
||||
if (xfCpy.frontVector().canBeNormalized())
|
||||
xfCpy = zeus::lookAt(zeus::CVector3f::skZero, xfCpy.frontVector());
|
||||
xfCpy = zeus::lookAt(zeus::skZero3f, xfCpy.frontVector());
|
||||
else
|
||||
xfCpy = oldXf;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user