mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-12 10:46:08 +00:00
Initial CSortedLists matching
Former-commit-id: a322c29e91f35ad778af21b670d594dfd868dd9e
This commit is contained in:
@@ -10,24 +10,65 @@
|
||||
class CActor;
|
||||
|
||||
namespace SL {
|
||||
enum ESortedLists {
|
||||
kSL_MinX,
|
||||
kSL_MinY,
|
||||
kSL_MinZ,
|
||||
kSL_MaxX,
|
||||
kSL_MaxY,
|
||||
kSL_MaxZ,
|
||||
};
|
||||
|
||||
struct SNode {
|
||||
CActor* x0_actor;
|
||||
CAABox x4_box;
|
||||
short x1c_selfIdxs[6];
|
||||
short x28_next;
|
||||
bool x2a_populated;
|
||||
|
||||
SNode();
|
||||
SNode(CActor* actor, const CAABox& box);
|
||||
};
|
||||
CHECK_SIZEOF(SNode, 0x2c);
|
||||
|
||||
struct SSortedList {
|
||||
short x0_ids[kMaxObjects];
|
||||
uint x800_size;
|
||||
|
||||
SSortedList() : x800_size(0) {
|
||||
for (int i = 0; i < kMaxObjects; ++i) {
|
||||
x0_ids[i] = -1;
|
||||
}
|
||||
}
|
||||
};
|
||||
CHECK_SIZEOF(SSortedList, 0x804);
|
||||
|
||||
class CSortedListManager {
|
||||
public:
|
||||
CSortedListManager();
|
||||
void Reset();
|
||||
bool ActorInLists(const CActor* actor) const;
|
||||
short FindInListLower(ESortedLists list, f32 value) const;
|
||||
short FindInListUpper(ESortedLists list, f32 value) const;
|
||||
void InsertInList(ESortedLists list, SNode& node);
|
||||
void RemoveFromList(ESortedLists list, short idx);
|
||||
void MoveInList(ESortedLists list, short idx);
|
||||
void Insert(CActor* actor, const CAABox& box);
|
||||
void Remove(const CActor* actor);
|
||||
void Move(const CActor* actor, const CAABox& box);
|
||||
void AddToLinkedList(short nodeId, short& headId, short& tailId) const;
|
||||
short CalculateIntersections(ESortedLists la, ESortedLists lb, short a, short b, short c, short d,
|
||||
ESortedLists slA, ESortedLists slB, ESortedLists slC,
|
||||
ESortedLists slD, const CAABox& aabb) const;
|
||||
short ConstructIntersectionArray(const CAABox& aabb) const;
|
||||
void BuildNearList(rstl::reserved_vector< TUniqueId, 1024 >& nearListOut, const CAABox& box,
|
||||
const CMaterialFilter& filter, const CActor* actor) const;
|
||||
|
||||
void BuildNearList(rstl::reserved_vector< TUniqueId, 1024 >& nearListOut, const CActor& actor,
|
||||
const CAABox& box) const;
|
||||
void BuildNearList(rstl::reserved_vector< TUniqueId, 1024 >& nearListOut, const CVector3f& pos,
|
||||
const CVector3f& dir, f32 mag, const CMaterialFilter& filter,
|
||||
const CActor* actor) const;
|
||||
|
||||
private:
|
||||
SNode x0_nodes[kMaxObjects];
|
||||
|
||||
Reference in New Issue
Block a user