ESM::Cell's getDescription() method was modified by aa5161f99e despite being used heavily by TES3MP. All instances of it in the TES3MP code have now been changed into the newly added getShortDescription() that is identical to the previous getDescription().
ESM::Cell::getCellId() was allocating a string on every call. This caused functions dealing with cellIds to be unnecessarily expensive.
For example, World::moveObject spent almost as much time comparing CellIds as it did updating Bullet's AABB after the move. OpGetDistance was by far the most expensive script instruction because it has to compare cellIds.
The total cost of getCellId() relative to the frame loop was about 0.3%.
warning C4099: 'ESM::ESMReader' : type name first seen using 'class' now seen using 'struct'
warning C4099: 'ESM::CellId' : type name first seen using 'struct' now seen using 'class'
Fixes an issue with the Morrowind Patched mod where cell ambient values would become black due to the new cell records not including an AMBI subrecord.
Also fixes a bug where mLeasedRefs was incorrectly cleared when overwriting a cell (*oldcell = *cell;)
- It is implementation-dependent if plain `char' signed or not.
- C standard defines three *distinct* types: char, signed char,
and unsigned char.
- Assuming that char is always unsigned or signed can lead to
compile-time and run-time errors.
You can also use int8_t, but then it would be less obvious for developers
to never assume that char is always unsigned (or always signed).
Conflicts:
components/esm/loadcell.hpp
- new file: apps/openmw/mwworld/store.cpp, had to move reference merging method out of the header file to prevent three-way recursion/unresolved forward references in custom compare operators.
- Add preliminary support for loading some unique fields appearing only in savegames
- Add a few lines required for supporting respawning references. Incomplete.