mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-21 16:09:41 +00:00
Physics sort of fixed
This commit is contained in:
parent
1da519a914
commit
9c73fa6b6d
3 changed files with 17 additions and 7 deletions
|
@ -60,12 +60,12 @@ namespace MWWorld
|
||||||
std::cout << "Unloading cell\n";
|
std::cout << "Unloading cell\n";
|
||||||
ListHandles functor;
|
ListHandles functor;
|
||||||
|
|
||||||
MWWorld::Ptr::CellStore* active = *iter;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
active->forEach<ListHandles>(functor);
|
(*iter)->forEach<ListHandles>(functor);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -77,12 +77,13 @@ namespace MWWorld
|
||||||
mPhysics->removeObject (node->getName());
|
mPhysics->removeObject (node->getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mRendering.removeCell(active);
|
mRendering.removeCell(*iter);
|
||||||
//mPhysics->removeObject("Unnamed_43");
|
//mPhysics->removeObject("Unnamed_43");
|
||||||
mWorld->getLocalScripts().clearCell (active);
|
mWorld->getLocalScripts().clearCell (*iter);
|
||||||
mEnvironment.mMechanicsManager->dropActors (active);
|
mEnvironment.mMechanicsManager->dropActors (*iter);
|
||||||
mEnvironment.mSoundManager->stopSound (active);
|
mEnvironment.mSoundManager->stopSound (*iter);
|
||||||
mActiveCells.erase(active);
|
mActiveCells.erase(*iter);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,6 +109,7 @@ namespace MWWorld
|
||||||
void Scene::playerCellChange (Ptr::CellStore *cell, const ESM::Position& position,
|
void Scene::playerCellChange (Ptr::CellStore *cell, const ESM::Position& position,
|
||||||
bool adjustPlayerPos)
|
bool adjustPlayerPos)
|
||||||
{
|
{
|
||||||
|
mWorld->makeNewPlayer();
|
||||||
if (adjustPlayerPos)
|
if (adjustPlayerPos)
|
||||||
mWorld->getPlayer().setPos (position.pos[0], position.pos[1], position.pos[2]);
|
mWorld->getPlayer().setPos (position.pos[0], position.pos[1], position.pos[2]);
|
||||||
|
|
||||||
|
|
|
@ -182,6 +182,13 @@ namespace MWWorld
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void World::makeNewPlayer(){
|
||||||
|
MWRender::Player* play = &(mRendering.getPlayer());
|
||||||
|
delete mPlayer;
|
||||||
|
mPlayer = new MWWorld::Player (play, mStore.npcs.find ("player"), *this);
|
||||||
|
mPhysics->addActor (mPlayer->getPlayer().getRefData().getHandle(), "", Ogre::Vector3 (0, 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
World::~World()
|
World::~World()
|
||||||
{
|
{
|
||||||
delete mWorldScene;
|
delete mWorldScene;
|
||||||
|
|
|
@ -220,6 +220,7 @@ namespace MWWorld
|
||||||
/// references that are currently not in the rendered scene should be ignored.
|
/// references that are currently not in the rendered scene should be ignored.
|
||||||
void setObjectPhysicsRotation(const std::string& handle,Ogre::Quaternion quat);
|
void setObjectPhysicsRotation(const std::string& handle,Ogre::Quaternion quat);
|
||||||
void setObjectPhysicsPosition(const std::string& handle,Ogre::Vector3 vector);
|
void setObjectPhysicsPosition(const std::string& handle,Ogre::Vector3 vector);
|
||||||
|
void makeNewPlayer();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue