2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 07:07:42 +00:00

Initial Collision stubs

This commit is contained in:
2016-06-24 13:09:38 -07:00
parent 40cd1226fa
commit c66dac6df2
18 changed files with 310 additions and 25 deletions

View File

@@ -15,7 +15,9 @@ u32 verify_version(CInputStream& in)
return in.readUint32Big();
}
COBBTree::COBBTree(const COBBTree::SIndexData&, const COBBTree::CNode*)
COBBTree::COBBTree(const SIndexData& indexData, const CNode* root)
: x18_indexData(indexData),
x88_root((CNode*)root)
{
}
@@ -114,6 +116,25 @@ const zeus::COBBox& COBBTree::CNode::GetOBB() const
return x0_obb;
}
size_t COBBTree::CNode::GetMemoryUsage() const
{
size_t ret = 0;
if (x3c_isLeaf)
ret = x48_leaf->GetMemoryUsage() + 80;
else
{
if (x40_left)
ret = x40_left->GetMemoryUsage() + 80;
if (x44_right)
ret += x44_right->GetMemoryUsage();
}
if (!(ret & 3))
return ret;
return ret + ((ret & 3) - 4);
}
COBBTree::CLeafData::CLeafData(const std::vector<u16>& surface)
: x0_surface(surface)
{
@@ -124,6 +145,14 @@ const std::vector<u16>& COBBTree::CLeafData::GetSurfaceVector() const
return x0_surface;
}
size_t COBBTree::CLeafData::GetMemoryUsage() const
{
size_t ret = (x0_surface.size() * 2) + 16;
if (!(ret & 3))
return ret;
return ret + ((ret & 3) - 4);
}
COBBTree::CLeafData::CLeafData(CInputStream& in)
{
u32 edgeCount = in.readUint32Big();