Updated Bug #430 fix so it only moves the player now

This commit is contained in:
emoose 2012-11-04 23:22:30 +00:00
parent b7aa7e4cef
commit accf8b2f71

View file

@ -304,21 +304,24 @@ namespace MWWorld
void Scene::changeToInteriorCell (const std::string& cellName, const ESM::Position& position) void Scene::changeToInteriorCell (const std::string& cellName, const ESM::Position& position)
{ {
std::cout << "Changing to interior\n"; CellStore *cell = MWBase::Environment::get().getWorld()->getInterior(cellName);
bool loadcell = (mCurrentCell == NULL); bool loadcell = (mCurrentCell == NULL);
if(!loadcell)
loadcell = *mCurrentCell != *cell;
if(!loadcell) if(!loadcell)
{ {
std::string nam = std::string(cellName); MWBase::World *world = MWBase::Environment::get().getWorld();
std::string curnam = std::string(mCurrentCell->cell->mName); world->moveObject(world->getPlayer().getPlayer(), position.pos[0], position.pos[1], position.pos[2]);
std::transform(nam.begin(), nam.end(), nam.begin(), ::tolower);
std::transform(curnam.begin(), curnam.end(), curnam.begin(), ::tolower); float x = Ogre::Radian(position.rot[0]).valueDegrees();
loadcell = nam != curnam; float y = Ogre::Radian(position.rot[1]).valueDegrees();
float z = Ogre::Radian(position.rot[2]).valueDegrees();
world->rotateObject(world->getPlayer().getPlayer(), x, y, z);
return;
} }
if(loadcell)
{ std::cout << "Changing to interior\n";
CellStore *cell = MWBase::Environment::get().getWorld()->getInterior(cellName);
// remove active // remove active
CellStoreCollection::iterator active = mActiveCells.begin(); CellStoreCollection::iterator active = mActiveCells.begin();
@ -343,8 +346,7 @@ namespace MWWorld
} }
// Load cell. // Load cell.
std::cout << "cellName:" << cellName << std::endl; std::cout << "cellName: " << cell->cell->mName << std::endl;
MWBase::Environment::get().getWindowManager ()->setLoadingProgress ("Loading cells", 0, 0, 1); MWBase::Environment::get().getWindowManager ()->setLoadingProgress ("Loading cells", 0, 0, 1);
loadCell (cell); loadCell (cell);
@ -353,8 +355,8 @@ namespace MWWorld
// adjust fog // adjust fog
mRendering.switchToInterior(); mRendering.switchToInterior();
mRendering.configureFog(*cell); mRendering.configureFog(*mCurrentCell);
}
// adjust player // adjust player
playerCellChange (mCurrentCell, position); playerCellChange (mCurrentCell, position);