From 5f1aed51cbb9c098f951ec15288bc5bed755ec03 Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Sun, 6 Jun 2021 16:53:41 -0700 Subject: [PATCH] De-hardcode max entity count --- Runtime/CObjectList.hpp | 2 +- Runtime/CSortedLists.cpp | 6 +- Runtime/CSortedLists.hpp | 10 ++-- Runtime/CStateManager.cpp | 28 ++++----- Runtime/CStateManager.hpp | 16 +++--- Runtime/Camera/CBallCamera.cpp | 26 ++++----- Runtime/Camera/CBallCamera.hpp | 6 +- Runtime/Character/CGroundMovement.cpp | 16 +++--- Runtime/Character/CGroundMovement.hpp | 12 ++-- Runtime/Character/CRagDoll.cpp | 2 +- Runtime/Character/CSteeringBehaviors.cpp | 4 +- Runtime/Character/CSteeringBehaviors.hpp | 4 +- Runtime/Character/IMetaAnim.hpp | 4 +- Runtime/Collision/CGameCollision.cpp | 34 +++++------ Runtime/Collision/CGameCollision.hpp | 32 +++++------ Runtime/Graphics/CSimpleShadow.cpp | 2 +- Runtime/GuiSys/CHudRadarInterface.cpp | 2 +- Runtime/ImGuiConsole.cpp | 16 +----- Runtime/ImGuiConsole.hpp | 2 +- Runtime/ImGuiEntitySupport.cpp | 2 +- Runtime/MP1/CSamusHud.cpp | 2 +- Runtime/MP1/World/CBeetle.cpp | 6 +- Runtime/MP1/World/CBouncyGrenade.cpp | 2 +- Runtime/MP1/World/CDrone.cpp | 16 +++--- Runtime/MP1/World/CDrone.hpp | 2 +- Runtime/MP1/World/CElitePirate.cpp | 6 +- Runtime/MP1/World/CElitePirate.hpp | 2 +- Runtime/MP1/World/CFireFlea.cpp | 2 +- Runtime/MP1/World/CFireFlea.hpp | 2 +- Runtime/MP1/World/CFlyingPirate.cpp | 4 +- Runtime/MP1/World/CIceSheegoth.cpp | 6 +- Runtime/MP1/World/CIceSheegoth.hpp | 2 +- Runtime/MP1/World/CMetroid.cpp | 6 +- Runtime/MP1/World/CMetroidPrimeEssence.cpp | 2 +- Runtime/MP1/World/CMetroidPrimeExo.cpp | 2 +- Runtime/MP1/World/CParasite.cpp | 4 +- Runtime/MP1/World/CPuddleToadGamma.cpp | 2 +- Runtime/MP1/World/CRipper.cpp | 4 +- Runtime/MP1/World/CShockWave.hpp | 2 +- Runtime/MP1/World/CSpacePirate.cpp | 4 +- Runtime/MP1/World/CTryclops.cpp | 4 +- Runtime/MP1/World/CWarWasp.cpp | 6 +- Runtime/RetroTypes.hpp | 66 ++++++++++++++-------- Runtime/Weapon/CBeamProjectile.cpp | 2 +- Runtime/Weapon/CFlameThrower.cpp | 2 +- Runtime/Weapon/CGameProjectile.cpp | 4 +- Runtime/Weapon/CGameProjectile.hpp | 2 +- Runtime/Weapon/CNewFlameThrower.cpp | 4 +- Runtime/Weapon/CNewFlameThrower.hpp | 2 +- Runtime/Weapon/CPlayerGun.cpp | 2 +- Runtime/World/CEnvFxManager.cpp | 4 +- Runtime/World/CEnvFxManager.hpp | 2 +- Runtime/World/CGameArea.hpp | 4 +- Runtime/World/CMorphBall.cpp | 4 +- Runtime/World/CMorphBallShadow.cpp | 2 +- Runtime/World/CPatterned.cpp | 2 +- Runtime/World/CPlayer.cpp | 32 +++++------ Runtime/World/CPlayer.hpp | 4 +- Runtime/World/CScriptActorRotate.cpp | 2 +- Runtime/World/CScriptGunTurret.cpp | 2 +- Runtime/World/CScriptPlatform.cpp | 18 +++--- Runtime/World/CScriptPlatform.hpp | 6 +- Runtime/World/CScriptSpecialFunction.cpp | 2 +- Runtime/World/CVisorFlare.cpp | 2 +- 64 files changed, 246 insertions(+), 238 deletions(-) diff --git a/Runtime/CObjectList.hpp b/Runtime/CObjectList.hpp index d451ef9f7..c16aa8519 100644 --- a/Runtime/CObjectList.hpp +++ b/Runtime/CObjectList.hpp @@ -27,7 +27,7 @@ class CObjectList { s16 next = -1; s16 prev = -1; }; - std::array x0_list; // was an rstl::prereserved_vector + std::array x0_list; // was an rstl::reserved_vector EGameObjectList x2004_listEnum; s16 x2008_firstId = -1; u16 x200a_count = 0; diff --git a/Runtime/CSortedLists.cpp b/Runtime/CSortedLists.cpp index b02ae76a0..d8c2b8330 100644 --- a/Runtime/CSortedLists.cpp +++ b/Runtime/CSortedLists.cpp @@ -233,7 +233,7 @@ s16 CSortedListManager::CalculateIntersections(ESortedList la, ESortedList lb, s return headId; } -void CSortedListManager::BuildNearList(rstl::reserved_vector& out, const zeus::CVector3f& pos, +void CSortedListManager::BuildNearList(rstl::reserved_vector& out, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float mag, const CMaterialFilter& filter, const CActor* actor) { if (mag == 0.f) { @@ -246,7 +246,7 @@ void CSortedListManager::BuildNearList(rstl::reserved_vector& o BuildNearList(out, zeus::CAABox(mins, maxs), filter, actor); } -void CSortedListManager::BuildNearList(rstl::reserved_vector& out, const CActor& actor, +void CSortedListManager::BuildNearList(rstl::reserved_vector& out, const CActor& actor, const zeus::CAABox& aabb) { const CMaterialFilter& filter = actor.GetMaterialFilter(); s16 id = ConstructIntersectionArray(aabb); @@ -262,7 +262,7 @@ void CSortedListManager::BuildNearList(rstl::reserved_vector& o } } -void CSortedListManager::BuildNearList(rstl::reserved_vector& out, const zeus::CAABox& aabb, +void CSortedListManager::BuildNearList(rstl::reserved_vector& out, const zeus::CAABox& aabb, const CMaterialFilter& filter, const CActor* actor) { s16 id = ConstructIntersectionArray(aabb); while (id != -1) { diff --git a/Runtime/CSortedLists.hpp b/Runtime/CSortedLists.hpp index bc47b4911..d78031392 100644 --- a/Runtime/CSortedLists.hpp +++ b/Runtime/CSortedLists.hpp @@ -11,7 +11,7 @@ namespace metaforce { enum class ESortedList { MinX, MinY, MinZ, MaxX, MaxY, MaxZ }; struct SSortedList { - std::array x0_ids; + std::array x0_ids; u32 x800_size = 0; void Reset() { x0_ids.fill(-1); } SSortedList() { Reset(); } @@ -28,7 +28,7 @@ class CSortedListManager { SNode() = default; SNode(const CActor* act, const zeus::CAABox& aabb) : x0_actor(act), x4_box(aabb), x2a_populated(true) {} }; - std::array x0_nodes; + std::array x0_nodes; std::array xb000_sortedLists; void Reset(); void AddToLinkedList(s16 nodeId, s16& headId, s16& tailId); @@ -43,10 +43,10 @@ class CSortedListManager { public: CSortedListManager(); - void BuildNearList(rstl::reserved_vector& out, const zeus::CVector3f& pos, + void BuildNearList(rstl::reserved_vector& out, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float mag, const CMaterialFilter& filter, const CActor* actor); - void BuildNearList(rstl::reserved_vector& out, const CActor& actor, const zeus::CAABox& aabb); - void BuildNearList(rstl::reserved_vector& out, const zeus::CAABox& aabb, + void BuildNearList(rstl::reserved_vector& out, const CActor& actor, const zeus::CAABox& aabb); + void BuildNearList(rstl::reserved_vector& out, const zeus::CAABox& aabb, const CMaterialFilter& filter, const CActor* actor); void Remove(const CActor* actor); void Move(const CActor* actor, const zeus::CAABox& aabb); diff --git a/Runtime/CStateManager.cpp b/Runtime/CStateManager.cpp index 504dd806a..3855ac64d 100644 --- a/Runtime/CStateManager.cpp +++ b/Runtime/CStateManager.cpp @@ -374,7 +374,7 @@ TAreaId CStateManager::GetVisAreaId() const { const zeus::CVector3f& camTranslation = ballCam->GetTranslation(); zeus::CAABox camAABB(camTranslation, camTranslation); camAABB.accumulateBounds(x84c_player->GetTranslation()); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; BuildNearList(nearList, camAABB, CMaterialFilter(EMaterialTypes::AIBlock, CMaterialList(), CMaterialFilter::EFilterType::Include), nullptr); @@ -811,7 +811,7 @@ void CStateManager::DrawWorld() { bool morphingPlayerVisible = false; int thermalActorCount = 0; - std::array thermalActorArr; + std::array thermalActorArr; for (int i = 0; i < areaCount; ++i) { const CGameArea& area = *areaArr[i]; CPVSVisSet& pvs = pvsArr[i]; @@ -1696,7 +1696,7 @@ void CStateManager::ApplyDamageToWorld(TUniqueId damager, const CActor& actor, c bomb = True(weapon->GetAttribField() & (EProjectileAttrib::Bombs | EProjectileAttrib::PowerBombs)); } - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; BuildNearList(nearList, aabb, filter, &actor); for (const auto& id : nearList) { CEntity* ent = ObjectById(id); @@ -1735,7 +1735,7 @@ void CStateManager::ApplyDamageToWorld(TUniqueId damager, const CActor& actor, c void CStateManager::ProcessRadiusDamage(const CActor& damager, CActor& damagee, TUniqueId senderId, const CDamageInfo& info, const CMaterialFilter& filter) { const zeus::CAABox aabb(damager.GetTranslation() - info.GetRadius(), damager.GetTranslation() + info.GetRadius()); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; BuildNearList(nearList, aabb, filter, nullptr); for (const auto& id : nearList) { CEntity* ent = ObjectById(id); @@ -1797,7 +1797,7 @@ void CStateManager::ApplyRadiusDamage(const CActor& a1, const zeus::CVector3f& p } bool CStateManager::TestRayDamage(const zeus::CVector3f& pos, const CActor& damagee, - const rstl::reserved_vector& nearList) const { + const rstl::reserved_vector& nearList) const { const CHealthInfo* hInfo = const_cast(damagee).HealthInfo(const_cast(*this)); if (hInfo == nullptr) { return false; @@ -1846,20 +1846,20 @@ bool CStateManager::RayCollideWorld(const zeus::CVector3f& start, const zeus::CV zeus::CVector3f delta = end - start; const float mag = delta.magnitude(); delta = delta / mag; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; BuildNearList(nearList, start, delta, mag, filter, damagee); return RayCollideWorldInternal(start, end, filter, nearList, damagee); } bool CStateManager::RayCollideWorld(const zeus::CVector3f& start, const zeus::CVector3f& end, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const CMaterialFilter& filter, const CActor* damagee) const { return RayCollideWorldInternal(start, end, filter, nearList, damagee); } bool CStateManager::RayCollideWorldInternal(const zeus::CVector3f& start, const zeus::CVector3f& end, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const CActor* damagee) const { const zeus::CVector3f delta = end - start; if (!delta.canBeNormalized()) { @@ -2373,8 +2373,8 @@ void CStateManager::MoveActors(float dt) { } void CStateManager::CrossTouchActors() { - std::array visits{}; - rstl::reserved_vector nearList; + std::array visits{}; + rstl::reserved_vector nearList; for (CEntity* ent : GetActorObjectList()) { if (ent == nullptr) { @@ -2681,18 +2681,18 @@ void CStateManager::AreaLoaded(TAreaId aid) { x880_envFxManager->AreaLoaded(); } -void CStateManager::BuildNearList(rstl::reserved_vector& listOut, const zeus::CVector3f& v1, +void CStateManager::BuildNearList(rstl::reserved_vector& listOut, const zeus::CVector3f& v1, const zeus::CVector3f& v2, float f1, const CMaterialFilter& filter, const CActor* actor) const { x874_sortedListManager->BuildNearList(listOut, v1, v2, f1, filter, actor); } -void CStateManager::BuildColliderList(rstl::reserved_vector& listOut, const CActor& actor, +void CStateManager::BuildColliderList(rstl::reserved_vector& listOut, const CActor& actor, const zeus::CAABox& aabb) const { x874_sortedListManager->BuildNearList(listOut, actor, aabb); } -void CStateManager::BuildNearList(rstl::reserved_vector& listOut, const zeus::CAABox& aabb, +void CStateManager::BuildNearList(rstl::reserved_vector& listOut, const zeus::CAABox& aabb, const CMaterialFilter& filter, const CActor* actor) const { x874_sortedListManager->BuildNearList(listOut, aabb, filter, actor); } @@ -2800,7 +2800,7 @@ CRayCastResult CStateManager::RayStaticIntersection(const zeus::CVector3f& pos, CRayCastResult CStateManager::RayWorldIntersection(TUniqueId& idOut, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float length, const CMaterialFilter& filter, - const rstl::reserved_vector& list) const { + const rstl::reserved_vector& list) const { return CGameCollision::RayWorldIntersection(*this, idOut, pos, dir, length, filter, list); } diff --git a/Runtime/CStateManager.hpp b/Runtime/CStateManager.hpp index bdd602964..b433adbc8 100644 --- a/Runtime/CStateManager.hpp +++ b/Runtime/CStateManager.hpp @@ -86,7 +86,7 @@ public: private: s16 x0_nextFreeIndex = 0; - std::array x4_idxArr{}; + std::array x4_idxArr{}; /* std::unique_ptr x80c_allObjs; @@ -298,14 +298,14 @@ public: void ProcessRadiusDamage(const CActor&, CActor&, TUniqueId senderId, const CDamageInfo& info, const CMaterialFilter&); void ApplyRadiusDamage(const CActor&, const zeus::CVector3f&, CActor&, const CDamageInfo& info); bool TestRayDamage(const zeus::CVector3f& pos, const CActor& damagee, - const rstl::reserved_vector& nearList) const; + const rstl::reserved_vector& nearList) const; bool RayCollideWorld(const zeus::CVector3f& start, const zeus::CVector3f& end, const CMaterialFilter& filter, const CActor* damagee) const; bool RayCollideWorld(const zeus::CVector3f& start, const zeus::CVector3f& end, - const rstl::reserved_vector& nearList, const CMaterialFilter& filter, + const rstl::reserved_vector& nearList, const CMaterialFilter& filter, const CActor* damagee) const; bool RayCollideWorldInternal(const zeus::CVector3f& start, const zeus::CVector3f& end, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, const CActor* damagee) const; + const rstl::reserved_vector& nearList, const CActor* damagee) const; bool MultiRayCollideWorld(const zeus::CMRay& ray, const CMaterialFilter& filter) const; void TestBombHittingWater(const CActor& damager, const zeus::CVector3f& pos, CActor& damagee); bool ApplyLocalDamage(const zeus::CVector3f&, const zeus::CVector3f&, CActor&, float, const CWeaponMode&); @@ -344,10 +344,10 @@ public: void AreaUnloaded(TAreaId); void PrepareAreaUnload(TAreaId); void AreaLoaded(TAreaId); - void BuildNearList(rstl::reserved_vector& listOut, const zeus::CVector3f&, const zeus::CVector3f&, + void BuildNearList(rstl::reserved_vector& listOut, const zeus::CVector3f&, const zeus::CVector3f&, float, const CMaterialFilter&, const CActor*) const; - void BuildColliderList(rstl::reserved_vector& listOut, const CActor&, const zeus::CAABox&) const; - void BuildNearList(rstl::reserved_vector& listOut, const zeus::CAABox&, const CMaterialFilter&, + void BuildColliderList(rstl::reserved_vector& listOut, const CActor&, const zeus::CAABox&) const; + void BuildNearList(rstl::reserved_vector& listOut, const zeus::CAABox&, const CMaterialFilter&, const CActor*) const; void UpdateActorInSortedLists(CActor&); void UpdateSortedLists(); @@ -358,7 +358,7 @@ public: const CMaterialFilter& filter) const; CRayCastResult RayWorldIntersection(TUniqueId& idOut, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float length, const CMaterialFilter& filter, - const rstl::reserved_vector& list) const; + const rstl::reserved_vector& list) const; void UpdateObjectInLists(CEntity&); TUniqueId AllocateUniqueId(); void DeferStateTransition(EStateManagerTransition t); diff --git a/Runtime/Camera/CBallCamera.cpp b/Runtime/Camera/CBallCamera.cpp index 8bc5cdedd..0f5d3542f 100644 --- a/Runtime/Camera/CBallCamera.cpp +++ b/Runtime/Camera/CBallCamera.cpp @@ -266,7 +266,7 @@ constexpr CMaterialFilter BallCameraFilter = CMaterialFilter::MakeIncludeExclude void CBallCamera::BuildSplineNav(CStateManager& mgr) { zeus::CVector3f ballPos = mgr.GetPlayer().GetBallPosition(); TUniqueId intersectId = kInvalidUniqueId; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; CRayCastResult result = 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; @@ -325,7 +325,7 @@ void CBallCamera::BuildSplineArc(CStateManager& mgr) { delta = rot.transform(delta); zeus::CVector3f pt1 = halfwayPoint + delta; TUniqueId intersectId = kInvalidUniqueId; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; CRayCastResult result = mgr.RayWorldIntersection(intersectId, pt1, -delta.normalized(), delta.magnitude(), BallCameraFilter, nearList); if (result.IsValid()) { @@ -529,7 +529,7 @@ void CBallCamera::CheckFailsafe(float dt, CStateManager& mgr) { zeus::CVector3f camToBall = ballPos - GetTranslation(); float camToBallMag = camToBall.magnitude(); camToBall.normalize(); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, GetTranslation(), camToBall, camToBallMag, BallCameraFilter, nullptr); CRayCastResult result = mgr.RayWorldIntersection(x368_obscuringObjectId, GetTranslation(), camToBall, camToBallMag, BallCameraFilter, nearList); @@ -984,7 +984,7 @@ zeus::CVector3f CBallCamera::ApplyColliders() { } void CBallCamera::UpdateColliders(const zeus::CTransform& xf, std::vector& colliderList, int& it, - int count, float tolerance, const rstl::reserved_vector& nearList, + int count, float tolerance, const rstl::reserved_vector& nearList, float dt, CStateManager& mgr) { if (it < colliderList.size()) { x310_idealLookVec = {0.f, g_tweakBall->GetBallCameraOffset().y(), g_tweakPlayer->GetPlayerBallHalfExtent()}; @@ -1033,7 +1033,7 @@ void CBallCamera::UpdateColliders(const zeus::CTransform& xf, std::vector& nearList, float dt, + const rstl::reserved_vector& nearList, float dt, CStateManager& mgr) { switch (x328_avoidGeomCycle) { case 0: @@ -1059,7 +1059,7 @@ zeus::CVector3f CBallCamera::AvoidGeometry(const zeus::CTransform& xf, } zeus::CVector3f CBallCamera::AvoidGeometryFull(const zeus::CTransform& xf, - const rstl::reserved_vector& nearList, float dt, + const rstl::reserved_vector& nearList, float dt, CStateManager& mgr) { UpdateColliders(xf, x264_smallColliders, x2d0_smallColliderIt, x264_smallColliders.size(), 4.f, nearList, dt, mgr); UpdateColliders(xf, x274_mediumColliders, x2d4_mediumColliderIt, x274_mediumColliders.size(), 4.f, nearList, dt, mgr); @@ -1153,7 +1153,7 @@ void CBallCamera::UpdateUsingColliders(float dt, CStateManager& mgr) { } } x334_collidersAABB = CalculateCollidersBoundingBox(x284_largeColliders, mgr); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, x334_collidersAABB, BallCameraFilter, TCastToConstPtr(mgr.GetObjectById(x46c_collisionActorId)).GetPtr()); if (!x18c_31_clearLOS && x368_obscuringObjectId == kInvalidUniqueId) { @@ -1549,7 +1549,7 @@ zeus::CVector3f CBallCamera::GetFailsafeSplinePoint(const std::vector nearList; + rstl::reserved_vector nearList; rstl::reserved_vector resultsA; rstl::reserved_vector resultsB; while (curT < 6.f) { @@ -1584,7 +1584,7 @@ bool CBallCamera::CheckFailsafeFromMorphBallState(CStateManager& mgr) const { } bool CBallCamera::SplineIntersectTest(CMaterialList& intersectMat, CStateManager& mgr) const { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId xe38 = kInvalidUniqueId; rstl::reserved_vector xacc; rstl::reserved_vector xd10; @@ -1731,7 +1731,7 @@ zeus::CVector3f CBallCamera::FindDesiredPosition(float distance, float elevation zeus::CAABox x13ac(ballPos - distance, ballPos + distance); x13ac.min.z() = float(ballPos.z()); x13ac.max.z() = elev + ballPos.z(); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, x13ac, BallCameraFilter, TCastToConstPtr(mgr.GetObjectById(x46c_collisionActorId)).GetPtr()); zeus::CQuaternion rotNeg; @@ -1803,7 +1803,7 @@ zeus::CVector3f CBallCamera::FindDesiredPosition(float distance, float elevation zeus::CAABox findBounds(ballPos - distance, ballPos + distance); findBounds.min.z() = float(ballPos.z()); findBounds.max.z() = elev + ballPos.z(); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, findBounds, BallCameraFilter, TCastToConstPtr(mgr.GetObjectById(x46c_collisionActorId)).GetPtr()); zeus::CQuaternion rotNeg2; @@ -1858,7 +1858,7 @@ bool CBallCamera::DetectCollision(const zeus::CVector3f& from, const zeus::CVect aabb.accumulateBounds(from); aabb.accumulateBounds(to); aabb = zeus::CAABox(aabb.min - margin, aabb.max + margin); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, mgr.GetPlayer(), aabb); CAreaCollisionCache cache(aabb); CGameCollision::BuildAreaCollisionCache(mgr, cache); @@ -1978,7 +1978,7 @@ bool CBallCamera::CheckTransitionLineOfSight(const zeus::CVector3f& eyePos, cons aabb.accumulateBounds(eyePos); aabb.accumulateBounds(behindPos); aabb = zeus::CAABox(aabb.min - margin, aabb.max + margin); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, mgr.GetPlayer(), aabb); CAreaCollisionCache cache(aabb); CGameCollision::BuildAreaCollisionCache(mgr, cache); diff --git a/Runtime/Camera/CBallCamera.hpp b/Runtime/Camera/CBallCamera.hpp index 6cab970ef..e2effea77 100644 --- a/Runtime/Camera/CBallCamera.hpp +++ b/Runtime/Camera/CBallCamera.hpp @@ -212,11 +212,11 @@ private: int numObscured) const; zeus::CVector3f ApplyColliders(); void UpdateColliders(const zeus::CTransform& xf, std::vector& colliderList, int& it, int count, - float tolerance, const rstl::reserved_vector& nearList, float dt, + float tolerance, const rstl::reserved_vector& nearList, float dt, CStateManager& mgr); - zeus::CVector3f AvoidGeometry(const zeus::CTransform& xf, const rstl::reserved_vector& nearList, + zeus::CVector3f AvoidGeometry(const zeus::CTransform& xf, const rstl::reserved_vector& nearList, float dt, CStateManager& mgr); - zeus::CVector3f AvoidGeometryFull(const zeus::CTransform& xf, const rstl::reserved_vector& nearList, + zeus::CVector3f AvoidGeometryFull(const zeus::CTransform& xf, const rstl::reserved_vector& nearList, float dt, CStateManager& mgr); zeus::CAABox CalculateCollidersBoundingBox(const std::vector& colliderList, CStateManager& mgr) const; diff --git a/Runtime/Character/CGroundMovement.cpp b/Runtime/Character/CGroundMovement.cpp index ec3cec5d9..700783225 100644 --- a/Runtime/Character/CGroundMovement.cpp +++ b/Runtime/Character/CGroundMovement.cpp @@ -38,14 +38,14 @@ void CGroundMovement::CheckFalling(CPhysicsActor& actor, CStateManager& mgr, flo } void CGroundMovement::MoveGroundCollider(CStateManager& mgr, CPhysicsActor& actor, float dt, - const rstl::reserved_vector* nearList) { + const rstl::reserved_vector* nearList) { CMotionState oldState = actor.GetMotionState(); CMotionState newState = actor.PredictMotion_Internal(dt); float deltaMag = newState.x0_translation.magnitude(); TUniqueId idDetect = kInvalidUniqueId; CCollisionInfoList collisionList; zeus::CAABox motionVol = actor.GetMotionVolume(dt); - rstl::reserved_vector useColliderList; + rstl::reserved_vector useColliderList; if (nearList != nullptr) { useColliderList = *nearList; } @@ -114,7 +114,7 @@ void CGroundMovement::MoveGroundCollider(CStateManager& mgr, CPhysicsActor& acto } bool CGroundMovement::ResolveUpDown(CAreaCollisionCache& cache, CStateManager& mgr, CPhysicsActor& actor, - const CMaterialFilter& filter, rstl::reserved_vector& nearList, + const CMaterialFilter& filter, rstl::reserved_vector& nearList, float stepUp, float stepDown, float& fOut, CCollisionInfoList& list) { float zextent = stepDown; if (list.GetCount() <= 0) { @@ -178,7 +178,7 @@ bool CGroundMovement::ResolveUpDown(CAreaCollisionCache& cache, CStateManager& m bool CGroundMovement::MoveGroundColliderZ(CAreaCollisionCache& cache, CStateManager& mgr, CPhysicsActor& actor, const CMaterialFilter& filter, - rstl::reserved_vector& nearList, float amt, float& resolved, + rstl::reserved_vector& nearList, float amt, float& resolved, CCollisionInfoList& list, TUniqueId& idOut) { actor.MoveCollisionPrimitive({0.f, 0.f, amt}); @@ -238,7 +238,7 @@ bool CGroundMovement::MoveGroundColliderZ(CAreaCollisionCache& cache, CStateMana void CGroundMovement::MoveGroundColliderXY(CAreaCollisionCache& cache, CStateManager& mgr, CPhysicsActor& actor, const CMaterialFilter& filter, - rstl::reserved_vector& nearList, float dt) { + rstl::reserved_vector& nearList, float dt) { bool didCollide = false; bool isPlayer = actor.GetMaterialList().HasMaterial(EMaterialTypes::Player); float remDt = dt; @@ -335,9 +335,9 @@ zeus::CVector3f CGroundMovement::CollisionDamping(const zeus::CVector3f& vel, co } void CGroundMovement::MoveGroundCollider_New(CStateManager& mgr, CPhysicsActor& actor, float dt, - const rstl::reserved_vector* nearList) { + const rstl::reserved_vector* nearList) { zeus::CAABox motionVol = actor.GetMotionVolume(dt); - rstl::reserved_vector useNearList; + rstl::reserved_vector useNearList; if (nearList != nullptr) { useNearList = *nearList; } else { @@ -638,7 +638,7 @@ static bool RemovePositiveZComponentFromNormal(zeus::CVector3f& vec) { } CMaterialList CGroundMovement::MoveObjectAnalytical(CStateManager& mgr, CPhysicsActor& actor, float dt, - rstl::reserved_vector& nearList, + rstl::reserved_vector& nearList, CAreaCollisionCache& cache, const SMovementOptions& opts, SMoveObjectResult& result) { result.x6c_processedCollisions = 0; diff --git a/Runtime/Character/CGroundMovement.hpp b/Runtime/Character/CGroundMovement.hpp index 74d4d08bd..4134bef74 100644 --- a/Runtime/Character/CGroundMovement.hpp +++ b/Runtime/Character/CGroundMovement.hpp @@ -47,24 +47,24 @@ public: static void CheckFalling(CPhysicsActor& actor, CStateManager& mgr, float); static void MoveGroundCollider(CStateManager& mgr, CPhysicsActor& actor, float dt, - const rstl::reserved_vector* nearList); + const rstl::reserved_vector* nearList); static bool ResolveUpDown(CAreaCollisionCache& cache, CStateManager& mgr, CPhysicsActor& actor, - const CMaterialFilter& filter, rstl::reserved_vector& nearList, float, + const CMaterialFilter& filter, rstl::reserved_vector& nearList, float, float, float&, CCollisionInfoList& list); static bool MoveGroundColliderZ(CAreaCollisionCache& cache, CStateManager& mgr, CPhysicsActor& actor, - const CMaterialFilter& filter, rstl::reserved_vector& nearList, + const CMaterialFilter& filter, rstl::reserved_vector& nearList, float, float&, CCollisionInfoList& list, TUniqueId& idOut); static void MoveGroundColliderXY(CAreaCollisionCache& cache, CStateManager& mgr, CPhysicsActor& actor, - const CMaterialFilter& filter, rstl::reserved_vector& nearList, + const CMaterialFilter& filter, rstl::reserved_vector& nearList, float); static zeus::CVector3f CollisionDamping(const zeus::CVector3f& a, const zeus::CVector3f& b, const zeus::CVector3f& c, float d, float e); static void MoveGroundCollider_New(CStateManager& mgr, CPhysicsActor& actor, float, - const rstl::reserved_vector* nearList); + const rstl::reserved_vector* nearList); static bool RemoveNormalComponent(const zeus::CVector3f&, const zeus::CVector3f&, zeus::CVector3f&, float&); static bool RemoveNormalComponent(const zeus::CVector3f& a, zeus::CVector3f& b); static CMaterialList MoveObjectAnalytical(CStateManager& mgr, CPhysicsActor& actor, float, - rstl::reserved_vector& nearList, + rstl::reserved_vector& nearList, CAreaCollisionCache& cache, const SMovementOptions& opts, SMoveObjectResult& result); }; diff --git a/Runtime/Character/CRagDoll.cpp b/Runtime/Character/CRagDoll.cpp index 7f7ba3a25..437e6f963 100644 --- a/Runtime/Character/CRagDoll.cpp +++ b/Runtime/Character/CRagDoll.cpp @@ -226,7 +226,7 @@ bool CRagDoll::SatisfyWorldConstraints(CStateManager& mgr, int pass) { else exclude = CMaterialList(EMaterialTypes::Character, EMaterialTypes::Player); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; CMaterialFilter filter = CMaterialFilter::MakeIncludeExclude(include, exclude); mgr.BuildNearList(nearList, aabb, filter, nullptr); diff --git a/Runtime/Character/CSteeringBehaviors.cpp b/Runtime/Character/CSteeringBehaviors.cpp index b23a4d5d3..46e7b2c01 100644 --- a/Runtime/Character/CSteeringBehaviors.cpp +++ b/Runtime/Character/CSteeringBehaviors.cpp @@ -55,7 +55,7 @@ zeus::CVector3f CSteeringBehaviors::Separation(const CPhysicsActor& actor, const return (1.f - (posDiff.magSquared() / (separation * separation))) * posDiff.normalized(); } -zeus::CVector3f CSteeringBehaviors::Alignment(const CPhysicsActor& actor, rstl::reserved_vector& list, +zeus::CVector3f CSteeringBehaviors::Alignment(const CPhysicsActor& actor, rstl::reserved_vector& list, const CStateManager& mgr) const { zeus::CVector3f align; @@ -71,7 +71,7 @@ zeus::CVector3f CSteeringBehaviors::Alignment(const CPhysicsActor& actor, rstl:: return align * (diff / M_PIF); } -zeus::CVector3f CSteeringBehaviors::Cohesion(const CPhysicsActor& actor, rstl::reserved_vector& list, +zeus::CVector3f CSteeringBehaviors::Cohesion(const CPhysicsActor& actor, rstl::reserved_vector& list, float dampingRadius, const CStateManager& mgr) const { zeus::CVector3f dest; if (!list.empty()) { diff --git a/Runtime/Character/CSteeringBehaviors.hpp b/Runtime/Character/CSteeringBehaviors.hpp index e9813b4c8..c498944c5 100644 --- a/Runtime/Character/CSteeringBehaviors.hpp +++ b/Runtime/Character/CSteeringBehaviors.hpp @@ -19,9 +19,9 @@ public: zeus::CVector3f Arrival(const CPhysicsActor& actor, const zeus::CVector3f& dest, float dampingRadius) const; zeus::CVector3f Pursuit(const CPhysicsActor& actor, const zeus::CVector3f& v0, const zeus::CVector3f& v1) const; zeus::CVector3f Separation(const CPhysicsActor& actor, const zeus::CVector3f& pos, float separation) const; - zeus::CVector3f Alignment(const CPhysicsActor& actor, rstl::reserved_vector& list, + zeus::CVector3f Alignment(const CPhysicsActor& actor, rstl::reserved_vector& list, const CStateManager& mgr) const; - zeus::CVector3f Cohesion(const CPhysicsActor& actor, rstl::reserved_vector& list, + zeus::CVector3f Cohesion(const CPhysicsActor& actor, rstl::reserved_vector& list, float dampingRadius, const CStateManager& mgr) const; zeus::CVector2f Flee2D(const CPhysicsActor& actor, const zeus::CVector2f& v0) const; zeus::CVector2f Arrival2D(const CPhysicsActor& actor, const zeus::CVector2f& v0) const; diff --git a/Runtime/Character/IMetaAnim.hpp b/Runtime/Character/IMetaAnim.hpp index 7313bc6ff..f103c089d 100644 --- a/Runtime/Character/IMetaAnim.hpp +++ b/Runtime/Character/IMetaAnim.hpp @@ -23,8 +23,8 @@ class CPreAdvanceIndicator { /* u32 x10_; u32 x14_; - u32 x18_; - u32 x1c_; + u32 x18_fireTime; + u32 x1c_damageDelay; u32 x20_; u32 x24_; u32 x28_; diff --git a/Runtime/Collision/CGameCollision.cpp b/Runtime/Collision/CGameCollision.cpp index a27672379..ac9b08afd 100644 --- a/Runtime/Collision/CGameCollision.cpp +++ b/Runtime/Collision/CGameCollision.cpp @@ -59,7 +59,7 @@ void CGameCollision::InitCollision() { } void CGameCollision::MovePlayer(CStateManager& mgr, CPhysicsActor& actor, float dt, - const rstl::reserved_vector* colliderList) { + const rstl::reserved_vector* colliderList) { actor.SetAngularEnabled(true); actor.AddMotionState(actor.PredictAngularMotion(dt)); if (!actor.IsUseStandardCollider()) { @@ -77,7 +77,7 @@ void CGameCollision::MovePlayer(CStateManager& mgr, CPhysicsActor& actor, float } void CGameCollision::MoveAndCollide(CStateManager& mgr, CPhysicsActor& actor, float dt, const ICollisionFilter& filter, - const rstl::reserved_vector* colliderList) { + const rstl::reserved_vector* colliderList) { bool isPlayer = actor.GetMaterialList().HasMaterial(EMaterialTypes::Player); bool r28 = false; bool r27 = false; @@ -94,7 +94,7 @@ void CGameCollision::MoveAndCollide(CStateManager& mgr, CPhysicsActor& actor, fl float m3 = 0.001f / actor.GetCollisionAccuracyModifier(); zeus::CAABox motionVol = actor.GetMotionVolume(dt); - rstl::reserved_vector useColliderList; + rstl::reserved_vector useColliderList; if (colliderList) useColliderList = *colliderList; else @@ -196,7 +196,7 @@ zeus::CVector3f CGameCollision::GetActorRelativeVelocities(const CPhysicsActor& } void CGameCollision::Move(CStateManager& mgr, CPhysicsActor& actor, float dt, - const rstl::reserved_vector* colliderList) { + const rstl::reserved_vector* colliderList) { if (!actor.IsMovable()) return; if (actor.GetMaterialList().HasMaterial(EMaterialTypes::GroundCollider) || actor.WillMove(mgr)) { @@ -297,7 +297,7 @@ bool CGameCollision::RayStaticIntersectionBool(const CStateManager& mgr, const z CRayCastResult CGameCollision::RayDynamicIntersection(const CStateManager& mgr, TUniqueId& idOut, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float length, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList) { + const rstl::reserved_vector& nearList) { CRayCastResult ret; float bestT = length; if (bestT <= 0.f) { @@ -323,7 +323,7 @@ CRayCastResult CGameCollision::RayDynamicIntersection(const CStateManager& mgr, bool CGameCollision::RayDynamicIntersectionBool(const CStateManager& mgr, const zeus::CVector3f& pos, const zeus::CVector3f& dir, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const CActor* damagee, float length) { if (length <= 0.f) { length = 100000.f; @@ -350,7 +350,7 @@ bool CGameCollision::RayDynamicIntersectionBool(const CStateManager& mgr, const CRayCastResult CGameCollision::RayWorldIntersection(const CStateManager& mgr, TUniqueId& idOut, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float mag, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList) { + const rstl::reserved_vector& nearList) { CRayCastResult staticRes = RayStaticIntersection(mgr, pos, dir, mag, filter); CRayCastResult dynamicRes = RayDynamicIntersection(mgr, idOut, pos, dir, mag, filter, nearList); @@ -405,7 +405,7 @@ float CGameCollision::GetMinExtentForCollisionPrimitive(const CCollisionPrimitiv bool CGameCollision::DetectCollisionBoolean(const CStateManager& mgr, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList) { + const rstl::reserved_vector& nearList) { if (!filter.GetExcludeList().HasMaterial(EMaterialTypes::NoStaticCollision) && DetectStaticCollisionBoolean(mgr, prim, xf, filter)) { return true; @@ -419,7 +419,7 @@ bool CGameCollision::DetectCollisionBoolean(const CStateManager& mgr, const CCol bool CGameCollision::DetectCollisionBoolean_Cached(const CStateManager& mgr, CAreaCollisionCache& cache, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList) { + const rstl::reserved_vector& nearList) { if (!filter.GetExcludeList().HasMaterial(EMaterialTypes::NoStaticCollision) && DetectStaticCollisionBoolean_Cached(mgr, cache, prim, xf, filter)) { return true; @@ -501,7 +501,7 @@ bool CGameCollision::DetectStaticCollisionBoolean_Cached(const CStateManager& mg } bool CGameCollision::DetectDynamicCollisionBoolean(const CCollisionPrimitive& prim, const zeus::CTransform& xf, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const CStateManager& mgr) { for (const auto& id : nearList) { if (const TCastToConstPtr actor = mgr.GetObjectById(id)) { @@ -520,7 +520,7 @@ bool CGameCollision::DetectDynamicCollisionBoolean(const CCollisionPrimitive& pr bool CGameCollision::DetectCollision_Cached(const CStateManager& mgr, CAreaCollisionCache& cache, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, TUniqueId& idOut, + const rstl::reserved_vector& nearList, TUniqueId& idOut, CCollisionInfoList& infoList) { idOut = kInvalidUniqueId; bool ret = false; @@ -542,7 +542,7 @@ bool CGameCollision::DetectCollision_Cached(const CStateManager& mgr, CAreaColli bool CGameCollision::DetectCollision_Cached_Moving(const CStateManager& mgr, CAreaCollisionCache& cache, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const zeus::CVector3f& dir, TUniqueId& idOut, CCollisionInfo& infoOut, double& d) { bool ret = false; @@ -686,7 +686,7 @@ bool CGameCollision::DetectStaticCollision_Cached_Moving(const CStateManager& mg } bool CGameCollision::DetectDynamicCollision(const CCollisionPrimitive& prim, const zeus::CTransform& xf, - const rstl::reserved_vector& nearList, TUniqueId& idOut, + const rstl::reserved_vector& nearList, TUniqueId& idOut, CCollisionInfoList& list, const CStateManager& mgr) { for (const auto& id : nearList) { if (const TCastToConstPtr actor = mgr.GetObjectById(id)) { @@ -704,7 +704,7 @@ bool CGameCollision::DetectDynamicCollision(const CCollisionPrimitive& prim, con } bool CGameCollision::DetectDynamicCollisionMoving(const CCollisionPrimitive& prim, const zeus::CTransform& xf, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const zeus::CVector3f& dir, TUniqueId& idOut, CCollisionInfo& infoOut, double& dOut, const CStateManager& mgr) { bool ret = false; @@ -729,7 +729,7 @@ bool CGameCollision::DetectDynamicCollisionMoving(const CCollisionPrimitive& pri bool CGameCollision::DetectCollision(const CStateManager& mgr, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, TUniqueId& idOut, + const rstl::reserved_vector& nearList, TUniqueId& idOut, CCollisionInfoList& infoOut) { bool ret = false; CMaterialList exclude = filter.ExcludeList(); @@ -894,7 +894,7 @@ void CGameCollision::CollideWithStaticBodyNoRot(CPhysicsActor& a0, const CMateri void CGameCollision::CollisionFailsafe(const CStateManager& mgr, CAreaCollisionCache& cache, CPhysicsActor& actor, const CCollisionPrimitive& prim, - const rstl::reserved_vector& nearList, float f1, + const rstl::reserved_vector& nearList, float f1, u32 failsafeTicks) { actor.MoveCollisionPrimitive(zeus::skZero3f); if (f1 > 0.5f) { @@ -943,7 +943,7 @@ void CGameCollision::CollisionFailsafe(const CStateManager& mgr, CAreaCollisionC std::optional CGameCollision::FindNonIntersectingVector(const CStateManager& mgr, CAreaCollisionCache& cache, CPhysicsActor& actor, const CCollisionPrimitive& prim, - const rstl::reserved_vector& nearList) { + const rstl::reserved_vector& nearList) { zeus::CTransform xf = actor.GetPrimitiveTransform(); zeus::CVector3f origOrigin = xf.origin; zeus::CVector3f center = prim.CalculateAABox(xf).center(); diff --git a/Runtime/Collision/CGameCollision.hpp b/Runtime/Collision/CGameCollision.hpp index cc172d8c0..244afa53d 100644 --- a/Runtime/Collision/CGameCollision.hpp +++ b/Runtime/Collision/CGameCollision.hpp @@ -25,9 +25,9 @@ class ICollisionFilter; class CGameCollision { static void MovePlayer(CStateManager& mgr, CPhysicsActor& actor, float dt, - const rstl::reserved_vector* colliderList); + const rstl::reserved_vector* colliderList); static void MoveAndCollide(CStateManager& mgr, CPhysicsActor& actor, float dt, const ICollisionFilter& filter, - const rstl::reserved_vector* colliderList); + const rstl::reserved_vector* colliderList); static zeus::CVector3f GetActorRelativeVelocities(const CPhysicsActor& act0, const CPhysicsActor* act1); public: @@ -39,7 +39,7 @@ public: static bool NullCollisionCollider(const CInternalCollisionStructure&, CCollisionInfoList&) { return false; } static void InitCollision(); static void Move(CStateManager& mgr, CPhysicsActor& actor, float dt, - const rstl::reserved_vector* colliderList); + const rstl::reserved_vector* colliderList); static bool CanBlock(const CMaterialList&, const zeus::CUnitVector3f&); static bool IsFloor(const CMaterialList&, const zeus::CUnitVector3f&); @@ -50,42 +50,42 @@ public: const zeus::CVector3f& dir, float length, const CMaterialFilter& filter); static CRayCastResult RayDynamicIntersection(const CStateManager& mgr, TUniqueId& idOut, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float mag, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList); + const rstl::reserved_vector& nearList); static bool RayDynamicIntersectionBool(const CStateManager& mgr, const zeus::CVector3f& pos, const zeus::CVector3f& dir, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, const CActor* damagee, + const rstl::reserved_vector& nearList, const CActor* damagee, float length); static CRayCastResult RayWorldIntersection(const CStateManager& mgr, TUniqueId& idOut, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float mag, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList); + const rstl::reserved_vector& nearList); static bool RayStaticIntersectionArea(const CGameArea& area, const zeus::CVector3f& pos, const zeus::CVector3f& dir, float mag, const CMaterialFilter& filter); static void BuildAreaCollisionCache(const CStateManager& mgr, CAreaCollisionCache& cache); static float GetMinExtentForCollisionPrimitive(const CCollisionPrimitive& prim); static bool DetectCollisionBoolean(const CStateManager& mgr, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList); + const rstl::reserved_vector& nearList); static bool DetectCollisionBoolean_Cached(const CStateManager& mgr, CAreaCollisionCache& cache, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList); + const rstl::reserved_vector& nearList); static bool DetectStaticCollisionBoolean(const CStateManager& mgr, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter); static bool DetectStaticCollisionBoolean_Cached(const CStateManager& mgr, CAreaCollisionCache& cache, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter); static bool DetectDynamicCollisionBoolean(const CCollisionPrimitive& prim, const zeus::CTransform& xf, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const CStateManager& mgr); static bool DetectCollision_Cached(const CStateManager& mgr, CAreaCollisionCache& cache, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, TUniqueId& idOut, + const rstl::reserved_vector& nearList, TUniqueId& idOut, CCollisionInfoList& infoList); static bool DetectCollision_Cached_Moving(const CStateManager& mgr, CAreaCollisionCache& cache, const CCollisionPrimitive& prim, const zeus::CTransform& xf, const CMaterialFilter& filter, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const zeus::CVector3f& vec, TUniqueId& idOut, CCollisionInfo& infoOut, double&); static bool DetectStaticCollision(const CStateManager& mgr, const CCollisionPrimitive& prim, @@ -99,14 +99,14 @@ public: const CMaterialFilter& filter, const zeus::CVector3f& vec, CCollisionInfo& infoOut, double& d); static bool DetectDynamicCollision(const CCollisionPrimitive& prim, const zeus::CTransform& xf, - const rstl::reserved_vector& nearList, TUniqueId& idOut, + const rstl::reserved_vector& nearList, TUniqueId& idOut, CCollisionInfoList& list, const CStateManager& mgr); static bool DetectDynamicCollisionMoving(const CCollisionPrimitive& prim, const zeus::CTransform& xf, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, const zeus::CVector3f& vec, TUniqueId& idOut, CCollisionInfo& infoOut, double& d, const CStateManager& mgr); static bool DetectCollision(const CStateManager& mgr, const CCollisionPrimitive& prim, const zeus::CTransform& xf, - const CMaterialFilter& filter, const rstl::reserved_vector& nearList, + const CMaterialFilter& filter, const rstl::reserved_vector& nearList, TUniqueId& idOut, CCollisionInfoList& infoOut); static void MakeCollisionCallbacks(CStateManager& mgr, CPhysicsActor& actor, TUniqueId id, const CCollisionInfoList& list); @@ -117,11 +117,11 @@ public: static void CollideWithStaticBodyNoRot(CPhysicsActor& a0, const CMaterialList& m0, const CMaterialList& m1, const zeus::CUnitVector3f& normal, float restitution, bool); static void CollisionFailsafe(const CStateManager& mgr, CAreaCollisionCache& cache, CPhysicsActor& actor, - const CCollisionPrimitive& prim, const rstl::reserved_vector& nearList, + const CCollisionPrimitive& prim, const rstl::reserved_vector& nearList, float, u32 failsafeTicks); static std::optional FindNonIntersectingVector(const CStateManager& mgr, CAreaCollisionCache& cache, CPhysicsActor& actor, - const CCollisionPrimitive& prim, const rstl::reserved_vector& nearList); + const CCollisionPrimitive& prim, const rstl::reserved_vector& nearList); static void AvoidStaticCollisionWithinRadius(const CStateManager& mgr, CPhysicsActor& actor, u32 iterations, float dt, float height, float size, float mass, float radius); }; diff --git a/Runtime/Graphics/CSimpleShadow.cpp b/Runtime/Graphics/CSimpleShadow.cpp index ee5c22e41..bcafad538 100644 --- a/Runtime/Graphics/CSimpleShadow.cpp +++ b/Runtime/Graphics/CSimpleShadow.cpp @@ -58,7 +58,7 @@ void CSimpleShadow::Calculate(const zeus::CAABox& aabb, const zeus::CTransform& if (height > 0.1f + halfHeight) { TUniqueId cid = kInvalidUniqueId; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; CRayCastResult resD = CGameCollision::RayDynamicIntersection( mgr, cid, pos, zeus::skDown, x40_maxObjHeight, CMaterialFilter::skPassEverything, nearList); if (resD.IsValid() && resD.GetT() < height) { diff --git a/Runtime/GuiSys/CHudRadarInterface.cpp b/Runtime/GuiSys/CHudRadarInterface.cpp index 9392b02fd..70ff903d0 100644 --- a/Runtime/GuiSys/CHudRadarInterface.cpp +++ b/Runtime/GuiSys/CHudRadarInterface.cpp @@ -128,7 +128,7 @@ void CHudRadarInterface::Draw(const CStateManager& mgr, float alpha) { player.GetTranslation().z() - drawParms.x7c_zRadius, player.GetTranslation().x() + drawParms.x78_xyRadius, player.GetTranslation().y() + drawParms.x78_xyRadius, player.GetTranslation().z() + drawParms.x7c_zRadius); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, radarBounds, CMaterialFilter(CMaterialList(EMaterialTypes::Target, EMaterialTypes::RadarObject), CMaterialList(EMaterialTypes::ExcludeFromRadar), diff --git a/Runtime/ImGuiConsole.cpp b/Runtime/ImGuiConsole.cpp index eb953ed89..943852087 100644 --- a/Runtime/ImGuiConsole.cpp +++ b/Runtime/ImGuiConsole.cpp @@ -18,7 +18,7 @@ void ClearIniSettings(); namespace metaforce { -std::array ImGuiConsole::entities; +std::array ImGuiConsole::entities; std::set ImGuiConsole::inspectingEntities; ImGuiPlayerLoadouts ImGuiConsole::loadouts; @@ -246,7 +246,7 @@ void ImGuiConsole::ShowInspectWindow(bool* isOpen) { if (ImGui::Begin("Inspect", isOpen)) { CObjectList& list = g_StateManager->GetAllObjectList(); - ImGui::Text("Objects: %d / 1024", list.size()); + ImGui::Text("Objects: %d / %d", list.size(), kMaxEntities); ImGui::SameLine(); if (ImGui::SmallButton("Deselect all")) { for (auto* const ent : list) { @@ -710,17 +710,7 @@ void ImGuiConsole::ShowDebugOverlay() { ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav; if (m_debugOverlayCorner != -1) { - const ImGuiViewport* viewport = ImGui::GetMainViewport(); - ImVec2 workPos = viewport->WorkPos; // Use work area to avoid menu-bar/task-bar, if any! - ImVec2 workSize = viewport->WorkSize; - ImVec2 windowPos; - ImVec2 windowPosPivot; - constexpr float padding = 10.0f; - windowPos.x = (m_debugOverlayCorner & 1) != 0 ? (workPos.x + workSize.x - padding) : (workPos.x + padding); - windowPos.y = (m_debugOverlayCorner & 2) != 0 ? (workPos.y + workSize.y - padding) : (workPos.y + padding); - windowPosPivot.x = (m_debugOverlayCorner & 1) != 0 ? 1.0f : 0.0f; - windowPosPivot.y = (m_debugOverlayCorner & 2) != 0 ? 1.0f : 0.0f; - ImGui::SetNextWindowPos(windowPos, ImGuiCond_Always, windowPosPivot); + SetOverlayWindowLocation(m_debugOverlayCorner); windowFlags |= ImGuiWindowFlags_NoMove; } ImGui::SetNextWindowBgAlpha(0.65f); diff --git a/Runtime/ImGuiConsole.hpp b/Runtime/ImGuiConsole.hpp index 04f2bfcfd..8caaf8161 100644 --- a/Runtime/ImGuiConsole.hpp +++ b/Runtime/ImGuiConsole.hpp @@ -34,7 +34,7 @@ struct ImGuiEntityEntry { class ImGuiConsole { public: static std::set inspectingEntities; - static std::array entities; + static std::array entities; static ImGuiPlayerLoadouts loadouts; ImGuiConsole(hecl::CVarManager& cvarMgr, hecl::CVarCommons& cvarCommons) diff --git a/Runtime/ImGuiEntitySupport.cpp b/Runtime/ImGuiEntitySupport.cpp index 84d253c40..3273e313e 100644 --- a/Runtime/ImGuiEntitySupport.cpp +++ b/Runtime/ImGuiEntitySupport.cpp @@ -442,7 +442,7 @@ IMGUI_ENTITY_INSPECT(CScriptDistanceFog, CEntity, ScriptDistanceFog, {}) IMGUI_ENTITY_INSPECT(CScriptDockAreaChange, CEntity, ScriptDockAreaChange, {}) IMGUI_ENTITY_INSPECT(CScriptGenerator, CEntity, ScriptGenerator, { int count = x34_spawnCount; - if (ImGui::SliderInt("Spawn Count", &count, 0, 1024)) { + if (ImGui::SliderInt("Spawn Count", &count, 0, kMaxEntities)) { x34_spawnCount = count; } BITFIELD_CHECKBOX("Don't Reuse Followers", x38_24_noReuseFollowers); diff --git a/Runtime/MP1/CSamusHud.cpp b/Runtime/MP1/CSamusHud.cpp index 0555e2a80..f933e9ae0 100644 --- a/Runtime/MP1/CSamusHud.cpp +++ b/Runtime/MP1/CSamusHud.cpp @@ -533,7 +533,7 @@ void CSamusHud::UpdateThreatAssessment(float dt, const CStateManager& mgr) { zeus::CAABox aabb; aabb.accumulateBounds(player.GetTranslation() - g_tweakGui->GetThreatRange()); aabb.accumulateBounds(player.GetTranslation() + g_tweakGui->GetThreatRange()); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, filter, nullptr); float threatDist = 9999.f; diff --git a/Runtime/MP1/World/CBeetle.cpp b/Runtime/MP1/World/CBeetle.cpp index 3a15939e0..5f6faf471 100644 --- a/Runtime/MP1/World/CBeetle.cpp +++ b/Runtime/MP1/World/CBeetle.cpp @@ -443,7 +443,7 @@ void CBeetle::Generate(CStateManager& mgr, EStateMsg msg, float dt) { if (x450_bodyController->GetCurrentStateId() != pas::EAnimationState::Generate) { x568_stateProg = 4; } else if (x68_material.HasMaterial(EMaterialTypes::Solid) && x5a8_animTimeRem > 0.f) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, zeus::CAABox(GetTranslation() - 5.f, GetTranslation() + 5.f), CMaterialFilter::MakeInclude({EMaterialTypes::Solid}), this); if (!nearList.empty()) { @@ -889,7 +889,7 @@ bool CBeetle::ShouldDoubleSnap(CStateManager& mgr, float arg) { targetPos = role->GetTeamPosition(); zeus::CVector3f delta = targetPos - GetTranslation(); if (delta.magSquared() > dist * dist && GetTransform().basis[1].dot(delta.normalized()) > 0.98f) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, GetTranslation(), GetTransform().basis[1], x5a0_headbuttDist, CMaterialFilter::MakeInclude({EMaterialTypes::Character}), this); TUniqueId bestId = kInvalidUniqueId; @@ -915,7 +915,7 @@ bool CBeetle::ShouldJumpBack(CStateManager& mgr, float arg) { zeus::CVector3f backDir = -GetTransform().basis[1]; const auto& aabb = GetBaseBoundingBox(); zeus::CVector3f pos = GetTranslation() + zeus::CVector3f(0.f, 0.f, (aabb.max.z() - aabb.min.z()) * 0.5f); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, pos, backDir, x5a4_jumpBackwardDist, CMaterialFilter::MakeInclude({EMaterialTypes::Character}), this); TUniqueId bestId = kInvalidUniqueId; diff --git a/Runtime/MP1/World/CBouncyGrenade.cpp b/Runtime/MP1/World/CBouncyGrenade.cpp index 42e3d650f..708852a4b 100644 --- a/Runtime/MP1/World/CBouncyGrenade.cpp +++ b/Runtime/MP1/World/CBouncyGrenade.cpp @@ -177,7 +177,7 @@ void CBouncyGrenade::Explode(CStateManager& mgr, TUniqueId uid) { if (radius > 1.f) { const zeus::CVector3f& pos = GetTranslation(); const CMaterialFilter filter = CMaterialFilter::MakeInclude({EMaterialTypes::Player, EMaterialTypes::Character}); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, {pos - radius, pos + radius}, filter, nullptr); for (const auto& id : nearList) { diff --git a/Runtime/MP1/World/CDrone.cpp b/Runtime/MP1/World/CDrone.cpp index abc0a17c2..1cdeabd4e 100644 --- a/Runtime/MP1/World/CDrone.cpp +++ b/Runtime/MP1/World/CDrone.cpp @@ -191,7 +191,7 @@ void CDrone::Think(float dt, CStateManager& mgr) { if (IsAlive() && x835_25_) { zeus::CAABox box = GetBoundingBox(); box.accumulateBounds(GetTranslation() + 20.f * zeus::skDown); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, GetBoundingBox(), CMaterialFilter::MakeInclude({EMaterialTypes::Trigger}), this); for (TUniqueId id : nearList) { if (const TCastToConstPtr water = mgr.GetObjectById(id)) { @@ -468,7 +468,7 @@ void CDrone::Patrol(CStateManager& mgr, EStateMsg msg, float dt) { SetLightEnabled(mgr, true); x834_25_ = true; } else if (msg == EStateMsg::Update) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; BuildNearList(EMaterialTypes::Character, EMaterialTypes::Player, nearList, 5.f, mgr); if (!nearList.empty()) { zeus::CVector3f sep = x45c_steeringBehaviors.Separation( @@ -878,7 +878,7 @@ bool CDrone::ShouldFire(CStateManager& mgr, float arg) { } bool CDrone::HearShot(CStateManager& mgr, float arg) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; BuildNearList(EMaterialTypes::Projectile, EMaterialTypes::Player, nearList, 10.f, mgr); return std::any_of(nearList.begin(), nearList.end(), [&mgr](TUniqueId uid) { if (TCastToConstPtr wp = mgr.GetObjectById(uid)) @@ -914,7 +914,7 @@ void CDrone::Burn(float duration, float damage) { CPathFindSearch* CDrone::GetSearchPath() { return &x6b0_pathFind; } void CDrone::BuildNearList(EMaterialTypes includeMat, EMaterialTypes excludeMat, - rstl::reserved_vector& listOut, float radius, CStateManager& mgr) { + rstl::reserved_vector& listOut, float radius, CStateManager& mgr) { const zeus::CVector3f pos = GetTranslation(); mgr.BuildNearList(listOut, zeus::CAABox(pos - radius, pos + radius), CMaterialFilter::MakeIncludeExclude({includeMat}, {excludeMat}), nullptr); @@ -1004,7 +1004,7 @@ void CDrone::FireProjectile(CStateManager& mgr, const zeus::CTransform& xf, cons void CDrone::StrafeFromCompanions(CStateManager& mgr) { if (x450_bodyController->GetBodyStateInfo().GetCurrentStateId() == pas::EAnimationState::Step) return; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; BuildNearList(EMaterialTypes::Character, EMaterialTypes::Player, nearList, x61c_, mgr); if (nearList.empty()) return; @@ -1054,7 +1054,7 @@ void CDrone::UpdateScanner(CStateManager& mgr, float dt) { zeus::CVector3f vec = GetTransform().rotate(zeus::CVector3f(0.5f * std::cos(x5d8_), 1.f, 0.5f * std::sin(2.05f * x5d8_)).normalized()); TUniqueId id; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; nearList.push_back(mgr.GetPlayer().GetUniqueId()); auto res = mgr.RayWorldIntersection( id, GetLctrTransform("Beacon_LCTR"sv).origin + (0.2f * vec), vec, 10000.f, @@ -1082,7 +1082,7 @@ void CDrone::UpdateLasers(CStateManager& mgr, float dt) { auto box = zeus::skInvertedBox; box.accumulateBounds(GetTranslation() + 1000.f * vec); box.accumulateBounds(GetTranslation()); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, box, matFilter, nullptr); TUniqueId id; const auto result = mgr.RayWorldIntersection(id, beaconXf.origin + 2.f * vec, vec, 10000.f, matFilter, nearList); @@ -1144,7 +1144,7 @@ void CDrone::sub_80165984(CStateManager& mgr, const zeus::CTransform& xf) { void CDrone::sub_801656d4(const zeus::CTransform& xf, CStateManager& mgr) { constexpr auto matFilter = CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {EMaterialTypes::ProjectilePassthrough}); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, xf.origin, xf.frontVector(), 100000.f, matFilter, this); TUniqueId id; const auto result = mgr.RayWorldIntersection(id, xf.origin, xf.frontVector(), 100000.f, matFilter, nearList); diff --git a/Runtime/MP1/World/CDrone.hpp b/Runtime/MP1/World/CDrone.hpp index ba2d6e109..cb473e8e4 100644 --- a/Runtime/MP1/World/CDrone.hpp +++ b/Runtime/MP1/World/CDrone.hpp @@ -169,7 +169,7 @@ public: void Dead(CStateManager& mgr, EStateMsg msg, float arg) override; CPathFindSearch* GetSearchPath() override; virtual void BuildNearList(EMaterialTypes includeMat, EMaterialTypes excludeMat, - rstl::reserved_vector& listOut, float radius, CStateManager& mgr); + rstl::reserved_vector& listOut, float radius, CStateManager& mgr); virtual void SetLightEnabled(CStateManager& mgr, bool activate); virtual void SetVisorFlareEnabled(CStateManager& mgr, bool activate); virtual void UpdateVisorFlare(CStateManager& mgr); diff --git a/Runtime/MP1/World/CElitePirate.cpp b/Runtime/MP1/World/CElitePirate.cpp index 867c0f08e..67e7f5b7d 100644 --- a/Runtime/MP1/World/CElitePirate.cpp +++ b/Runtime/MP1/World/CElitePirate.cpp @@ -989,14 +989,14 @@ void CElitePirate::AttractProjectiles(CStateManager& mgr) { float radius = x5d8_data.GetProjectileAttractionRadius(); const zeus::CVector3f actorPos = actor->GetTranslation(); const zeus::CVector3f pos = GetTranslation(); - rstl::reserved_vector projNearList; + rstl::reserved_vector projNearList; const zeus::CAABox aabb{pos - radius, pos + radius}; mgr.BuildNearList(projNearList, aabb, CMaterialFilter::MakeInclude({EMaterialTypes::Projectile}), nullptr); if (projNearList.empty()) { return; } - rstl::reserved_vector charNearList; + rstl::reserved_vector charNearList; mgr.BuildNearList(charNearList, aabb, CMaterialFilter::MakeInclude({EMaterialTypes::Character}), nullptr); for (const auto& projId : projNearList) { TCastToPtr projectile = mgr.ObjectById(projId); @@ -1157,7 +1157,7 @@ bool CElitePirate::ShouldCallForBackupFromLauncher(const CStateManager& mgr, TUn } bool CElitePirate::IsClosestEnergyAttractor(const CStateManager& mgr, - const rstl::reserved_vector& charNearList, + const rstl::reserved_vector& charNearList, const zeus::CVector3f& projectilePos) const { const float distance = (projectilePos - GetTranslation()).magSquared(); for (const auto& id : charNearList) { diff --git a/Runtime/MP1/World/CElitePirate.hpp b/Runtime/MP1/World/CElitePirate.hpp index df40598a2..5b25546c1 100644 --- a/Runtime/MP1/World/CElitePirate.hpp +++ b/Runtime/MP1/World/CElitePirate.hpp @@ -239,7 +239,7 @@ private: void UpdateHealthInfo(CStateManager& mgr); void ExtendTouchBounds(const CStateManager& mgr, const rstl::reserved_vector& uids, const zeus::CVector3f& vec) const; - bool IsClosestEnergyAttractor(const CStateManager& mgr, const rstl::reserved_vector& charNearList, + bool IsClosestEnergyAttractor(const CStateManager& mgr, const rstl::reserved_vector& charNearList, const zeus::CVector3f& projectilePos) const; void ShakeCamera(CStateManager& mgr); }; diff --git a/Runtime/MP1/World/CFireFlea.cpp b/Runtime/MP1/World/CFireFlea.cpp index 4b5b2d161..2f9dd1b1b 100644 --- a/Runtime/MP1/World/CFireFlea.cpp +++ b/Runtime/MP1/World/CFireFlea.cpp @@ -172,7 +172,7 @@ zeus::CVector3f CFireFlea::FindSafeRoute(CStateManager& mgr, const zeus::CVector } bool CFireFlea::CheckNearWater(const CStateManager& mgr, const zeus::CVector3f& dir) const { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, GetTranslation(), dir, 2.f, CMaterialFilter::skPassEverything, nullptr); for (const auto& id : nearList) { diff --git a/Runtime/MP1/World/CFireFlea.hpp b/Runtime/MP1/World/CFireFlea.hpp index f0792da35..1d93096e3 100644 --- a/Runtime/MP1/World/CFireFlea.hpp +++ b/Runtime/MP1/World/CFireFlea.hpp @@ -28,7 +28,7 @@ class CFireFlea : public CPatterned { }; float x568_ = 1.f; float x56c_; - rstl::reserved_vector x570_nearList; + rstl::reserved_vector x570_nearList; zeus::CVector3f xd74_; zeus::CVector3f xd80_targetPos; CPathFindSearch xd8c_pathFind; diff --git a/Runtime/MP1/World/CFlyingPirate.cpp b/Runtime/MP1/World/CFlyingPirate.cpp index 5726d897c..3129cf6b6 100644 --- a/Runtime/MP1/World/CFlyingPirate.cpp +++ b/Runtime/MP1/World/CFlyingPirate.cpp @@ -496,7 +496,7 @@ bool CFlyingPirate::Attacked(CStateManager& mgr, float arg) { return x854_ < (ar zeus::CVector3f CFlyingPirate::AvoidActors(CStateManager& mgr) { const zeus::CVector3f& origin = GetTranslation(); const zeus::CAABox box(origin - 8.f, origin + 8.f); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, box, CMaterialFilter::MakeInclude(EMaterialTypes::Character), this); zeus::CVector3f ret; @@ -561,7 +561,7 @@ void CFlyingPirate::CheckForProjectiles(CStateManager& mgr) { const zeus::CAABox box(playerPos - 5.f, playerPos + 5.f); x6a0_30_ = false; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, box, CMaterialFilter::MakeInclude(EMaterialTypes::Projectile), this); for (const auto& id : nearList) { if (TCastToConstPtr proj = mgr.GetObjectById(id)) { diff --git a/Runtime/MP1/World/CIceSheegoth.cpp b/Runtime/MP1/World/CIceSheegoth.cpp index 544348de8..099c533bc 100644 --- a/Runtime/MP1/World/CIceSheegoth.cpp +++ b/Runtime/MP1/World/CIceSheegoth.cpp @@ -1146,7 +1146,7 @@ void CIceSheegoth::AttractProjectiles(CStateManager& mgr) { if (!IsAlive()) return; - rstl::reserved_vector nearProjectiles; + rstl::reserved_vector nearProjectiles; zeus::CAABox attractionBounds = zeus::CAABox{GetTranslation() - x56c_sheegothData.Get_x14(), GetTranslation() + x56c_sheegothData.Get_x14()}; mgr.BuildNearList(nearProjectiles, attractionBounds, CMaterialFilter::MakeInclude({EMaterialTypes::Projectile}), @@ -1156,7 +1156,7 @@ void CIceSheegoth::AttractProjectiles(CStateManager& mgr) { return; zeus::CVector3f attractionPos = GetEnergyAttractionPos(mgr); - rstl::reserved_vector nearCharacters; + rstl::reserved_vector nearCharacters; mgr.BuildNearList(nearCharacters, attractionBounds, CMaterialFilter::MakeInclude({EMaterialTypes::Character}), nullptr); @@ -1494,7 +1494,7 @@ bool CIceSheegoth::ShouldAttractProjectile(const CGameProjectile& proj, CStateMa return false; } -bool CIceSheegoth::IsClosestSheegoth(CStateManager& mgr, const rstl::reserved_vector& nearList, +bool CIceSheegoth::IsClosestSheegoth(CStateManager& mgr, const rstl::reserved_vector& nearList, const zeus::CVector3f& projectileOffset) const { zeus::CVector3f diff = projectileOffset - GetTranslation(); const float diffMag = diff.magSquared(); diff --git a/Runtime/MP1/World/CIceSheegoth.hpp b/Runtime/MP1/World/CIceSheegoth.hpp index f1d77115b..fa502a7e4 100644 --- a/Runtime/MP1/World/CIceSheegoth.hpp +++ b/Runtime/MP1/World/CIceSheegoth.hpp @@ -186,7 +186,7 @@ class CIceSheegoth : public CPatterned { void UpdateAttackPosition(CStateManager& mgr, zeus::CVector3f& attackPos); zeus::CVector3f GetEnergyAttractionPos(CStateManager& mgr) const; bool ShouldAttractProjectile(const CGameProjectile& proj, CStateManager& mgr) const; - bool IsClosestSheegoth(CStateManager& mgr, const rstl::reserved_vector& nearList, + bool IsClosestSheegoth(CStateManager& mgr, const rstl::reserved_vector& nearList, const zeus::CVector3f& projectileOffset) const; public: diff --git a/Runtime/MP1/World/CMetroid.cpp b/Runtime/MP1/World/CMetroid.cpp index 3a2508aba..8b7544102 100644 --- a/Runtime/MP1/World/CMetroid.cpp +++ b/Runtime/MP1/World/CMetroid.cpp @@ -243,7 +243,7 @@ void CMetroid::SelectTarget(CStateManager& mgr, EStateMsg msg, float arg) { x7b0_attackTarget = player.GetUniqueId(); if (!x450_bodyController->HasBeenFrozen()) { float range = std::max(x3bc_detectionRange, std::sqrt(playerDistSq)); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, zeus::CAABox{pos - range, pos + range}, CMaterialFilter::MakeInclude({EMaterialTypes::Character}), nullptr); CSpacePirate* closestPirate = nullptr; @@ -440,7 +440,7 @@ void CMetroid::RestoreSolidCollision(CStateManager& mgr) { CMaterialFilter::MakeInclude({EMaterialTypes::Solid, EMaterialTypes::Player, EMaterialTypes::Character}); float radius = x808_loopAttackDistance * GetModelData()->GetScale().y(); const zeus::CAABox box{pos - radius, pos + radius}; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, box, nearFilter, this); if (!CGameCollision::DetectDynamicCollisionBoolean(x6a0_collisionPrimitive, GetTransform(), nearList, mgr)) { x9bf_31_restoreCharacterCollision = false; @@ -1309,7 +1309,7 @@ bool CMetroid::ShouldDodge(CStateManager& mgr, float arg) { return false; } const auto& xf = GetTransform(); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, zeus::CAABox{xf.origin - 9.f, xf.origin + 9.f}, CMaterialFilter::MakeInclude({EMaterialTypes::Projectile}), nullptr); if (nearList.empty()) { diff --git a/Runtime/MP1/World/CMetroidPrimeEssence.cpp b/Runtime/MP1/World/CMetroidPrimeEssence.cpp index 36df76642..7f3c18b04 100644 --- a/Runtime/MP1/World/CMetroidPrimeEssence.cpp +++ b/Runtime/MP1/World/CMetroidPrimeEssence.cpp @@ -569,7 +569,7 @@ void CMetroidPrimeEssence::sub8027d824(CStateManager& mgr) { } bool CMetroidPrimeEssence::sub8027e870(const zeus::CTransform& xf, CStateManager& mgr) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, {xf.origin - 2.f, xf.origin + 2.f}, CMaterialFilter::MakeInclude(EMaterialTypes::AIBlock), this); diff --git a/Runtime/MP1/World/CMetroidPrimeExo.cpp b/Runtime/MP1/World/CMetroidPrimeExo.cpp index b7ec925d8..2de4c3b98 100644 --- a/Runtime/MP1/World/CMetroidPrimeExo.cpp +++ b/Runtime/MP1/World/CMetroidPrimeExo.cpp @@ -1564,7 +1564,7 @@ void CMetroidPrimeExo::UpdatePlasmaProjectile(float dt, CStateManager& mgr) { zeus::CVector3f CMetroidPrimeExo::GetTargetVector(CStateManager& mgr) { constexpr auto MatFilter = CMaterialFilter::MakeIncludeExclude( {EMaterialTypes::Solid}, {EMaterialTypes::Character, EMaterialTypes::Player, EMaterialTypes::Projectile}); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, GetTranslation(), zeus::skDown, 150.f, MatFilter, this); TUniqueId uid = kInvalidUniqueId; diff --git a/Runtime/MP1/World/CParasite.cpp b/Runtime/MP1/World/CParasite.cpp index 19e89d724..d9896f447 100644 --- a/Runtime/MP1/World/CParasite.cpp +++ b/Runtime/MP1/World/CParasite.cpp @@ -389,10 +389,10 @@ void CParasite::UpdatePFDestination(CStateManager& mgr) { void CParasite::DoFlockingBehavior(CStateManager& mgr) { zeus::CVector3f upVec = x34_transform.basis[2]; - rstl::reserved_vector parasiteList; + rstl::reserved_vector parasiteList; zeus::CAABox aabb(GetTranslation() - x6e4_parasiteSearchRadius, GetTranslation() + x6e4_parasiteSearchRadius); if ((x5d4_thinkCounter % 6) == 0) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; static constexpr CMaterialFilter filter = CMaterialFilter::MakeInclude(EMaterialTypes::Character); CParasite* closestParasite = nullptr; float minDistSq = 2.f + x6e8_parasiteSeparationDist * x6e8_parasiteSeparationDist; diff --git a/Runtime/MP1/World/CPuddleToadGamma.cpp b/Runtime/MP1/World/CPuddleToadGamma.cpp index 941185626..639af3117 100644 --- a/Runtime/MP1/World/CPuddleToadGamma.cpp +++ b/Runtime/MP1/World/CPuddleToadGamma.cpp @@ -144,7 +144,7 @@ void CPuddleToadGamma::ShootPlayer(CStateManager& mgr, float speed) { mgr.ApplyDamage(GetUniqueId(), mgr.GetPlayer().GetUniqueId(), GetUniqueId(), x570_playerShootDamage, CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {}), zeus::skZero3f); mgr.GetPlayer().GetMorphBall()->SetAsProjectile(); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, GetBoundingBox(), CMaterialFilter::MakeInclude({EMaterialTypes::Bomb}), this); for (TUniqueId id : nearList) { if (TCastToPtr bomb = mgr.ObjectById(id)) { diff --git a/Runtime/MP1/World/CRipper.cpp b/Runtime/MP1/World/CRipper.cpp index db7c07300..0d575977e 100644 --- a/Runtime/MP1/World/CRipper.cpp +++ b/Runtime/MP1/World/CRipper.cpp @@ -167,8 +167,8 @@ zeus::CQuaternion CRipperControlledPlatform::Move(float arg, CStateManager& mgr) const auto quat = zeus::CQuaternion::fromAxisAngle({0.0f, 0.0f, 1.0f}, zRot); RotateToOR(quat, arg); - rstl::reserved_vector nearList; - rstl::reserved_vector filteredNearList; + rstl::reserved_vector nearList; + rstl::reserved_vector filteredNearList; mgr.BuildColliderList(nearList, *this, GetMotionVolume(arg)); for (const auto& id : nearList) { if (!IsRider(id) && !IsSlave(id)) { diff --git a/Runtime/MP1/World/CShockWave.hpp b/Runtime/MP1/World/CShockWave.hpp index 99e5b0a55..108fe6c09 100644 --- a/Runtime/MP1/World/CShockWave.hpp +++ b/Runtime/MP1/World/CShockWave.hpp @@ -52,7 +52,7 @@ private: float x168_timeSinceHitPlayer = 0.f; bool x16c_hitPlayerInAir = false; bool x16d_hitPlayer = false; - rstl::reserved_vector x170_hitIds; + rstl::reserved_vector x170_hitIds; std::optional> x974_electricDesc; TUniqueId x980_id2 = kInvalidUniqueId; diff --git a/Runtime/MP1/World/CSpacePirate.cpp b/Runtime/MP1/World/CSpacePirate.cpp index 2e7c28ed2..eaf6f12d7 100644 --- a/Runtime/MP1/World/CSpacePirate.cpp +++ b/Runtime/MP1/World/CSpacePirate.cpp @@ -736,7 +736,7 @@ void CSpacePirate::CheckForProjectiles(CStateManager& mgr) { if (x637_26_hearPlayerFire) { zeus::CVector3f aimPos = mgr.GetPlayer().GetAimPosition(mgr, 0.f); zeus::CAABox aabb(aimPos - 5.f, aimPos + 5.f); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, CMaterialFilter::MakeInclude({EMaterialTypes::Projectile}), nullptr); for (TUniqueId id : nearList) { if (TCastToConstPtr proj = mgr.GetObjectById(id)) { @@ -2545,7 +2545,7 @@ bool CSpacePirate::HasTargetingPoint(CStateManager& mgr, float arg) { x7c0_targetId = mgr.GetPlayer().GetUniqueId(); float margin = x568_pirateData.x8_SearchRadius * 1.f; zeus::CAABox nearAABB(GetTranslation() - margin, GetTranslation() + margin); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, nearAABB, CMaterialFilter::MakeExclude({EMaterialTypes::Solid}), nullptr); for (TUniqueId id : nearList) { if (TCastToConstPtr tp = mgr.GetObjectById(id)) { diff --git a/Runtime/MP1/World/CTryclops.cpp b/Runtime/MP1/World/CTryclops.cpp index ed4fee8f2..645d9b335 100644 --- a/Runtime/MP1/World/CTryclops.cpp +++ b/Runtime/MP1/World/CTryclops.cpp @@ -385,7 +385,7 @@ bool CTryclops::InMaxRange(CStateManager& mgr, float) { return true; } - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; float dectRange = x3bc_detectionRange * x3bc_detectionRange; float dectRangeHeight = x3c0_detectionHeightRange * x3c0_detectionHeightRange; @@ -637,7 +637,7 @@ bool CTryclops::sub8025dbd0(CStateManager& mgr) { constexpr CMaterialList matList{EMaterialTypes::Player, EMaterialTypes::Solid}; const CCollidableSphere colSphere{zeus::CSphere{GetTranslation() + zeus::CVector3f{0.f, 0.f, ballRadius}, ballRadius}, matList}; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, player, colSphere.CalculateLocalAABox()); constexpr auto matFilter = CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {EMaterialTypes::Player}); const zeus::CTransform skIdentity4f{}; // TODO move to zeus & make constexpr diff --git a/Runtime/MP1/World/CWarWasp.cpp b/Runtime/MP1/World/CWarWasp.cpp index f9f4069a9..d5040eaa4 100644 --- a/Runtime/MP1/World/CWarWasp.cpp +++ b/Runtime/MP1/World/CWarWasp.cpp @@ -143,7 +143,7 @@ void CWarWasp::DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& node, EU if (mgr.GetPlayer().GetMorphballTransitionState() != CPlayer::EPlayerMorphBallState::Morphed) { zeus::CVector3f delta = aimPos - xf.origin; if (delta.canBeNormalized()) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId bestId = kInvalidUniqueId; CRayCastResult res = mgr.RayWorldIntersection(bestId, xf.origin, delta.normalized(), delta.magnitude(), CMaterialFilter::MakeInclude({EMaterialTypes::Solid}), nearList); @@ -360,7 +360,7 @@ bool CWarWasp::PathToHiveIsClear(CStateManager& mgr) const { zeus::CVector3f delta = x3a0_latestLeashPosition - GetTranslation(); if (GetTransform().basis[1].dot(delta) > 0.f) { zeus::CAABox aabb(GetTranslation() - 10.f, GetTranslation() + 10.f); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, CMaterialFilter::MakeInclude({EMaterialTypes::Character}), nullptr); float deltaMagSq = delta.magSquared(); for (TUniqueId id : nearList) { @@ -1140,7 +1140,7 @@ bool CWarWasp::ShouldFire(CStateManager& mgr, float arg) { bool CWarWasp::ShouldDodge(CStateManager& mgr, float arg) { zeus::CAABox aabb(GetTranslation() - 7.5f, GetTranslation() + 7.5f); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, CMaterialFilter::MakeInclude({EMaterialTypes::Projectile}), nullptr); for (TUniqueId id : nearList) { if (TCastToConstPtr proj = mgr.GetObjectById(id)) { diff --git a/Runtime/RetroTypes.hpp b/Runtime/RetroTypes.hpp index 460022263..e0c96b37a 100644 --- a/Runtime/RetroTypes.hpp +++ b/Runtime/RetroTypes.hpp @@ -21,8 +21,17 @@ #undef max using namespace std::literals; - namespace metaforce { +using kUniqueIdType = u16; +static constexpr int kMaxEntities = 1024; +constexpr kUniqueIdType kUniqueIdSize = sizeof(u16); +constexpr kUniqueIdType kUniqueIdBits = kUniqueIdSize * 8; +constexpr kUniqueIdType kUniqueIdMax = UINT16_MAX; +constexpr kUniqueIdType kUniqueIdVersionMax = 64; +constexpr kUniqueIdType kUniqueIdVersionMask = kUniqueIdVersionMax - 1; +constexpr kUniqueIdType kUniqueIdValueMask = kMaxEntities - 1; +constexpr kUniqueIdType kUniqueIdValueBits = 10; +constexpr kUniqueIdType kUniqueIdVersionBits = 6; using FourCC = hecl::FourCC; @@ -73,7 +82,9 @@ struct TEditorId { [[nodiscard]] constexpr u8 LayerNum() const noexcept { return u8((id >> 26) & 0x3f); } [[nodiscard]] constexpr u16 AreaNum() const noexcept { return u16((id >> 16) & 0x3ff); } [[nodiscard]] constexpr u16 Id() const noexcept { return u16(id & 0xffff); } - [[nodiscard]] constexpr bool operator<(TEditorId other) const noexcept { return (id & 0x3ffffff) < (other.id & 0x3ffffff); } + [[nodiscard]] constexpr bool operator<(TEditorId other) const noexcept { + return (id & 0x3ffffff) < (other.id & 0x3ffffff); + } [[nodiscard]] constexpr bool operator==(TEditorId other) const noexcept { return (id & 0x3ffffff) == (other.id & 0x3ffffff); } @@ -83,12 +94,15 @@ struct TEditorId { #define kInvalidEditorId TEditorId() struct TUniqueId { - u16 id = UINT16_MAX; + kUniqueIdType id = kUniqueIdMax; constexpr TUniqueId() noexcept = default; - constexpr TUniqueId(u16 value, u16 version) noexcept : id(value | (version << 10)) {} - [[nodiscard]] constexpr u16 Version() const noexcept { return u16((id >> 10) & 0x3f); } - [[nodiscard]] constexpr u16 Value() const noexcept { return u16(id & 0x3ff); } + constexpr TUniqueId(kUniqueIdType value, kUniqueIdType version) noexcept + : id(value | (version << kUniqueIdValueBits)) {} + [[nodiscard]] constexpr kUniqueIdType Version() const noexcept { + return kUniqueIdType((id >> kUniqueIdValueBits) & kUniqueIdVersionMask); + } + [[nodiscard]] constexpr kUniqueIdType Value() const noexcept { return kUniqueIdType(id & kUniqueIdValueMask); } [[nodiscard]] constexpr bool operator<(TUniqueId other) const noexcept { return id < other.id; } [[nodiscard]] constexpr bool operator==(TUniqueId other) const noexcept { return id == other.id; } [[nodiscard]] constexpr bool operator!=(TUniqueId other) const noexcept { return !operator==(other); } @@ -144,7 +158,7 @@ public: this->pop_back(); this->insert(this->begin(), t); } - } + } [[nodiscard]] std::optional GetAverage() const { if (this->empty()) { @@ -182,28 +196,32 @@ struct hash { FMT_CUSTOM_FORMATTER(metaforce::CAssetId, "{:08X}", obj.Value()) FMT_CUSTOM_FORMATTER(metaforce::TEditorId, "{:08X}", obj.id) +static_assert(sizeof(metaforce::kUniqueIdType) == sizeof(u16), + "TUniqueId size does not match expected size! Update TUniqueId format string!"); FMT_CUSTOM_FORMATTER(metaforce::TUniqueId, "{:04X}", obj.id) FMT_CUSTOM_FORMATTER(metaforce::SObjectTag, "{} {}", obj.type, obj.id) FMT_CUSTOM_FORMATTER(zeus::CVector3f, "({} {} {})", float(obj.x()), float(obj.y()), float(obj.z())) FMT_CUSTOM_FORMATTER(zeus::CVector2f, "({} {})", float(obj.x()), float(obj.y())) -FMT_CUSTOM_FORMATTER(zeus::CMatrix3f, "\n({} {} {})" - "\n({} {} {})" - "\n({} {} {})", - float(obj[0][0]), float(obj[1][0]), float(obj[2][0]), - float(obj[0][1]), float(obj[1][1]), float(obj[2][1]), - float(obj[0][2]), float(obj[1][2]), float(obj[2][2])) -FMT_CUSTOM_FORMATTER(zeus::CMatrix4f, "\n({} {} {} {})" - "\n({} {} {} {})" - "\n({} {} {} {})" - "\n({} {} {} {})", - float(obj[0][0]), float(obj[1][0]), float(obj[2][0]), float(obj[3][0]), - float(obj[0][1]), float(obj[1][1]), float(obj[2][1]), float(obj[3][1]), - float(obj[0][2]), float(obj[1][2]), float(obj[2][2]), float(obj[3][2]), - float(obj[0][3]), float(obj[1][3]), float(obj[2][3]), float(obj[3][3])) -FMT_CUSTOM_FORMATTER(zeus::CTransform, "\n({} {} {} {})" - "\n({} {} {} {})" - "\n({} {} {} {})", +FMT_CUSTOM_FORMATTER(zeus::CMatrix3f, + "\n({} {} {})" + "\n({} {} {})" + "\n({} {} {})", + float(obj[0][0]), float(obj[1][0]), float(obj[2][0]), float(obj[0][1]), float(obj[1][1]), + float(obj[2][1]), float(obj[0][2]), float(obj[1][2]), float(obj[2][2])) +FMT_CUSTOM_FORMATTER(zeus::CMatrix4f, + "\n({} {} {} {})" + "\n({} {} {} {})" + "\n({} {} {} {})" + "\n({} {} {} {})", + float(obj[0][0]), float(obj[1][0]), float(obj[2][0]), float(obj[3][0]), float(obj[0][1]), + float(obj[1][1]), float(obj[2][1]), float(obj[3][1]), float(obj[0][2]), float(obj[1][2]), + float(obj[2][2]), float(obj[3][2]), float(obj[0][3]), float(obj[1][3]), float(obj[2][3]), + float(obj[3][3])) +FMT_CUSTOM_FORMATTER(zeus::CTransform, + "\n({} {} {} {})" + "\n({} {} {} {})" + "\n({} {} {} {})", float(obj.basis[0][0]), float(obj.basis[1][0]), float(obj.basis[2][0]), float(obj.origin[0]), float(obj.basis[0][1]), float(obj.basis[1][1]), float(obj.basis[2][1]), float(obj.origin[1]), float(obj.basis[0][2]), float(obj.basis[1][2]), float(obj.basis[2][2]), float(obj.origin[2])) diff --git a/Runtime/Weapon/CBeamProjectile.cpp b/Runtime/Weapon/CBeamProjectile.cpp index ebdf04325..a2aab1983 100644 --- a/Runtime/Weapon/CBeamProjectile.cpp +++ b/Runtime/Weapon/CBeamProjectile.cpp @@ -71,7 +71,7 @@ void CBeamProjectile::UpdateFx(const zeus::CTransform& xf, float dt, CStateManag zeus::CVector3f{x2f4_beamRadius, x304_beamLength, x2f4_beamRadius}); x36c_ = zeus::CAABox(zeus::CVector3f{-x2f4_beamRadius, 0.f, -x2f4_beamRadius}, zeus::CVector3f{x2f4_beamRadius, x300_intBeamLength, x2f4_beamRadius}).getTransformedAABox(xf); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, x36c_, CMaterialFilter::MakeExclude({EMaterialTypes::ProjectilePassthrough}), nullptr); TUniqueId collideId = kInvalidUniqueId; CRayCastResult res = RayCollisionCheckWithWorld(collideId, x298_previousPos, beamEnd, x300_intBeamLength, nearList, mgr); diff --git a/Runtime/Weapon/CFlameThrower.cpp b/Runtime/Weapon/CFlameThrower.cpp index 7b59a14a6..2b0a9a081 100644 --- a/Runtime/Weapon/CFlameThrower.cpp +++ b/Runtime/Weapon/CFlameThrower.cpp @@ -132,7 +132,7 @@ void CFlameThrower::UpdateFlameState(float dt, CStateManager& mgr) { CRayCastResult CFlameThrower::DoCollisionCheck(TUniqueId& idOut, const zeus::CAABox& aabb, CStateManager& mgr) { CRayCastResult ret; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, CMaterialFilter::skPassEverything, this); const auto& colPoints = x34c_flameWarp.GetCollisionPoints(); diff --git a/Runtime/Weapon/CGameProjectile.cpp b/Runtime/Weapon/CGameProjectile.cpp index 2c90279e8..483f34af6 100644 --- a/Runtime/Weapon/CGameProjectile.cpp +++ b/Runtime/Weapon/CGameProjectile.cpp @@ -216,7 +216,7 @@ CRayCastResult CGameProjectile::DoCollisionCheck(TUniqueId& idOut, CStateManager CRayCastResult res; if (x2e4_24_active) { zeus::CVector3f posDelta = x34_transform.origin - x298_previousPos; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, GetProjectileBounds(), CMaterialFilter::MakeExclude(EMaterialTypes::ProjectilePassthrough), this); @@ -257,7 +257,7 @@ void CGameProjectile::FluidFXThink(EFluidState state, CScriptWater& water, CStat CRayCastResult CGameProjectile::RayCollisionCheckWithWorld(TUniqueId& idOut, const zeus::CVector3f& start, const zeus::CVector3f& end, float mag, - const rstl::reserved_vector& nearList, + const rstl::reserved_vector& nearList, CStateManager& mgr) { x2d0_touchResults.clear(); idOut = kInvalidUniqueId; diff --git a/Runtime/Weapon/CGameProjectile.hpp b/Runtime/Weapon/CGameProjectile.hpp index d3e50bd6d..3e243fb2c 100644 --- a/Runtime/Weapon/CGameProjectile.hpp +++ b/Runtime/Weapon/CGameProjectile.hpp @@ -76,7 +76,7 @@ public: void ApplyDamageToActors(CStateManager& mgr, const CDamageInfo& dInfo); void FluidFXThink(EFluidState state, CScriptWater& water, CStateManager& mgr) override; CRayCastResult RayCollisionCheckWithWorld(TUniqueId& idOut, const zeus::CVector3f& start, const zeus::CVector3f& end, - float mag, const rstl::reserved_vector& nearList, + float mag, const rstl::reserved_vector& nearList, CStateManager& mgr); CProjectileTouchResult CanCollideWith(CActor& act, CStateManager& mgr) const; CProjectileTouchResult CanCollideWithComplexCollision(const CActor& act, const CStateManager& mgr) const; diff --git a/Runtime/Weapon/CNewFlameThrower.cpp b/Runtime/Weapon/CNewFlameThrower.cpp index aa840b244..91c064b77 100644 --- a/Runtime/Weapon/CNewFlameThrower.cpp +++ b/Runtime/Weapon/CNewFlameThrower.cpp @@ -430,7 +430,7 @@ bool CNewFlameThrower::UpdateParticleCollisions(float dt, CStateManager& mgr, rstl::reserved_vector& collisions_out) { x300_wasPointAdded = false; bool any_particle_collisions = false; - rstl::reserved_vector near_list_cache; + rstl::reserved_vector near_list_cache; // rstl::reserved_vector, ?> unk_rstl_vec; // inner vectors of size 0x90c, never used // though CCollisionInfoList cached_cinfo; @@ -665,7 +665,7 @@ int CNewFlameThrower::SortAndFindOverlappingPoints(Cube const& box) { } bool CNewFlameThrower::FindCollisionInNearList(CStateManager& mgr, - rstl::reserved_vector const& near_list, + rstl::reserved_vector const& near_list, CCollisionPrimitive const& coll, TUniqueId& first_coll_out, CCollisionInfoList& collisions) { for (TUniqueId const& cur_uid : near_list) { diff --git a/Runtime/Weapon/CNewFlameThrower.hpp b/Runtime/Weapon/CNewFlameThrower.hpp index 32815b21d..8bcbd97c4 100644 --- a/Runtime/Weapon/CNewFlameThrower.hpp +++ b/Runtime/Weapon/CNewFlameThrower.hpp @@ -77,7 +77,7 @@ class CNewFlameThrower : public CGameProjectile { bool CanDamageActor(CActor &hit_actor, CStateManager &mgr); void AddContactPoint(CCollisionInfo const& cinfo, u32 time); int SortAndFindOverlappingPoints(Cube const& box); - bool FindCollisionInNearList(CStateManager &mgr, rstl::reserved_vector const &near_list, + bool FindCollisionInNearList(CStateManager &mgr, rstl::reserved_vector const &near_list, CCollisionPrimitive const& coll, TUniqueId &first_coll_out, CCollisionInfoList& collisions); void DecrementContactPointTimers(); diff --git a/Runtime/Weapon/CPlayerGun.cpp b/Runtime/Weapon/CPlayerGun.cpp index 99514a2f0..598195830 100644 --- a/Runtime/Weapon/CPlayerGun.cpp +++ b/Runtime/Weapon/CPlayerGun.cpp @@ -1943,7 +1943,7 @@ void CPlayerGun::Update(float grappleSwingT, float cameraBobT, float dt, CStateM if (player.GetMorphballTransitionState() == CPlayer::EPlayerMorphBallState::Unmorphed && !mgr.GetCameraManager()->IsInCinematicCamera()) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; zeus::CAABox aabb = x72c_currentBeam->GetBounds().getTransformedAABox(x4a8_gunWorldXf); mgr.BuildNearList(nearList, aabb, sAimFilter, &player); TUniqueId bestId = kInvalidUniqueId; diff --git a/Runtime/World/CEnvFxManager.cpp b/Runtime/World/CEnvFxManager.cpp index d521e67ce..7cf0995c8 100644 --- a/Runtime/World/CEnvFxManager.cpp +++ b/Runtime/World/CEnvFxManager.cpp @@ -176,7 +176,7 @@ void CEnvFxManager::CalculateSnowForces(const CVectorFixed8_8& zVec, } } -void CEnvFxManager::BuildBlockObjectList(rstl::reserved_vector& list, CStateManager& mgr) { +void CEnvFxManager::BuildBlockObjectList(rstl::reserved_vector& list, CStateManager& mgr) { for (CEntity* ent : mgr.GetAllObjectList()) { const TCastToConstPtr trig = ent; if (trig && True(trig->GetTriggerFlags() & ETriggerFlags::BlockEnvironmentalEffects)) { @@ -197,7 +197,7 @@ void CEnvFxManager::UpdateBlockedGrids(CStateManager& mgr, EEnvFxType type, cons zeus::CVector2i localPlayerPos((invXf * playerPos * 256.f).toVec2f()); x2c_lastBlockedGridIdx = -1; x24_enableSplash = false; - rstl::reserved_vector blockList; + rstl::reserved_vector blockList; bool blockListBuilt = false; int blockedGrids = 0; for (int i = 0; i < x50_grids.size(); ++i) { diff --git a/Runtime/World/CEnvFxManager.hpp b/Runtime/World/CEnvFxManager.hpp index e2d215324..eb2508fc5 100644 --- a/Runtime/World/CEnvFxManager.hpp +++ b/Runtime/World/CEnvFxManager.hpp @@ -123,7 +123,7 @@ class CEnvFxManager { void MoveWrapCells(s32, s32); void CalculateSnowForces(const CVectorFixed8_8& zVec, rstl::reserved_vector& snowForces, EEnvFxType type, const zeus::CVector3f& oopbtws, float dt); - static void BuildBlockObjectList(rstl::reserved_vector& list, CStateManager& mgr); + static void BuildBlockObjectList(rstl::reserved_vector& list, CStateManager& mgr); void UpdateBlockedGrids(CStateManager& mgr, EEnvFxType type, const zeus::CTransform& camXf, const zeus::CTransform& xf, const zeus::CTransform& invXf); void CreateNewParticles(EEnvFxType type); diff --git a/Runtime/World/CGameArea.hpp b/Runtime/World/CGameArea.hpp index 87f578086..9b7cd2869 100644 --- a/Runtime/World/CGameArea.hpp +++ b/Runtime/World/CGameArea.hpp @@ -207,12 +207,12 @@ public: std::vector x80_lightsB; std::vector x90_gfxLightsB; std::unique_ptr xa0_pvs; - u32 xa4_elemCount = 1024; + u32 xa4_elemCount = kMaxEntities; struct MapEntry { s16 x0_id = -1; TUniqueId x4_uid = kInvalidUniqueId; }; - std::array xa8_pvsEntityMap; + std::array xa8_pvsEntityMap; u32 x10a8_pvsVersion = 0; TLockedToken x10ac_pathToken; // bool x10b8_ = 0; optional flag for CToken diff --git a/Runtime/World/CMorphBall.cpp b/Runtime/World/CMorphBall.cpp index bbbdc28eb..d9c697cfc 100644 --- a/Runtime/World/CMorphBall.cpp +++ b/Runtime/World/CMorphBall.cpp @@ -759,7 +759,7 @@ bool CMorphBall::FindClosestSpiderBallWaypoint(CStateManager& mgr, const zeus::C zeus::CTransform& surfaceTransform) const { bool ret = false; const zeus::CAABox aabb(ballCenter - 2.1f, ballCenter + 2.1f); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, CMaterialFilter::skPassEverything, nullptr); float minDist = 2.1f; @@ -1926,7 +1926,7 @@ bool CMorphBall::BallCloseToCollision(const CStateManager& mgr, float dist, cons const CCollidableSphere sphere( zeus::CSphere(x0_player.GetTranslation() + zeus::CVector3f(0.f, 0.f, GetBallRadius()), dist), playerOrSolid); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, x0_player, sphere.CalculateLocalAABox()); if (CGameCollision::DetectStaticCollisionBoolean(mgr, sphere, zeus::CTransform(), filter)) { diff --git a/Runtime/World/CMorphBallShadow.cpp b/Runtime/World/CMorphBallShadow.cpp index 94164dfdd..7a572a7d8 100644 --- a/Runtime/World/CMorphBallShadow.cpp +++ b/Runtime/World/CMorphBallShadow.cpp @@ -51,7 +51,7 @@ void CMorphBallShadow::RenderIdBuffer(const zeus::CAABox& aabb, const CStateMana float vpZ = (aabb.max.z() - aabb.min.z()) + FLT_EPSILON; CGraphics::SetOrtho(-vpX, vpX, vpY, -vpY, 0.f, vpZ); - rstl::reserved_vector nearItems; + rstl::reserved_vector nearItems; mgr.BuildNearList(nearItems, aabb, CMaterialFilter::skPassEverything, &player); CGraphics::SetViewPointMatrix(viewMtx); diff --git a/Runtime/World/CPatterned.cpp b/Runtime/World/CPatterned.cpp index 548463a6b..0fd790b6c 100644 --- a/Runtime/World/CPatterned.cpp +++ b/Runtime/World/CPatterned.cpp @@ -1344,7 +1344,7 @@ pas::EStepDirection CPatterned::GetStepDirection(const zeus::CVector3f& moveVec) bool CPatterned::IsPatternObstructed(CStateManager& mgr, const zeus::CVector3f& p0, const zeus::CVector3f& p1) const { CMaterialFilter filter = CMaterialFilter::MakeInclude(EMaterialTypes::Character); zeus::CVector3f delta = p1 - p0; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; bool ret = false; if (delta.canBeNormalized()) { zeus::CVector3f deltaNorm = delta.normalized(); diff --git a/Runtime/World/CPlayer.cpp b/Runtime/World/CPlayer.cpp index efeda4354..e427c9eaa 100644 --- a/Runtime/World/CPlayer.cpp +++ b/Runtime/World/CPlayer.cpp @@ -1839,7 +1839,7 @@ void CPlayer::ProcessInput(const CFinalInput& input, CStateManager& mgr) { const zeus::CAABox expandedBounds(testBounds.min - 3.f, testBounds.max + 3.f); CAreaCollisionCache cache(expandedBounds); CGameCollision::BuildAreaCollisionCache(mgr, cache); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, *this, expandedBounds); const std::optional nonIntVec = CGameCollision::FindNonIntersectingVector(mgr, cache, *this, tmpBox, nearList); @@ -2285,7 +2285,7 @@ void CPlayer::UpdatePhazonDamage(float dt, CStateManager& mgr) { constexpr CMaterialList primMaterial(EMaterialTypes::Player, EMaterialTypes::Solid); const CCollidableSphere prim( zeus::CSphere(GetCollisionPrimitive()->CalculateAABox(x34_transform).center(), 4.25f), primMaterial); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, *this, prim.CalculateLocalAABox()); if (CGameCollision::DetectStaticCollisionBoolean(mgr, prim, zeus::CTransform(), filter)) { touchingPhazon = true; @@ -2942,7 +2942,7 @@ u16 CPlayer::GetMaterialSoundUnderPlayer(const CStateManager& mgr, const u16* ta u16 ret = defId; zeus::CAABox aabb = GetBoundingBox(); aabb.accumulateBounds(x34_transform.origin + zeus::skDown); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, SolidMaterialFilter, nullptr); TUniqueId collideId = kInvalidUniqueId; const CRayCastResult result = @@ -3611,7 +3611,7 @@ void CPlayer::ApplyGrappleForces(const CFinalInput& input, CStateManager& mgr, f bool CPlayer::ValidateFPPosition(const zeus::CVector3f& pos, const CStateManager& mgr) const { constexpr CMaterialFilter solidFilter = CMaterialFilter::MakeInclude({EMaterialTypes::Solid}); const zeus::CAABox aabb(x2d8_fpBounds.min - 1.f + pos, x2d8_fpBounds.max + 1.f + pos); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, *this, aabb); const CCollidableAABox colAABB({GetBaseBoundingBox().min + pos, GetBaseBoundingBox().max + pos}, {}); return !CGameCollision::DetectCollisionBoolean(mgr, colAABB, zeus::CTransform(), solidFilter, nearList); @@ -4147,7 +4147,7 @@ bool CPlayer::ValidateAimTargetId(TUniqueId uid, CStateManager& mgr) { WithinOrbitScreenBox(posInBox, EPlayerZoneInfo::Targeting, x334_orbitType))) { const float eyeToAimMag = eyeToAim.magnitude(); if (eyeToAimMag <= g_tweakPlayer->GetAimMaxDistance()) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId intersectId = kInvalidUniqueId; eyeToAim.normalize(); mgr.BuildNearList(nearList, eyePos, eyeToAim, eyeToAimMag, OccluderFilter, act); @@ -4231,7 +4231,7 @@ TUniqueId CPlayer::FindAimTargetId(CStateManager& mgr) const { } const zeus::CAABox aabb = BuildNearListBox(true, GetFirstPersonCameraTransform(mgr), g_tweakPlayer->GetAimBoxWidth(), g_tweakPlayer->GetAimBoxHeight(), dist); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, aabb, CMaterialFilter::MakeInclude({EMaterialTypes::Target}), this); return CheckEnemiesAgainstOrbitZone(nearList, EPlayerZoneInfo::Targeting, EPlayerZoneType::Ellipse, mgr); } @@ -4240,7 +4240,7 @@ const zeus::CTransform& CPlayer::GetFirstPersonCameraTransform(const CStateManag return mgr.GetCameraManager()->GetFirstPersonCamera()->GetGunFollowTransform(); } -TUniqueId CPlayer::CheckEnemiesAgainstOrbitZone(const rstl::reserved_vector& list, +TUniqueId CPlayer::CheckEnemiesAgainstOrbitZone(const rstl::reserved_vector& list, EPlayerZoneInfo info, EPlayerZoneType zone, CStateManager& mgr) const { const zeus::CVector3f eyePos = GetEyePosition(); float minEyeToAimMag = 10000.f; @@ -4263,7 +4263,7 @@ TUniqueId CPlayer::CheckEnemiesAgainstOrbitZone(const rstl::reserved_vectorGetAimMaxDistance()) { if (minEyeToAimMag - eyeToAimMag > g_tweakPlayer->GetAimThresholdDistance()) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId intersectId = kInvalidUniqueId; eyeToAim.normalize(); mgr.BuildNearList(nearList, eyePos, eyeToAim, eyeToAimMag, OccluderFilter, act); @@ -4282,7 +4282,7 @@ TUniqueId CPlayer::CheckEnemiesAgainstOrbitZone(const rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId intersectId = kInvalidUniqueId; eyeToAim.normalize(); mgr.BuildNearList(nearList, eyePos, eyeToAim, eyeToAimMag, OccluderFilter, act); @@ -4328,7 +4328,7 @@ void CPlayer::UpdateOrbitableObjects(CStateManager& mgr) { const CMaterialFilter filter = mgr.GetPlayerState()->GetCurrentVisor() == CPlayerState::EPlayerVisor::Scan ? CMaterialFilter::MakeInclude({EMaterialTypes::Scannable}) : CMaterialFilter::MakeInclude({EMaterialTypes::Orbit}); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, nearAABB, filter, nullptr); FindOrbitableObjects(nearList, x344_nearbyOrbitObjects, x330_orbitZoneMode, EPlayerZoneType::Always, mgr, true); @@ -4361,7 +4361,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector& ids, EP if (x310_orbitTargetId != point->GetUniqueId()) { if (mgr.GetPlayerState()->HasPowerUp(CPlayerState::EItemType::GrappleBeam) && eyeToOrbitMag < minEyeToOrbitMag && eyeToOrbitMag < g_tweakPlayer->GetOrbitDistanceMax()) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId intersectId = kInvalidUniqueId; eyeToOrbit.normalize(); mgr.BuildNearList(nearList, eyePos, eyeToOrbit, eyeToOrbitMag, OccluderFilter, act.GetPtr()); @@ -4393,7 +4393,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector& ids, EP if (minEyeToOrbitMag - eyeToOrbitMag > g_tweakPlayer->GetOrbitDistanceThreshold() && mgr.GetPlayerState()->GetCurrentVisor() != CPlayerState::EPlayerVisor::Scan) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId idOut = kInvalidUniqueId; eyeToOrbit.normalize(); mgr.BuildNearList(nearList, eyePos, eyeToOrbit, eyeToOrbitMag, OccluderFilter, act.GetPtr()); @@ -4436,7 +4436,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector& ids, EP const float posInBoxTop = orbitPosScreen.y() - boxTop; const float posInBoxMagSq = posInBoxLeft * posInBoxLeft + posInBoxTop * posInBoxTop; if (posInBoxMagSq < minPosInBoxMagSq) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; TUniqueId idOut = kInvalidUniqueId; eyeToOrbit.normalize(); mgr.BuildNearList(nearList, eyePos, eyeToOrbit, eyeToOrbitMag, OccluderFilter, act.GetPtr()); @@ -4478,7 +4478,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector& ids, EP return bestId; } -void CPlayer::FindOrbitableObjects(const rstl::reserved_vector& nearObjects, +void CPlayer::FindOrbitableObjects(const rstl::reserved_vector& nearObjects, std::vector& listOut, EPlayerZoneInfo zone, EPlayerZoneType type, CStateManager& mgr, bool onScreenTest) const { const CFirstPersonCamera* fpCam = mgr.GetCameraManager()->GetFirstPersonCamera(); @@ -5012,7 +5012,7 @@ CPlayer::EOrbitValidationResult CPlayer::ValidateCurrentOrbitTargetId(CStateMana TUniqueId bestId = kInvalidUniqueId; const zeus::CVector3f eyeToOrbit = act->GetOrbitPosition(mgr) - eyePos; if (eyeToOrbit.canBeNormalized()) { - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, eyePos, eyeToOrbit.normalized(), eyeToOrbit.magnitude(), OccluderFilter, act.GetPtr()); for (auto it = nearList.begin(); it != nearList.end();) { @@ -5814,7 +5814,7 @@ bool CPlayer::CanLeaveMorphBallState(CStateManager& mgr, zeus::CVector3f& pos) c constexpr CMaterialFilter filter = CMaterialFilter::MakeInclude({EMaterialTypes::Solid}); const zeus::CAABox aabb(x2d8_fpBounds.min - zeus::CVector3f(1.f) + GetTranslation(), x2d8_fpBounds.max + zeus::CVector3f(1.f) + GetTranslation()); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, *this, aabb); const zeus::CAABox& baseAABB = GetBaseBoundingBox(); pos = zeus::skZero3f; diff --git a/Runtime/World/CPlayer.hpp b/Runtime/World/CPlayer.hpp index 8917555bf..51195aad0 100644 --- a/Runtime/World/CPlayer.hpp +++ b/Runtime/World/CPlayer.hpp @@ -485,12 +485,12 @@ public: bool ValidateObjectForMode(TUniqueId uid, CStateManager& mgr) const; TUniqueId FindAimTargetId(CStateManager& mgr) const; TUniqueId GetAimTarget() const { return x3f4_aimTarget; } - TUniqueId CheckEnemiesAgainstOrbitZone(const rstl::reserved_vector& list, EPlayerZoneInfo info, + TUniqueId CheckEnemiesAgainstOrbitZone(const rstl::reserved_vector& list, EPlayerZoneInfo info, EPlayerZoneType zone, CStateManager& mgr) const; TUniqueId FindOrbitTargetId(CStateManager& mgr) const; void UpdateOrbitableObjects(CStateManager& mgr); TUniqueId FindBestOrbitableObject(const std::vector& ids, EPlayerZoneInfo info, CStateManager& mgr) const; - void FindOrbitableObjects(const rstl::reserved_vector& nearObjects, std::vector& listOut, + void FindOrbitableObjects(const rstl::reserved_vector& nearObjects, std::vector& listOut, EPlayerZoneInfo zone, EPlayerZoneType type, CStateManager& mgr, bool onScreenTest) const; bool WithinOrbitScreenBox(const zeus::CVector3f& screenCoords, EPlayerZoneInfo zone, EPlayerZoneType type) const; bool WithinOrbitScreenEllipse(const zeus::CVector3f& screenCoords, EPlayerZoneInfo zone) const; diff --git a/Runtime/World/CScriptActorRotate.cpp b/Runtime/World/CScriptActorRotate.cpp index e674ea6db..1368f0347 100644 --- a/Runtime/World/CScriptActorRotate.cpp +++ b/Runtime/World/CScriptActorRotate.cpp @@ -125,7 +125,7 @@ void CScriptActorRotate::UpdateActors(bool next, CStateManager& mgr) { } void CScriptActorRotate::UpdateSpiderBallWaypoints(CStateManager& mgr) { - rstl::reserved_vector waypointIds; + rstl::reserved_vector waypointIds; CObjectList& objectList = mgr.GetAllObjectList(); for (CEntity* ent : objectList) { if (const TCastToPtr wp = ent) { diff --git a/Runtime/World/CScriptGunTurret.cpp b/Runtime/World/CScriptGunTurret.cpp index c3938bb6b..9fc55c407 100644 --- a/Runtime/World/CScriptGunTurret.cpp +++ b/Runtime/World/CScriptGunTurret.cpp @@ -984,7 +984,7 @@ bool CScriptGunTurret::LineOfSightTest(CStateManager& mgr) const { zeus::CVector3f dir = mgr.GetPlayer().GetAimPosition(mgr, 0.f) - muzzlePos; const float mag = dir.magnitude(); dir = dir / mag; - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; constexpr auto filter = CMaterialFilter::MakeIncludeExclude( {EMaterialTypes::Solid}, {EMaterialTypes::Player, EMaterialTypes::CollisionActor}); mgr.BuildNearList(nearList, muzzlePos, dir, mag, filter, gun.GetPtr()); diff --git a/Runtime/World/CScriptPlatform.cpp b/Runtime/World/CScriptPlatform.cpp index ad7640b70..f69f28060 100644 --- a/Runtime/World/CScriptPlatform.cpp +++ b/Runtime/World/CScriptPlatform.cpp @@ -55,7 +55,7 @@ CScriptPlatform::CScriptPlatform(TUniqueId uid, std::string_view name, const CEn void CScriptPlatform::Accept(IVisitor& visitor) { visitor.Visit(this); } -void CScriptPlatform::DragSlave(CStateManager& mgr, rstl::reserved_vector& draggedSet, CActor* actor, +void CScriptPlatform::DragSlave(CStateManager& mgr, rstl::reserved_vector& draggedSet, CActor* actor, const zeus::CVector3f& delta) { if (std::find(draggedSet.begin(), draggedSet.end(), actor->GetUniqueId().Value()) != draggedSet.end()) { return; @@ -70,7 +70,7 @@ void CScriptPlatform::DragSlave(CStateManager& mgr, rstl::reserved_vector& draggedSet, +void CScriptPlatform::DragSlaves(CStateManager& mgr, rstl::reserved_vector& draggedSet, const zeus::CVector3f& delta) { for (SRiders& rider : x328_slavesStatic) { if (const TCastToPtr act = mgr.ObjectById(rider.x0_uid)) { @@ -114,7 +114,7 @@ void CScriptPlatform::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, C x25a_targetWaypoint = GetNext(x258_currentWaypoint, mgr); mgr.SendScriptMsg(wp, GetUniqueId(), EScriptObjectMessage::Arrived); if (!x328_slavesStatic.empty() || !x338_slavesDynamic.empty()) { - rstl::reserved_vector draggedSet; + rstl::reserved_vector draggedSet; DragSlaves(mgr, draggedSet, x270_dragDelta); } x270_dragDelta = zeus::skZero3f; @@ -204,9 +204,9 @@ void CScriptPlatform::MoveRiders(CStateManager& mgr, float dt, bool active, std: } } -rstl::reserved_vector +rstl::reserved_vector CScriptPlatform::BuildNearListFromRiders(CStateManager& mgr, const std::vector& movedRiders) { - rstl::reserved_vector ret; + rstl::reserved_vector ret; for (const SRiders& rider : movedRiders) { if (const TCastToConstPtr act = mgr.ObjectById(rider.x0_uid)) { ret.push_back(act->GetUniqueId()); @@ -238,7 +238,7 @@ void CScriptPlatform::PreThink(float dt, CStateManager& mgr) { MoveRiders(mgr, dt, GetActive(), x318_riders, collidedRiders, oldXf, x34_transform, x270_dragDelta, x27c_rotDelta); x356_27_squishedRider = false; if (!collidedRiders.empty()) { - rstl::reserved_vector nearList = BuildNearListFromRiders(mgr, collidedRiders); + rstl::reserved_vector nearList = BuildNearListFromRiders(mgr, collidedRiders); if (CGameCollision::DetectDynamicCollisionBoolean(*GetCollisionPrimitive(), GetPrimitiveTransform(), nearList, mgr)) { SetMotionState(mState); @@ -273,7 +273,7 @@ void CScriptPlatform::Think(float dt, CStateManager& mgr) { } if (!x328_slavesStatic.empty() || !x338_slavesDynamic.empty()) { - rstl::reserved_vector draggedSet; + rstl::reserved_vector draggedSet; DragSlaves(mgr, draggedSet, x270_dragDelta); } @@ -508,9 +508,9 @@ zeus::CQuaternion CScriptPlatform::Move(float dt, CStateManager& mgr) { MoveToWR(GetTranslation() + x270_dragDelta, dt); } - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildColliderList(nearList, *this, GetMotionVolume(dt)); - rstl::reserved_vector nonRiders; + rstl::reserved_vector nonRiders; for (TUniqueId id : nearList) { if (!IsRider(id) && !IsSlave(id)) { nonRiders.push_back(id); diff --git a/Runtime/World/CScriptPlatform.hpp b/Runtime/World/CScriptPlatform.hpp index 4ec8ad2e0..fcaeff8b6 100644 --- a/Runtime/World/CScriptPlatform.hpp +++ b/Runtime/World/CScriptPlatform.hpp @@ -62,15 +62,15 @@ class CScriptPlatform : public CPhysicsActor { bool x356_30_disableXrayAlpha : 1 = false; bool x356_31_xrayFog : 1 = true; - void DragSlave(CStateManager& mgr, rstl::reserved_vector& draggedSet, CActor* actor, + void DragSlave(CStateManager& mgr, rstl::reserved_vector& draggedSet, CActor* actor, const zeus::CVector3f& delta); - void DragSlaves(CStateManager& mgr, rstl::reserved_vector& draggedSet, const zeus::CVector3f& delta); + void DragSlaves(CStateManager& mgr, rstl::reserved_vector& draggedSet, const zeus::CVector3f& delta); static void DecayRiders(std::vector& riders, float dt, CStateManager& mgr); static void MoveRiders(CStateManager& mgr, float dt, bool active, std::vector& riders, std::vector& collidedRiders, const zeus::CTransform& oldXf, const zeus::CTransform& newXf, const zeus::CVector3f& dragDelta, const zeus::CQuaternion& rotDelta); - static rstl::reserved_vector BuildNearListFromRiders(CStateManager& mgr, + static rstl::reserved_vector BuildNearListFromRiders(CStateManager& mgr, const std::vector& movedRiders); std::optional m_boxFilter; diff --git a/Runtime/World/CScriptSpecialFunction.cpp b/Runtime/World/CScriptSpecialFunction.cpp index e8ea0fd47..1d8798ba0 100644 --- a/Runtime/World/CScriptSpecialFunction.cpp +++ b/Runtime/World/CScriptSpecialFunction.cpp @@ -831,7 +831,7 @@ void CScriptSpecialFunction::ThinkObjectFollowObject(float, CStateManager& mgr) void CScriptSpecialFunction::ThinkChaffTarget(float dt, CStateManager& mgr) { const zeus::CAABox box(5.f - GetTranslation(), 5.f + GetTranslation()); - rstl::reserved_vector nearList; + rstl::reserved_vector nearList; mgr.BuildNearList(nearList, box, CMaterialFilter::MakeInclude({EMaterialTypes::Projectile}), nullptr); CCameraFilterPassPoly& filter = mgr.GetCameraFilterPass(7); diff --git a/Runtime/World/CVisorFlare.cpp b/Runtime/World/CVisorFlare.cpp index 050d6baae..810e6e240 100644 --- a/Runtime/World/CVisorFlare.cpp +++ b/Runtime/World/CVisorFlare.cpp @@ -46,7 +46,7 @@ void CVisorFlare::Update(float dt, const zeus::CVector3f& pos, const CActor* act zeus::CVector3f camPos = mgr.GetCameraManager()->GetCurrentCamera(mgr)->GetTranslation(); zeus::CVector3f camDiff = pos - camPos; const float mag = (camDiff.magnitude()); - rstl::reserved_vector nearVec; + rstl::reserved_vector nearVec; mgr.BuildNearList(nearVec, camPos, camDiff * (1.f / mag), mag, CMaterialFilter::MakeInclude({EMaterialTypes::Occluder}), act); TUniqueId id;