1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-06-27 04:41:34 +00:00

Crashfix on launch

This commit is contained in:
florent.teppe 2023-01-23 21:44:49 +01:00
parent 0018bcf7de
commit c896a2ca48
10 changed files with 18 additions and 19 deletions

View file

@ -1,6 +1,6 @@
#include "luabindings.hpp" #include "luabindings.hpp"
#include <components/esm/cellcommon.hpp> #include <components/esm/esm3esm4bridge.hpp>
#include <components/esm/records.hpp> #include <components/esm/records.hpp>
#include "../mwworld/cellstore.hpp" #include "../mwworld/cellstore.hpp"

View file

@ -2,7 +2,7 @@
#include <algorithm> #include <algorithm>
#include <components/esm/cellcommon.hpp> #include <components/esm/esm3esm4bridge.hpp>
#include <components/esm3/loadcell.hpp> #include <components/esm3/loadcell.hpp>
#include <components/esm4/loadcell.hpp> #include <components/esm4/loadcell.hpp>
#include <components/fallback/fallback.hpp> #include <components/fallback/fallback.hpp>
@ -42,9 +42,6 @@ namespace MWRender
void FogManager::configure(float viewDistance, const ESM::CellVariant& cell) void FogManager::configure(float viewDistance, const ESM::CellVariant& cell)
{ {
auto cell3 = cell.getEsm3();
auto cell4 = cell.getEsm4();
osg::Vec4f color osg::Vec4f color
= SceneUtil::colourFromRGB(cell.isEsm4() ? cell.getEsm4().mLighting.fogColor : cell.getEsm3().mAmbi.mFog); = SceneUtil::colourFromRGB(cell.isEsm4() ? cell.getEsm4().mLighting.fogColor : cell.getEsm3().mAmbi.mFog);

View file

@ -781,6 +781,9 @@ namespace MWSound
{ {
MWBase::World* world = MWBase::Environment::get().getWorld(); MWBase::World* world = MWBase::Environment::get().getWorld();
const MWWorld::ConstPtr player = world->getPlayerPtr(); const MWWorld::ConstPtr player = world->getPlayerPtr();
if (player.getCell()->getCellVariant().isEsm4())
return;
const ESM::Cell* curcell = &player.getCell()->getCellVariant().getEsm3(); const ESM::Cell* curcell = &player.getCell()->getCellVariant().getEsm3();
const auto update = mWaterSoundUpdater.update(player, *world); const auto update = mWaterSoundUpdater.update(player, *world);

View file

@ -15,7 +15,7 @@
#include "cellreflist.hpp" #include "cellreflist.hpp"
#include "livecellref.hpp" #include "livecellref.hpp"
#include <components/esm/cellcommon.hpp> #include <components/esm/esm3esm4bridge.hpp>
#include <components/esm/refid.hpp> #include <components/esm/refid.hpp>
#include <components/esm3/fogstate.hpp> #include <components/esm3/fogstate.hpp>
#include <components/misc/tuplemeta.hpp> #include <components/misc/tuplemeta.hpp>

View file

@ -80,7 +80,7 @@ add_component_dir (to_utf8
to_utf8 to_utf8
) )
add_component_dir(esm attr common defs esmcommon records util luascripts format refid cellcommon) add_component_dir(esm attr common defs esmcommon records util luascripts format refid esm3esm4bridge)
add_component_dir(fx pass technique lexer widgets stateupdater) add_component_dir(fx pass technique lexer widgets stateupdater)

View file

@ -1,4 +1,4 @@
#include <components/esm/cellcommon.hpp> #include <components/esm/esm3esm4bridge.hpp>
#include <components/esm3/loadcell.hpp> #include <components/esm3/loadcell.hpp>
#include <components/esm4/loadcell.hpp> #include <components/esm4/loadcell.hpp>
@ -6,7 +6,6 @@ namespace ESM
{ {
const ESM::CellCommon* CellVariant::getCommon() const const ESM::CellCommon* CellVariant::getCommon() const
{ {
auto cell3 = getEsm3();
if (isEsm4()) if (isEsm4())
return &getEsm4(); return &getEsm4();
else else

View file

@ -7,8 +7,8 @@
#include "cellid.hpp" #include "cellid.hpp"
#include "cellref.hpp" #include "cellref.hpp"
#include "components/esm/cellcommon.hpp"
#include "components/esm/defs.hpp" #include "components/esm/defs.hpp"
#include "components/esm/esm3esm4bridge.hpp"
#include "components/esm/esmcommon.hpp" #include "components/esm/esmcommon.hpp"
#include "components/esm/refid.hpp" #include "components/esm/refid.hpp"

View file

@ -78,12 +78,6 @@ void ESM4::Cell::load(ESM4::Reader& reader)
std::uint32_t esmVer = reader.esmVersion(); std::uint32_t esmVer = reader.esmVersion();
bool isFONV = esmVer == ESM::VER_132 || esmVer == ESM::VER_133 || esmVer == ESM::VER_134; bool isFONV = esmVer == ESM::VER_132 || esmVer == ESM::VER_133 || esmVer == ESM::VER_134;
mCellId.mWorldspace = Misc::StringUtils::lowerCase(mEditorId);
mCellId.mWorld = ESM::RefId::sEmpty;
mCellId.mIndex.mX = getGridX();
mCellId.mIndex.mX = getGridY();
mCellId.mPaged = isExterior();
while (reader.getSubRecordHeader()) while (reader.getSubRecordHeader())
{ {
const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader(); const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
@ -247,6 +241,12 @@ void ESM4::Cell::load(ESM4::Reader& reader)
throw std::runtime_error("ESM4::CELL::load - Unknown subrecord " + ESM::printName(subHdr.typeId)); throw std::runtime_error("ESM4::CELL::load - Unknown subrecord " + ESM::printName(subHdr.typeId));
} }
} }
mCellId.mWorldspace = Misc::StringUtils::lowerCase(mEditorId);
mCellId.mWorld = ESM::RefId::sEmpty;
mCellId.mIndex.mX = getGridX();
mCellId.mIndex.mX = getGridY();
mCellId.mPaged = isExterior();
} }
// void ESM4::Cell::save(ESM4::Writer& writer) const // void ESM4::Cell::save(ESM4::Writer& writer) const

View file

@ -34,8 +34,8 @@
#include "formid.hpp" #include "formid.hpp"
#include "lighting.hpp" #include "lighting.hpp"
#include <components/esm/cellcommon.hpp>
#include <components/esm/defs.hpp> #include <components/esm/defs.hpp>
#include <components/esm/esm3esm4bridge.hpp>
#include <components/esm/refid.hpp> #include <components/esm/refid.hpp>
#include <components/esm3/cellid.hpp> #include <components/esm3/cellid.hpp>
@ -107,8 +107,8 @@ namespace ESM4
int getGridX() const override { return mX; } int getGridX() const override { return mX; }
int getGridY() const override { return mY; } int getGridY() const override { return mY; }
bool isExterior() const override { return !(mFlags & CELL_Interior); } bool isExterior() const override { return !(mCellFlags & CELL_Interior); }
virtual bool isQuasiExterior() const override { return mFlags & CELL_QuasiExt; } virtual bool isQuasiExterior() const override { return mCellFlags & CELL_QuasiExt; }
virtual bool hasWater() const override { return false; /*unimplemented for now*/ } virtual bool hasWater() const override { return false; /*unimplemented for now*/ }
const ESM::CellId& getCellId() const override { return mCellId; } const ESM::CellId& getCellId() const override { return mCellId; }
const ESM::RefId& getRegion() const override { return ESM::RefId::sEmpty; } const ESM::RefId& getRegion() const override { return ESM::RefId::sEmpty; }