mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-30 07:15:34 +00:00
Use blank CellRef as default
Default constructed CellRef has some fields uninitialized.
This commit is contained in:
parent
d998faec1b
commit
1cdbbef7ee
7 changed files with 25 additions and 16 deletions
|
@ -533,7 +533,7 @@ namespace MWRender
|
|||
: CharacterPreview(
|
||||
parent, resourceSystem, MWMechanics::getPlayer(), 512, 512, osg::Vec3f(0, 125, 8), osg::Vec3f(0, 0, 8))
|
||||
, mBase(*mCharacter.get<ESM::NPC>()->mBase)
|
||||
, mRef(&mBase)
|
||||
, mRef(ESM::makeBlankCellRef(), &mBase)
|
||||
, mPitchRadians(osg::DegreesToRadians(6.f))
|
||||
{
|
||||
mCharacter = MWWorld::Ptr(&mRef, nullptr);
|
||||
|
|
|
@ -317,7 +317,7 @@ namespace
|
|||
}
|
||||
|
||||
// new reference
|
||||
MWWorld::LiveCellRef<T> ref(record);
|
||||
MWWorld::LiveCellRef<T> ref(ESM::makeBlankCellRef(), record);
|
||||
ref.load(state);
|
||||
collection.mList.push_back(std::move(ref));
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ MWWorld::ContainerStoreIterator MWWorld::ContainerStore::getState(
|
|||
if (!record)
|
||||
return ContainerStoreIterator(this);
|
||||
|
||||
LiveCellRef<T> ref(record);
|
||||
LiveCellRef<T> ref(ESM::makeBlankCellRef(), record);
|
||||
ref.load(state);
|
||||
collection.mList.push_back(std::move(ref));
|
||||
auto it = ContainerStoreIterator(this, --collection.mList.end());
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace MWWorld
|
|||
|
||||
WorldModel* mWorldModel = nullptr;
|
||||
|
||||
LiveCellRefBase(unsigned int type, const ESM::CellRef& cref = ESM::CellRef());
|
||||
LiveCellRefBase(unsigned int type, const ESM::CellRef& cref);
|
||||
LiveCellRefBase(unsigned int type, const ESM4::Reference& cref);
|
||||
LiveCellRefBase(unsigned int type, const ESM4::ActorCharacter& cref);
|
||||
|
||||
|
@ -144,12 +144,6 @@ namespace MWWorld
|
|||
{
|
||||
}
|
||||
|
||||
LiveCellRef(const X* b = nullptr)
|
||||
: LiveCellRefBase(X::sRecordId)
|
||||
, mBase(b)
|
||||
{
|
||||
}
|
||||
|
||||
// The object that this instance is based on.
|
||||
const X* mBase;
|
||||
|
||||
|
|
|
@ -36,8 +36,20 @@
|
|||
|
||||
namespace MWWorld
|
||||
{
|
||||
namespace
|
||||
{
|
||||
ESM::CellRef makePlayerCellRef()
|
||||
{
|
||||
ESM::CellRef result;
|
||||
result.blank();
|
||||
result.mRefID = ESM::RefId::stringRefId("Player");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Player::Player(const ESM::NPC* player)
|
||||
: mCellStore(nullptr)
|
||||
: mPlayer(makePlayerCellRef(), player)
|
||||
, mCellStore(nullptr)
|
||||
, mLastKnownExteriorPosition(0, 0, 0)
|
||||
, mMarkedPosition(ESM::Position())
|
||||
, mMarkedCell(nullptr)
|
||||
|
@ -46,11 +58,6 @@ namespace MWWorld
|
|||
, mPaidCrimeId(-1)
|
||||
, mJumping(false)
|
||||
{
|
||||
ESM::CellRef cellRef;
|
||||
cellRef.blank();
|
||||
cellRef.mRefID = ESM::RefId::stringRefId("Player");
|
||||
mPlayer = LiveCellRef<ESM::NPC>(cellRef, player);
|
||||
|
||||
ESM::Position playerPos = mPlayer.mData.getPosition();
|
||||
playerPos.pos[0] = playerPos.pos[1] = playerPos.pos[2] = 0;
|
||||
mPlayer.mData.setPosition(playerPos);
|
||||
|
|
|
@ -287,4 +287,10 @@ namespace ESM
|
|||
loadDataImpl<false>(esm, isDeleted, cellRef);
|
||||
}
|
||||
|
||||
CellRef makeBlankCellRef()
|
||||
{
|
||||
CellRef result;
|
||||
result.blank();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -105,6 +105,8 @@ namespace ESM
|
|||
};
|
||||
|
||||
void skipLoadCellRef(ESMReader& esm, bool wideRefNum = false);
|
||||
|
||||
CellRef makeBlankCellRef();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue