mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-04-28 21:07:59 +03:00
adding worldspace info to terrain data structures
Rendering manager can have multiple terrain, one for each queried worldspace Terrain::World has a worldspace member storage functions require a worldspace parameter.
This commit is contained in:
parent
93e7b0d946
commit
1b718f09c5
17 changed files with 185 additions and 125 deletions
|
@ -23,7 +23,7 @@ namespace Terrain
|
|||
}
|
||||
|
||||
osg::ref_ptr<osg::Group> CellBorder::createBorderGeometry(float x, float y, float size, Terrain::Storage* terrain,
|
||||
Resource::SceneManager* sceneManager, int mask, float offset, osg::Vec4f color)
|
||||
Resource::SceneManager* sceneManager, int mask, ESM::RefId worldspace, float offset, osg::Vec4f color)
|
||||
{
|
||||
const int cellSize = ESM::Land::REAL_SIZE;
|
||||
const int borderSegments = 40;
|
||||
|
@ -45,7 +45,7 @@ namespace Terrain
|
|||
: osg::Vec3(size, (i - borderSegments) * borderStep, 0.0f);
|
||||
|
||||
pos += cellCorner;
|
||||
pos += osg::Vec3f(0, 0, terrain->getHeightAt(pos) + offset);
|
||||
pos += osg::Vec3f(0, 0, terrain->getHeightAt(pos, worldspace) + offset);
|
||||
|
||||
vertices->push_back(pos);
|
||||
|
||||
|
@ -83,7 +83,8 @@ namespace Terrain
|
|||
|
||||
void CellBorder::createCellBorderGeometry(int x, int y)
|
||||
{
|
||||
auto borderGroup = createBorderGeometry(x, y, 1.f, mWorld->getStorage(), mSceneManager, mBorderMask);
|
||||
auto borderGroup = createBorderGeometry(
|
||||
x, y, 1.f, mWorld->getStorage(), mSceneManager, mBorderMask, mWorld->getWorldspace());
|
||||
mRoot->addChild(borderGroup);
|
||||
|
||||
mCellBorderNodes[std::make_pair(x, y)] = borderGroup;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue