refactor(Tools): restyle tools with astyle (#3465)

This commit is contained in:
Kargatum
2020-10-06 16:31:28 +07:00
committed by GitHub
parent be09e03756
commit b00a86f6ab
51 changed files with 1004 additions and 936 deletions

View File

@@ -16,7 +16,7 @@
char const* GetPlainName(char const* FileName)
{
const char * szTemp;
const char* szTemp;
if((szTemp = strrchr(FileName, '\\')) != nullptr)
FileName = szTemp + 1;
@@ -25,7 +25,7 @@ char const* GetPlainName(char const* FileName)
char* GetPlainName(char* FileName)
{
char * szTemp;
char* szTemp;
if((szTemp = strrchr(FileName, '\\')) != nullptr)
FileName = szTemp + 1;
@@ -34,11 +34,11 @@ char* GetPlainName(char* FileName)
void fixnamen(char* name, size_t len)
{
for (size_t i = 0; i < len-3; i++)
for (size_t i = 0; i < len - 3; i++)
{
if (i > 0 && name[i] >= 'A' && name[i] <= 'Z' && isalpha(name[i-1]))
if (i > 0 && name[i] >= 'A' && name[i] <= 'Z' && isalpha(name[i - 1]))
name[i] |= 0x20;
else if ((i == 0 || !isalpha(name[i-1])) && name[i]>='a' && name[i]<='z')
else if ((i == 0 || !isalpha(name[i - 1])) && name[i] >= 'a' && name[i] <= 'z')
name[i] &= ~0x20;
}
//extension in lowercase
@@ -48,10 +48,10 @@ void fixnamen(char* name, size_t len)
void fixname2(char* name, size_t len)
{
for (size_t i=0; i<len-3; i++)
for (size_t i = 0; i < len - 3; i++)
{
if(name[i] == ' ')
name[i] = '_';
name[i] = '_';
}
}
@@ -77,12 +77,12 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY)
string xMap;
string yMap;
Adtfilename.erase(Adtfilename.find(".adt"),4);
Adtfilename.erase(Adtfilename.find(".adt"), 4);
string TempMapNumber;
TempMapNumber = Adtfilename.substr(Adtfilename.length()-6,6);
xMap = TempMapNumber.substr(TempMapNumber.find("_")+1,(TempMapNumber.find_last_of("_")-1) - (TempMapNumber.find("_")));
yMap = TempMapNumber.substr(TempMapNumber.find_last_of("_")+1,(TempMapNumber.length()) - (TempMapNumber.find_last_of("_")));
Adtfilename.erase((Adtfilename.length()-xMap.length()-yMap.length()-2), (xMap.length()+yMap.length()+2));
TempMapNumber = Adtfilename.substr(Adtfilename.length() - 6, 6);
xMap = TempMapNumber.substr(TempMapNumber.find("_") + 1, (TempMapNumber.find_last_of("_") - 1) - (TempMapNumber.find("_")));
yMap = TempMapNumber.substr(TempMapNumber.find_last_of("_") + 1, (TempMapNumber.length()) - (TempMapNumber.find_last_of("_")));
Adtfilename.erase((Adtfilename.length() - xMap.length() - yMap.length() - 2), (xMap.length() + yMap.length() + 2));
//string AdtMapNumber = xMap + ' ' + yMap + ' ' + GetPlainName((char*)Adtfilename.c_str());
//printf("Processing map %s...\n", AdtMapNumber.c_str());
//printf("MapNumber = %s\n", TempMapNumber.c_str());
@@ -90,7 +90,7 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY)
//printf("yMap = %s\n", yMap.c_str());
std::string dirname = std::string(szWorkDirWmo) + "/dir_bin";
FILE *dirfile;
FILE* dirfile;
dirfile = fopen(dirname.c_str(), "ab");
if(!dirfile)
{
@@ -101,54 +101,54 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY)
while (!ADT.isEof())
{
char fourcc[5];
ADT.read(&fourcc,4);
ADT.read(&fourcc, 4);
ADT.read(&size, 4);
flipcc(fourcc);
fourcc[4] = 0;
size_t nextpos = ADT.getPos() + size;
if (!strcmp(fourcc,"MCIN"))
if (!strcmp(fourcc, "MCIN"))
{
}
else if (!strcmp(fourcc,"MTEX"))
else if (!strcmp(fourcc, "MTEX"))
{
}
else if (!strcmp(fourcc,"MMDX"))
else if (!strcmp(fourcc, "MMDX"))
{
if (size)
{
char *buf = new char[size];
char* buf = new char[size];
ADT.read(buf, size);
char *p=buf;
int t=0;
char* p = buf;
int t = 0;
ModelInstansName = new string[size];
while (p<buf+size)
while (p < buf + size)
{
fixnamen(p,strlen(p));
fixnamen(p, strlen(p));
char* s = GetPlainName(p);
fixname2(s,strlen(s));
fixname2(s, strlen(s));
ModelInstansName[t++] = s;
string path(p);
ExtractSingleModel(path);
p = p+strlen(p)+1;
p = p + strlen(p) + 1;
}
delete[] buf;
}
}
else if (!strcmp(fourcc,"MWMO"))
else if (!strcmp(fourcc, "MWMO"))
{
if (size)
{
char* buf = new char[size];
ADT.read(buf, size);
char* p=buf;
char* p = buf;
int q = 0;
WmoInstansName = new string[size];
while (p<buf+size)
while (p < buf + size)
{
char* s = GetPlainName(p);
fixnamen(s, strlen(s));
@@ -160,30 +160,30 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY)
}
}
//======================
else if (!strcmp(fourcc,"MDDF"))
else if (!strcmp(fourcc, "MDDF"))
{
if (size)
{
nMDX = (int)size / 36;
for (int i=0; i<nMDX; ++i)
for (int i = 0; i < nMDX; ++i)
{
uint32 id;
ADT.read(&id, 4);
ModelInstance inst(ADT,ModelInstansName[id].c_str(), map_num, tileX, tileY, dirfile);
ModelInstance inst(ADT, ModelInstansName[id].c_str(), map_num, tileX, tileY, dirfile);
}
delete[] ModelInstansName;
}
}
else if (!strcmp(fourcc,"MODF"))
else if (!strcmp(fourcc, "MODF"))
{
if (size)
{
nWMO = (int)size / 64;
for (int i=0; i<nWMO; ++i)
for (int i = 0; i < nWMO; ++i)
{
uint32 id;
ADT.read(&id, 4);
WMOInstance inst(ADT,WmoInstansName[id].c_str(), map_num, tileX, tileY, dirfile);
WMOInstance inst(ADT, WmoInstansName[id].c_str(), map_num, tileX, tileY, dirfile);
}
delete[] WmoInstansName;
}

View File

@@ -22,7 +22,7 @@ typedef struct
float x;
float y;
float z;
}svec;
} svec;
struct vec
{
@@ -38,9 +38,9 @@ struct triangle
typedef struct
{
float v9[16*8+1][16*8+1];
float v8[16*8][16*8];
}Cell;
float v9[16 * 8 + 1][16 * 8 + 1];
float v8[16 * 8][16 * 8];
} Cell;
typedef struct
{
@@ -50,12 +50,12 @@ typedef struct
//Liquid *lq;
float waterlevel[9][9];
uint8 flag;
}chunk;
} chunk;
typedef struct
{
chunk ch[16][16];
}mcell;
} mcell;
struct MapChunkHeader
{
@@ -113,19 +113,19 @@ public:
//void LoadMapChunks();
//uint32 wmo_count;
/*
const mcell& Getmcell() const
{
return Mcell;
}
*/
/*
const mcell& Getmcell() const
{
return Mcell;
}
*/
};
const char * GetPlainName(const char * FileName);
char * GetPlainName(char * FileName);
char * GetExtension(char * FileName);
void fixnamen(char *name, size_t len);
void fixname2(char *name, size_t len);
const char* GetPlainName(const char* FileName);
char* GetPlainName(char* FileName);
char* GetExtension(char* FileName);
void fixnamen(char* name, size_t len);
void fixname2(char* name, size_t len);
//void fixMapNamen(char *name, size_t len);
#endif

View File

@@ -27,11 +27,11 @@ bool DBCFile::open()
return false;
unsigned char header[4];
unsigned int na,nb,es,ss;
unsigned int na, nb, es, ss;
f.read(header,4); // File Header
f.read(header, 4); // File Header
if (header[0]!='W' || header[1]!='D' || header[2]!='B' || header[3] != 'C')
if (header[0] != 'W' || header[1] != 'D' || header[2] != 'B' || header[3] != 'C')
{
f.close();
data = nullptr;
@@ -41,21 +41,21 @@ bool DBCFile::open()
//assert(header[0]=='W' && header[1]=='D' && header[2]=='B' && header[3] == 'C');
f.read(&na,4); // Number of records
f.read(&nb,4); // Number of fields
f.read(&es,4); // Size of a record
f.read(&ss,4); // String size
f.read(&na, 4); // Number of records
f.read(&nb, 4); // Number of fields
f.read(&es, 4); // Size of a record
f.read(&ss, 4); // String size
recordSize = es;
recordCount = na;
fieldCount = nb;
stringSize = ss;
//assert(fieldCount*4 == recordSize);
assert(fieldCount*4 >= recordSize);
assert(fieldCount * 4 >= recordSize);
data = new unsigned char[recordSize*recordCount+stringSize];
stringTable = data + recordSize*recordCount;
f.read(data,recordSize*recordCount+stringSize);
data = new unsigned char[recordSize * recordCount + stringSize];
stringTable = data + recordSize * recordCount;
f.read(data, recordSize * recordCount + stringSize);
f.close();
return true;
}
@@ -68,7 +68,7 @@ DBCFile::~DBCFile()
DBCFile::Record DBCFile::getRecord(size_t id)
{
assert(data);
return Record(*this, data + id*recordSize);
return Record(*this, data + id * recordSize);
}
DBCFile::Iterator DBCFile::begin()

View File

@@ -13,7 +13,7 @@
class DBCFile
{
public:
DBCFile(const std::string &filename);
DBCFile(const std::string& filename);
~DBCFile();
// Open database. It must be openened before it can be used.
@@ -25,11 +25,11 @@ public:
class Exception
{
public:
Exception(const std::string &message): message(message)
Exception(const std::string& message): message(message)
{ }
virtual ~Exception()
{ }
const std::string &getMessage() {return message;}
const std::string& getMessage() {return message;}
private:
std::string message;
};
@@ -56,24 +56,24 @@ public:
float getFloat(size_t field) const
{
assert(field < file.fieldCount);
return *reinterpret_cast<float*>(offset+field*4);
return *reinterpret_cast<float*>(offset + field * 4);
}
unsigned int getUInt(size_t field) const
{
assert(field < file.fieldCount);
return *reinterpret_cast<unsigned int*>(offset+(field*4));
return *reinterpret_cast<unsigned int*>(offset + (field * 4));
}
int getInt(size_t field) const
{
assert(field < file.fieldCount);
return *reinterpret_cast<int*>(offset+field*4);
return *reinterpret_cast<int*>(offset + field * 4);
}
unsigned char getByte(size_t ofs) const
{
assert(ofs < file.recordSize);
return *reinterpret_cast<unsigned char*>(offset+ofs);
return *reinterpret_cast<unsigned char*>(offset + ofs);
}
const char *getString(size_t field) const
const char* getString(size_t field) const
{
assert(field < file.fieldCount);
size_t stringOffset = getUInt(field);
@@ -83,9 +83,9 @@ public:
return reinterpret_cast<char*>(file.stringTable + stringOffset);
}
private:
Record(DBCFile &file, unsigned char *offset): file(file), offset(offset) {}
DBCFile &file;
unsigned char *offset;
Record(DBCFile& file, unsigned char* offset): file(file), offset(offset) {}
DBCFile& file;
unsigned char* offset;
friend class DBCFile;
friend class Iterator;
@@ -95,24 +95,26 @@ public:
class Iterator
{
public:
Iterator(DBCFile &file, unsigned char *offset):
Iterator(DBCFile& file, unsigned char* offset):
record(file, offset) {}
/// Advance (prefix only)
Iterator & operator++() {
Iterator& operator++()
{
record.offset += record.file.recordSize;
return *this;
}
/// Return address of current instance
Record const & operator*() const { return record; }
const Record* operator->() const {
Record const& operator*() const { return record; }
const Record* operator->() const
{
return &record;
}
/// Comparison
bool operator==(const Iterator &b) const
bool operator==(const Iterator& b) const
{
return record.offset == b.record.offset;
}
bool operator!=(const Iterator &b) const
bool operator!=(const Iterator& b) const
{
return record.offset != b.record.offset;
}
@@ -136,8 +138,8 @@ private:
size_t recordCount;
size_t fieldCount;
size_t stringSize;
unsigned char *data;
unsigned char *stringTable;
unsigned char* data;
unsigned char* stringTable;
};
#endif

View File

@@ -14,14 +14,14 @@
bool ExtractSingleModel(std::string& fname)
{
char * name = GetPlainName((char*)fname.c_str());
char * ext = GetExtension(name);
char* name = GetPlainName((char*)fname.c_str());
char* ext = GetExtension(name);
// < 3.1.0 ADT MMDX section store filename.mdx filenames for corresponded .m2 file
if (!strcmp(ext, ".mdx"))
{
// replace .mdx -> .m2
fname.erase(fname.length()-2,2);
fname.erase(fname.length() - 2, 2);
fname.append("2");
}
// >= 3.1.0 ADT MMDX section store filename.m2 filenames for corresponded .m2 file
@@ -71,10 +71,10 @@ void ExtractGameobjectModels()
continue;
fixnamen((char*)path.c_str(), path.size());
char * name = GetPlainName((char*)path.c_str());
char* name = GetPlainName((char*)path.c_str());
fixname2(name, strlen(name));
char * ch_ext = GetExtension(name);
char* ch_ext = GetExtension(name);
if (!ch_ext)
continue;

View File

@@ -42,7 +42,8 @@ typedef uint8_t uint8;
//
struct file_MVER
{
union{
union
{
uint32 fcc;
char fcc_txt[4];
};
@@ -50,15 +51,16 @@ struct file_MVER
uint32 ver;
};
class FileLoader{
uint8 *data;
class FileLoader
{
uint8* data;
uint32 data_size;
public:
virtual bool prepareLoadedData();
uint8 *GetData() {return data;}
uint8* GetData() {return data;}
uint32 GetDataSize() {return data_size;}
file_MVER *version;
file_MVER* version;
FileLoader();
~FileLoader();
bool loadFile(std::string const& filename, bool log = true);

View File

@@ -12,7 +12,7 @@
#include <algorithm>
#include <cstdio>
Model::Model(std::string &filename) : filename(filename), vertices(0), indices(0)
Model::Model(std::string& filename) : filename(filename), vertices(0), indices(0)
{
memset(&header, 0, sizeof(header));
}
@@ -37,13 +37,13 @@ bool Model::open()
f.seek(0);
f.seekRelative(header.ofsBoundingVertices);
vertices = new Vec3D[header.nBoundingVertices];
f.read(vertices,header.nBoundingVertices*12);
for (uint32 i=0; i<header.nBoundingVertices; i++)
f.read(vertices, header.nBoundingVertices * 12);
for (uint32 i = 0; i < header.nBoundingVertices; i++)
vertices[i] = fixCoordSystem(vertices[i]);
f.seek(0);
f.seekRelative(header.ofsBoundingTriangles);
indices = new uint16[header.nBoundingTriangles];
f.read(indices,header.nBoundingTriangles*2);
f.read(indices, header.nBoundingTriangles * 2);
f.close();
}
else
@@ -55,32 +55,32 @@ bool Model::open()
return true;
}
bool Model::ConvertToVMAPModel(const char * outfilename)
bool Model::ConvertToVMAPModel(const char* outfilename)
{
int N[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
FILE* output=fopen(outfilename, "wb");
int N[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
FILE* output = fopen(outfilename, "wb");
if (!output)
{
printf("Can't create the output file '%s'\n",outfilename);
printf("Can't create the output file '%s'\n", outfilename);
return false;
}
fwrite(szRawVMAPMagic, 8, 1, output);
uint32 nVertices = header.nBoundingVertices;
fwrite(&nVertices, sizeof(int), 1, output);
uint32 nofgroups = 1;
fwrite(&nofgroups,sizeof(uint32), 1, output);
fwrite(N,4*3,1,output);// rootwmoid, flags, groupid
fwrite(N,sizeof(float),3*2,output);//bbox, only needed for WMO currently
fwrite(N,4,1,output);// liquidflags
fwrite("GRP ",4,1,output);
fwrite(&nofgroups, sizeof(uint32), 1, output);
fwrite(N, 4 * 3, 1, output); // rootwmoid, flags, groupid
fwrite(N, sizeof(float), 3 * 2, output); //bbox, only needed for WMO currently
fwrite(N, 4, 1, output); // liquidflags
fwrite("GRP ", 4, 1, output);
uint32 branches = 1;
int wsize;
wsize = sizeof(branches) + sizeof(uint32) * branches;
fwrite(&wsize, sizeof(int), 1, output);
fwrite(&branches,sizeof(branches), 1, output);
fwrite(&branches, sizeof(branches), 1, output);
uint32 nIndexes = header.nBoundingTriangles;
fwrite(&nIndexes,sizeof(uint32), 1, output);
fwrite("INDX",4, 1, output);
fwrite(&nIndexes, sizeof(uint32), 1, output);
fwrite("INDX", 4, 1, output);
wsize = sizeof(uint32) + sizeof(unsigned short) * nIndexes;
fwrite(&wsize, sizeof(int), 1, output);
fwrite(&nIndexes, sizeof(uint32), 1, output);
@@ -101,7 +101,7 @@ bool Model::ConvertToVMAPModel(const char * outfilename)
wsize = sizeof(int) + sizeof(float) * 3 * nVertices;
fwrite(&wsize, sizeof(int), 1, output);
fwrite(&nVertices, sizeof(int), 1, output);
if (nVertices >0)
if (nVertices > 0)
{
for (uint32 vpos = 0; vpos < nVertices; ++vpos)
{
@@ -110,7 +110,7 @@ bool Model::ConvertToVMAPModel(const char * outfilename)
vertices[vpos].z = tmp;
}
fwrite(vertices, sizeof(float)*3, nVertices, output);
fwrite(vertices, sizeof(float) * 3, nVertices, output);
}
fclose(output);
@@ -129,7 +129,7 @@ Vec3D fixCoordSystem2(Vec3D v)
return Vec3D(v.x, v.z, v.y);
}
ModelInstance::ModelInstance(MPQFile& f, char const* ModelInstName, uint32 mapID, uint32 tileX, uint32 tileY, FILE *pDirfile)
ModelInstance::ModelInstance(MPQFile& f, char const* ModelInstName, uint32 mapID, uint32 tileX, uint32 tileY, FILE* pDirfile)
{
float ff[3];
f.read(&id, 4);
@@ -175,7 +175,7 @@ ModelInstance::ModelInstance(MPQFile& f, char const* ModelInstName, uint32 mapID
fwrite(&pos, sizeof(float), 3, pDirfile);
fwrite(&rot, sizeof(float), 3, pDirfile);
fwrite(&sc, sizeof(float), 1, pDirfile);
uint32 nlen=strlen(ModelInstName);
uint32 nlen = strlen(ModelInstName);
fwrite(&nlen, sizeof(uint32), 1, pDirfile);
fwrite(ModelInstName, sizeof(char), nlen, pDirfile);

View File

@@ -14,8 +14,10 @@ MPQArchive::MPQArchive(const char* filename)
{
int result = libmpq__archive_open(&mpq_a, filename, -1);
printf("Opening %s\n", filename);
if(result) {
switch(result) {
if(result)
{
switch(result)
{
case LIBMPQ_ERROR_OPEN :
printf("Error opening archive '%s': Does file really exist?\n", filename);
break;
@@ -52,9 +54,9 @@ MPQFile::MPQFile(const char* filename):
pointer(0),
size(0)
{
for(ArchiveSet::iterator i=gOpenArchives.begin(); i!=gOpenArchives.end();++i)
for(ArchiveSet::iterator i = gOpenArchives.begin(); i != gOpenArchives.end(); ++i)
{
mpq_archive *mpq_a = (*i)->mpq_a;
mpq_archive* mpq_a = (*i)->mpq_a;
uint32 filenum;
if(libmpq__file_number(mpq_a, filename, &filenum)) continue;
@@ -62,7 +64,8 @@ MPQFile::MPQFile(const char* filename):
libmpq__file_unpacked_size(mpq_a, filenum, &size);
// HACK: in patch.mpq some files don't want to open and give 1 for filesize
if (size<=1) {
if (size <= 1)
{
// printf("info: file %s has size %d; considered dummy file.\n", filename, size);
eof = true;
buffer = 0;
@@ -85,7 +88,8 @@ size_t MPQFile::read(void* dest, size_t bytes)
if (eof) return 0;
size_t rpos = pointer + bytes;
if (rpos > size_t(size)) {
if (rpos > size_t(size))
{
bytes = size - pointer;
eof = true;
}

View File

@@ -21,28 +21,30 @@ class MPQArchive
{
public:
mpq_archive_s *mpq_a;
mpq_archive_s* mpq_a;
MPQArchive(const char* filename);
void close();
void GetFileListTo(vector<string>& filelist) {
void GetFileListTo(vector<string>& filelist)
{
uint32_t filenum;
if(libmpq__file_number(mpq_a, "(listfile)", &filenum)) return;
libmpq__off_t size, transferred;
libmpq__file_unpacked_size(mpq_a, filenum, &size);
char *buffer = new char[size + 1];
char* buffer = new char[size + 1];
buffer[size] = '\0';
libmpq__file_read(mpq_a, filenum, (unsigned char*)buffer, size, &transferred);
char seps[] = "\n";
char *token;
char* token;
token = strtok( buffer, seps );
uint32 counter = 0;
while ((token != nullptr) && (counter < size)) {
while ((token != nullptr) && (counter < size))
{
//cout << token << endl;
token[strlen(token) - 1] = 0;
string s = token;
@@ -60,8 +62,8 @@ class MPQFile
{
//MPQHANDLE handle;
bool eof;
char *buffer;
libmpq__off_t pointer,size;
char* buffer;
libmpq__off_t pointer, size;
// disable copying
MPQFile(const MPQFile& /*f*/) {}
@@ -81,15 +83,15 @@ public:
void close();
};
inline void flipcc(char *fcc)
inline void flipcc(char* fcc)
{
char t;
t=fcc[0];
fcc[0]=fcc[3];
fcc[3]=t;
t=fcc[1];
fcc[1]=fcc[2];
fcc[2]=t;
t = fcc[0];
fcc[0] = fcc[3];
fcc[3] = t;
t = fcc[1];
fcc[1] = fcc[2];
fcc[2] = t;
}
#endif

View File

@@ -13,39 +13,40 @@
class Vec3D
{
public:
float x,y,z;
float x, y, z;
Vec3D(float x0 = 0.0f, float y0 = 0.0f, float z0 = 0.0f) : x(x0), y(y0), z(z0) {}
Vec3D(const Vec3D& v) : x(v.x), y(v.y), z(v.z) {}
Vec3D& operator= (const Vec3D &v) {
Vec3D& operator= (const Vec3D& v)
{
x = v.x;
y = v.y;
z = v.z;
return *this;
}
Vec3D operator+ (const Vec3D &v) const
Vec3D operator+ (const Vec3D& v) const
{
Vec3D r(x+v.x,y+v.y,z+v.z);
Vec3D r(x + v.x, y + v.y, z + v.z);
return r;
}
Vec3D operator- (const Vec3D &v) const
Vec3D operator- (const Vec3D& v) const
{
Vec3D r(x-v.x,y-v.y,z-v.z);
Vec3D r(x - v.x, y - v.y, z - v.z);
return r;
}
float operator* (const Vec3D &v) const
float operator* (const Vec3D& v) const
{
return x*v.x + y*v.y + z*v.z;
return x * v.x + y * v.y + z * v.z;
}
Vec3D operator* (float d) const
{
Vec3D r(x*d,y*d,z*d);
Vec3D r(x * d, y * d, z * d);
return r;
}
@@ -54,13 +55,13 @@ public:
return v * d;
}
Vec3D operator% (const Vec3D &v) const
Vec3D operator% (const Vec3D& v) const
{
Vec3D r(y*v.z-z*v.y, z*v.x-x*v.z, x*v.y-y*v.x);
Vec3D r(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x);
return r;
}
Vec3D& operator+= (const Vec3D &v)
Vec3D& operator+= (const Vec3D& v)
{
x += v.x;
y += v.y;
@@ -68,7 +69,7 @@ public:
return *this;
}
Vec3D& operator-= (const Vec3D &v)
Vec3D& operator-= (const Vec3D& v)
{
x -= v.x;
y -= v.y;
@@ -86,17 +87,17 @@ public:
float lengthSquared() const
{
return x*x+y*y+z*z;
return x * x + y * y + z * z;
}
float length() const
{
return sqrt(x*x+y*y+z*z);
return sqrt(x * x + y * y + z * z);
}
Vec3D& normalize()
{
this->operator*= (1.0f/length());
this->operator*= (1.0f / length());
return *this;
}
@@ -119,7 +120,7 @@ public:
return out;
}
operator float*()
operator float* ()
{
return (float*)this;
}
@@ -129,38 +130,39 @@ public:
class Vec2D
{
public:
float x,y;
float x, y;
Vec2D(float x0 = 0.0f, float y0 = 0.0f) : x(x0), y(y0) {}
Vec2D(const Vec2D& v) : x(v.x), y(v.y) {}
Vec2D& operator= (const Vec2D &v) {
Vec2D& operator= (const Vec2D& v)
{
x = v.x;
y = v.y;
return *this;
}
Vec2D operator+ (const Vec2D &v) const
Vec2D operator+ (const Vec2D& v) const
{
Vec2D r(x+v.x,y+v.y);
Vec2D r(x + v.x, y + v.y);
return r;
}
Vec2D operator- (const Vec2D &v) const
Vec2D operator- (const Vec2D& v) const
{
Vec2D r(x-v.x,y-v.y);
Vec2D r(x - v.x, y - v.y);
return r;
}
float operator* (const Vec2D &v) const
float operator* (const Vec2D& v) const
{
return x*v.x + y*v.y;
return x * v.x + y * v.y;
}
Vec2D operator* (float d) const
{
Vec2D r(x*d,y*d);
Vec2D r(x * d, y * d);
return r;
}
@@ -169,14 +171,14 @@ public:
return v * d;
}
Vec2D& operator+= (const Vec2D &v)
Vec2D& operator+= (const Vec2D& v)
{
x += v.x;
y += v.y;
return *this;
}
Vec2D& operator-= (const Vec2D &v)
Vec2D& operator-= (const Vec2D& v)
{
x -= v.x;
y -= v.y;
@@ -192,17 +194,17 @@ public:
float lengthSquared() const
{
return x*x+y*y;
return x * x + y * y;
}
float length() const
{
return sqrt(x*x+y*y);
return sqrt(x * x + y * y);
}
Vec2D& normalize()
{
this->operator*= (1.0f/length());
this->operator*= (1.0f / length());
return *this;
}
@@ -220,17 +222,17 @@ public:
return in;
}
operator float*()
operator float* ()
{
return (float*)this;
}
};
inline void rotate(float x0, float y0, float *x, float *y, float angle)
inline void rotate(float x0, float y0, float* x, float* y, float angle)
{
float xa = *x - x0, ya = *y - y0;
*x = xa*cosf(angle) - ya*sinf(angle) + x0;
*y = xa*sinf(angle) + ya*cosf(angle) + y0;
*x = xa * cosf(angle) - ya * sinf(angle) + x0;
*y = xa * sinf(angle) + ya * cosf(angle) + y0;
}
#endif

View File

@@ -12,12 +12,12 @@
#include <errno.h>
#ifdef WIN32
#include <Windows.h>
#include <sys/stat.h>
#include <direct.h>
#define mkdir _mkdir
#include <Windows.h>
#include <sys/stat.h>
#include <direct.h>
#define mkdir _mkdir
#else
#include <sys/stat.h>
#include <sys/stat.h>
#endif
#undef min
@@ -50,13 +50,13 @@ typedef struct
{
char name[64];
unsigned int id;
}map_id;
} map_id;
map_id * map_ids;
uint16 *LiqType = 0;
map_id* map_ids;
uint16* LiqType = 0;
uint32 map_count;
char output_path[128]=".";
char input_path[1024]=".";
char output_path[128] = ".";
char input_path[1024] = ".";
bool hasInputPathParam = false;
bool preciseVectorData = false;
@@ -82,7 +82,7 @@ void strToLower(char* str)
{
while(*str)
{
*str=tolower(*str);
*str = tolower(*str);
++str;
}
}
@@ -138,9 +138,9 @@ bool ExtractSingleWmo(std::string& fname)
// Copy files from archive
char szLocalFile[1024];
const char * plain_name = GetPlainName(fname.c_str());
const char* plain_name = GetPlainName(fname.c_str());
sprintf(szLocalFile, "%s/%s", szWorkDirWmo, plain_name);
fixnamen(szLocalFile,strlen(szLocalFile));
fixnamen(szLocalFile, strlen(szLocalFile));
if (FileExists(szLocalFile))
return true;
@@ -171,7 +171,7 @@ bool ExtractSingleWmo(std::string& fname)
printf("Couldn't open RootWmo!!!\n");
return true;
}
FILE *output = fopen(szLocalFile,"wb");
FILE* output = fopen(szLocalFile, "wb");
if(!output)
{
printf("couldn't open %s for writing!\n", szLocalFile);
@@ -180,13 +180,13 @@ bool ExtractSingleWmo(std::string& fname)
froot.ConvertToVMAPRootWmo(output);
int Wmo_nVertices = 0;
//printf("root has %d groups\n", froot->nGroups);
if (froot.nGroups !=0)
if (froot.nGroups != 0)
{
for (uint32 i = 0; i < froot.nGroups; ++i)
{
char temp[1024];
strncpy(temp, fname.c_str(), 1024);
temp[fname.length()-4] = 0;
temp[fname.length() - 4] = 0;
char groupFileName[1024];
int ret = snprintf(groupFileName, 1024, "%s_%03u.wmo", temp, i);
if (ret < 0)
@@ -210,7 +210,7 @@ bool ExtractSingleWmo(std::string& fname)
}
fseek(output, 8, SEEK_SET); // store the correct no of vertices
fwrite(&Wmo_nVertices,sizeof(int),1,output);
fwrite(&Wmo_nVertices, sizeof(int), 1, output);
fclose(output);
// Delete the extracted file in the case of an error
@@ -224,19 +224,19 @@ void ParsMapFiles()
char fn[512];
//char id_filename[64];
char id[10];
for (unsigned int i=0; i<map_count; ++i)
for (unsigned int i = 0; i < map_count; ++i)
{
sprintf(id,"%03u",map_ids[i].id);
sprintf(fn,"World\\Maps\\%s\\%s.wdt", map_ids[i].name, map_ids[i].name);
WDTFile WDT(fn,map_ids[i].name);
sprintf(id, "%03u", map_ids[i].id);
sprintf(fn, "World\\Maps\\%s\\%s.wdt", map_ids[i].name, map_ids[i].name);
WDTFile WDT(fn, map_ids[i].name);
if(WDT.init(id, map_ids[i].id))
{
printf("Processing Map %u\n[", map_ids[i].id);
for (int x=0; x<64; ++x)
for (int x = 0; x < 64; ++x)
{
for (int y=0; y<64; ++y)
for (int y = 0; y < 64; ++y)
{
if (ADTFile *ADT = WDT.GetMap(x,y))
if (ADTFile* ADT = WDT.GetMap(x, y))
{
//sprintf(id_filename,"%02u %02u %03u",x,y,map_ids[i].id);//!!!!!!!!!
ADT->init(map_ids[i].id, x, y);
@@ -254,9 +254,9 @@ void ParsMapFiles()
void getGamePath()
{
#ifdef _WIN32
strcpy(input_path,"Data\\");
strcpy(input_path, "Data\\");
#else
strcpy(input_path,"Data/");
strcpy(input_path, "Data/");
#endif
}
@@ -381,7 +381,7 @@ bool fillArchiveNameVector(std::vector<std::string>& pArchiveNames)
return true;
}
bool processArgv(int argc, char ** argv, const char *versionString)
bool processArgv(int argc, char** argv, const char* versionString)
{
bool result = true;
hasInputPathParam = false;
@@ -389,16 +389,16 @@ bool processArgv(int argc, char ** argv, const char *versionString)
for(int i = 1; i < argc; ++i)
{
if(strcmp("-s",argv[i]) == 0)
if(strcmp("-s", argv[i]) == 0)
{
preciseVectorData = false;
}
else if(strcmp("-d",argv[i]) == 0)
else if(strcmp("-d", argv[i]) == 0)
{
if((i+1)<argc)
if((i + 1) < argc)
{
hasInputPathParam = true;
strcpy(input_path, argv[i+1]);
strcpy(input_path, argv[i + 1]);
if (input_path[strlen(input_path) - 1] != '\\' && input_path[strlen(input_path) - 1] != '/')
strcat(input_path, "/");
++i;
@@ -408,11 +408,11 @@ bool processArgv(int argc, char ** argv, const char *versionString)
result = false;
}
}
else if(strcmp("-?",argv[1]) == 0)
else if(strcmp("-?", argv[1]) == 0)
{
result = false;
}
else if(strcmp("-l",argv[i]) == 0)
else if(strcmp("-l", argv[i]) == 0)
{
preciseVectorData = true;
}
@@ -424,7 +424,7 @@ bool processArgv(int argc, char ** argv, const char *versionString)
}
if(!result)
{
printf("Extract %s.\n",versionString);
printf("Extract %s.\n", versionString);
printf("%s [-?][-s][-l][-d <path>]\n", argv[0]);
printf(" -s : (default) small size (data size optimization), ~500MB less vmap data.\n");
printf(" -l : large size, ~500MB more vmap data. (might contain more details)\n");
@@ -444,10 +444,10 @@ bool processArgv(int argc, char ** argv, const char *versionString)
// Arg2 - Listfile name
//
int main(int argc, char ** argv)
int main(int argc, char** argv)
{
bool success=true;
const char *versionString = "V4.00 2012_02";
bool success = true;
const char* versionString = "V4.00 2012_02";
// Use command line arguments, when some
if (!processArgv(argc, argv, versionString))
@@ -468,29 +468,29 @@ int main(int argc, char ** argv)
}
}
printf("Extract %s. Beginning work ....\n",versionString);
printf("Extract %s. Beginning work ....\n", versionString);
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Create the working directory
if (mkdir(szWorkDirWmo
#if defined(__linux__) || defined(__APPLE__)
, 0711
, 0711
#endif
))
success = (errno == EEXIST);
))
success = (errno == EEXIST);
// prepare archive name list
std::vector<std::string> archiveNames;
fillArchiveNameVector(archiveNames);
for (size_t i=0; i < archiveNames.size(); ++i)
for (size_t i = 0; i < archiveNames.size(); ++i)
{
MPQArchive *archive = new MPQArchive(archiveNames[i].c_str());
MPQArchive* archive = new MPQArchive(archiveNames[i].c_str());
if (gOpenArchives.empty() || gOpenArchives.front() != archive)
delete archive;
}
if (gOpenArchives.empty())
{
printf("FATAL ERROR: None MPQ archive found by path '%s'. Use -d option with proper path.\n",input_path);
printf("FATAL ERROR: None MPQ archive found by path '%s'. Use -d option with proper path.\n", input_path);
return 1;
}
ReadLiquidTypeTableDBC();
@@ -503,20 +503,20 @@ int main(int argc, char ** argv)
//map.dbc
if (success)
{
DBCFile * dbc = new DBCFile("DBFilesClient\\Map.dbc");
DBCFile* dbc = new DBCFile("DBFilesClient\\Map.dbc");
if (!dbc->open())
{
delete dbc;
printf("FATAL ERROR: Map.dbc not found in data file.\n");
return 1;
}
map_count=dbc->getRecordCount ();
map_ids=new map_id[map_count];
for (unsigned int x=0;x<map_count;++x)
map_count = dbc->getRecordCount ();
map_ids = new map_id[map_count];
for (unsigned int x = 0; x < map_count; ++x)
{
map_ids[x].id=dbc->getRecord (x).getUInt(0);
strcpy(map_ids[x].name,dbc->getRecord(x).getString(1));
printf("Map - %s\n",map_ids[x].name);
map_ids[x].id = dbc->getRecord (x).getUInt(0);
strcpy(map_ids[x].name, dbc->getRecord(x).getString(1));
printf("Map - %s\n", map_ids[x].name);
}
@@ -531,11 +531,11 @@ int main(int argc, char ** argv)
printf("\n");
if (!success)
{
printf("ERROR: Extract %s. Work NOT complete.\n Precise vector data=%d.\nPress any key.\n",versionString, preciseVectorData);
printf("ERROR: Extract %s. Work NOT complete.\n Precise vector data=%d.\nPress any key.\n", versionString, preciseVectorData);
getchar();
}
printf("Extract %s. Work complete. No errors.\n",versionString);
printf("Extract %s. Work complete. No errors.\n", versionString);
delete [] LiqType;
return 0;
}

View File

@@ -12,14 +12,14 @@
enum ModelFlags
{
MOD_M2 = 1,
MOD_WORLDSPAWN = 1<<1,
MOD_HAS_BOUND = 1<<2
MOD_WORLDSPAWN = 1 << 1,
MOD_HAS_BOUND = 1 << 2
};
extern const char * szWorkDirWmo;
extern const char * szRawVMAPMagic; // vmap magic string for extracted raw vmap data
extern const char* szWorkDirWmo;
extern const char* szRawVMAPMagic; // vmap magic string for extracted raw vmap data
bool FileExists(const char * file);
bool FileExists(const char* file);
void strToLower(char* str);
bool ExtractSingleWmo(std::string& fname);

View File

@@ -9,9 +9,9 @@
#include "adtfile.h"
#include <cstdio>
char * wdtGetPlainName(char * FileName)
char* wdtGetPlainName(char* FileName)
{
char * szTemp;
char* szTemp;
if((szTemp = strrchr(FileName, '\\')) != nullptr)
FileName = szTemp + 1;
@@ -20,7 +20,7 @@ char * wdtGetPlainName(char * FileName)
WDTFile::WDTFile(char* file_name, char* file_name1) : WDT(file_name), gWmoInstansName(nullptr), gnWMO(0)
{
filename.append(file_name1,strlen(file_name1));
filename.append(file_name1, strlen(file_name1));
}
bool WDTFile::init(char* /*map_id*/, unsigned int mapID)
@@ -35,7 +35,7 @@ bool WDTFile::init(char* /*map_id*/, unsigned int mapID)
uint32 size;
std::string dirname = std::string(szWorkDirWmo) + "/dir_bin";
FILE *dirfile;
FILE* dirfile;
dirfile = fopen(dirname.c_str(), "ab");
if(!dirfile)
{
@@ -45,7 +45,7 @@ bool WDTFile::init(char* /*map_id*/, unsigned int mapID)
while (!WDT.isEof())
{
WDT.read(fourcc,4);
WDT.read(fourcc, 4);
WDT.read(&size, 4);
flipcc(fourcc);
@@ -53,24 +53,24 @@ bool WDTFile::init(char* /*map_id*/, unsigned int mapID)
size_t nextpos = WDT.getPos() + size;
if (!strcmp(fourcc,"MAIN"))
if (!strcmp(fourcc, "MAIN"))
{
}
if (!strcmp(fourcc,"MWMO"))
if (!strcmp(fourcc, "MWMO"))
{
// global map objects
if (size)
{
char *buf = new char[size];
char* buf = new char[size];
WDT.read(buf, size);
char *p=buf;
char* p = buf;
int q = 0;
gWmoInstansName = new string[size];
while (p < buf + size)
{
char* s=wdtGetPlainName(p);
fixnamen(s,strlen(s));
p=p+strlen(p)+1;
char* s = wdtGetPlainName(p);
fixnamen(s, strlen(s));
p = p + strlen(p) + 1;
gWmoInstansName[q++] = s;
}
delete[] buf;
@@ -87,7 +87,7 @@ bool WDTFile::init(char* /*map_id*/, unsigned int mapID)
{
int id;
WDT.read(&id, 4);
WMOInstance inst(WDT,gWmoInstansName[id].c_str(), mapID, 65, 65, dirfile);
WMOInstance inst(WDT, gWmoInstansName[id].c_str(), mapID, 65, 65, dirfile);
}
delete[] gWmoInstansName;
@@ -108,11 +108,11 @@ WDTFile::~WDTFile(void)
ADTFile* WDTFile::GetMap(int x, int z)
{
if(!(x>=0 && z >= 0 && x<64 && z<64))
if(!(x >= 0 && z >= 0 && x < 64 && z < 64))
return nullptr;
char name[512];
sprintf(name,"World\\Maps\\%s\\%s_%d_%d.adt", filename.c_str(), filename.c_str(), x, z);
sprintf(name, "World\\Maps\\%s\\%s_%d_%d.adt", filename.c_str(), filename.c_str(), x, z);
return new ADTFile(name);
}

View File

@@ -17,11 +17,11 @@
#include "mpq_libmpq04.h"
using namespace std;
extern uint16 *LiqType;
extern uint16* LiqType;
WMORoot::WMORoot(std::string &filename)
WMORoot::WMORoot(std::string& filename)
: filename(filename), col(0), nTextures(0), nGroups(0), nP(0), nLights(0),
nModels(0), nDoodads(0), nDoodadSets(0), RootWMOID(0), liquidType(0)
nModels(0), nDoodads(0), nDoodadSets(0), RootWMOID(0), liquidType(0)
{
memset(bbcorn1, 0, sizeof(bbcorn1));
memset(bbcorn2, 0, sizeof(bbcorn2));
@@ -41,7 +41,7 @@ bool WMORoot::open()
while (!f.isEof())
{
f.read(fourcc,4);
f.read(fourcc, 4);
f.read(&size, 4);
flipcc(fourcc);
@@ -49,7 +49,7 @@ bool WMORoot::open()
size_t nextpos = f.getPos() + size;
if (!strcmp(fourcc,"MOHD")) // header
if (!strcmp(fourcc, "MOHD")) // header
{
f.read(&nTextures, 4);
f.read(&nGroups, 4);
@@ -118,13 +118,13 @@ bool WMORoot::ConvertToVMAPRootWmo(FILE* pOutfile)
fwrite(szRawVMAPMagic, 1, 8, pOutfile);
unsigned int nVectors = 0;
fwrite(&nVectors,sizeof(nVectors), 1, pOutfile); // will be filled later
fwrite(&nVectors, sizeof(nVectors), 1, pOutfile); // will be filled later
fwrite(&nGroups, 4, 1, pOutfile);
fwrite(&RootWMOID, 4, 1, pOutfile);
return true;
}
WMOGroup::WMOGroup(const std::string &filename) :
WMOGroup::WMOGroup(const std::string& filename) :
filename(filename), MOPY(0), MOVI(0), MoviEx(0), MOVT(0), MOBA(0), MobaEx(0),
hlq(0), LiquEx(0), LiquBytes(0), groupName(0), descGroupName(0), mogpFlags(0),
moprIdx(0), moprNItems(0), nBatchA(0), nBatchB(0), nBatchC(0), fogIdx(0),
@@ -147,10 +147,10 @@ bool WMOGroup::open()
char fourcc[5];
while (!f.isEof())
{
f.read(fourcc,4);
f.read(fourcc, 4);
f.read(&size, 4);
flipcc(fourcc);
if (!strcmp(fourcc,"MOGP"))//Fix sizeoff = Data size.
if (!strcmp(fourcc, "MOGP")) //Fix sizeoff = Data size.
{
size = 68;
}
@@ -159,7 +159,7 @@ bool WMOGroup::open()
LiquEx_size = 0;
liquflags = 0;
if (!strcmp(fourcc,"MOGP"))//header
if (!strcmp(fourcc, "MOGP")) //header
{
f.read(&groupName, 4);
f.read(&descGroupName, 4);
@@ -173,40 +173,40 @@ bool WMOGroup::open()
f.read(&nBatchC, 4);
f.read(&fogIdx, 4);
f.read(&liquidType, 4);
f.read(&groupWMOID,4);
f.read(&groupWMOID, 4);
}
else if (!strcmp(fourcc,"MOPY"))
else if (!strcmp(fourcc, "MOPY"))
{
MOPY = new char[size];
mopy_size = size;
nTriangles = (int)size / 2;
f.read(MOPY, size);
}
else if (!strcmp(fourcc,"MOVI"))
else if (!strcmp(fourcc, "MOVI"))
{
MOVI = new uint16[size/2];
MOVI = new uint16[size / 2];
f.read(MOVI, size);
}
else if (!strcmp(fourcc,"MOVT"))
else if (!strcmp(fourcc, "MOVT"))
{
MOVT = new float[size/4];
MOVT = new float[size / 4];
f.read(MOVT, size);
nVertices = (int)size / 12;
}
else if (!strcmp(fourcc,"MONR"))
else if (!strcmp(fourcc, "MONR"))
{
}
else if (!strcmp(fourcc,"MOTV"))
else if (!strcmp(fourcc, "MOTV"))
{
}
else if (!strcmp(fourcc,"MOBA"))
else if (!strcmp(fourcc, "MOBA"))
{
MOBA = new uint16[size/2];
moba_size = size/2;
MOBA = new uint16[size / 2];
moba_size = size / 2;
f.read(MOBA, size);
}
else if (!strcmp(fourcc,"MLIQ"))
else if (!strcmp(fourcc, "MLIQ"))
{
liquflags |= 1;
hlq = new WMOLiquidHeader();
@@ -231,36 +231,36 @@ bool WMOGroup::open()
return true;
}
int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool preciseVectorData)
int WMOGroup::ConvertToVMAPGroupWmo(FILE* output, WMORoot* rootWMO, bool preciseVectorData)
{
fwrite(&mogpFlags,sizeof(uint32),1,output);
fwrite(&groupWMOID,sizeof(uint32),1,output);
fwrite(&mogpFlags, sizeof(uint32), 1, output);
fwrite(&groupWMOID, sizeof(uint32), 1, output);
// group bound
fwrite(bbcorn1, sizeof(float), 3, output);
fwrite(bbcorn2, sizeof(float), 3, output);
fwrite(&liquflags,sizeof(uint32),1,output);
fwrite(&liquflags, sizeof(uint32), 1, output);
int nColTriangles = 0;
if (preciseVectorData)
{
char GRP[] = "GRP ";
fwrite(GRP,1,4,output);
fwrite(GRP, 1, 4, output);
int k = 0;
int moba_batch = moba_size/12;
MobaEx = new int[moba_batch*4];
for(int i=8; i<moba_size; i+=12)
int moba_batch = moba_size / 12;
MobaEx = new int[moba_batch * 4];
for(int i = 8; i < moba_size; i += 12)
{
MobaEx[k++] = MOBA[i];
}
int moba_size_grp = moba_batch*4+4;
fwrite(&moba_size_grp,4,1,output);
fwrite(&moba_batch,4,1,output);
fwrite(MobaEx,4,k,output);
int moba_size_grp = moba_batch * 4 + 4;
fwrite(&moba_size_grp, 4, 1, output);
fwrite(&moba_batch, 4, 1, output);
fwrite(MobaEx, 4, k, output);
delete [] MobaEx;
uint32 nIdexes = nTriangles * 3;
if(fwrite("INDX",4, 1, output) != 1)
if(fwrite("INDX", 4, 1, output) != 1)
{
printf("Error while writing file nbraches ID");
exit(0);
@@ -276,7 +276,7 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
printf("Error while writing file nIndexes");
exit(0);
}
if(nIdexes >0)
if(nIdexes > 0)
{
if(fwrite(MOVI, sizeof(unsigned short), nIdexes, output) != nIdexes)
{
@@ -285,7 +285,7 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
}
}
if(fwrite("VERT",4, 1, output) != 1)
if(fwrite("VERT", 4, 1, output) != 1)
{
printf("Error while writing file nbraches ID");
exit(0);
@@ -301,9 +301,9 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
printf("Error while writing file nVertices");
exit(0);
}
if(nVertices >0)
if(nVertices > 0)
{
if(fwrite(MOVT, sizeof(float)*3, nVertices, output) != nVertices)
if(fwrite(MOVT, sizeof(float) * 3, nVertices, output) != nVertices)
{
printf("Error while writing file vectors");
exit(0);
@@ -315,27 +315,27 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
else
{
char GRP[] = "GRP ";
fwrite(GRP,1,4,output);
fwrite(GRP, 1, 4, output);
int k = 0;
int moba_batch = moba_size/12;
MobaEx = new int[moba_batch*4];
for(int i=8; i<moba_size; i+=12)
int moba_batch = moba_size / 12;
MobaEx = new int[moba_batch * 4];
for(int i = 8; i < moba_size; i += 12)
{
MobaEx[k++] = MOBA[i];
}
int moba_size_grp = moba_batch*4+4;
fwrite(&moba_size_grp,4,1,output);
fwrite(&moba_batch,4,1,output);
fwrite(MobaEx,4,k,output);
int moba_size_grp = moba_batch * 4 + 4;
fwrite(&moba_size_grp, 4, 1, output);
fwrite(&moba_batch, 4, 1, output);
fwrite(MobaEx, 4, k, output);
delete [] MobaEx;
//-------INDX------------------------------------
//-------MOPY--------
MoviEx = new uint16[nTriangles*3]; // "worst case" size...
int *IndexRenum = new int[nVertices];
memset(IndexRenum, 0xFF, nVertices*sizeof(int));
for (int i=0; i<nTriangles; ++i)
MoviEx = new uint16[nTriangles * 3]; // "worst case" size...
int* IndexRenum = new int[nVertices];
memset(IndexRenum, 0xFF, nVertices * sizeof(int));
for (int i = 0; i < nTriangles; ++i)
{
// Skip no collision triangles
bool isRenderFace = (MOPY[2 * i] & WMO_MATERIAL_RENDER) && !(MOPY[2 * i] & WMO_MATERIAL_DETAIL);
@@ -343,17 +343,17 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
if (!isCollision)
continue;
// Use this triangle
for (int j=0; j<3; ++j)
for (int j = 0; j < 3; ++j)
{
IndexRenum[MOVI[3*i + j]] = 1;
MoviEx[3*nColTriangles + j] = MOVI[3*i + j];
IndexRenum[MOVI[3 * i + j]] = 1;
MoviEx[3 * nColTriangles + j] = MOVI[3 * i + j];
}
++nColTriangles;
}
// assign new vertex index numbers
int nColVertices = 0;
for (uint32 i=0; i<nVertices; ++i)
for (uint32 i = 0; i < nVertices; ++i)
{
if (IndexRenum[i] == 1)
{
@@ -363,26 +363,26 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
}
// translate triangle indices to new numbers
for (int i=0; i<3*nColTriangles; ++i)
for (int i = 0; i < 3 * nColTriangles; ++i)
{
assert(MoviEx[i] < nVertices);
MoviEx[i] = IndexRenum[MoviEx[i]];
}
// write triangle indices
int INDX[] = {0x58444E49, nColTriangles*6+4, nColTriangles*3};
fwrite(INDX,4,3,output);
fwrite(MoviEx,2,nColTriangles*3,output);
int INDX[] = {0x58444E49, nColTriangles * 6 + 4, nColTriangles * 3};
fwrite(INDX, 4, 3, output);
fwrite(MoviEx, 2, nColTriangles * 3, output);
// write vertices
int VERT[] = {0x54524556, nColVertices*3*static_cast<int>(sizeof(float))+4, nColVertices};// "VERT"
int check = 3*nColVertices;
fwrite(VERT,4,3,output);
for (uint32 i=0; i<nVertices; ++i)
int VERT[] = {0x54524556, nColVertices * 3 * static_cast<int>(sizeof(float)) + 4, nColVertices}; // "VERT"
int check = 3 * nColVertices;
fwrite(VERT, 4, 3, output);
for (uint32 i = 0; i < nVertices; ++i)
if(IndexRenum[i] >= 0)
check -= fwrite(MOVT+3*i, sizeof(float), 3, output);
check -= fwrite(MOVT + 3 * i, sizeof(float), 3, output);
assert(check==0);
assert(check == 0);
delete [] MoviEx;
delete [] IndexRenum;
@@ -391,7 +391,7 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
//------LIQU------------------------
if (LiquEx_size != 0)
{
int LIQU_h[] = {0x5551494C, static_cast<int>(sizeof(WMOLiquidHeader) + LiquEx_size) + hlq->xtiles*hlq->ytiles};// "LIQU"
int LIQU_h[] = {0x5551494C, static_cast<int>(sizeof(WMOLiquidHeader) + LiquEx_size) + hlq->xtiles* hlq->ytiles}; // "LIQU"
fwrite(LIQU_h, 4, 2, output);
// according to WoW.Dev Wiki:
@@ -452,10 +452,10 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE *output, WMORoot *rootWMO, bool precise
fwrite(hlq, sizeof(WMOLiquidHeader), 1, output);
// only need height values, the other values are unknown anyway
for (uint32 i = 0; i<LiquEx_size/sizeof(WMOLiquidVert); ++i)
for (uint32 i = 0; i < LiquEx_size / sizeof(WMOLiquidVert); ++i)
fwrite(&LiquEx[i].height, sizeof(float), 1, output);
// todo: compress to bit field
fwrite(LiquBytes, 1, hlq->xtiles*hlq->ytiles, output);
fwrite(LiquBytes, 1, hlq->xtiles * hlq->ytiles, output);
}
return nColTriangles;
@@ -477,25 +477,25 @@ WMOInstance::WMOInstance(MPQFile& f, char const* WmoInstName, uint32 mapID, uint
{
float ff[3];
f.read(&id, 4);
f.read(ff,12);
pos = Vec3D(ff[0],ff[1],ff[2]);
f.read(ff,12);
rot = Vec3D(ff[0],ff[1],ff[2]);
f.read(ff,12);
pos2 = Vec3D(ff[0],ff[1],ff[2]);
f.read(ff,12);
pos3 = Vec3D(ff[0],ff[1],ff[2]);
f.read(&d2,4);
f.read(ff, 12);
pos = Vec3D(ff[0], ff[1], ff[2]);
f.read(ff, 12);
rot = Vec3D(ff[0], ff[1], ff[2]);
f.read(ff, 12);
pos2 = Vec3D(ff[0], ff[1], ff[2]);
f.read(ff, 12);
pos3 = Vec3D(ff[0], ff[1], ff[2]);
f.read(&d2, 4);
uint16 trash,adtId;
f.read(&adtId,2);
f.read(&trash,2);
uint16 trash, adtId;
f.read(&adtId, 2);
f.read(&trash, 2);
//-----------add_in _dir_file----------------
char tempname[512];
sprintf(tempname, "%s/%s", szWorkDirWmo, WmoInstName);
FILE *input;
FILE* input;
input = fopen(tempname, "r+b");
if(!input)
@@ -512,13 +512,13 @@ WMOInstance::WMOInstance(MPQFile& f, char const* WmoInstName, uint32 mapID, uint
if (count != 1 || nVertices == 0)
return;
float x,z;
float x, z;
x = pos.x;
z = pos.z;
if(x==0 && z == 0)
if(x == 0 && z == 0)
{
pos.x = 533.33333f*32;
pos.z = 533.33333f*32;
pos.x = 533.33333f * 32;
pos.z = 533.33333f * 32;
}
pos = fixCoords(pos);
pos2 = fixCoords(pos2);
@@ -539,7 +539,7 @@ WMOInstance::WMOInstance(MPQFile& f, char const* WmoInstName, uint32 mapID, uint
fwrite(&scale, sizeof(float), 1, pDirfile);
fwrite(&pos2, sizeof(float), 3, pDirfile);
fwrite(&pos3, sizeof(float), 3, pDirfile);
uint32 nlen=strlen(WmoInstName);
uint32 nlen = strlen(WmoInstName);
fwrite(&nlen, sizeof(uint32), 1, pDirfile);
fwrite(WmoInstName, sizeof(char), nlen, pDirfile);

View File

@@ -32,7 +32,7 @@ class WMOManager;
class MPQFile;
/* for whatever reason a certain company just can't stick to one coordinate system... */
static inline Vec3D fixCoords(const Vec3D &v){ return Vec3D(v.z, v.x, v.y); }
static inline Vec3D fixCoords(const Vec3D& v) { return Vec3D(v.z, v.x, v.y); }
class WMORoot
{
@@ -118,7 +118,7 @@ public:
Vec3D pos2, pos3, rot;
uint32 indx, id, d2, d3;
WMOInstance(MPQFile&f , char const* WmoInstName, uint32 mapID, uint32 tileX, uint32 tileY, FILE* pDirfile);
WMOInstance(MPQFile& f, char const* WmoInstName, uint32 mapID, uint32 tileX, uint32 tileY, FILE* pDirfile);
static void reset();
};