for 0x15 fragments :
I have this working but it is not like explained in your documentation wind =( :
Code:
bool Data15::Decode(Buffer & buffer)
{
Clear();
if(!EQWldDataFragment::Decode(buffer))
return false;
EQWldDataFragmentWithReference::Decode(buffer);
flags = buffer.GetDWORD();
fragment1 = DecodeFragmentReference(buffer);
x = buffer.GetFLOAT();
y = buffer.GetFLOAT();
z = buffer.GetFLOAT();
rota_z = buffer.GetFLOAT();
rota_y = buffer.GetFLOAT();
rota_x = buffer.GetFLOAT();
buffer.GetFLOAT(); // always 0
scale_y = buffer.GetFLOAT();
scale_x = buffer.GetFLOAT();
fragment2 = DecodeFragmentReference(buffer);
if ( flags == 0x32E )
params2[0] = buffer.GetDWORD();
else
params2[0] = 0;
return buffer.AtEnd();
}
it seems that if the flag value is 0x32E params2 exists else it doesn't exist
other flag values i have seen are 0x22E and 0x2E
0x2E is for the unique 0x15 fragment in the main zone file
but 0x22E and 0x32E appears in objects.wld files for placeable objects, it depends of the zone
now i can load all the zones but i still have problems with new format textures, those zones appear really ugly lol