mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-10 03:39:55 +00:00
moving part 2, adding position parameter, stable
This commit is contained in:
parent
61cb012ee7
commit
71253c64ab
@ -4,8 +4,12 @@
|
||||
|
||||
#include <components/esm_store/store.hpp>
|
||||
|
||||
#include "../mwbase/environment.hpp"
|
||||
#include "../mwbase/world.hpp"
|
||||
|
||||
#include "ptr.hpp"
|
||||
#include "manualref.hpp"
|
||||
#include "class.hpp"
|
||||
|
||||
namespace MWWorld
|
||||
{
|
||||
@ -125,7 +129,7 @@ namespace MWWorld
|
||||
}
|
||||
|
||||
/// \todo this whole code needs major clean up
|
||||
void CellStore::insertObject (const Ptr& ptr)
|
||||
const MWWorld::Ptr CellStore::insertObject (const Ptr& ptr, const ESM::Position &pos)
|
||||
{
|
||||
std::string type = ptr.getTypeName();
|
||||
|
||||
@ -213,11 +217,12 @@ namespace MWWorld
|
||||
newRef.getPtr().get<ESM::Miscellaneous>();
|
||||
|
||||
newPtr = MWWorld::Ptr(&miscItems.insert(*ref), this);
|
||||
|
||||
/*
|
||||
ESM::Position& p = newPtr.getRefData().getPosition();
|
||||
p.pos[0] = ptr.getRefData().getPosition().pos[0];
|
||||
p.pos[1] = ptr.getRefData().getPosition().pos[1];
|
||||
p.pos[2] = ptr.getRefData().getPosition().pos[2];
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -230,9 +235,13 @@ namespace MWWorld
|
||||
else
|
||||
throw std::runtime_error("Trying to insert object of unhandled type");
|
||||
|
||||
newPtr.getRefData().getPosition() = pos;
|
||||
|
||||
newPtr.getRefData().setCount(ptr.getRefData().getCount());
|
||||
ptr.getRefData().setCount(0);
|
||||
newPtr.getRefData().enable();
|
||||
|
||||
return newPtr;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -155,6 +155,8 @@ namespace MWWorld
|
||||
forEachImp (functor, weapons);
|
||||
}
|
||||
|
||||
const MWWorld::Ptr insertObject(const MWWorld::Ptr &ptr, const ESM::Position &pos);
|
||||
|
||||
private:
|
||||
|
||||
template<class Functor, class List>
|
||||
@ -172,8 +174,6 @@ namespace MWWorld
|
||||
void listRefs(const ESMS::ESMStore &store, ESM::ESMReader &esm);
|
||||
|
||||
void loadRefs(const ESMS::ESMStore &store, ESM::ESMReader &esm);
|
||||
|
||||
void insertObject(const MWWorld::Ptr &ptr);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1016,13 +1016,13 @@ namespace MWWorld
|
||||
else
|
||||
cell = getPlayer().getPlayer().getCell();
|
||||
|
||||
ESM::Position& pos = object.getRefData().getPosition();
|
||||
ESM::Position pos = getPlayer().getPlayer().getRefData().getPosition();
|
||||
pos.pos[0] = result.second[0];
|
||||
pos.pos[1] = -result.second[2];
|
||||
pos.pos[2] = result.second[1];
|
||||
|
||||
cell->insertObject(object);
|
||||
//TODO mWorldScene->addObjectToScene
|
||||
MWWorld::Ptr dropped = cell->insertObject(object, pos);
|
||||
mWorldScene->addObjectToScene(dropped);
|
||||
|
||||
/// \todo retrieve the bounds of the object and translate it accordingly
|
||||
|
||||
@ -1044,14 +1044,12 @@ namespace MWWorld
|
||||
{
|
||||
MWWorld::Ptr::CellStore* cell = getPlayer().getPlayer().getCell();
|
||||
|
||||
float* playerPos = getPlayer().getPlayer().getRefData().getPosition().pos;
|
||||
ESM::Position &pos =
|
||||
getPlayer().getPlayer().getRefData().getPosition();
|
||||
|
||||
ESM::Position& pos = object.getRefData().getPosition();
|
||||
pos.pos[0] = playerPos[0];
|
||||
pos.pos[1] = playerPos[1];
|
||||
pos.pos[2] = playerPos[2];
|
||||
MWWorld::Ptr dropped = cell->insertObject(object, pos);
|
||||
|
||||
mWorldScene->insertObject(object, cell);
|
||||
mWorldScene->addObjectToScene(dropped);
|
||||
}
|
||||
|
||||
void World::processChangedSettings(const Settings::CategorySettingVector& settings)
|
||||
|
Loading…
x
Reference in New Issue
Block a user