1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-04-16 08:42:23 +00:00

Make PlaceItem place the item in the player's current worldspace

This commit is contained in:
scrawl 2014-09-08 23:57:16 +02:00
parent 3007af44ea
commit 628600a0a5

View File

@ -463,25 +463,26 @@ namespace MWScript
Interpreter::Type_Float zRot = runtime[0].mFloat; Interpreter::Type_Float zRot = runtime[0].mFloat;
runtime.pop(); runtime.pop();
int cx,cy; MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr();
MWBase::Environment::get().getWorld()->positionToIndex(x,y,cx,cy); MWWorld::CellStore* store = NULL;
MWWorld::CellStore* store = MWBase::Environment::get().getWorld()->getExterior(cx,cy); if (player.getCell()->isExterior())
if(store)
{ {
ESM::Position pos; int cx,cy;
pos.pos[0] = x; MWBase::Environment::get().getWorld()->positionToIndex(x,y,cx,cy);
pos.pos[1] = y; store = MWBase::Environment::get().getWorld()->getExterior(cx,cy);
pos.pos[2] = z;
pos.rot[0] = pos.rot[1] = 0;
pos.rot[2] = zRot;
MWWorld::ManualRef ref(MWBase::Environment::get().getWorld()->getStore(),itemID);
ref.getPtr().getCellRef().setPosition(pos);
MWBase::Environment::get().getWorld()->safePlaceObject(ref.getPtr(),store,pos);
} }
else else
{ store = player.getCell();
throw std::runtime_error ("unknown cell");
} ESM::Position pos;
pos.pos[0] = x;
pos.pos[1] = y;
pos.pos[2] = z;
pos.rot[0] = pos.rot[1] = 0;
pos.rot[2] = zRot;
MWWorld::ManualRef ref(MWBase::Environment::get().getWorld()->getStore(),itemID);
ref.getPtr().getCellRef().setPosition(pos);
MWBase::Environment::get().getWorld()->safePlaceObject(ref.getPtr(),store,pos);
} }
}; };