You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
#include "coordinateconverter.hpp"
|
|
|
|
#include <components/esm/loadcell.hpp>
|
|
#include <components/esm/loadland.hpp>
|
|
|
|
namespace MWMechanics
|
|
{
|
|
CoordinateConverter::CoordinateConverter(const ESM::Cell* cell)
|
|
: mCellX(0), mCellY(0)
|
|
{
|
|
if (cell->isExterior())
|
|
{
|
|
mCellX = cell->mData.mX * ESM::Land::REAL_SIZE;
|
|
mCellY = cell->mData.mY * ESM::Land::REAL_SIZE;
|
|
}
|
|
}
|
|
|
|
void CoordinateConverter::toWorld(ESM::Pathgrid::Point& point)
|
|
{
|
|
point.mX += mCellX;
|
|
point.mY += mCellY;
|
|
}
|
|
|
|
void CoordinateConverter::toWorld(osg::Vec3f& point)
|
|
{
|
|
point.x() += static_cast<float>(mCellX);
|
|
point.y() += static_cast<float>(mCellY);
|
|
}
|
|
|
|
void CoordinateConverter::toLocal(osg::Vec3f& point)
|
|
{
|
|
point.x() -= static_cast<float>(mCellX);
|
|
point.y() -= static_cast<float>(mCellY);
|
|
}
|
|
|
|
osg::Vec3f CoordinateConverter::toLocalVec3(const ESM::Pathgrid::Point& point)
|
|
{
|
|
return osg::Vec3f(
|
|
static_cast<float>(point.mX - mCellX),
|
|
static_cast<float>(point.mY - mCellY),
|
|
static_cast<float>(point.mZ));
|
|
}
|
|
}
|