ResourceGroupManager::resourceExistsInAnyGroup is slow (at least on
windows) if the tested path does not exist, but is fast if it does (due
to finding it in the index). This change tries the '.dds' version of the
name first, and reverts to the original if the '.dds' version was not
found.
- Add preliminary support for loading some unique fields appearing only in savegames
- Add a few lines required for supporting respawning references. Incomplete.
Changed a block of code that was performing a series of string
concatenations to use an ostringstream instead. This allowed the removal
of calls to std::to_string (not C++03 compliant) and fixes an compile
error in MSVC 2010 (ambigous overload when calling std::to_string).
The 'fixing' for so-called dirty GMSTs does not work properly in its
current state anyway, so it should be removed. Fixing the 'GMST fixing'
might not be possible, because whether or not a GMST is 'dirty' depends
on the language version of MW. Therefore different 'fixing' algorithms
would be required for the different MW localisations, and I do not see
a good reason why GMST values should be hard-coded in the GMST load
procedure. In my opinion, it only clutters the code.
Last but not least, I believe that it is not the task of the engine to
clean ESM files from dirty entries. That is a job for the modders, who
should only release clean ESM/ESP files in the first place. The engine
should not need to worry about whether a file is 'dirty' or not.
That is why I believe a feature for cleaning ESM/ESP files shall not be
part of the engine.
- Try to reimplement multiple esX files dropping references in the same file.
NOTE: None of these features works. Maybe the code itself does not build. Anyway, after 12 hours of hacking, I am just tired and want to get a snapshot of the code out.
Conflicts:
apps/openmw/mwrender/terrain.cpp
apps/openmw/mwworld/cells.cpp
apps/openmw/mwworld/cells.hpp
apps/openmw/mwworld/cellstore.cpp
apps/openmw/mwworld/cellstore.hpp
apps/openmw/mwworld/containerstore.cpp
apps/openmw/mwworld/localscripts.cpp
apps/openmw/mwworld/scene.cpp
apps/openmw/mwworld/worldimp.cpp
apps/openmw/mwworld/worldimp.hpp
components/esm_store/reclists.hpp
components/esm_store/store.cpp
extern/shiny
- Re-implement some patches that were broken by the removal of reclists.hpp and store.cpp/.hpp.
- NOTE: Not everything works as before, I'll have to test some more stuff before we are back to where we were.
- Change CellRefList::list from list<> to map<int,> so we can identify live references by their Refnumber.
- Introduce ContainerRefList, a clone of the original CellRefList. It is now used for containers, which do not track Refnumbers.
- Many small tweaks so that the new CellRefList does not conflict with existing code.