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

Better octree generation density

This commit is contained in:
Jack Andersen
2018-06-23 13:09:16 -10:00
parent bc9d225c89
commit cfe384b5c2
9 changed files with 72 additions and 31 deletions

View File

@@ -173,7 +173,7 @@ CMetroidAreaCollider::COctreeLeafCache::COctreeLeafCache(const CAreaOctTree& oct
void CMetroidAreaCollider::COctreeLeafCache::AddLeaf(const CAreaOctTree::Node& node)
{
if (x4_nodeCache.size() == 64)
if (x4_nodeCache.size() == x4_nodeCache.capacity())
{
x908_24_overflow = true;
return;
@@ -187,13 +187,13 @@ void CMetroidAreaCollider::BuildOctreeLeafCache(const CAreaOctTree::Node& node,
{
for (int i=0 ; i<8 ; ++i)
{
u16 flags = (node.GetChildFlags() >> (i * 2)) & 0x3;
if (flags)
CAreaOctTree::Node::ETreeType type = node.GetChildType(i);
if (type != CAreaOctTree::Node::ETreeType::Invalid)
{
CAreaOctTree::Node ch = node.GetChild(i);
if (aabb.intersects(ch.GetBoundingBox()))
{
if (flags == 0x2)
if (type == CAreaOctTree::Node::ETreeType::Leaf)
cache.AddLeaf(ch);
else
BuildOctreeLeafCache(ch, aabb, cache);