Halfway match CAABox; continue CBallCamera

Former-commit-id: 602109d8f0
This commit is contained in:
2022-09-29 19:55:38 -04:00
parent 8f3807da18
commit 1f56cefe8c
41 changed files with 1023 additions and 173 deletions

View File

@@ -44,7 +44,8 @@ public:
const CVector3f& GetLookAtPosition() const { return x20_scaledWorldPos; }
const CVector3f& GetLineOfSight() const;
const CVector3f& GetPosition() const { return x8_lastLocalPos; }
uint GetOcclusionCount() const { return x4c_occlusionCount; }
int GetOcclusionCount() const { return x4c_occlusionCount; }
f32 GetScale() const { return x50_scale; }
void SetRadius(f32 radius) { this->x4_radius = radius; }
// TODO
@@ -53,7 +54,8 @@ public:
void SetDesiredPosition(CVector3f vec) { x14_localPos = vec; }
void SetLookAtPosition(CVector3f vec) { x20_scaledWorldPos = vec; }
void SetLineOfSight();
void SetOcclusionCount(uint val) { x4c_occlusionCount = val; }
void SetOcclusionCount(int val) { x4c_occlusionCount = val; }
void SetScale(f32 val) { x50_scale = val; }
private:
f32 x4_radius;
@@ -62,9 +64,7 @@ private:
CVector3f x20_scaledWorldPos; // look at position
CVector3f x2c_lastWorldPos; // real position
CCameraSpring x38_spring;
public: // TODO
uint x4c_occlusionCount;
int x4c_occlusionCount;
f32 x50_scale;
};
@@ -126,6 +126,18 @@ public:
void UpdateColliders(const CTransform4f& xf, rstl::vector< CCameraCollider >& colliderList,
int& idx, int count, float tolerance, const TEntityList& nearList, f32 dt,
CStateManager& mgr);
CVector3f CalculateCollidersCentroid(const rstl::vector< CCameraCollider >& colliderList,
int numObscured) const;
CVector3f ApplyColliders();
int CountObscuredColliders(const rstl::vector< CCameraCollider >& colliderList) const;
CAABox CalculateCollidersBoundingBox(const rstl::vector< CCameraCollider >& colliderList,
const CStateManager&) const;
CVector3f AvoidGeometryFull(const CTransform4f& xf, const TEntityList& nearList, f32 dt,
CStateManager& mgr);
CVector3f AvoidGeometry(const CTransform4f& xf, const TEntityList& nearList, f32 dt,
CStateManager& mgr);
bool DetectCollision(const CVector3f& from, const CVector3f& to, f32 radius, f32& d,
CStateManager& mgr);
const CVector3f& GetLookAtPosition() const { return x1d8_lookPos; }
f32 GetDistance() const { return x190_curMinDistance; }
@@ -226,7 +238,7 @@ private:
f32 x30c_speedingTime;
CVector3f x310_idealLookVec;
CVector3f x31c_predictedLookPos;
uint x328_avoidGeomCycle;
int x328_avoidGeomCycle;
f32 x32c_colliderMag;
f32 x330_clearColliderThreshold;
CAABox x334_collidersAABB;