1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-21 09:39:41 +00:00

Fix quad tree node child bounding box dimensions

This commit is contained in:
bzzt 2019-02-20 13:37:00 +00:00 committed by Capostrophic
parent 172cb74763
commit b2000b7642

View file

@ -171,20 +171,21 @@ public:
QuadTreeNode* addChild(QuadTreeNode* parent, ChildDirection direction, float size) QuadTreeNode* addChild(QuadTreeNode* parent, ChildDirection direction, float size)
{ {
float halfSize = size/2.f;
osg::Vec2f center; osg::Vec2f center;
switch (direction) switch (direction)
{ {
case SW: case SW:
center = parent->getCenter() + osg::Vec2f(-size/2.f,-size/2.f); center = parent->getCenter() + osg::Vec2f(-halfSize,-halfSize);
break; break;
case SE: case SE:
center = parent->getCenter() + osg::Vec2f(size/2.f, -size/2.f); center = parent->getCenter() + osg::Vec2f(halfSize, -halfSize);
break; break;
case NW: case NW:
center = parent->getCenter() + osg::Vec2f(-size/2.f, size/2.f); center = parent->getCenter() + osg::Vec2f(-halfSize, halfSize);
break; break;
case NE: case NE:
center = parent->getCenter() + osg::Vec2f(size/2.f, size/2.f); center = parent->getCenter() + osg::Vec2f(halfSize, halfSize);
break; break;
default: default:
break; break;
@ -206,8 +207,8 @@ public:
mStorage->getMinMaxHeights(size, center, minZ, maxZ); mStorage->getMinMaxHeights(size, center, minZ, maxZ);
float cellWorldSize = mStorage->getCellWorldSize(); float cellWorldSize = mStorage->getCellWorldSize();
osg::BoundingBox boundingBox(osg::Vec3f((center.x()-size)*cellWorldSize, (center.y()-size)*cellWorldSize, minZ), osg::BoundingBox boundingBox(osg::Vec3f((center.x()-halfSize)*cellWorldSize, (center.y()-halfSize)*cellWorldSize, minZ),
osg::Vec3f((center.x()+size)*cellWorldSize, (center.y()+size)*cellWorldSize, maxZ)); osg::Vec3f((center.x()+halfSize)*cellWorldSize, (center.y()+halfSize)*cellWorldSize, maxZ));
node->setBoundingBox(boundingBox); node->setBoundingBox(boundingBox);
return node; return node;