mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Tools/vmap_extractor: Preserve UniqueId from MODF adt chunks in final vmap output (used in db2 files and packets)
This commit is contained in:
@@ -176,7 +176,7 @@ void Doodad::Extract(ADT::MDDF const& doodadDef, char const* ModelInstName, uint
|
||||
Vec3D position = fixCoords(doodadDef.Position);
|
||||
|
||||
uint8 nameSet = 0;// not used for models
|
||||
uint32 uniqueId = GenerateUniqueObjectId(doodadDef.UniqueId, 0);
|
||||
uint32 uniqueId = GenerateUniqueObjectId(doodadDef.UniqueId, 0, false);
|
||||
uint8 tcflags = MOD_M2;
|
||||
if (mapID != originalMapId)
|
||||
tcflags |= MOD_PARENT_SPAWN;
|
||||
@@ -284,7 +284,7 @@ void Doodad::ExtractSet(WMODoodadData const& doodadData, ADT::MODF const& wmo, b
|
||||
rotation.y = G3D::toDegrees(rotation.y);
|
||||
|
||||
uint8 nameSet = 0; // not used for models
|
||||
uint32 uniqueId = GenerateUniqueObjectId(wmo.UniqueId, doodadId);
|
||||
uint32 uniqueId = GenerateUniqueObjectId(wmo.UniqueId, doodadId, false);
|
||||
uint8 tcflags = MOD_M2;
|
||||
if (mapID != originalMapId)
|
||||
tcflags |= MOD_PARENT_SPAWN;
|
||||
|
||||
@@ -164,11 +164,14 @@ uint32 GetInstalledLocalesMask()
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32 uniqueObjectIdGenerator = std::numeric_limits<uint32>::max() - 1;
|
||||
std::map<std::pair<uint32, uint16>, uint32> uniqueObjectIds;
|
||||
|
||||
uint32 GenerateUniqueObjectId(uint32 clientId, uint16 clientDoodadId)
|
||||
uint32 GenerateUniqueObjectId(uint32 clientId, uint16 clientDoodadId, bool isWmo)
|
||||
{
|
||||
return uniqueObjectIds.emplace(std::make_pair(clientId, clientDoodadId), uniqueObjectIds.size() + 1).first->second;
|
||||
// WMO client ids must be preserved, they are used in DB2 files
|
||||
uint32 newId = isWmo ? clientId : uniqueObjectIdGenerator--;
|
||||
return uniqueObjectIds.emplace(std::make_pair(clientId, clientDoodadId), newId).first->second;
|
||||
}
|
||||
|
||||
// Local testing functions
|
||||
|
||||
@@ -34,7 +34,7 @@ struct WMODoodadData;
|
||||
extern const char * szWorkDirWmo;
|
||||
extern std::unordered_map<std::string, WMODoodadData> WmoDoodads;
|
||||
|
||||
uint32 GenerateUniqueObjectId(uint32 clientId, uint16 clientDoodadId);
|
||||
uint32 GenerateUniqueObjectId(uint32 clientId, uint16 clientDoodadId, bool isWmo);
|
||||
|
||||
bool FileExists(const char * file);
|
||||
|
||||
|
||||
@@ -617,7 +617,7 @@ void MapObject::Extract(ADT::MODF const& mapObjDef, char const* WmoInstName, boo
|
||||
float scale = 1.0f;
|
||||
if (mapObjDef.Flags & 0x4)
|
||||
scale = mapObjDef.Scale / 1024.0f;
|
||||
uint32 uniqueId = GenerateUniqueObjectId(mapObjDef.UniqueId, 0);
|
||||
uint32 uniqueId = GenerateUniqueObjectId(mapObjDef.UniqueId, 0, true);
|
||||
uint8 flags = MOD_HAS_BOUND;
|
||||
uint8 nameSet = mapObjDef.NameSet;
|
||||
if (mapID != originalMapId)
|
||||
|
||||
Reference in New Issue
Block a user