mirror of https://github.com/AxioDL/metaforce.git
Orbit lock implementation improvements
This commit is contained in:
parent
d719ce4a00
commit
12c9a2459f
|
@ -150,28 +150,28 @@ struct CTweakTargeting final : public ITweakTargeting {
|
||||||
zeus::CVector3f x23c_ = zeus::skZero3f;
|
zeus::CVector3f x23c_ = zeus::skZero3f;
|
||||||
|
|
||||||
float x2c8_ = 0.25f;
|
float x2c8_ = 0.25f;
|
||||||
float x2cc_ = 0.35f;
|
float x2cc_uiScale = 0.35f;
|
||||||
zeus::CColor x2d0_ = (zeus::Comp32) 0xb6e6ffff;
|
zeus::CColor x2d0_orbitLockArmColor = zeus::Comp32(0x0b6e6ffff);
|
||||||
float x2d4_ = 0.39215687f;
|
float x2d4_ = 0.39215687f;
|
||||||
zeus::CColor x2d8_ = (zeus::Comp32) 0xa82a00ff;
|
zeus::CColor x2d8_ = zeus::Comp32(0xa82a00ff);
|
||||||
float x2dc_ = 0.78431374f;
|
float x2dc_ = 0.78431374f;
|
||||||
zeus::CVector3f x2e0_ = zeus::CVector3f(0.f, 0.f, 0.46f);
|
zeus::CVector3f x2e0_uiPositionOffset = zeus::CVector3f(0.f, 0.f, 0.46f);
|
||||||
float x2ec_ = 0.25f;
|
float x2ec_ = 0.25f;
|
||||||
float x2f0_ = 0.25f;
|
float x2f0_ = 0.25f;
|
||||||
float x2f4_ = 120.f;
|
float x2f4_orbitLockArmRotSpeed = 120.f;
|
||||||
float x2f8_ = 0.25f;
|
float x2f8_ = 0.25f;
|
||||||
float x2fc_ = 3.5f;
|
float x2fc_ = 3.5f;
|
||||||
float x300_ = 0.35f;
|
float x300_ = 0.35f;
|
||||||
zeus::CColor x304_ = (zeus::Comp32) 0xa82a00ff;
|
zeus::CColor x304_ = zeus::Comp32(0xa82a00ff);
|
||||||
float x308_ = 0.78431374f;
|
float x308_ = 0.78431374f;
|
||||||
zeus::CColor x30c_ = (zeus::Comp32) 0x89d6ffff;
|
zeus::CColor x30c_ = zeus::Comp32(0x89d6ffff);
|
||||||
float x310_ = 0.5019608f;
|
float x310_ = 0.5019608f;
|
||||||
float x314_ = 11.25f;
|
float x314_ = 11.25f;
|
||||||
float x318_ = 0.25f;
|
float x318_ = 0.25f;
|
||||||
float x31c_ = 0.125f;
|
float x31c_ = 0.125f;
|
||||||
zeus::CColor x320_ = (zeus::Comp32) 0xffca28ff;
|
zeus::CColor x320_ = zeus::Comp32(0xffca28ff);
|
||||||
float x324_ = 0.78431374f;
|
float x324_ = 0.78431374f;
|
||||||
zeus::CColor x328_ = (zeus::Comp32) 0x89d6ffff;
|
zeus::CColor x328_ = zeus::Comp32(0x89d6ffff);
|
||||||
float x32c_ = 0.19607843f;
|
float x32c_ = 0.19607843f;
|
||||||
float x330_ = 0.f;
|
float x330_ = 0.f;
|
||||||
float x334_ = 0.25f;
|
float x334_ = 0.25f;
|
||||||
|
@ -182,18 +182,18 @@ struct CTweakTargeting final : public ITweakTargeting {
|
||||||
float x348_ = 0.25f;
|
float x348_ = 0.25f;
|
||||||
float x34c_ = 45.f;
|
float x34c_ = 45.f;
|
||||||
float x350_ = 0.5f;
|
float x350_ = 0.5f;
|
||||||
float x354_ = 0.65f;
|
float x354_nextGrappleOrbitLockAlphaMax = 0.65f;
|
||||||
float x358_ = 1.5f;
|
float x358_ = 1.5f;
|
||||||
float x35c_ = 0.18f;
|
float x35c_ = 0.18f;
|
||||||
float x360_ = 0.15f;
|
float x360_ = 0.15f;
|
||||||
float x364_ = 0.25f;
|
float x364_ = 0.25f;
|
||||||
zeus::CColor x368_ = (zeus::Comp32) 0x56c1fb9f;
|
zeus::CColor x368_ = zeus::Comp32(0x56c1fb9f);
|
||||||
zeus::CColor x36c_ = (zeus::Comp32) 0x49c3f6a0;
|
zeus::CColor x36c_ = zeus::Comp32(0x49c3f6a0);
|
||||||
zeus::CColor x370_ = (zeus::Comp32) 0x49c3f631;
|
zeus::CColor x370_ = zeus::Comp32(0x49c3f631);
|
||||||
zeus::CColor x374_ = (zeus::Comp32) 0xff8930ff;
|
zeus::CColor x374_ = zeus::Comp32(0xff8930ff);
|
||||||
zeus::CColor x378_ = (zeus::Comp32) 0xff2f28ff;
|
zeus::CColor x378_ = zeus::Comp32(0xff2f28ff);
|
||||||
zeus::CColor x37c_ = (zeus::Comp32) 0x93e9ffff;
|
zeus::CColor x37c_ = zeus::Comp32(0x93e9ffff);
|
||||||
zeus::CColor x380_ = (zeus::Comp32) 0xff6b60ff;
|
zeus::CColor x380_ = zeus::Comp32(0xff6b60ff);
|
||||||
|
|
||||||
CTweakTargeting() = default;
|
CTweakTargeting() = default;
|
||||||
CTweakTargeting(athena::io::IStreamReader& r) {
|
CTweakTargeting(athena::io::IStreamReader& r) {
|
||||||
|
|
|
@ -118,6 +118,8 @@ set(RUNTIME_SOURCES_B
|
||||||
TCastTo.hpp TCastTo.cpp
|
TCastTo.hpp TCastTo.cpp
|
||||||
GCNTypes.hpp
|
GCNTypes.hpp
|
||||||
CTextureCache.hpp CTextureCache.cpp
|
CTextureCache.hpp CTextureCache.cpp
|
||||||
|
CUnknownPlayerState1.hpp CUnknownPlayerState1.cpp
|
||||||
|
CUnknownPlayerState2.hpp CUnknownPlayerState2.cpp
|
||||||
${PLAT_SRCS})
|
${PLAT_SRCS})
|
||||||
|
|
||||||
function(add_runtime_common_library name)
|
function(add_runtime_common_library name)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "Runtime/CUnknownPlayerState1.hpp"
|
||||||
|
|
||||||
|
namespace urde {
|
||||||
|
CUnknownPlayerState1::CUnknownPlayerState1(float f) : x194_(f) {
|
||||||
|
std::fill(std::begin(x4_), std::end(x4_), true);
|
||||||
|
std::fill(std::begin(x64_), std::end(x64_), false);
|
||||||
|
std::fill(std::begin(x19c_), std::end(x19c_), 0.f);
|
||||||
|
std::fill(std::begin(x30c_), std::end(x30c_), 0.f);
|
||||||
|
}
|
||||||
|
} // namespace urde
|
|
@ -0,0 +1,24 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
namespace urde {
|
||||||
|
|
||||||
|
class CUnknownPlayerState1 {
|
||||||
|
private:
|
||||||
|
|
||||||
|
public:
|
||||||
|
std::array<bool, 91> x4_;
|
||||||
|
std::array<bool, 91> x64_;
|
||||||
|
std::array<float, 48> xc4_;
|
||||||
|
uint x184_ = 0;
|
||||||
|
float x188_ = 0.f;
|
||||||
|
int x18c_ = -1;
|
||||||
|
int x190_ = -1;
|
||||||
|
float x194_;
|
||||||
|
std::array<float, 91> x19c_;
|
||||||
|
std::array<float, 91> x30c_;
|
||||||
|
|
||||||
|
CUnknownPlayerState1(float f);
|
||||||
|
};
|
||||||
|
} // namespace urde
|
|
@ -0,0 +1,7 @@
|
||||||
|
#include "Runtime/CUnknownPlayerState2.hpp"
|
||||||
|
|
||||||
|
namespace urde {
|
||||||
|
CUnknownPlayerState2::CUnknownPlayerState2(int i1, int i2) : xa8_(i2) {
|
||||||
|
x98_ = ((u8)(i1 << 6) & 0x40) | (x98_ & 0x3f);
|
||||||
|
}
|
||||||
|
} // namespace urde
|
|
@ -0,0 +1,46 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <zeus/CVector2f.hpp>
|
||||||
|
#include <zeus/CVector3f.hpp>
|
||||||
|
|
||||||
|
#include "RetroTypes.hpp"
|
||||||
|
|
||||||
|
namespace urde {
|
||||||
|
|
||||||
|
class CUnknownPlayerState2 {
|
||||||
|
private:
|
||||||
|
zeus::CVector3f x7c_ = zeus::skZero3f;
|
||||||
|
|
||||||
|
public:
|
||||||
|
zeus::CVector2f x0_ = zeus::skZero2f;
|
||||||
|
zeus::CVector3f x8_ = zeus::skZero3f;
|
||||||
|
float x18_ = 0.f;
|
||||||
|
float x1c_ = 0.f;
|
||||||
|
float x20_ = 0.f;
|
||||||
|
float x24_ = 0.f;
|
||||||
|
zeus::CVector3f x28_ = zeus::skRight.normalized();
|
||||||
|
float x34_ = 0.f;
|
||||||
|
bool x38_ = false;
|
||||||
|
int x40_ = 0; // unk type
|
||||||
|
int x44_ = 0; // unk type
|
||||||
|
zeus::CVector3f x48_ = zeus::skZero3f;
|
||||||
|
zeus::CVector3f x54_ = zeus::skZero3f;
|
||||||
|
zeus::CVector3f x60_ = zeus::skZero3f;
|
||||||
|
float x6c_ = 0.f;
|
||||||
|
zeus::CVector2f x70_ = zeus::skZero2f;
|
||||||
|
float x78_ = 0.f;
|
||||||
|
TUniqueId x88_ = kInvalidUniqueId;
|
||||||
|
int x8c_ = 0; // unk type
|
||||||
|
float x90_ = 0.f;
|
||||||
|
float x94_ = 1.f;
|
||||||
|
u8 x98_;
|
||||||
|
float x9c_ = 0.f;
|
||||||
|
float xa0_ = 0.f;
|
||||||
|
int xa4_ = 0; // unk type
|
||||||
|
int xa8_; // unk type
|
||||||
|
|
||||||
|
CUnknownPlayerState2(int i1, int i2);
|
||||||
|
|
||||||
|
const zeus::CVector3f& Getx7c() const { return x7c_; };
|
||||||
|
};
|
||||||
|
} // namespace urde
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
|
#include "CTimeProvider.hpp"
|
||||||
#include "Runtime/GameGlobalObjects.hpp"
|
#include "Runtime/GameGlobalObjects.hpp"
|
||||||
#include "Runtime/CSimplePool.hpp"
|
#include "Runtime/CSimplePool.hpp"
|
||||||
#include "Runtime/CStateManager.hpp"
|
#include "Runtime/CStateManager.hpp"
|
||||||
|
@ -9,7 +10,6 @@
|
||||||
#include "Runtime/World/CPlayer.hpp"
|
#include "Runtime/World/CPlayer.hpp"
|
||||||
#include "Runtime/World/CScriptGrapplePoint.hpp"
|
#include "Runtime/World/CScriptGrapplePoint.hpp"
|
||||||
#include "Runtime/World/CWorld.hpp"
|
#include "Runtime/World/CWorld.hpp"
|
||||||
|
|
||||||
#include "TCastTo.hpp" // Generated file, do not modify include path
|
#include "TCastTo.hpp" // Generated file, do not modify include path
|
||||||
|
|
||||||
namespace urde {
|
namespace urde {
|
||||||
|
@ -47,8 +47,8 @@ float offshoot_func(float f1, float f2, float f3) { return (f1 * 0.5f) + std::si
|
||||||
float calculate_premultiplied_overshoot_offset(float f1) { return 2.f * (M_PIF - std::asin(1.f / f1)); }
|
float calculate_premultiplied_overshoot_offset(float f1) { return 2.f * (M_PIF - std::asin(1.f / f1)); }
|
||||||
} // Anonymous namespace
|
} // Anonymous namespace
|
||||||
|
|
||||||
const CTargetReticleRenderState CTargetReticleRenderState::skZeroRenderState(kInvalidUniqueId, 1.f,
|
const CTargetReticleRenderState CTargetReticleRenderState::skZeroRenderState(kInvalidUniqueId, 1.f, zeus::skZero3f, 0.f,
|
||||||
zeus::skZero3f, 0.f, 1.f, true);
|
1.f, true);
|
||||||
|
|
||||||
CCompoundTargetReticle::SOuterItemInfo::SOuterItemInfo(std::string_view res) : x0_model(g_SimplePool->GetObj(res)) {}
|
CCompoundTargetReticle::SOuterItemInfo::SOuterItemInfo(std::string_view res) : x0_model(g_SimplePool->GetObj(res)) {}
|
||||||
|
|
||||||
|
@ -88,6 +88,7 @@ CCompoundTargetReticle::CCompoundTargetReticle(const CStateManager& mgr)
|
||||||
for (u32 i = 0; i < 9; ++i)
|
for (u32 i = 0; i < 9; ++i)
|
||||||
xe0_outerBeamIconSquares.emplace_back(fmt::format(fmt("{}{}"), skOuterBeamIconSquareNameBase, i));
|
xe0_outerBeamIconSquares.emplace_back(fmt::format(fmt("{}{}"), skOuterBeamIconSquareNameBase, i));
|
||||||
x34_crosshairs.Lock();
|
x34_crosshairs.Lock();
|
||||||
|
std::fill(std::begin(x444_), std::end(x444_), kInvalidUniqueId);
|
||||||
}
|
}
|
||||||
|
|
||||||
CCompoundTargetReticle::SScanReticuleRenderer::SScanReticuleRenderer() {
|
CCompoundTargetReticle::SScanReticuleRenderer::SScanReticuleRenderer() {
|
||||||
|
@ -126,10 +127,12 @@ void CCompoundTargetReticle::Update(float dt, const CStateManager& mgr) {
|
||||||
t == 1.f ? x0_leadingOrientation : zeus::CQuaternion::slerp(x10_laggingOrientation, x0_leadingOrientation, t);
|
t == 1.f ? x0_leadingOrientation : zeus::CQuaternion::slerp(x10_laggingOrientation, x0_leadingOrientation, t);
|
||||||
xf4_targetPos = CalculateOrbitZoneReticlePosition(mgr, false);
|
xf4_targetPos = CalculateOrbitZoneReticlePosition(mgr, false);
|
||||||
x100_laggingTargetPos = CalculateOrbitZoneReticlePosition(mgr, true);
|
x100_laggingTargetPos = CalculateOrbitZoneReticlePosition(mgr, true);
|
||||||
// TODO more
|
UpdateNewGroup4(dt, mgr);
|
||||||
UpdateNewGroup1(dt, mgr);
|
UpdateNewGroup5(dt, mgr);
|
||||||
UpdateNewGroup2(dt, mgr);
|
UpdateNewGroup6(dt, mgr);
|
||||||
// TODO more
|
UpdateNextLockOnGroupRS5(dt, mgr);
|
||||||
|
UpdateCurrLockOnGroupRS5(dt, mgr);
|
||||||
|
UpdateNewGroup3(dt, mgr);
|
||||||
UpdateCurrLockOnGroup(dt, mgr);
|
UpdateCurrLockOnGroup(dt, mgr);
|
||||||
UpdateNextLockOnGroup(dt, mgr);
|
UpdateNextLockOnGroup(dt, mgr);
|
||||||
UpdateOrbitZoneGroup(dt, mgr);
|
UpdateOrbitZoneGroup(dt, mgr);
|
||||||
|
@ -300,9 +303,9 @@ void CCompoundTargetReticle::Update(float dt, const CStateManager& mgr) {
|
||||||
x1de_grapplePoint1 = kInvalidUniqueId;
|
x1de_grapplePoint1 = kInvalidUniqueId;
|
||||||
}
|
}
|
||||||
x1f0_xrayRetAngle =
|
x1f0_xrayRetAngle =
|
||||||
zeus::CRelAngle(zeus::degToRad(g_tweakTargeting->GetXRayRetAngleSpeed() * dt) + x1f0_xrayRetAngle).asRel();
|
zeus::CRelAngle(zeus::degToRad(g_tweakTargeting->GetXRayRetAngleSpeed() * dt) + x1f0_xrayRetAngle).asRel();
|
||||||
x1ec_seekerAngle = zeus::CRelAngle(zeus::degToRad(g_tweakTargeting->GetSeekerAngleSpeed() * dt) + x1ec_seekerAngle).
|
x1ec_seekerAngle =
|
||||||
asRel();
|
zeus::CRelAngle(zeus::degToRad(g_tweakTargeting->GetSeekerAngleSpeed() * dt) + x1ec_seekerAngle).asRel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTargetReticleRenderState::InterpolateWithClamp(const CTargetReticleRenderState& a, CTargetReticleRenderState& out,
|
void CTargetReticleRenderState::InterpolateWithClamp(const CTargetReticleRenderState& a, CTargetReticleRenderState& out,
|
||||||
|
@ -335,125 +338,101 @@ static bool IsDamageOrbit(CPlayer::EPlayerOrbitRequest req) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCompoundTargetReticle::UpdateNewGroup1(float dt, const class CStateManager& mgr) {
|
void CCompoundTargetReticle::UpdateNextLockOnGroupRS5(float dt, const class CStateManager& mgr) {
|
||||||
CPlayer& player = mgr.GetPlayer();
|
CPlayer& player = mgr.GetPlayer();
|
||||||
TUniqueId nextTargetId = player.GetOrbitNextTargetId();
|
TUniqueId nextTargetId = player.GetOrbitNextTargetId();
|
||||||
|
|
||||||
x2a4_ = g_tweakTargeting->x2e0_;
|
x2a4_uiPositionOffset = g_tweakTargeting->x2e0_uiPositionOffset;
|
||||||
x290_ = zeus::CVector3f(g_tweakTargeting->x2cc_);
|
x290_uiScale = zeus::CVector3f(g_tweakTargeting->x2cc_uiScale);
|
||||||
if (nextTargetId != kInvalidUniqueId)
|
if (nextTargetId != kInvalidUniqueId)
|
||||||
x29c_ = g_tweakTargeting->x2d0_;
|
x29c_nextTargetOrbitLockColor = g_tweakTargeting->x2d0_orbitLockArmColor;
|
||||||
|
|
||||||
if (auto act = TCastToConstPtr<CActor>(mgr.GetObjectById(nextTargetId)))
|
if (auto act = TCastToConstPtr<CActor>(mgr.GetObjectById(nextTargetId)))
|
||||||
x2b4_ = act->GetOrbitPosition(mgr);
|
x2b4_nextTargetOrbitPosition = act->GetOrbitPosition(mgr);
|
||||||
else
|
else
|
||||||
x2b4_ = x2c0_;
|
x2b4_nextTargetOrbitPosition = x2c0_orbitLockArmNextOrigin;
|
||||||
|
|
||||||
const CGameCamera* camera = mgr.GetCameraManager()->GetCurrentCamera(mgr);
|
const zeus::CTransform cameraTransform = mgr.GetCameraManager()->GetCurrentCamera(mgr)->GetTransform();
|
||||||
const zeus::CTransform cameraTransform = camera->GetTransform();
|
const zeus::CVector3f cameraOrigin = cameraTransform.origin;
|
||||||
const zeus::CVector3f vec1 = cameraTransform.frontVector().normalized();
|
const zeus::CVector3f cameraFrontVector = cameraTransform.frontVector().normalized();
|
||||||
const zeus::CVector3f cameraOrigin = vec1 - cameraTransform.origin;
|
const zeus::CVector3f nextTargetCameraOffset = (x2b4_nextTargetOrbitPosition - cameraOrigin).normalized();
|
||||||
const zeus::CVector3f normalizedCamOrigin = cameraOrigin.normalized();
|
const float dot = 1.25f / cameraFrontVector.dot(nextTargetCameraOffset);
|
||||||
const float dot = 1.25f / vec1.dot(normalizedCamOrigin);
|
const zeus::CVector3f final = cameraOrigin + (nextTargetCameraOffset * dot);
|
||||||
const zeus::CVector3f final = cameraTransform.origin + (normalizedCamOrigin * dot);
|
x2d8_orbitLockArm1Origin = final;
|
||||||
x2d8_ = final;
|
|
||||||
|
|
||||||
if (nextTargetId != kInvalidUniqueId && x27c_ != nextTargetId) {
|
if (nextTargetId != kInvalidUniqueId && x27c_nextTargetId != nextTargetId) {
|
||||||
if (x2a0_ == 0.f) {
|
if (x2a0_nextTargetOrbitLockAlpha == 0.f) {
|
||||||
x2e4_ = final;
|
x2e4_orbitLockArmFadeOrigin = final;
|
||||||
} else {
|
} else {
|
||||||
x2e4_ = x2c0_;
|
x2e4_orbitLockArmFadeOrigin = x2c0_orbitLockArmNextOrigin;
|
||||||
x2cc_ = true;
|
x2cc_orbitLockArmFading = true;
|
||||||
x2d0_ = g_tweakTargeting->x2f0_;
|
x2d0_orbitLockArmFadeAmt = g_tweakTargeting->x2f0_;
|
||||||
x2d4_ = 0.f;
|
x2d4_orbitLockArmFadeDt = 0.f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float dVar19 = g_tweakTargeting->x2d4_;
|
float alphaMax = g_tweakTargeting->x2d4_;
|
||||||
float dVar18 = dt * (dVar19 / g_tweakTargeting->x2ec_);
|
float alphaChg = dt * (alphaMax / g_tweakTargeting->x2ec_);
|
||||||
if (nextTargetId == kInvalidUniqueId) {
|
if (nextTargetId == kInvalidUniqueId) {
|
||||||
float dVar16 = x2a0_ - dVar18;
|
x2a0_nextTargetOrbitLockAlpha = std::clamp(x2a0_nextTargetOrbitLockAlpha - alphaChg, 0.f, alphaMax);
|
||||||
float check1 = 0.f;
|
|
||||||
if ((0.f - dVar16) <= 0.f) {
|
|
||||||
check1 = dVar16;
|
|
||||||
}
|
|
||||||
if (dVar19 <= 0.f) {
|
|
||||||
dVar19 = check1;
|
|
||||||
}
|
|
||||||
x2a0_ = dVar19;
|
|
||||||
} else {
|
} else {
|
||||||
float dVar16 = x2a0_ + dVar18;
|
x2a0_nextTargetOrbitLockAlpha = std::clamp(x2a0_nextTargetOrbitLockAlpha + alphaChg, 0.f, alphaMax);
|
||||||
float check1 = 0.f;
|
|
||||||
if ((0.f - dVar16) <= 0.f) {
|
|
||||||
check1 = dVar16;
|
|
||||||
}
|
|
||||||
if (dVar19 <= 0.f) {
|
|
||||||
dVar19 = check1;
|
|
||||||
}
|
|
||||||
x2a0_ = dVar19;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!x2cc_ || x2d0_ <= 0.f) {
|
if (!x2cc_orbitLockArmFading || x2d0_orbitLockArmFadeAmt <= 0.f) {
|
||||||
x280_ = x2d8_;
|
x280_nextTargetOrbitLockOrigin = x2d8_orbitLockArm1Origin;
|
||||||
x2c0_ = x2b4_;
|
x2c0_orbitLockArmNextOrigin = x2b4_nextTargetOrbitPosition;
|
||||||
} else {
|
} else {
|
||||||
float f1 = x2d4_ + dt;
|
float f3 = x2d0_orbitLockArmFadeAmt;
|
||||||
float result = 0.f;
|
float pt = std::max(0.f, x2d4_orbitLockArmFadeDt + dt);
|
||||||
if ((0.f - f1) <= 0.f) {
|
float f0 = (pt - f3) >= 0.f ? f3 : pt;
|
||||||
result = f1;
|
x2d4_orbitLockArmFadeDt = f0;
|
||||||
}
|
if (x2d0_orbitLockArmFadeAmt <= f0) {
|
||||||
f1 = x2d0_;
|
x2cc_orbitLockArmFading = false;
|
||||||
if (f1 <= 0.f) {
|
x280_nextTargetOrbitLockOrigin = x2d8_orbitLockArm1Origin;
|
||||||
f1 = result;
|
x2c0_orbitLockArmNextOrigin = x2b4_nextTargetOrbitPosition;
|
||||||
}
|
|
||||||
x2d4_ = f1;
|
|
||||||
if (x2d0_ <= f1) {
|
|
||||||
x2cc_ = false;
|
|
||||||
x280_ = x2d8_;
|
|
||||||
x2c0_ = x2b4_;
|
|
||||||
} else {
|
} else {
|
||||||
const zeus::CVector3f origin = (x2e4_ - cameraTransform.origin).normalized();
|
const zeus::CVector3f origin = (x2e4_orbitLockArmFadeOrigin - cameraOrigin).normalized();
|
||||||
float dot2 = 1.25f / origin.dot(vec1);
|
float dot2 = 1.25f / origin.dot(cameraFrontVector);
|
||||||
const zeus::CVector3f vec = (origin * dot2) + cameraOrigin;
|
const zeus::CVector3f vec = cameraOrigin + (origin * dot2);
|
||||||
|
|
||||||
float div = x2d4_ / x2d0_;
|
float div = x2d4_orbitLockArmFadeDt / x2d0_orbitLockArmFadeAmt;
|
||||||
float oneMinusDiv = 1.f - div;
|
float oneMinusDiv = 1.f - div;
|
||||||
const zeus::CVector3f vec2 = (vec * oneMinusDiv) + (x2d8_ * div);
|
const zeus::CVector3f vec2 = (vec * oneMinusDiv) + (x2d8_orbitLockArm1Origin * div);
|
||||||
x280_ = vec2;
|
x280_nextTargetOrbitLockOrigin = vec2;
|
||||||
|
|
||||||
const zeus::CVector3f vec3 = (vec2 - cameraOrigin).normalized();
|
const zeus::CVector3f vec3 = (vec2 - cameraOrigin).normalized();
|
||||||
float mag = (x2b4_ - cameraOrigin).magnitude();
|
float mag = (x2b4_nextTargetOrbitPosition - cameraOrigin).magnitude();
|
||||||
x2c0_ = cameraOrigin + (vec3 * mag);
|
x2c0_orbitLockArmNextOrigin = cameraOrigin + (vec3 * mag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
x27c_ = nextTargetId;
|
x27c_nextTargetId = nextTargetId;
|
||||||
x28c_ = x28c_ + zeus::degToRad(dt * g_tweakTargeting->x2f4_);
|
x28c_orbitLockArmRotation += zeus::degToRad(dt * g_tweakTargeting->x2f4_orbitLockArmRotSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCompoundTargetReticle::UpdateNewGroup2(float dt, const class CStateManager& mgr) {
|
void CCompoundTargetReticle::UpdateCurrLockOnGroupRS5(float dt, const class CStateManager& mgr) {
|
||||||
CPlayer& player = mgr.GetPlayer();
|
CPlayer& player = mgr.GetPlayer();
|
||||||
TUniqueId targetId = player.GetOrbitTargetId();
|
TUniqueId targetId = player.GetOrbitTargetId();
|
||||||
bool bVar1 = false;
|
bool bVar1 = false;
|
||||||
if (targetId != kInvalidUniqueId) {
|
if (targetId != kInvalidUniqueId) {
|
||||||
TCastToConstPtr<CScriptGrapplePoint> prevPoint = mgr.GetObjectById(x27c_);
|
TCastToConstPtr<CScriptGrapplePoint> prevPoint = mgr.GetObjectById(x27c_nextTargetId);
|
||||||
TCastToConstPtr<CScriptGrapplePoint> currPoint = mgr.GetObjectById(targetId);
|
TCastToConstPtr<CScriptGrapplePoint> currPoint = mgr.GetObjectById(targetId);
|
||||||
bVar1 = currPoint.operator bool();
|
bVar1 = currPoint.operator bool();
|
||||||
if (!prevPoint) {
|
if (!prevPoint) {
|
||||||
x27c_ = kInvalidUniqueId;
|
x27c_nextTargetId = kInvalidUniqueId;
|
||||||
x2a0_ = 0.f;
|
x2a0_nextTargetOrbitLockAlpha = 0.f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const CGameCamera* camera = mgr.GetCameraManager()->GetCurrentCamera(mgr);
|
zeus::CTransform cameraTransform = mgr.GetCameraManager()->GetCurrentCamera(mgr)->GetTransform();
|
||||||
zeus::CTransform cameraTransform = camera->GetTransform();
|
zeus::CQuaternion cameraRotation = cameraTransform.getRotation().buildMatrix3f();
|
||||||
zeus::CQuaternion quat_304 = cameraTransform.getRotation().buildMatrix3f();
|
zeus::CVector3f translate = cameraRotation.transform(zeus::CVector3f(0.f, 1.25f, 0.f));
|
||||||
zeus::CVector3f vec3f_17c = quat_304.transform(zeus::CVector3f(0.f, 1.25f, 0.f));
|
x2f2_orbitLockOrigin = cameraTransform.origin + translate;
|
||||||
x2f2_ = cameraTransform.origin + vec3f_17c;
|
|
||||||
|
|
||||||
bool bVar11 = false;
|
bool bVar11 = false;
|
||||||
auto uVar14 = ((u32)kInvalidUniqueId.id) - ((u32)targetId.id) | ((u32)targetId.id) - ((u32)kInvalidUniqueId.id);
|
auto uVar14 = ((u32)kInvalidUniqueId.id) - ((u32)targetId.id) | ((u32)targetId.id) - ((u32)kInvalidUniqueId.id);
|
||||||
if (((s32) uVar14) > -1 && player.x1188_) { // < 0
|
if (((s32)uVar14) > -1 && player.x1188_) { // < 0
|
||||||
bVar11 = true;
|
bVar11 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,7 +441,7 @@ void CCompoundTargetReticle::UpdateNewGroup2(float dt, const class CStateManager
|
||||||
if (bVar11) {
|
if (bVar11) {
|
||||||
TCastToConstPtr<CScriptGrapplePoint> point = mgr.GetObjectById(x2f0_);
|
TCastToConstPtr<CScriptGrapplePoint> point = mgr.GetObjectById(x2f0_);
|
||||||
if (x20_prevState == EReticleState::Combat && !point.operator bool()) {
|
if (x20_prevState == EReticleState::Combat && !point.operator bool()) {
|
||||||
x350_ = 1.f;
|
x350_nextGrappleOrbitLockAlpha = 1.f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -472,110 +451,75 @@ void CCompoundTargetReticle::UpdateNewGroup2(float dt, const class CStateManager
|
||||||
x324_ += dt;
|
x324_ += dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
x300_ = g_tweakTargeting->x2d8_;
|
x300_orbitLockArmColor = g_tweakTargeting->x2d8_;
|
||||||
zeus::CColor _1d4 = g_tweakTargeting->x304_;
|
zeus::CColor _1d4 = g_tweakTargeting->x304_;
|
||||||
if (IsGrappleTarget(targetId, mgr)) {
|
if (IsGrappleTarget(targetId, mgr)) {
|
||||||
x300_ = g_tweakTargeting->x320_;
|
x300_orbitLockArmColor = g_tweakTargeting->x320_;
|
||||||
_1d4 = g_tweakTargeting->x320_;
|
_1d4 = g_tweakTargeting->x320_;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((s32) uVar14) < 0) {
|
if (((s32)uVar14) < 0 || !bVar11) {
|
||||||
x37c_ = std::max(0.f, g_tweakTargeting->x318_);
|
x37c_ = std::max(0.f, g_tweakTargeting->x318_);
|
||||||
x380_ = std::max(0.f, g_tweakTargeting->x31c_);
|
x380_ = std::max(0.f, g_tweakTargeting->x31c_);
|
||||||
} else {
|
} else {
|
||||||
if (bVar11) {
|
x380_ = std::max(0.f, g_tweakTargeting->x318_);
|
||||||
x380_ = std::max(0.f, g_tweakTargeting->x318_);
|
x37c_ = std::max(0.f, g_tweakTargeting->x31c_);
|
||||||
x37c_ = std::max(0.f, g_tweakTargeting->x31c_);
|
|
||||||
} else {
|
|
||||||
x37c_ = std::max(0.f, g_tweakTargeting->x318_);
|
|
||||||
x380_ = std::max(0.f, g_tweakTargeting->x31c_);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float fVar2 = g_tweakTargeting->x354_;
|
|
||||||
float fVar3 = 0.f;
|
|
||||||
if (player.GetMorphballTransitionState() == CPlayer::EPlayerMorphBallState::Unmorphed) {
|
|
||||||
fVar3 = g_tweakTargeting->x358_;
|
|
||||||
}
|
|
||||||
float fVar4 = 1.f;
|
float fVar4 = 1.f;
|
||||||
if (fVar3 > 0.f) {
|
if (player.GetMorphballTransitionState() == CPlayer::EPlayerMorphBallState::Unmorphed) {
|
||||||
fVar4 = dt * (fVar2 / fVar3);
|
fVar4 = dt * (g_tweakTargeting->x354_nextGrappleOrbitLockAlphaMax / g_tweakTargeting->x358_);
|
||||||
}
|
}
|
||||||
fVar4 = x350_ - fVar4;
|
x350_nextGrappleOrbitLockAlpha =
|
||||||
fVar3 = 0.f;
|
std::clamp(x350_nextGrappleOrbitLockAlpha - fVar4, 0.f, g_tweakTargeting->x354_nextGrappleOrbitLockAlphaMax);
|
||||||
if (0.f - fVar4 <= 0.f) {
|
|
||||||
fVar3 = fVar4;
|
|
||||||
}
|
|
||||||
if (fVar2 <= 0.f) {
|
|
||||||
fVar2 = fVar3;
|
|
||||||
}
|
|
||||||
x350_ = fVar2;
|
|
||||||
|
|
||||||
float dVar31 = x37c_ / g_tweakTargeting->x318_;
|
float dVar31 = x37c_ / g_tweakTargeting->x318_;
|
||||||
float dVar30 = x380_ / g_tweakTargeting->x31c_;
|
float dVar30 = x380_ / g_tweakTargeting->x31c_;
|
||||||
x36c_lerped_color_ = zeus::CColor::lerp(g_tweakTargeting->x30c_, _1d4, dVar31);
|
x36c_lerped_color_ = zeus::CColor::lerp(g_tweakTargeting->x30c_, _1d4, dVar31);
|
||||||
|
|
||||||
x378_ = dVar30;
|
x378_ = dVar30;
|
||||||
|
|
||||||
x370_ = ((1.f - dVar31) * g_tweakTargeting->x310_) + (dVar31 * g_tweakTargeting->x308_);
|
x370_ = ((1.f - dVar31) * g_tweakTargeting->x310_) + (dVar31 * g_tweakTargeting->x308_);
|
||||||
x374_ = ((1.f - dVar30) * 0.f) + (dVar30 * g_tweakTargeting->x314_);
|
x374_ = /*((1.f - dVar30) * 0.f) +*/ (dVar30 * g_tweakTargeting->x314_);
|
||||||
|
|
||||||
float local_140 = g_tweakTargeting->x338_;
|
|
||||||
x328_ = x290_ + local_140;
|
|
||||||
|
|
||||||
|
float clamp = std::clamp((x324_ - g_tweakTargeting->x330_) / g_tweakTargeting->x334_, 0.f, 1.f);
|
||||||
|
float negativeClamp = g_tweakTargeting->x338_ * (1.f - clamp);
|
||||||
|
x328_orbitLockBaseScale = (x290_uiScale * clamp) + negativeClamp;
|
||||||
x308_orbitLockBaseColor = g_tweakTargeting->x328_;
|
x308_orbitLockBaseColor = g_tweakTargeting->x328_;
|
||||||
x30c_orbitLockBaseAlpha = g_tweakTargeting->x32c_;
|
x30c_orbitLockBaseAlpha = g_tweakTargeting->x32c_;
|
||||||
|
|
||||||
dVar30 = (x324_ - g_tweakTargeting->x33c_) / g_tweakTargeting->x340_;
|
float f31 = std::clamp((x324_ - g_tweakTargeting->x33c_) / g_tweakTargeting->x340_, 0.f, 1.f);
|
||||||
float dVar27 = 0.f;
|
x334_ = f31 * g_tweakTargeting->x32c_;
|
||||||
if ((float)(0.f - dVar30) <= 0.00000000) {
|
|
||||||
dVar27 = dVar30;
|
|
||||||
}
|
|
||||||
dVar30 = 1.f;
|
|
||||||
if ((float)(dVar27 - 1.f) <= 0.00000000) {
|
|
||||||
dVar30 = dVar27;
|
|
||||||
}
|
|
||||||
x334_ = ((1.f - dVar30) * 0.f) + (dVar30 * g_tweakTargeting->x32c_);
|
|
||||||
|
|
||||||
zeus::CVector3f _14c(player.GetTransform().basis.m[1][0], player.GetTransform().basis.m[1][1], 0.f); // params probably not right
|
const zeus::CVector3f& playerRotation = player.GetTransform().frontVector().normalized();
|
||||||
_14c.normalize();
|
float f = 1.f / (2.f * M_PI);
|
||||||
float fVar27 = zeus::CVector3f::getAngleDiff(_14c, zeus::skForward);
|
float degrees = 360.f * (f * zeus::CVector3f::getAngleDiff(playerRotation, zeus::skForward));
|
||||||
float fVar2_ = 360.f * (0.15915494f /*1/(2*PI)*/ * fVar27);
|
float radians = zeus::degToRad(playerRotation.x() > 0.f ? 360.f - degrees : degrees);
|
||||||
|
float playerAngle = radians - std::trunc(radians * f) * M_2_PI;
|
||||||
|
if (playerAngle < 0.f)
|
||||||
|
playerAngle += M_2_PI;
|
||||||
|
|
||||||
float out;
|
if (f31 < 1.f) {
|
||||||
if (0.f <= _14c.x()) { // local_1b0 = local_14c.x * local_158.y - local_158.x * local_14c.y;
|
x338_orbitLockBracketsRotation = 0.f;
|
||||||
float rad = zeus::degToRad(fVar2_);
|
|
||||||
float d = rad - (((int) (rad * M_PI_2)) * M_2_PI);
|
|
||||||
if (d < 0.f)
|
|
||||||
d += M_2_PI;
|
|
||||||
out = d;
|
|
||||||
} else {
|
} else {
|
||||||
float rad = zeus::degToRad(360.f - fVar2_);
|
x338_orbitLockBracketsRotation = x338_orbitLockBracketsRotation + (playerAngle - x33c_prevPlayerAngle);
|
||||||
float d = rad - (((int) (rad * M_PI_2)) * M_2_PI);
|
|
||||||
if (d < 0.f)
|
|
||||||
d += M_2_PI;
|
|
||||||
out = d;
|
|
||||||
}
|
}
|
||||||
|
x33c_prevPlayerAngle = playerAngle;
|
||||||
|
|
||||||
if (dVar30 < 1.f) {
|
float f32 = ((x324_ - 0.f) / g_tweakTargeting->x348_) * 0.5f;
|
||||||
x338_ = 0.f;
|
x340_orbitLockTechScrollTime = std::clamp(f32, 0.f, 0.496f);
|
||||||
|
if (f32 < 1.f) {
|
||||||
|
x344_orbitLockTechRotation = 0.f;
|
||||||
} else {
|
} else {
|
||||||
x338_ = x338_ + (out - x33c_angle_);
|
x344_orbitLockTechRotation += zeus::degToRad(g_tweakTargeting->x34c_ * dt);
|
||||||
}
|
}
|
||||||
x33c_angle_ = out;
|
x348_playerAngle = playerAngle;
|
||||||
x340_ = 0.496f;
|
|
||||||
if ((x324_ - g_tweakTargeting->x344_) / g_tweakTargeting->x348_ < 1.f) {
|
|
||||||
x344_ = 0.f;
|
|
||||||
} else {
|
|
||||||
x344_ += zeus::degToRad(g_tweakTargeting->x34c_ * dt);
|
|
||||||
}
|
|
||||||
x348_inverse_angle_ = out;
|
|
||||||
|
|
||||||
if (x20_prevState != EReticleState::Combat && x20_prevState != EReticleState::Unspecified) {
|
if (x20_prevState != EReticleState::Combat && x20_prevState != EReticleState::Unspecified) {
|
||||||
bVar1 = true;
|
bVar1 = true;
|
||||||
x374_ = 0.f;
|
x374_ = 0.f;
|
||||||
}
|
}
|
||||||
if (bVar1) {
|
if (bVar1) {
|
||||||
x304_ = 0.f;
|
x304_orbitLockArmAlpha = 0.f;
|
||||||
} else {
|
} else {
|
||||||
float g = g_tweakTargeting->x2dc_;
|
float g = g_tweakTargeting->x2dc_;
|
||||||
float f3 = 1.f;
|
float f3 = 1.f;
|
||||||
|
@ -583,22 +527,130 @@ void CCompoundTargetReticle::UpdateNewGroup2(float dt, const class CStateManager
|
||||||
f3 = (dt * (g / g_tweakTargeting->x2fc_));
|
f3 = (dt * (g / g_tweakTargeting->x2fc_));
|
||||||
}
|
}
|
||||||
if (x324_ < g_tweakTargeting->x2f8_) {
|
if (x324_ < g_tweakTargeting->x2f8_) {
|
||||||
x304_ = g;
|
x304_orbitLockArmAlpha = g;
|
||||||
} else {
|
} else {
|
||||||
float f4 = g_tweakTargeting->x300_;
|
float f4 = g_tweakTargeting->x300_;
|
||||||
if (f4 <= 0.f) {
|
if (f4 <= 0.f) {
|
||||||
f4 = x304_ - f3;
|
f4 = x304_orbitLockArmAlpha - f3;
|
||||||
}
|
}
|
||||||
if (g <= 0.f) {
|
if (g <= 0.f) {
|
||||||
g = f4;
|
g = f4;
|
||||||
}
|
}
|
||||||
x304_ = g;
|
x304_orbitLockArmAlpha = g;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x34c_ = bVar11;
|
x34c_ = bVar11;
|
||||||
x2f0_ = targetId;
|
x2f0_ = targetId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CCompoundTargetReticle::UpdateNewGroup3(float dt, const CStateManager& mgr) {
|
||||||
|
bool bVar5;
|
||||||
|
CPlayer& player = mgr.GetPlayer();
|
||||||
|
std::shared_ptr<CPlayerState> playerState = mgr.GetPlayerState();
|
||||||
|
if (playerState->GetCurrentVisor() == CPlayerState::EPlayerVisor::Scan) {
|
||||||
|
TUniqueId id = kInvalidUniqueId;
|
||||||
|
if (x440_ != 0) {
|
||||||
|
id = *x444_.begin();
|
||||||
|
}
|
||||||
|
TCastToConstPtr<CActor> checkActor = mgr.GetObjectById(id);
|
||||||
|
zeus::CVector3f vec = player.GetUnknownPlayerState2().Getx7c();
|
||||||
|
zeus::CVector3f vec2 = zeus::skZero3f;
|
||||||
|
|
||||||
|
if (checkActor.operator bool()) {
|
||||||
|
bool bVar10 = false;
|
||||||
|
zeus::CAABox total;
|
||||||
|
|
||||||
|
auto iter = x444_.begin();
|
||||||
|
// TODO x440_ tracks count?
|
||||||
|
while (iter != x444_.end()) {
|
||||||
|
TCastToConstPtr<CActor> actor = mgr.GetObjectById(*iter);
|
||||||
|
if (actor.operator bool()) {
|
||||||
|
const CModelData* modelData = actor->GetModelData();
|
||||||
|
bool bVar6 = false;
|
||||||
|
if (modelData != nullptr) {
|
||||||
|
bVar5 = false;
|
||||||
|
if (!modelData->HasAnimData() && !modelData->GetNormalModel().IsLocked()) { // Locked??
|
||||||
|
bVar5 = true;
|
||||||
|
}
|
||||||
|
if (!bVar5) {
|
||||||
|
bVar6 = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bVar6) {
|
||||||
|
bVar6 = false;
|
||||||
|
if (!modelData->HasAnimData() && !modelData->GetNormalModel().IsLocked()) {
|
||||||
|
bVar6 = true;
|
||||||
|
}
|
||||||
|
if (!bVar6) {
|
||||||
|
if (!modelData->HasAnimData()) {
|
||||||
|
const zeus::CAABox box = modelData->GetBounds();
|
||||||
|
const zeus::CVector3f center = box.center();
|
||||||
|
const zeus::CVector3f mul = box.extents() * modelData->GetScale();
|
||||||
|
total.accumulateBounds(zeus::CAABox(center - mul, center + mul));
|
||||||
|
bVar10 = true;
|
||||||
|
} else {
|
||||||
|
const zeus::CAABox box = modelData->GetAnimationData()->GetBoundingBox();
|
||||||
|
zeus::CTransform transform = player.GetTransform();
|
||||||
|
const zeus::CVector3f min = transform * (box.min * modelData->GetScale());
|
||||||
|
const zeus::CVector3f max = transform * (box.max * modelData->GetScale());
|
||||||
|
total.accumulateBounds(zeus::CAABox(min, max));
|
||||||
|
bVar10 = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bVar10) {
|
||||||
|
const zeus::CVector3f _1b8 = total.center();
|
||||||
|
vec = _1b8;
|
||||||
|
const CGameCamera* camera = mgr.GetCameraManager()->GetCurrentCamera(mgr);
|
||||||
|
const zeus::CAABox transformed = total.getTransformedAABox(camera->GetTransform());
|
||||||
|
const zeus::CVector3f _1c4 = transformed.max - transformed.min;
|
||||||
|
vec2 = _1c4;
|
||||||
|
const zeus::CVector3f _320 = camera->ConvertToScreenSpace(_1b8);
|
||||||
|
if (_320.z() > 1.f) {
|
||||||
|
vec = player.GetUnknownPlayerState2().Getx7c();
|
||||||
|
vec2 = zeus::skOne3f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
x41c_ = vec;
|
||||||
|
x434_ = vec2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCompoundTargetReticle::UpdateNewGroup4(float dt, const CStateManager& mgr) {
|
||||||
|
CPlayer& player = mgr.GetPlayer();
|
||||||
|
x228_ = player.GetUnknownPlayerState2().Getx7c();
|
||||||
|
|
||||||
|
TUniqueId targetId = mgr.GetPlayer().GetOrbitTargetId();
|
||||||
|
TCastToConstPtr<CActor> actor = mgr.GetObjectById(targetId);
|
||||||
|
float d = dt / 1.f;
|
||||||
|
if (actor.operator bool()) {
|
||||||
|
x21c_ = std::min(1.f, x21c_ + d);
|
||||||
|
x234_ = CalculatePositionWorld(*actor, mgr);
|
||||||
|
} else {
|
||||||
|
x21c_ = std::max(0.f, x21c_ - d);
|
||||||
|
}
|
||||||
|
|
||||||
|
x224_ = std::max(0.f, x224_ - d);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCompoundTargetReticle::UpdateNewGroup5(float dt, const CStateManager& mgr) {
|
||||||
|
const CPlayer& player = mgr.GetPlayer();
|
||||||
|
x240_ = player.GetUnknownPlayerState2().Getx7c();
|
||||||
|
x250_ = g_tweakTargeting->x220_scanTargetClampMax;
|
||||||
|
x268_ = g_tweakTargeting->x23c_;
|
||||||
|
|
||||||
|
const zeus::CVector3f v1 = player.GetUnknownPlayerState2().Getx7c() - player.GetTransform().origin;
|
||||||
|
float mag = v1.magnitude();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCompoundTargetReticle::UpdateNewGroup6(float dt, const CStateManager& mgr) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void CCompoundTargetReticle::UpdateCurrLockOnGroup(float dt, const CStateManager& mgr) {
|
void CCompoundTargetReticle::UpdateCurrLockOnGroup(float dt, const CStateManager& mgr) {
|
||||||
TUniqueId targetId = mgr.GetPlayer().GetOrbitTargetId();
|
TUniqueId targetId = mgr.GetPlayer().GetOrbitTargetId();
|
||||||
if (targetId != xf0_targetId) {
|
if (targetId != xf0_targetId) {
|
||||||
|
@ -655,12 +707,11 @@ void CCompoundTargetReticle::UpdateCurrLockOnGroup(float dt, const CStateManager
|
||||||
1.f - x204_chargeGaugeOvershootTimer / g_tweakTargeting->GetChargeGaugeOvershootDuration());
|
1.f - x204_chargeGaugeOvershootTimer / g_tweakTargeting->GetChargeGaugeOvershootDuration());
|
||||||
for (int i = 0; i < 9; ++i) {
|
for (int i = 0; i < 9; ++i) {
|
||||||
SOuterItemInfo& item = xe0_outerBeamIconSquares[i];
|
SOuterItemInfo& item = xe0_outerBeamIconSquares[i];
|
||||||
item.x10_rotAng = zeus::CRelAngle(item.x18_offshootAngleDelta * offshoot + item.xc_offshootBaseAngle).
|
item.x10_rotAng = zeus::CRelAngle(item.x18_offshootAngleDelta * offshoot + item.xc_offshootBaseAngle).asRel();
|
||||||
asRel();
|
|
||||||
}
|
}
|
||||||
xc4_chargeGauge.x10_rotAng =
|
xc4_chargeGauge.x10_rotAng =
|
||||||
zeus::CRelAngle(xc4_chargeGauge.x18_offshootAngleDelta * offshoot + xc4_chargeGauge.xc_offshootBaseAngle).
|
zeus::CRelAngle(xc4_chargeGauge.x18_offshootAngleDelta * offshoot + xc4_chargeGauge.xc_offshootBaseAngle)
|
||||||
asRel();
|
.asRel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (x208_lockonTimer > 0.f && x208_lockonTimer < g_tweakTargeting->GetLockonDuration())
|
if (x208_lockonTimer > 0.f && x208_lockonTimer < g_tweakTargeting->GetLockonDuration())
|
||||||
|
@ -670,13 +721,13 @@ void CCompoundTargetReticle::UpdateCurrLockOnGroup(float dt, const CStateManager
|
||||||
if (x1fc_missileBracketScaleTimer > 0.f)
|
if (x1fc_missileBracketScaleTimer > 0.f)
|
||||||
x1fc_missileBracketScaleTimer = std::max(0.f, x1fc_missileBracketScaleTimer - dt);
|
x1fc_missileBracketScaleTimer = std::max(0.f, x1fc_missileBracketScaleTimer - dt);
|
||||||
if (x20_prevState == EReticleState::Scan && x456_ != kInvalidUniqueId)
|
if (x20_prevState == EReticleState::Scan && x456_ != kInvalidUniqueId)
|
||||||
x404_ = std::min(1.f, x404_ + (dt / g_tweakTargeting->x360_));
|
x404_ = std::min(1.f, x404_ + dt / g_tweakTargeting->x360_);
|
||||||
else
|
else
|
||||||
x404_ = std::max(0.f, x404_ - (dt / g_tweakTargeting->x360_));
|
x404_ = std::max(0.f, x404_ - dt / g_tweakTargeting->x360_);
|
||||||
if (mgr.GetPlayer().GetScanningObjectId() == kInvalidUniqueId)
|
if (mgr.GetPlayer().GetScanningObjectId() == kInvalidUniqueId)
|
||||||
x214_ = std::min(1.f, x214_ + (dt * 4.f));
|
x214_ = std::min(1.f, x214_ + dt * 4.f);
|
||||||
else
|
else
|
||||||
x214_ = std::max(0.f, x214_ - (dt * 4.f));
|
x214_ = std::max(0.f, x214_ - dt * 4.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCompoundTargetReticle::UpdateNextLockOnGroup(float dt, const CStateManager& mgr) {
|
void CCompoundTargetReticle::UpdateNextLockOnGroup(float dt, const CStateManager& mgr) {
|
||||||
|
@ -734,101 +785,98 @@ void CCompoundTargetReticle::Draw(const CStateManager& mgr, bool hideLockon) con
|
||||||
SCOPED_GRAPHICS_DEBUG_GROUP("CCompoundTargetReticle::Draw", zeus::skCyan);
|
SCOPED_GRAPHICS_DEBUG_GROUP("CCompoundTargetReticle::Draw", zeus::skCyan);
|
||||||
zeus::CTransform camXf = mgr.GetCameraManager()->GetCurrentCameraTransform(mgr);
|
zeus::CTransform camXf = mgr.GetCameraManager()->GetCurrentCameraTransform(mgr);
|
||||||
CGraphics::SetViewPointMatrix(camXf);
|
CGraphics::SetViewPointMatrix(camXf);
|
||||||
|
CGraphics::SetCullMode(ERglCullMode::None);
|
||||||
if (!hideLockon) {
|
if (!hideLockon) {
|
||||||
DrawNewGroup1(camXf.basis, mgr);
|
DrawNextLockOnGroupRS5(camXf.basis, mgr);
|
||||||
DrawNewGroup2(camXf.basis, mgr);
|
DrawCurrLockOnGroupRS5(camXf.basis, mgr);
|
||||||
// DrawCurrLockOnGroup(camXf.basis, mgr);
|
// DrawCurrLockOnGroup(camXf.basis, mgr);
|
||||||
// DrawNextLockOnGroup(camXf.basis, mgr);
|
// DrawNextLockOnGroup(camXf.basis, mgr);
|
||||||
DrawOrbitZoneGroup(camXf.basis, mgr);
|
DrawOrbitZoneGroup(camXf.basis, mgr);
|
||||||
}
|
}
|
||||||
DrawGrappleGroup(camXf.basis, mgr, hideLockon);
|
DrawGrappleGroup(camXf.basis, mgr, hideLockon);
|
||||||
|
CGraphics::SetCullMode(ERglCullMode::Front);
|
||||||
}
|
}
|
||||||
if (x28_noDrawTicks > 0)
|
if (x28_noDrawTicks > 0)
|
||||||
--x28_noDrawTicks;
|
--x28_noDrawTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCompoundTargetReticle::DrawNewGroup1(const zeus::CMatrix3f& rot, const CStateManager& mgr) const {
|
void CCompoundTargetReticle::DrawNextLockOnGroupRS5(const zeus::CMatrix3f& rot, const CStateManager& mgr) const {
|
||||||
if (x2a0_ > 0) {
|
if (x2a0_nextTargetOrbitLockAlpha > 0) {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
zeus::CTransform transform_184(zeus::CMatrix3f(), x2a4_);
|
const zeus::CTransform origin = zeus::CTransform(rot, x280_nextTargetOrbitLockOrigin);
|
||||||
zeus::CMatrix3f mat3f_220 = zeus::CMatrix3f::RotateY(x28c_ + zeus::degToRad(120.f * i));
|
const zeus::CTransform transform =
|
||||||
zeus::CMatrix3f mat3f_704 = mat3f_220 * zeus::CMatrix3f(x290_);
|
zeus::CMatrix3f::RotateY(x28c_orbitLockArmRotation + zeus::degToRad(120.f * i)) *
|
||||||
zeus::CTransform transform_304(mat3f_704 /*, zeus::skZero3f*/);
|
zeus::CMatrix3f(x290_uiScale);
|
||||||
zeus::CTransform transform_352(rot, x280_);
|
CGraphics::SetModelMatrix(origin * transform * zeus::CTransform::Translate(x2a4_uiPositionOffset));
|
||||||
zeus::CTransform transform_752 = transform_352 * transform_304;
|
|
||||||
zeus::CTransform transform_400 = transform_752 * transform_184;
|
|
||||||
CGraphics::SetModelMatrix(transform_400);
|
|
||||||
|
|
||||||
zeus::CColor color = x29c_;
|
zeus::CColor color = x29c_nextTargetOrbitLockColor;
|
||||||
color.a() = x2a0_;
|
color.a() *= std::max(0.25f, x2a0_nextTargetOrbitLockAlpha);
|
||||||
CModelFlags flags(5, 0, 0, color);
|
CModelFlags flags(5, 0, 0, color);
|
||||||
x3a4_orbitLockArm->Draw(flags);
|
x3a4_orbitLockArm->Draw(flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x350_ > 0) {
|
if (x350_nextGrappleOrbitLockAlpha > 0) {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
zeus::CTransform transform_184(zeus::CMatrix3f(), x2a4_);
|
const zeus::CTransform origin = zeus::CTransform(rot, x2f2_orbitLockOrigin);
|
||||||
zeus::CMatrix3f mat3f_220 = zeus::CMatrix3f::RotateY(x28c_ + zeus::degToRad(120.f * i));
|
const zeus::CTransform transform =
|
||||||
zeus::CMatrix3f mat3f_704 = mat3f_220 * zeus::CMatrix3f(x290_);
|
zeus::CMatrix3f::RotateY(x28c_orbitLockArmRotation + zeus::degToRad(120.f * i)) *
|
||||||
zeus::CTransform transform_304(mat3f_704 /*, zeus::skZero3f*/);
|
zeus::CMatrix3f(x290_uiScale);
|
||||||
zeus::CTransform transform_352(rot, x2f2_);
|
CGraphics::SetModelMatrix(origin * transform * zeus::CTransform::Translate(x2a4_uiPositionOffset));
|
||||||
zeus::CTransform transform_752 = transform_352 * transform_304;
|
|
||||||
zeus::CTransform transform_400 = transform_752 * transform_184;
|
|
||||||
CGraphics::SetModelMatrix(transform_400);
|
|
||||||
|
|
||||||
zeus::CColor color = g_tweakTargeting->x2d0_;
|
zeus::CColor color = g_tweakTargeting->x2d0_orbitLockArmColor;
|
||||||
color.a() = x350_;
|
color.a() *= std::max(0.25f, x350_nextGrappleOrbitLockAlpha);
|
||||||
CModelFlags flags(5, 0, 0, color);
|
CModelFlags flags(5, 0, 0, color);
|
||||||
x3a4_orbitLockArm->Draw(flags);
|
x3a4_orbitLockArm->Draw(flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCompoundTargetReticle::DrawNewGroup2(const zeus::CMatrix3f& rot, const CStateManager& mgr) const {
|
void CCompoundTargetReticle::DrawCurrLockOnGroupRS5(const zeus::CMatrix3f& rot, const CStateManager& mgr) const {
|
||||||
if (x2f0_ != kInvalidUniqueId && x304_ > 0) {
|
if (x2f0_ != kInvalidUniqueId && x304_orbitLockArmAlpha > 0) {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
zeus::CTransform transform_192(zeus::CMatrix3f(), x2a4_);
|
const zeus::CTransform origin(rot, x2f2_orbitLockOrigin);
|
||||||
zeus::CMatrix3f mat3f_228 = zeus::CMatrix3f::RotateY(zeus::degToRad(120.f * i));
|
const zeus::CMatrix3f rotation = zeus::CMatrix3f::RotateY(zeus::degToRad(120.f * i));
|
||||||
zeus::CMatrix3f mat3f_1016 = mat3f_228 * zeus::CMatrix3f(x290_);
|
const zeus::CTransform transform(rotation * zeus::CMatrix3f(x290_uiScale));
|
||||||
zeus::CTransform transform_360(rot, x2f2_);
|
CGraphics::SetModelMatrix(origin * transform * zeus::CTransform::Translate(x2a4_uiPositionOffset));
|
||||||
zeus::CTransform transform_1064 = transform_360 * mat3f_1016;
|
|
||||||
zeus::CTransform transform_408 = transform_1064 * transform_192;
|
|
||||||
CGraphics::SetModelMatrix(transform_408);
|
|
||||||
|
|
||||||
zeus::CColor color = x300_;
|
zeus::CColor color = x300_orbitLockArmColor;
|
||||||
color.a() = x304_;
|
color.a() *= x304_orbitLockArmAlpha;
|
||||||
CModelFlags flags(5, 0, 0, color);
|
CModelFlags flags(5, 0, 0, color);
|
||||||
x3a4_orbitLockArm->Draw(flags);
|
x3a4_orbitLockArm->Draw(flags);
|
||||||
|
|
||||||
zeus::CTransform transform_496(mat3f_228 * zeus::CMatrix3f(x328_));
|
const zeus::CTransform baseTransform(rotation * zeus::CMatrix3f(x328_orbitLockBaseScale));
|
||||||
zeus::CTransform transform_544 = transform_360 * transform_496;
|
CGraphics::SetModelMatrix(origin * baseTransform);
|
||||||
CGraphics::SetModelMatrix(transform_544);
|
|
||||||
|
|
||||||
zeus::CColor baseColor = x308_orbitLockBaseColor;
|
zeus::CColor baseColor = x308_orbitLockBaseColor;
|
||||||
baseColor.a() = x30c_orbitLockBaseAlpha;
|
baseColor.a() *= std::max(0.25f, x30c_orbitLockBaseAlpha);
|
||||||
CModelFlags baseFlags(5, 0, 0, baseColor);
|
CModelFlags baseFlags(5, 0, 0, baseColor);
|
||||||
x3c8_orbitLockBase->Draw(baseFlags);
|
x3c8_orbitLockBase->Draw(baseFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
zeus::CTransform transform_644(zeus::CMatrix3f::RotateY(x338_) * zeus::CMatrix3f(x290_));
|
{
|
||||||
zeus::CTransform transform_712(rot, x2f2_);
|
const zeus::CTransform origin(rot, x2f2_orbitLockOrigin);
|
||||||
CGraphics::SetModelMatrix(transform_712 * transform_644);
|
const zeus::CTransform transform(zeus::CMatrix3f::RotateY(x338_orbitLockBracketsRotation) *
|
||||||
// thunk_FUN_802fe1e0(7,0,0,7,0); ??
|
zeus::CMatrix3f(x290_uiScale));
|
||||||
|
CGraphics::SetModelMatrix(origin * transform);
|
||||||
|
CGraphics::SetAlphaCompare(ERglAlphaFunc::Always, 0, ERglAlphaOp::And, ERglAlphaFunc::Always, 0);
|
||||||
|
|
||||||
zeus::CColor bracketsColor = x308_orbitLockBaseColor;
|
zeus::CColor bracketsColor = x308_orbitLockBaseColor;
|
||||||
bracketsColor.a() = x334_;
|
bracketsColor.a() *= std::max(0.25f, x334_);
|
||||||
CModelFlags bracketsFlags(5, 0, 0, bracketsColor);
|
CModelFlags bracketsFlags(5, 0, 0, bracketsColor);
|
||||||
x3bc_orbitLockBrackets->Draw(bracketsFlags);
|
x3bc_orbitLockBrackets->Draw(bracketsFlags);
|
||||||
|
}
|
||||||
|
|
||||||
if (x340_ > 0) {
|
if (x340_orbitLockTechScrollTime > 0) {
|
||||||
zeus::CTransform transform_880(zeus::CMatrix3f::RotateY(x334_) * zeus::CMatrix3f(x290_));
|
const zeus::CTransform origin(rot, x2f2_orbitLockOrigin);
|
||||||
zeus::CTransform transform_928(rot, x2f2_);
|
const zeus::CTransform transform(zeus::CMatrix3f::RotateY(x344_orbitLockTechRotation) *
|
||||||
CGraphics::SetModelMatrix(transform_928 * transform_880);
|
zeus::CMatrix3f(x290_uiScale));
|
||||||
// thunk_FUN_802fe1e0(7,0,0,7,0); ??
|
CTimeProvider prov(x340_orbitLockTechScrollTime);
|
||||||
|
CGraphics::SetModelMatrix(origin * transform);
|
||||||
|
CGraphics::SetAlphaCompare(ERglAlphaFunc::Always, 0, ERglAlphaOp::And, ERglAlphaFunc::Always, 0);
|
||||||
|
|
||||||
zeus::CColor techColor = x308_orbitLockBaseColor;
|
zeus::CColor techColor = x308_orbitLockBaseColor;
|
||||||
techColor.a() = x30c_orbitLockBaseAlpha;
|
techColor.a() *= std::max(0.25f, x30c_orbitLockBaseAlpha);
|
||||||
CModelFlags techFlags(5, 0, 0, techColor);
|
CModelFlags techFlags(5, 0, 0, techColor);
|
||||||
x3b0_orbitLockTech->Draw(techFlags);
|
x3b0_orbitLockTech->Draw(techFlags);
|
||||||
}
|
}
|
||||||
|
@ -1348,20 +1396,6 @@ void CCompoundTargetReticle::Touch() {
|
||||||
xb8_thermalReticle->Touch(0);
|
xb8_thermalReticle->Touch(0);
|
||||||
if (xc4_chargeGauge.x0_model.IsLoaded())
|
if (xc4_chargeGauge.x0_model.IsLoaded())
|
||||||
xc4_chargeGauge.x0_model->Touch(0);
|
xc4_chargeGauge.x0_model->Touch(0);
|
||||||
if (x38c_combatAimingCenter.IsLoaded())
|
|
||||||
x38c_combatAimingCenter->Touch(0);
|
|
||||||
if (x398_combatAimingArm.IsLoaded())
|
|
||||||
x398_combatAimingArm->Touch(0);
|
|
||||||
if (x3a4_orbitLockArm.IsLoaded())
|
|
||||||
x3a4_orbitLockArm->Touch(0);
|
|
||||||
if (x3b0_orbitLockTech.IsLoaded())
|
|
||||||
x3b0_orbitLockTech->Touch(0);
|
|
||||||
if (x3bc_orbitLockBrackets.IsLoaded())
|
|
||||||
x3bc_orbitLockBrackets->Touch(0);
|
|
||||||
if (x3c8_orbitLockBase.IsLoaded())
|
|
||||||
x3c8_orbitLockBase->Touch(0);
|
|
||||||
if (x3d4_offScreen.IsLoaded())
|
|
||||||
x3d4_offScreen->Touch(0);
|
|
||||||
if (x3e0_scanReticleRing.IsLoaded())
|
if (x3e0_scanReticleRing.IsLoaded())
|
||||||
x3e0_scanReticleRing->Touch(0);
|
x3e0_scanReticleRing->Touch(0);
|
||||||
if (x3ec_scanReticleBracket.IsLoaded())
|
if (x3ec_scanReticleBracket.IsLoaded())
|
||||||
|
|
|
@ -142,40 +142,40 @@ private:
|
||||||
zeus::CVector3f x268_ = zeus::skZero3f;
|
zeus::CVector3f x268_ = zeus::skZero3f;
|
||||||
float x274_ = 1.f;
|
float x274_ = 1.f;
|
||||||
float x278_ = 1.f;
|
float x278_ = 1.f;
|
||||||
TUniqueId x27c_ = kInvalidUniqueId;
|
TUniqueId x27c_nextTargetId = kInvalidUniqueId;
|
||||||
zeus::CVector3f x280_ = zeus::skZero3f;
|
zeus::CVector3f x280_nextTargetOrbitLockOrigin = zeus::skZero3f;
|
||||||
float x28c_ = 0.f;
|
float x28c_orbitLockArmRotation = 0.f;
|
||||||
zeus::CVector3f x290_ = zeus::skOne3f;
|
zeus::CVector3f x290_uiScale = zeus::skOne3f;
|
||||||
zeus::CColor x29c_ = zeus::skGreen;
|
zeus::CColor x29c_nextTargetOrbitLockColor = zeus::skGreen;
|
||||||
float x2a0_ = 0.f;
|
float x2a0_nextTargetOrbitLockAlpha = 0.f;
|
||||||
zeus::CVector3f x2a4_ = zeus::skZero3f;
|
zeus::CVector3f x2a4_uiPositionOffset = zeus::skZero3f;
|
||||||
float x2b0_ = 0.f;
|
float x2b0_ = 0.f;
|
||||||
zeus::CVector3f x2b4_ = zeus::skZero3f;
|
zeus::CVector3f x2b4_nextTargetOrbitPosition = zeus::skZero3f;
|
||||||
zeus::CVector3f x2c0_ = zeus::skZero3f;
|
zeus::CVector3f x2c0_orbitLockArmNextOrigin = zeus::skZero3f;
|
||||||
bool x2cc_ = false;
|
bool x2cc_orbitLockArmFading = false;
|
||||||
float x2d0_ = 0.f;
|
float x2d0_orbitLockArmFadeAmt = 0.f;
|
||||||
float x2d4_ = 0.f;
|
float x2d4_orbitLockArmFadeDt = 0.f;
|
||||||
zeus::CVector3f x2d8_ = zeus::skZero3f;
|
zeus::CVector3f x2d8_orbitLockArm1Origin = zeus::skZero3f;
|
||||||
zeus::CVector3f x2e4_ = zeus::skZero3f;
|
zeus::CVector3f x2e4_orbitLockArmFadeOrigin = zeus::skZero3f;
|
||||||
TUniqueId x2f0_ = kInvalidUniqueId;
|
TUniqueId x2f0_ = kInvalidUniqueId;
|
||||||
zeus::CVector3f x2f2_ = zeus::skZero3f;
|
zeus::CVector3f x2f2_orbitLockOrigin = zeus::skZero3f;
|
||||||
zeus::CColor x300_ = zeus::skGreen;
|
zeus::CColor x300_orbitLockArmColor = zeus::skGreen;
|
||||||
float x304_ = 1.f;
|
float x304_orbitLockArmAlpha = 1.f;
|
||||||
zeus::CColor x308_orbitLockBaseColor = zeus::skGreen;
|
zeus::CColor x308_orbitLockBaseColor = zeus::skGreen;
|
||||||
float x30c_orbitLockBaseAlpha = 1.f;
|
float x30c_orbitLockBaseAlpha = 1.f;
|
||||||
float x310_ = 0.f;
|
float x310_ = 0.f;
|
||||||
float x314_ = 0.f;
|
float x314_ = 0.f;
|
||||||
zeus::CVector3f x318_ = zeus::skZero3f;
|
zeus::CVector3f x318_ = zeus::skZero3f;
|
||||||
float x324_ = 0.f;
|
float x324_ = 0.f;
|
||||||
zeus::CVector3f x328_ = zeus::skOne3f;
|
zeus::CVector3f x328_orbitLockBaseScale = zeus::skOne3f;
|
||||||
float x334_ = 0.f;
|
float x334_ = 0.f;
|
||||||
float x338_ = 0.f;
|
float x338_orbitLockBracketsRotation = 0.f;
|
||||||
float x33c_angle_ = 0.f;
|
float x33c_prevPlayerAngle = 0.f;
|
||||||
float x340_ = 0.f;
|
float x340_orbitLockTechScrollTime = 0.f;
|
||||||
float x344_ = 0.f;
|
float x344_orbitLockTechRotation = 0.f;
|
||||||
float x348_inverse_angle_ = 0.f;
|
float x348_playerAngle = 0.f;
|
||||||
bool x34c_ = false;
|
bool x34c_ = false;
|
||||||
float x350_ = 0.f;
|
float x350_nextGrappleOrbitLockAlpha = 0.f;
|
||||||
zeus::CVector3f x354_ = zeus::skZero3f;
|
zeus::CVector3f x354_ = zeus::skZero3f;
|
||||||
zeus::CVector3f x360_ = zeus::skOne3f;
|
zeus::CVector3f x360_ = zeus::skOne3f;
|
||||||
zeus::CColor x36c_lerped_color_ = zeus::skWhite;
|
zeus::CColor x36c_lerped_color_ = zeus::skWhite;
|
||||||
|
@ -199,6 +199,12 @@ private:
|
||||||
TCachedToken<CModel> x3f8_scanReticleProgress;
|
TCachedToken<CModel> x3f8_scanReticleProgress;
|
||||||
|
|
||||||
float x404_;
|
float x404_;
|
||||||
|
zeus::CVector3f x410_ = zeus::skZero3f;
|
||||||
|
zeus::CVector3f x41c_ = zeus::skZero3f;
|
||||||
|
zeus::CVector3f x428_ = zeus::skZero3f;
|
||||||
|
zeus::CVector3f x434_ = zeus::skZero3f;
|
||||||
|
int x440_ = 0;
|
||||||
|
std::array<TUniqueId, 9> x444_;
|
||||||
TUniqueId x456_ = kInvalidUniqueId;
|
TUniqueId x456_ = kInvalidUniqueId;
|
||||||
|
|
||||||
struct SScanReticuleRenderer {
|
struct SScanReticuleRenderer {
|
||||||
|
@ -218,17 +224,18 @@ public:
|
||||||
bool CheckLoadComplete() { return true; }
|
bool CheckLoadComplete() { return true; }
|
||||||
EReticleState GetDesiredReticleState(const CStateManager&) const;
|
EReticleState GetDesiredReticleState(const CStateManager&) const;
|
||||||
void Update(float, const CStateManager&);
|
void Update(float, const CStateManager&);
|
||||||
void UpdateNewGroup1(float, const CStateManager&);
|
void UpdateNextLockOnGroupRS5(float dt, const CStateManager& mgr);
|
||||||
void UpdateNewGroup2(float, const CStateManager&);
|
void UpdateCurrLockOnGroupRS5(float dt, const CStateManager& mgr);
|
||||||
void UpdateNewGroup3(float, const CStateManager&);
|
void UpdateNewGroup3(float, const CStateManager&);
|
||||||
void UpdateNewGroup4(float, const CStateManager&);
|
void UpdateNewGroup4(float, const CStateManager&);
|
||||||
void UpdateNewGroup5(float, const CStateManager&);
|
void UpdateNewGroup5(float, const CStateManager&);
|
||||||
|
void UpdateNewGroup6(float, const CStateManager&);
|
||||||
void UpdateCurrLockOnGroup(float, const CStateManager&);
|
void UpdateCurrLockOnGroup(float, const CStateManager&);
|
||||||
void UpdateNextLockOnGroup(float, const CStateManager&);
|
void UpdateNextLockOnGroup(float, const CStateManager&);
|
||||||
void UpdateOrbitZoneGroup(float, const CStateManager&);
|
void UpdateOrbitZoneGroup(float, const CStateManager&);
|
||||||
void Draw(const CStateManager&, bool hideLockon) const;
|
void Draw(const CStateManager&, bool hideLockon) const;
|
||||||
void DrawNewGroup1(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
void DrawNextLockOnGroupRS5(const zeus::CMatrix3f& rot, const CStateManager& mgr) const;
|
||||||
void DrawNewGroup2(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
void DrawCurrLockOnGroupRS5(const zeus::CMatrix3f& rot, const CStateManager& mgr) const;
|
||||||
void DrawNewGroup3(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
void DrawNewGroup3(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
||||||
void DrawNewGroup4(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
void DrawNewGroup4(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
||||||
void DrawNewGroup5(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
void DrawNewGroup5(const zeus::CMatrix3f& rot, const CStateManager&) const;
|
||||||
|
|
|
@ -352,7 +352,7 @@ void CMain::AddOverridePaks() {
|
||||||
// Trilogy override pak
|
// Trilogy override pak
|
||||||
// TODO check how it's actually loaded
|
// TODO check how it's actually loaded
|
||||||
if (CDvdFile::FileExists("RS5.upak"))
|
if (CDvdFile::FileExists("RS5.upak"))
|
||||||
loader->AddPakFileAsync("RS5", false, false, true);
|
loader->AddPakFile("RS5", false, false, true);
|
||||||
|
|
||||||
/* Inversely load each pak starting at 999, to ensure proper priority order
|
/* Inversely load each pak starting at 999, to ensure proper priority order
|
||||||
* the higher the number the higer the priority, e.g: Override0 has less priority than Override1 etc.
|
* the higher the number the higer the priority, e.g: Override0 has less priority than Override1 etc.
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "Runtime/CUnknownPlayerState1.hpp"
|
||||||
|
#include "Runtime/CUnknownPlayerState2.hpp"
|
||||||
#include "Runtime/Weapon/CPlayerGun.hpp"
|
#include "Runtime/Weapon/CPlayerGun.hpp"
|
||||||
#include "Runtime/Weapon/CWeaponMgr.hpp"
|
#include "Runtime/Weapon/CWeaponMgr.hpp"
|
||||||
#include "Runtime/World/CMorphBall.hpp"
|
#include "Runtime/World/CMorphBall.hpp"
|
||||||
|
@ -34,6 +36,8 @@ class CPlayer : public CPhysicsActor {
|
||||||
friend class CMorphBall;
|
friend class CMorphBall;
|
||||||
friend class CPlayerCameraBob;
|
friend class CPlayerCameraBob;
|
||||||
friend class CStateManager;
|
friend class CStateManager;
|
||||||
|
friend class CUnknownPlayerState1;
|
||||||
|
friend class CUnknownPlayerState2;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum class EPlayerScanState { NotScanning, Scanning, ScanComplete };
|
enum class EPlayerScanState { NotScanning, Scanning, ScanComplete };
|
||||||
|
@ -352,10 +356,12 @@ private:
|
||||||
float GetAcceleration() const;
|
float GetAcceleration() const;
|
||||||
float CalculateOrbitMinDistance(EPlayerOrbitType type) const;
|
float CalculateOrbitMinDistance(EPlayerOrbitType type) const;
|
||||||
|
|
||||||
|
// RS5
|
||||||
|
CUnknownPlayerState1 xa40_unkPlayerState1 = CUnknownPlayerState1(0.175f);
|
||||||
|
CUnknownPlayerState2 xeb8_unkPlayerState2 = CUnknownPlayerState2(0, 0);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// RS5
|
// RS5
|
||||||
// CUnknownPlayerState1
|
|
||||||
// CUnknownPlayerState2
|
|
||||||
float x1180_ = 0.f;
|
float x1180_ = 0.f;
|
||||||
float x1184_ = 0.f;
|
float x1184_ = 0.f;
|
||||||
union {
|
union {
|
||||||
|
@ -648,5 +654,7 @@ public:
|
||||||
const zeus::CVector3f& GetOrbitPoint() const { return x314_orbitPoint; }
|
const zeus::CVector3f& GetOrbitPoint() const { return x314_orbitPoint; }
|
||||||
float GetAverageSpeed() const;
|
float GetAverageSpeed() const;
|
||||||
bool IsInWaterMovement() const { return x9c4_31_inWaterMovement; }
|
bool IsInWaterMovement() const { return x9c4_31_inWaterMovement; }
|
||||||
|
const CUnknownPlayerState1& GetUnknownPlayerState1() const { return xa40_unkPlayerState1; }
|
||||||
|
const CUnknownPlayerState2& GetUnknownPlayerState2() const { return xeb8_unkPlayerState2; }
|
||||||
};
|
};
|
||||||
} // namespace urde
|
} // namespace urde
|
||||||
|
|
Loading…
Reference in New Issue