* 2 opcode fixes by dave, thx
* correced movement packets, server will no longer drop connection when moving * attempted to fix crash in openGL mode in m2 model loader * fixed SCPDatabase::GetFieldByString(), thx dave * added scp files for 3.0.9 client
This commit is contained in:
parent
1c697b84c0
commit
0522c2c786
@ -16,7 +16,7 @@ name=Rogue
|
|||||||
name=Priest
|
name=Priest
|
||||||
|
|
||||||
[6]
|
[6]
|
||||||
name=UNKNOWN CLASS(6)
|
name=Death Knight
|
||||||
|
|
||||||
[7]
|
[7]
|
||||||
name=Shaman
|
name=Shaman
|
||||||
|
|||||||
@ -279,10 +279,34 @@ name=Eye of the Storm
|
|||||||
name_general=ZulAman
|
name_general=ZulAman
|
||||||
name=Zul'Aman
|
name=Zul'Aman
|
||||||
|
|
||||||
|
[571]
|
||||||
|
name_general=Northrend
|
||||||
|
name=Northrend
|
||||||
|
|
||||||
[572]
|
[572]
|
||||||
name_general=PVPLordaeron
|
name_general=PVPLordaeron
|
||||||
name=Ruins of Lordaeron
|
name=Ruins of Lordaeron
|
||||||
|
|
||||||
|
[573]
|
||||||
|
name_general=ExteriorTest
|
||||||
|
name=ExteriorTest
|
||||||
|
|
||||||
|
[574]
|
||||||
|
name_general=Valgarde70
|
||||||
|
name=Utgarde Keep
|
||||||
|
|
||||||
|
[575]
|
||||||
|
name_general=UtgardePinnacle
|
||||||
|
name=Utgarde Pinnacle
|
||||||
|
|
||||||
|
[576]
|
||||||
|
name_general=Nexus70
|
||||||
|
name=The Nexus
|
||||||
|
|
||||||
|
[578]
|
||||||
|
name_general=Nexus80
|
||||||
|
name=The Oculus
|
||||||
|
|
||||||
[580]
|
[580]
|
||||||
name_general=SunwellPlateau
|
name_general=SunwellPlateau
|
||||||
name=The Sunwell
|
name=The Sunwell
|
||||||
@ -323,11 +347,131 @@ name=Transport: Grom'Gol to Undercity
|
|||||||
name_general=Transport164871
|
name_general=Transport164871
|
||||||
name=Transport: Undercity to Orgrimmar
|
name=Transport: Undercity to Orgrimmar
|
||||||
|
|
||||||
|
[592]
|
||||||
|
name_general=Transport186238
|
||||||
|
name=Transport: Borean Tundra Test
|
||||||
|
|
||||||
[593]
|
[593]
|
||||||
name_general=Transport20808
|
name_general=Transport20808
|
||||||
name=Transport: Booty Bay to Ratchet
|
name=Transport: Booty Bay to Ratchet
|
||||||
|
|
||||||
|
[594]
|
||||||
|
name_general=Transport187038
|
||||||
|
name=Transport: Howling Fjord Sister Mercy (Quest)
|
||||||
|
|
||||||
|
[595]
|
||||||
|
name_general=StratholmeCOT
|
||||||
|
name=The Culling of Stratholme
|
||||||
|
|
||||||
|
[596]
|
||||||
|
name_general=Transport187263
|
||||||
|
name=Transport: Naglfar
|
||||||
|
|
||||||
|
[597]
|
||||||
|
name_general=CraigTest
|
||||||
|
name=Craig Test
|
||||||
|
|
||||||
[598]
|
[598]
|
||||||
name_general=Sunwell5Man
|
name_general=Sunwell5Man
|
||||||
name=Sunwell Fix (Unused)
|
name=Sunwell Fix (Unused)
|
||||||
|
|
||||||
|
[599]
|
||||||
|
name_general=Ulduar70
|
||||||
|
name=Halls of Stone
|
||||||
|
|
||||||
|
[600]
|
||||||
|
name_general=DrakTheronKeep
|
||||||
|
name=Drak'Tharon Keep
|
||||||
|
|
||||||
|
[601]
|
||||||
|
name_general=Azjol_Uppercity
|
||||||
|
name=Azjol-Nerub
|
||||||
|
|
||||||
|
[602]
|
||||||
|
name_general=Ulduar80
|
||||||
|
name=Halls of Lightning
|
||||||
|
|
||||||
|
[603]
|
||||||
|
name_general=UlduarRaid
|
||||||
|
name=Ulduar
|
||||||
|
|
||||||
|
[604]
|
||||||
|
name_general=GunDrak
|
||||||
|
name=Gundrak
|
||||||
|
|
||||||
|
[605]
|
||||||
|
name_general=development_nonweighted
|
||||||
|
name=Development Land (non-weighted textures)
|
||||||
|
|
||||||
|
[606]
|
||||||
|
name_general=QA_DVD
|
||||||
|
name=QA and DVD
|
||||||
|
|
||||||
|
[607]
|
||||||
|
name_general=NorthrendBG
|
||||||
|
name=Strand of the Ancients
|
||||||
|
|
||||||
|
[608]
|
||||||
|
name_general=DalaranPrison
|
||||||
|
name=Violet Hold
|
||||||
|
|
||||||
|
[609]
|
||||||
|
name_general=DeathKnightStart
|
||||||
|
name=Ebon Hold
|
||||||
|
|
||||||
|
[610]
|
||||||
|
name_general=Transport_Tirisfal _Vengeance_Landing
|
||||||
|
name=Transport: Tirisfal to Vengeance Landing
|
||||||
|
|
||||||
|
[612]
|
||||||
|
name_general=Transport_Menethil_Valgarde
|
||||||
|
name=Transport: Menethil to Valgarde
|
||||||
|
|
||||||
|
[613]
|
||||||
|
name_general=Transport_Orgrimmar_Warsong_Hold
|
||||||
|
name=Transport: Orgrimmar to Warsong Hold
|
||||||
|
|
||||||
|
[614]
|
||||||
|
name_general=Transport_Stormwind_Valiance_Keep
|
||||||
|
name=Transport: Stormwind to Valiance Keep
|
||||||
|
|
||||||
|
[615]
|
||||||
|
name_general=ChamberOfAspectsBlack
|
||||||
|
name=The Obsidian Sanctum
|
||||||
|
|
||||||
|
[616]
|
||||||
|
name_general=NexusRaid
|
||||||
|
name=The Eye of Eternity
|
||||||
|
|
||||||
|
[617]
|
||||||
|
name_general=DalaranArena
|
||||||
|
name=Dalaran Sewers
|
||||||
|
|
||||||
|
[618]
|
||||||
|
name_general=OrgrimmarArena
|
||||||
|
name=The Ring of Valor
|
||||||
|
|
||||||
|
[619]
|
||||||
|
name_general=Azjol_LowerCity
|
||||||
|
name=Ahn'kahet: The Old Kingdom
|
||||||
|
|
||||||
|
[620]
|
||||||
|
name_general=Transport_Moa'ki_Unu'pe
|
||||||
|
name=Transport: Moa'ki to Unu'pe
|
||||||
|
|
||||||
|
[621]
|
||||||
|
name_general=Transport_Moa'ki_Kamagua
|
||||||
|
name=Transport: Moa'ki to Kamagua
|
||||||
|
|
||||||
|
[622]
|
||||||
|
name_general=Transport192241
|
||||||
|
name=Transport: Orgrim's Hammer
|
||||||
|
|
||||||
|
[623]
|
||||||
|
name_general=Transport192242
|
||||||
|
name=Transport: The Skybreaker
|
||||||
|
|
||||||
|
[624]
|
||||||
|
name_general=WintergraspRaid
|
||||||
|
name=Vault of Archavon
|
||||||
|
|
||||||
|
|||||||
@ -119,6 +119,22 @@ faction=7
|
|||||||
name_general=Skeleton
|
name_general=Skeleton
|
||||||
name=Skeleton
|
name=Skeleton
|
||||||
|
|
||||||
|
[16]
|
||||||
|
model_m=21685
|
||||||
|
model_f=21686
|
||||||
|
name_short=Vr
|
||||||
|
faction=7
|
||||||
|
name_general=Vrykul
|
||||||
|
name=Vrykul
|
||||||
|
|
||||||
|
[17]
|
||||||
|
model_m=21780
|
||||||
|
model_f=21781
|
||||||
|
name_short=Tu
|
||||||
|
faction=7
|
||||||
|
name_general=Tuskarr
|
||||||
|
name=Tuskarr
|
||||||
|
|
||||||
[18]
|
[18]
|
||||||
model_m=21963
|
model_m=21963
|
||||||
model_f=21964
|
model_f=21964
|
||||||
@ -127,3 +143,27 @@ faction=7
|
|||||||
name_general=ForestTroll
|
name_general=ForestTroll
|
||||||
name=Forest Troll
|
name=Forest Troll
|
||||||
|
|
||||||
|
[19]
|
||||||
|
model_m=26316
|
||||||
|
model_f=26317
|
||||||
|
name_short=Wt
|
||||||
|
faction=7
|
||||||
|
name_general=Taunka
|
||||||
|
name=Taunka
|
||||||
|
|
||||||
|
[20]
|
||||||
|
model_m=26871
|
||||||
|
model_f=26872
|
||||||
|
name_short=NS
|
||||||
|
faction=7
|
||||||
|
name_general=NorthrendSkeleton
|
||||||
|
name=Northrend Skeleton
|
||||||
|
|
||||||
|
[21]
|
||||||
|
model_m=26873
|
||||||
|
model_f=26874
|
||||||
|
name_short=It
|
||||||
|
faction=7
|
||||||
|
name_general=IceTroll
|
||||||
|
name=Ice Troll
|
||||||
|
|
||||||
|
|||||||
@ -556,7 +556,10 @@ for(u32 i=0; i < currentView.nSub;i++)//
|
|||||||
|
|
||||||
|
|
||||||
Device->getSceneManager()->getMeshManipulator()->flipSurfaces(AnimatedMesh); //Fix inverted surfaces after the rotation
|
Device->getSceneManager()->getMeshManipulator()->flipSurfaces(AnimatedMesh); //Fix inverted surfaces after the rotation
|
||||||
Device->getSceneManager()->getMeshManipulator()->recalculateNormals(AnimatedMesh,true);//just to be sure
|
|
||||||
|
// False.Genesis: commented out this problematic line.. was causing crashes for me, since 3.x client models
|
||||||
|
// SEEMS TO CRASH ONLY IN OPENGL-MODE ?! -- investigate!
|
||||||
|
//Device->getSceneManager()->getMeshManipulator()->recalculateNormals(AnimatedMesh,true);//just to be sure
|
||||||
|
|
||||||
AnimatedMesh->setInterpolationMode(scene::EIM_LINEAR);
|
AnimatedMesh->setInterpolationMode(scene::EIM_LINEAR);
|
||||||
|
|
||||||
|
|||||||
@ -134,7 +134,7 @@ uint32 SCPDatabase::GetFieldByStringValue(uint32 entry, char *val)
|
|||||||
{
|
{
|
||||||
for(uint32 row = 0; row < _rowcount; row++)
|
for(uint32 row = 0; row < _rowcount; row++)
|
||||||
if(!stricmp(GetStringByOffset(_intbuf[row * _fields_per_row + entry]), val))
|
if(!stricmp(GetStringByOffset(_intbuf[row * _fields_per_row + entry]), val))
|
||||||
return row;
|
return _indexes_reverse[row];
|
||||||
return SCP_INVALID_INT;
|
return SCP_INVALID_INT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ void MovementMgr::_BuildPacket(uint16 opcode)
|
|||||||
{
|
{
|
||||||
WorldPacket *wp = new WorldPacket(opcode,4+1+4+12); // it can be larger, if we are jumping, on transport or swimming
|
WorldPacket *wp = new WorldPacket(opcode,4+1+4+12); // it can be larger, if we are jumping, on transport or swimming
|
||||||
*wp << _moveFlags;
|
*wp << _moveFlags;
|
||||||
*wp << (uint8)0; // unk
|
*wp << (uint16)0; // unk
|
||||||
*wp << getMSTime();
|
*wp << getMSTime();
|
||||||
*wp << _mychar->GetPosition();
|
*wp << _mychar->GetPosition();
|
||||||
// TODO: transport not yet handled/done
|
// TODO: transport not yet handled/done
|
||||||
|
|||||||
@ -149,7 +149,7 @@ public:
|
|||||||
float _y;
|
float _y;
|
||||||
float _z;
|
float _z;
|
||||||
uint32 _guildId;
|
uint32 _guildId;
|
||||||
uint8 _flags;
|
uint32 _flags;
|
||||||
uint32 _petInfoId;
|
uint32 _petInfoId;
|
||||||
uint32 _petLevel;
|
uint32 _petLevel;
|
||||||
uint32 _petFamilyId;
|
uint32 _petFamilyId;
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "RealmSession.h"
|
#include "RealmSession.h"
|
||||||
#include "WorldSession.h"
|
#include "WorldSession.h"
|
||||||
|
#include "MemoryDataHolder.h"
|
||||||
|
|
||||||
struct OpcodeHandler
|
struct OpcodeHandler
|
||||||
{
|
{
|
||||||
@ -533,10 +534,13 @@ void WorldSession::_HandleAuthChallengeOpcode(WorldPacket& recvPacket)
|
|||||||
WorldPacket auth;
|
WorldPacket auth;
|
||||||
auth<<(uint32)(GetInstance()->GetConf()->clientbuild)<<unk<<acc<<unk<<clientseed_uint32;
|
auth<<(uint32)(GetInstance()->GetConf()->clientbuild)<<unk<<acc<<unk<<clientseed_uint32;
|
||||||
auth.append(digest.GetDigest(),20);
|
auth.append(digest.GetDigest(),20);
|
||||||
// recvPacket << real_size
|
auth << (uint32)0;
|
||||||
// recvPacket << ziped_UI_Plugins_Info
|
//uint8 *addon_info = MemoryDataHolder::GetFileBasic("data/packet/addon_info.bin");
|
||||||
// TODO: add addon data, simulate no addons.
|
//if(addon_info)
|
||||||
auth<<(uint32)0; // no addons? no idea, but seems to work. MaNGOS doesnt accept without this.
|
//{
|
||||||
|
// logdebug("Auth: Using custom addon info, %s", FilesizeFormat(
|
||||||
|
// auth.append(addon_info, 160);
|
||||||
|
|
||||||
auth.SetOpcode(CMSG_AUTH_SESSION);
|
auth.SetOpcode(CMSG_AUTH_SESSION);
|
||||||
|
|
||||||
SendWorldPacket(auth);
|
SendWorldPacket(auth);
|
||||||
@ -1178,9 +1182,8 @@ void WorldSession::_HandleTelePortAckOpcode(WorldPacket& recvPacket)
|
|||||||
logdetail("Got teleported, data: x: %f, y: %f, z: %f, o: %f, guid: "I64FMT, x, y, z, o, guid);
|
logdetail("Got teleported, data: x: %f, y: %f, z: %f, o: %f, guid: "I64FMT, x, y, z, o, guid);
|
||||||
|
|
||||||
// TODO: put this into a capsule class later, that autodetects movement flags etc.
|
// TODO: put this into a capsule class later, that autodetects movement flags etc.
|
||||||
WorldPacket response(MSG_MOVE_FALL_LAND,4+1+4+4+4+4+4+4);
|
WorldPacket response(MSG_MOVE_FALL_LAND,4+2+4+4+4+4+4+4);
|
||||||
response << uint32(0) << (uint8)0; // no flags; unk
|
response << uint32(0) << (uint16)0; // no flags; unk
|
||||||
response <<(uint32)getMSTime(); // time correct?
|
|
||||||
response << x << y << z << o << uint32(100); // simulate 100 msec fall time
|
response << x << y << z << o << uint32(100); // simulate 100 msec fall time
|
||||||
SendWorldPacket(response);
|
SendWorldPacket(response);
|
||||||
|
|
||||||
@ -1228,8 +1231,8 @@ void WorldSession::_HandleNewWorldOpcode(WorldPacket& recvPacket)
|
|||||||
SendWorldPacket(wp);
|
SendWorldPacket(wp);
|
||||||
|
|
||||||
// TODO: put this into a capsule class later, that autodetects movement flags etc.
|
// TODO: put this into a capsule class later, that autodetects movement flags etc.
|
||||||
WorldPacket response(MSG_MOVE_FALL_LAND,4+1+4+4+4+4+4+4);
|
WorldPacket response(MSG_MOVE_FALL_LAND,4+2+4+4+4+4+4+4);
|
||||||
response << uint32(0) << (uint8)0; // no flags; unk
|
response << uint32(0) << (uint16)0; // no flags; unk
|
||||||
response <<(uint32)getMSTime(); // time correct?
|
response <<(uint32)getMSTime(); // time correct?
|
||||||
response << x << y << z << o << uint32(100); // simulate 100 msec fall time
|
response << x << y << z << o << uint32(100); // simulate 100 msec fall time
|
||||||
SendWorldPacket(response);
|
SendWorldPacket(response);
|
||||||
|
|||||||
@ -185,6 +185,18 @@
|
|||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Client\MemoryDataHolder.cpp">
|
RelativePath=".\Client\MemoryDataHolder.cpp">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="TRUE">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
ExcludedFromBuild="TRUE">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Client\MemoryDataHolder.h">
|
RelativePath=".\Client\MemoryDataHolder.h">
|
||||||
|
|||||||
@ -14,6 +14,41 @@ inline void flipcc(uint8 *fcc)
|
|||||||
fcc[2]=t;
|
fcc[2]=t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MCAL_decompress(uint8 *inbuf, uint8 *outbuf)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
How the decompression works
|
||||||
|
|
||||||
|
* read a byte
|
||||||
|
* check for sign bit
|
||||||
|
* if set we are in fill mode else we are in copy mode
|
||||||
|
* take the 7 lesser bits of the first byte as a count indicator
|
||||||
|
o fill mode: read the next byte an fill it by count in resulting alpha map
|
||||||
|
o copy mode: read the next count bytes and copy them in the resulting alpha map
|
||||||
|
* if the alpha map is complete we are done otherwise start at 1. again
|
||||||
|
*/
|
||||||
|
// 21-10-2008 by Flow
|
||||||
|
uint32 offI = 0; //offset IN buffer
|
||||||
|
uint32 offO = 0; //offset OUT buffer
|
||||||
|
|
||||||
|
while( offO < 4096 )
|
||||||
|
{
|
||||||
|
// fill or copy mode
|
||||||
|
bool fill = inbuf[offI] & 0x80;
|
||||||
|
unsigned n = inbuf[offI] & 0x7F;
|
||||||
|
offI++;
|
||||||
|
for( unsigned k = 0; k < n; k++ )
|
||||||
|
{
|
||||||
|
outbuf[offO] = inbuf[offI];
|
||||||
|
offO++;
|
||||||
|
if( !fill )
|
||||||
|
offI++;
|
||||||
|
}
|
||||||
|
if( fill ) offI++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ADTFile::Load(std::string fn)
|
bool ADTFile::Load(std::string fn)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -185,6 +220,7 @@ bool ADTFile::LoadMem(ByteBuffer& buf)
|
|||||||
uint8 *mfcc = &_cc2[0];
|
uint8 *mfcc = &_cc2[0];
|
||||||
mfcc[4]=0;
|
mfcc[4]=0;
|
||||||
uint32 msize;
|
uint32 msize;
|
||||||
|
bool mcal_compressed = false;
|
||||||
while(buf.rpos()<buf.size())
|
while(buf.rpos()<buf.size())
|
||||||
{
|
{
|
||||||
buf.read(mfcc,4); flipcc(mfcc);
|
buf.read(mfcc,4); flipcc(mfcc);
|
||||||
@ -223,6 +259,8 @@ bool ADTFile::LoadMem(ByteBuffer& buf)
|
|||||||
{
|
{
|
||||||
_chunks[mcnkid].layer[i] = buf.read<MCLY_chunk>();
|
_chunks[mcnkid].layer[i] = buf.read<MCLY_chunk>();
|
||||||
}
|
}
|
||||||
|
if(_chunks[mcnkid].layer[i].flags & 0x200)
|
||||||
|
mcal_compressed = true;
|
||||||
}
|
}
|
||||||
else if(!strcmp((char*)mfcc,"MCSH"))
|
else if(!strcmp((char*)mfcc,"MCSH"))
|
||||||
{
|
{
|
||||||
@ -233,7 +271,23 @@ bool ADTFile::LoadMem(ByteBuffer& buf)
|
|||||||
// we can NOT use _chunks[mcnkid].hdr.nLayers here... so we use: (full block size - header size) / single block size
|
// we can NOT use _chunks[mcnkid].hdr.nLayers here... so we use: (full block size - header size) / single block size
|
||||||
for(uint32 i = 0; i < (_chunks[mcnkid].hdr.sizeAlpha - 8) / 2048; i++)
|
for(uint32 i = 0; i < (_chunks[mcnkid].hdr.sizeAlpha - 8) / 2048; i++)
|
||||||
{
|
{
|
||||||
buf.read((uint8*)(_chunks[mcnkid].alphamap[i]),2048);
|
uint8 alphamap[2048];
|
||||||
|
buf.read((uint8*)alphamap,2048);
|
||||||
|
if(mcal_compressed)
|
||||||
|
{
|
||||||
|
MCAL_decompress(alphamap,_chunks[mcnkid].alphamap[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(uint32 aly = 0; aly < 64; aly++)
|
||||||
|
{
|
||||||
|
for(uint32 alx = 0; alx < 32; alx++)
|
||||||
|
{
|
||||||
|
_chunks[mcnkid].alphamap[i][aly*64 + (alx*2)] = alphamap[aly*64 + alx] & 0xF0; // first 4 bits
|
||||||
|
_chunks[mcnkid].alphamap[i][aly*64 + (alx*2)+1] = alphamap[aly*64 + alx] & 0x0F; // second
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*else if(!strcmp((char*)mfcc,"MCLQ")) // MCLQ changed to MH2O chunk for whole ADT file
|
/*else if(!strcmp((char*)mfcc,"MCLQ")) // MCLQ changed to MH2O chunk for whole ADT file
|
||||||
|
|||||||
@ -200,7 +200,7 @@ struct ADTMapChunk
|
|||||||
MCLY_chunk layer[ADT_MAXLAYERS]; // can be less
|
MCLY_chunk layer[ADT_MAXLAYERS]; // can be less
|
||||||
uint32 nTextures;
|
uint32 nTextures;
|
||||||
uint8 shadowmap[512]; // 1 bit 64x64
|
uint8 shadowmap[512]; // 1 bit 64x64
|
||||||
uint8 alphamap[ADT_MAXLAYERS][2048]; // 4 bits, 64x64. max 4, 1 per layer
|
uint8 alphamap[ADT_MAXLAYERS][4096]; // 8 bits, 64x64. max 4, 1 per layer
|
||||||
bool haswater;
|
bool haswater;
|
||||||
float waterlevel;
|
float waterlevel;
|
||||||
LiquidVertex lqvertex[81];
|
LiquidVertex lqvertex[81];
|
||||||
|
|||||||
@ -55,6 +55,10 @@ void MapTile::ImportFromADT(ADTFile *adt)
|
|||||||
uint32 texoffs = adt->_chunks[ch].layer[ly].textureId;
|
uint32 texoffs = adt->_chunks[ch].layer[ly].textureId;
|
||||||
_chunks[ch].texlayer.push_back(std::string("data/texture/") + NormalizeFilename(std::string(adt->_textures[texoffs])).c_str());
|
_chunks[ch].texlayer.push_back(std::string("data/texture/") + NormalizeFilename(std::string(adt->_textures[texoffs])).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memcpy(_chunks[ch].alphamap, adt->_chunks[ch].alphamap, adt->_chunks[ch].hdr.sizeAlpha - 8);
|
||||||
|
|
||||||
|
/*
|
||||||
// extract alpha maps. in adt they are stored in 4-bit encoding, which makes 4096 entries in 64x32 values
|
// extract alpha maps. in adt they are stored in 4-bit encoding, which makes 4096 entries in 64x32 values
|
||||||
for(uint32 al = 0; al < (adt->_chunks[ch].hdr.sizeAlpha - 8) / 2048; al++) // see comment in ADTFile.cpp when loading MCAL chunk for explanation
|
for(uint32 al = 0; al < (adt->_chunks[ch].hdr.sizeAlpha - 8) / 2048; al++) // see comment in ADTFile.cpp when loading MCAL chunk for explanation
|
||||||
{
|
{
|
||||||
@ -67,6 +71,7 @@ void MapTile::ImportFromADT(ADTFile *adt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy over doodads and do some transformations
|
// copy over doodads and do some transformations
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user