email comments from Andew Sampson, "I've contacted Terrex, and obtained the 2.2 version of their trpage library. The library included a fork of OSG 0.9.8's txp plugin, modified to load 2.1+ txp DBs. I've done the work of incorporating the changes made to OSG's txp plugin since 0.9.8 into Terrex's fork. The forked version is now up-to-date with the changes made to OSG 0.9.9 and 1.0. Terrex made a lot of changes (especially differences in whitespace), so the diff between the forked version and OSG 1.0's txp plugin is yucky. I did my best, but keep in mind that this is the result of a 4-way merge (kinda... terrex-0.9.8, stock-0.9.8, stock-0.9.9, stock-1.0). I really want to see this forked version merged back into the main OSG branch. The new features offered by this version of the plugin (2.1+ support, variable LOD support, bug fixes) are worth the trouble." -- Don Tidrow then took this code and added his work. -- Robert Osfield then fixed all the warnings that abound in the trpage code base.
56 lines
1.0 KiB
C++
56 lines
1.0 KiB
C++
#include "TXPSeamLOD.h"
|
|
#include "TXPArchive.h"
|
|
#include "TXPPagedLOD.h"
|
|
#include "TileMapper.h"
|
|
|
|
using namespace txp;
|
|
using namespace osg;
|
|
|
|
TXPSeamLOD::TXPSeamLOD() :
|
|
Group()
|
|
{
|
|
_dx = 0;
|
|
_dy = 0;
|
|
}
|
|
|
|
TXPSeamLOD::TXPSeamLOD(int x, int y, int lod, int dx, int dy) :
|
|
Group()
|
|
{
|
|
_tid.x = x;
|
|
_tid.y = y;
|
|
_tid.lod = lod;
|
|
_dx = dx;
|
|
_dy = dy;
|
|
}
|
|
|
|
TXPSeamLOD::TXPSeamLOD(const TXPSeamLOD& ttg,const osg::CopyOp& copyop) :
|
|
Group(ttg,copyop)
|
|
{
|
|
_tid = ttg._tid;
|
|
_dx = ttg._dx;
|
|
_dy = ttg._dy;
|
|
}
|
|
|
|
void TXPSeamLOD::traverse(osg::NodeVisitor& nv)
|
|
{
|
|
if (nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR && getNumChildren()==2)
|
|
{
|
|
|
|
TileMapper* tileMapper = dynamic_cast<TileMapper*>(nv.getUserData());
|
|
|
|
if (tileMapper && !tileMapper->isTileNeighbourALowerLODLevel(_tid,_dx,_dy))
|
|
{
|
|
getChild(1)->accept(nv);
|
|
}
|
|
else
|
|
{
|
|
getChild(0)->accept(nv);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
Group::traverse(nv);
|
|
}
|
|
}
|