void Water::changeCell(const ESM::Cell* cell) { mTop = cell->mWater; setHeight(mTop); if(!(cell->mData.mFlags & cell->Interior)) mWaterNode->setPosition(getSceneNodeCoordinates(cell->mData.mX, cell->mData.mY)); }
void Water::changeCell(const MWWorld::CellStore* store) { if (store->getCell()->isExterior()) mWaterNode->setPosition(getSceneNodeCoordinates(store->getCell()->mData.mX, store->getCell()->mData.mY)); else mWaterNode->setPosition(osg::Vec3f(0,0,mTop)); // create a new StateSet to prevent threading issues osg::ref_ptr<osg::StateSet> nodeStateSet (new osg::StateSet); nodeStateSet->addUniform(new osg::Uniform("nodePosition", osg::Vec3f(mWaterNode->getPosition()))); mWaterNode->setStateSet(nodeStateSet); }