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:
parent
172cb74763
commit
b2000b7642
1 changed files with 7 additions and 6 deletions
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue