Compare commits

..

No commits in common. "365aac8cfae4046da27bce20b3e7fb3396157188" and "b80a11093ae6212f172ac51350ef969a7ac2a9c0" have entirely different histories.

150 changed files with 555 additions and 1323 deletions

View File

@ -13,9 +13,9 @@ FORMS += $$files($$PWD/*.ui)
RESOURCES += ../data/data.qrc
LIBS += \
#-L$$PWD/../third_party/devil_sdk/lib/ -lDevIL -lILU -lILUT \
#-L$$PWD/../third_party/zlib/lib/ -lzlib \
#-L$$PWD/../third_party/xbox_sdk/lib -lxcompress64 \
-L$$PWD/../third_party/devil_sdk/lib/ -lDevIL -lILU -lILUT \
-L$$PWD/../third_party/zlib/lib/ -lzlib \
-L$$PWD/../third_party/xbox_sdk/lib -lxcompress64 \
-L$$OUT_PWD/../libs/ -lcore \
-L$$OUT_PWD/../libs/ -lxassets\
-L$$OUT_PWD/../libs/ -lcompression \
@ -27,9 +27,9 @@ LIBS += \
-L$$OUT_PWD/../libs/ -lzonefile
INCLUDEPATH += \
#$$PWD/../third_party/devil_sdk/include/ \
#$$PWD/../third_party/zlib/include \
#$$PWD/../third_party/xbox_sdk/include \
$$PWD/../third_party/devil_sdk/include/ \
$$PWD/../third_party/zlib/include \
$$PWD/../third_party/xbox_sdk/include \
$$PWD/../libs/core \
$$PWD/../libs/compression \
$$PWD/../libs/encryption \
@ -41,9 +41,9 @@ INCLUDEPATH += \
$$PWD/../libs/zonefile
DEPENDPATH += \
#$$PWD/../third_party/devil_sdk/include/ \
#$$PWD/../third_party/zlib/include \
#$$PWD/../third_party/xbox_sdk/include \
$$PWD/../third_party/devil_sdk/include/ \
$$PWD/../third_party/zlib/include \
$$PWD/../third_party/xbox_sdk/include \
$$PWD/../libs/core \
$$PWD/../libs/compression \
$$PWD/../libs/encryption \

View File

@ -1,5 +1,4 @@
#include "mainwindow.h"
#include "qtimer.h"
#include "ui_mainwindow.h"
#include "aboutdialog.h"
@ -11,7 +10,9 @@
#include "materialviewer.h"
#include "preferenceeditor.h"
#include "reportissuedialog.h"
#include "rumblefileviewer.h"
#include "rumblegraphviewer.h"
#include "soundviewer.h"
#include "stringtableviewer.h"
#include "techsetviewer.h"
#include "fastfile_factory.h"
@ -23,11 +24,12 @@
#include "ipak_structs.h"
#include "iwiviewer.h"
#include "localstringviewer.h"
#include "imagewidget.h"
#include "zonefileviewer.h"
#include "techsetviewer.h"
#include "logmanager.h"
#include <QtMath>
#include <qmath.h>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow) {
@ -35,8 +37,6 @@ MainWindow::MainWindow(QWidget *parent)
setAcceptDrops(true);
XAsset::SetDebug(true);
mTypeMap = QMap<QString, int>();
mTypeOrder = QStringList();
mRawFileMap = QMap<QString, QString>();
@ -541,21 +541,6 @@ bool MainWindow::OpenFastFile(const QString aFastFilePath) {
return true;
}
bool MainWindow::OpenFastFile(const QByteArray& aFastFileData, const QString aFastFilePath) {
const QString fastFileStem = aFastFilePath.section("/", -1, -1);
if (mTreeWidget->HasFastFile(fastFileStem)) {
LogManager::instance().addError("Can't add duplicate file!");
return false;
}
FastFile* fastFile = FastFileFactory::Create(aFastFileData);
fastFile->SetStem(fastFileStem);
mTreeWidget->AddFastFile(fastFile);
// Open zone file after decompressing ff and writing
return true;
}
/*
OpenFastFile()
@ -565,11 +550,18 @@ bool MainWindow::OpenFastFile(const QByteArray& aFastFileData, const QString aFa
bool MainWindow::OpenFastFile() {
// Open file dialog to steam apps
const QString steamPath = "C:/Program Files (x86)/Steam/steamapps/common/Call of Duty World at War/zone/english/";
QFileDialog::getOpenFileContent(tr("Fast File (*.ff);;All Files (*.*)"), [this](const QString &fileName, const QByteArray &data){
OpenFastFile(data, fileName);
});
const QString fastFilePath = QFileDialog::getOpenFileName(this, "Open Fast File", steamPath, "Fast File (*.ff);;All Files (*.*)");
if (fastFilePath.isNull()) {
// User pressed cancel
return false;
} else if (!QFile::exists(fastFilePath)) {
QMessageBox::warning(this, "Warning!", QString("%1 does not exist!.").arg(fastFilePath));
return false;
}
if (!OpenFastFile(fastFilePath)) {
qDebug() << "Failed to open Fast file!";
return false;
}
return true;
}

View File

@ -15,6 +15,7 @@
#include <QPlainTextEdit>
#include <QMimeData>
#include <QProgressBar>
#include <windows.h>
QT_BEGIN_NAMESPACE
namespace Ui {
@ -33,7 +34,6 @@ public:
private slots:
bool OpenFastFile(const QString aFastFilePath);
bool OpenFastFile(const QByteArray& aFastFileData, const QString aFastFilePath);
bool OpenFastFile();
bool OpenZoneFile(const QString aZoneFilePath, bool fromFF = false);

View File

@ -20,6 +20,7 @@
<file>icons/Icon_Editor.png</file>
<file>icons/Icon_Views.png</file>
<file>icons/Icon_Tree.png</file>
<file>icons/Icon_Copy.png</file>
<file>icons/Icon_Cut.png</file>
<file>icons/Icon_Find.png</file>
<file>icons/Icon_NewFile.png</file>

View File

@ -1,8 +1,8 @@
#include "compression.h"
//#include "minilzo.h"
//#define XBOXAPI __declspec(dllimport)
//#include "xcompress.h"
#define XBOXAPI __declspec(dllimport)
#include "xcompress.h"
#include <QLibrary>
#include <QDebug>
@ -11,63 +11,61 @@
QByteArray Compression::CompressXMem(const QByteArray &data)
{
// XMEMCODEC_PARAMETERS_LZX lzxParams = {};
// lzxParams.Flags = 0;
// lzxParams.WindowSize = 0x20000;
// lzxParams.CompressionPartitionSize = 0x80000;
XMEMCODEC_PARAMETERS_LZX lzxParams = {};
lzxParams.Flags = 0;
lzxParams.WindowSize = 0x20000;
lzxParams.CompressionPartitionSize = 0x80000;
// XMEMCOMPRESSION_CONTEXT ctx = nullptr;
// if (FAILED(XMemCreateCompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
// return QByteArray();
XMEMCOMPRESSION_CONTEXT ctx = nullptr;
if (FAILED(XMemCreateCompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
return QByteArray();
// SIZE_T estimatedSize = data.size() + XCOMPRESS_LZX_BLOCK_GROWTH_SIZE_MAX;
// QByteArray output(static_cast<int>(estimatedSize), 0);
// SIZE_T actualSize = estimatedSize;
SIZE_T estimatedSize = data.size() + XCOMPRESS_LZX_BLOCK_GROWTH_SIZE_MAX;
QByteArray output(static_cast<int>(estimatedSize), 0);
SIZE_T actualSize = estimatedSize;
// HRESULT hr = XMemCompress(ctx, output.data(), &actualSize, data.constData(), data.size());
// XMemDestroyCompressionContext(ctx);
HRESULT hr = XMemCompress(ctx, output.data(), &actualSize, data.constData(), data.size());
XMemDestroyCompressionContext(ctx);
// if (FAILED(hr))
// return QByteArray();
if (FAILED(hr))
return QByteArray();
// output.resize(static_cast<int>(actualSize));
// return output;
return QByteArray();
output.resize(static_cast<int>(actualSize));
return output;
}
QByteArray Compression::DecompressXMem(const QByteArray &data, int flags, int windowSize, int partSize)
{
// if (data.isEmpty())
// return {};
if (data.isEmpty())
return {};
// XMEMCODEC_PARAMETERS_LZX lzxParams = {};
// lzxParams.Flags = flags;
// lzxParams.WindowSize = windowSize;
// lzxParams.CompressionPartitionSize = partSize;
XMEMCODEC_PARAMETERS_LZX lzxParams = {};
lzxParams.Flags = flags;
lzxParams.WindowSize = windowSize;
lzxParams.CompressionPartitionSize = partSize;
// XMEMDECOMPRESSION_CONTEXT ctx = nullptr;
// if (FAILED(XMemCreateDecompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
// return {};
XMEMDECOMPRESSION_CONTEXT ctx = nullptr;
if (FAILED(XMemCreateDecompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
return {};
// // Allocate large enough buffer for decompression (16 MB is a safe upper bound)
// const SIZE_T kMaxOutSize = 16 * 1024 * 1024;
// QByteArray output(static_cast<int>(kMaxOutSize), Qt::Uninitialized);
// SIZE_T actualSize = kMaxOutSize;
// Allocate large enough buffer for decompression (16 MB is a safe upper bound)
const SIZE_T kMaxOutSize = 16 * 1024 * 1024;
QByteArray output(static_cast<int>(kMaxOutSize), Qt::Uninitialized);
SIZE_T actualSize = kMaxOutSize;
// HRESULT hr = XMemDecompress(ctx,
// output.data(), &actualSize,
// data.constData(), data.size() + 16);
HRESULT hr = XMemDecompress(ctx,
output.data(), &actualSize,
data.constData(), data.size() + 16);
// XMemDestroyDecompressionContext(ctx);
XMemDestroyDecompressionContext(ctx);
// if (FAILED(hr)) {
// qWarning() << "XMemDecompress failed with HRESULT:" << hr;
// return {};
// }
if (FAILED(hr)) {
qWarning() << "XMemDecompress failed with HRESULT:" << hr;
return {};
}
// output.resize(static_cast<int>(actualSize));
// return output;
return QByteArray();
output.resize(static_cast<int>(actualSize));
return output;
}
quint32 Compression::CalculateAdler32Checksum(const QByteArray &data) {

View File

@ -3,7 +3,7 @@
#include "QtZlib/zlib.h"
//#include <windows.h>
#include <windows.h>
#include <QtGlobal>
#include <stddef.h>
#include <QByteArray>

View File

@ -105,7 +105,7 @@ extern "C" {
# define LZO_INT_MAX 9223372036854775807LL
# define LZO_INT_MIN (-1LL - LZO_INT_MAX)
# elif (LZO_ABI_IP32L64) /* MIPS R5900 */
typedef quint32 lzo_uint;
typedef unsigned int lzo_uint;
typedef int lzo_int;
# define LZO_SIZEOF_LZO_INT LZO_SIZEOF_INT
# define LZO_TYPEOF_LZO_INT LZO_TYPEOF_INT

View File

@ -2847,7 +2847,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
# define LZO_TYPEOF_LZO_INT16E_T LZO_TYPEOF_LONG
#elif (LZO_SIZEOF_INT == 2) && !(LZO_CFG_PREFER_TYPEOF_ACC_INT16E_T == LZO_TYPEOF_SHORT)
# define lzo_int16e_t int
# define lzo_uint16e_t quint32
# define lzo_uint16e_t unsigned int
# define LZO_TYPEOF_LZO_INT16E_T LZO_TYPEOF_INT
#elif (LZO_SIZEOF_SHORT == 2)
# define lzo_int16e_t short int
@ -2856,14 +2856,14 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
#elif 1 && !(LZO_CFG_TYPE_NO_MODE_HI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM)
# if !(LZO_LANG_ASSEMBLER)
typedef int lzo_int16e_hi_t__ __attribute__((__mode__(__HI__)));
typedef quint32 lzo_uint16e_hi_t__ __attribute__((__mode__(__HI__)));
typedef unsigned int lzo_uint16e_hi_t__ __attribute__((__mode__(__HI__)));
# endif
# define lzo_int16e_t lzo_int16e_hi_t__
# define lzo_uint16e_t lzo_uint16e_hi_t__
# define LZO_TYPEOF_LZO_INT16E_T LZO_TYPEOF___MODE_HI
#elif (LZO_SIZEOF___INT16 == 2)
# define lzo_int16e_t __int16
# define lzo_uint16e_t quint32
# define lzo_uint16e_t unsigned __int16
# define LZO_TYPEOF_LZO_INT16E_T LZO_TYPEOF___INT16
#else
#endif
@ -2883,7 +2883,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
# define LZO_TYPEOF_LZO_INT32E_T LZO_TYPEOF_LONG
#elif (LZO_SIZEOF_INT == 4)
# define lzo_int32e_t int
# define lzo_uint32e_t quint32
# define lzo_uint32e_t unsigned int
# define LZO_TYPEOF_LZO_INT32E_T LZO_TYPEOF_INT
#elif (LZO_SIZEOF_SHORT == 4)
# define lzo_int32e_t short int
@ -2896,7 +2896,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM) && (__INT_MAX__+0 > 2147483647L)
# if !(LZO_LANG_ASSEMBLER)
typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
typedef quint32 lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
# endif
# define lzo_int32e_t lzo_int32e_si_t__
# define lzo_uint32e_t lzo_uint32e_si_t__
@ -2904,7 +2904,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_GNUC >= 0x025f00ul) && defined(__AVR__) && (__LONG_MAX__+0 == 32767L)
# if !(LZO_LANG_ASSEMBLER)
typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
typedef quint32 lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
# endif
# define lzo_int32e_t lzo_int32e_si_t__
# define lzo_uint32e_t lzo_uint32e_si_t__
@ -2913,7 +2913,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
# define LZO_TYPEOF_LZO_INT32E_T LZO_TYPEOF___MODE_SI
#elif (LZO_SIZEOF___INT32 == 4)
# define lzo_int32e_t __int32
# define lzo_uint32e_t quint32
# define lzo_uint32e_t unsigned __int32
# define LZO_TYPEOF_LZO_INT32E_T LZO_TYPEOF___INT32
#else
#endif
@ -2937,7 +2937,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
#endif
#if (LZO_SIZEOF_INT == 8) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
# define lzo_int64e_t int
# define lzo_uint64e_t quint32
# define lzo_uint64e_t unsigned int
# define LZO_TYPEOF_LZO_INT64E_T LZO_TYPEOF_INT
#elif (LZO_SIZEOF_LONG == 8) && !(LZO_CFG_PREFER_TYPEOF_ACC_INT64E_T == LZO_TYPEOF_LONG_LONG) && !(LZO_CFG_PREFER_TYPEOF_ACC_INT64E_T == LZO_TYPEOF___INT64)
# define lzo_int64e_t long int
@ -2984,7 +2984,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
# define LZO_TYPEOF_LZO_INT32L_T LZO_TYPEOF_LZO_INT32E_T
#elif (LZO_SIZEOF_INT >= 4) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
# define lzo_int32l_t int
# define lzo_uint32l_t quint32
# define lzo_uint32l_t unsigned int
# define LZO_SIZEOF_LZO_INT32L_T LZO_SIZEOF_INT
# define LZO_TYPEOF_LZO_INT32L_T LZO_SIZEOF_INT
#elif (LZO_SIZEOF_LONG >= 4)
@ -3057,7 +3057,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
#elif (LZO_CC_MSC && (_MSC_VER >= 1300) && (LZO_SIZEOF_VOID_P == 4) && (LZO_SIZEOF_INT == 4))
# if !(LZO_LANG_ASSEMBLER)
typedef __w64 int lzo_intptr_t;
typedef __w64 quint32 lzo_uintptr_t;
typedef __w64 unsigned int lzo_uintptr_t;
# endif
# define lzo_intptr_t lzo_intptr_t
# define lzo_uintptr_t lzo_uintptr_t
@ -3070,7 +3070,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
# define LZO_TYPEOF_LZO_INTPTR_T LZO_TYPEOF_SHORT
#elif (LZO_SIZEOF_INT >= LZO_SIZEOF_VOID_P) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
# define lzo_intptr_t int
# define lzo_uintptr_t quint32
# define lzo_uintptr_t unsigned int
# define LZO_SIZEOF_LZO_INTPTR_T LZO_SIZEOF_INT
# define LZO_TYPEOF_LZO_INTPTR_T LZO_TYPEOF_INT
#elif (LZO_SIZEOF_LONG >= LZO_SIZEOF_VOID_P)
@ -3104,7 +3104,7 @@ LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
# define LZO_SIZEOF_LZO_WORD_T LZO_SIZEOF_LONG
# define LZO_TYPEOF_LZO_WORD_T LZO_TYPEOF_LONG
#elif (LZO_WORDSIZE == LZO_SIZEOF_INT)
# define lzo_word_t quint32
# define lzo_word_t unsigned int
# define lzo_sword_t int
# define LZO_SIZEOF_LZO_WORD_T LZO_SIZEOF_INT
# define LZO_TYPEOF_LZO_WORD_T LZO_TYPEOF_INT

View File

@ -89,92 +89,92 @@ DDSFile::DDSFile(const QString &aFilePath)
}
DDSFile::DDSFile(const QByteArray aDDSData, const QString aFileStem) {
// QDataStream ddsIn(aDDSData);
// ddsIn.setByteOrder(QDataStream::LittleEndian);
QDataStream ddsIn(aDDSData);
ddsIn.setByteOrder(QDataStream::LittleEndian);
// DDSHeader ddsHeader;
// if (ddsIn.readRawData(reinterpret_cast<char*>(&ddsHeader), sizeof(DDSHeader)) != sizeof(DDSHeader)) {
// qDebug() << "Error: Failed to read DDSHeader from QByteArray!";
// return;
// }
DDSHeader ddsHeader;
if (ddsIn.readRawData(reinterpret_cast<char*>(&ddsHeader), sizeof(DDSHeader)) != sizeof(DDSHeader)) {
qDebug() << "Error: Failed to read DDSHeader from QByteArray!";
return;
}
// fileStem = aFileStem;
// header = ddsHeader;
fileStem = aFileStem;
header = ddsHeader;
// // Ensure DevIL is initialized once globally
// static bool devilInitialized = false;
// if (!devilInitialized) {
// ilInit();
// devilInitialized = true;
// }
// Ensure DevIL is initialized once globally
static bool devilInitialized = false;
if (!devilInitialized) {
ilInit();
devilInitialized = true;
}
// // Generate and bind an image
// ILuint imageID;
// ilGenImages(1, &imageID);
// ilBindImage(imageID);
// Generate and bind an image
ILuint imageID;
ilGenImages(1, &imageID);
ilBindImage(imageID);
// ilEnable(IL_ORIGIN_SET);
// ilOriginFunc(IL_ORIGIN_UPPER_LEFT);
ilEnable(IL_ORIGIN_SET);
ilOriginFunc(IL_ORIGIN_UPPER_LEFT);
// // Load DDS file
// if (!ilLoadL(IL_DDS, aDDSData.constData(), aDDSData.size())) {
// ILuint devilError = ilGetError();
// qDebug() << "DevIL Error while loading DDS: " << devilError;
// ilDeleteImages(1, &imageID);
// return;
// }
// Load DDS file
if (!ilLoadL(IL_DDS, aDDSData.constData(), aDDSData.size())) {
ILuint devilError = ilGetError();
qDebug() << "DevIL Error while loading DDS: " << devilError;
ilDeleteImages(1, &imageID);
return;
}
// // Get mipmap count
// ILint numMipmaps = ilGetInteger(IL_NUM_MIPMAPS);
// qDebug() << "Number of mipmaps: " << numMipmaps;
// Get mipmap count
ILint numMipmaps = ilGetInteger(IL_NUM_MIPMAPS);
qDebug() << "Number of mipmaps: " << numMipmaps;
// // Loop over all mipmap levels (0 is the base image)
// for (ILint level = 0; level <= numMipmaps; ++level) {
// ilBindImage(imageID);
// if (!ilActiveMipmap(level)) {
// qDebug() << "DevIL failed to activate mipmap level" << level;
// continue;
// }
// Loop over all mipmap levels (0 is the base image)
for (ILint level = 0; level <= numMipmaps; ++level) {
ilBindImage(imageID);
if (!ilActiveMipmap(level)) {
qDebug() << "DevIL failed to activate mipmap level" << level;
continue;
}
// // Get mipmap properties
// int width = ilGetInteger(IL_IMAGE_WIDTH);
// int height = ilGetInteger(IL_IMAGE_HEIGHT);
// int depth = ilGetInteger(IL_IMAGE_DEPTH);
// int format = ilGetInteger(IL_IMAGE_FORMAT);
// int bpp = 0;
// Get mipmap properties
int width = ilGetInteger(IL_IMAGE_WIDTH);
int height = ilGetInteger(IL_IMAGE_HEIGHT);
int depth = ilGetInteger(IL_IMAGE_DEPTH);
int format = ilGetInteger(IL_IMAGE_FORMAT);
int bpp = 0;
// switch (format) {
// case IL_RGB:
// bpp = 3;
// break;
// case IL_RGBA:
// bpp = 4;
// break;
// default:
// qDebug() << "Unsupported image format.";
// continue;
// }
switch (format) {
case IL_RGB:
bpp = 3;
break;
case IL_RGBA:
bpp = 4;
break;
default:
qDebug() << "Unsupported image format.";
continue;
}
// int dataSize = width * height * depth * bpp;
int dataSize = width * height * depth * bpp;
// ILubyte *data = ilGetData();
// if (!data) {
// qDebug() << "Error: DevIL returned null data for mipmap level" << level;
// continue;
// }
ILubyte *data = ilGetData();
if (!data) {
qDebug() << "Error: DevIL returned null data for mipmap level" << level;
continue;
}
// // Create a mipmap structure
// DDSMipmap mipmap;
// mipmap.width = width;
// mipmap.height = height;
// mipmap.data = QByteArray(reinterpret_cast<const char*>(data), dataSize);
// mipmap.size = dataSize;
// Create a mipmap structure
DDSMipmap mipmap;
mipmap.width = width;
mipmap.height = height;
mipmap.data = QByteArray(reinterpret_cast<const char*>(data), dataSize);
mipmap.size = dataSize;
// // Store in DDS file
// mipmaps.append(mipmap);
// }
// Store in DDS file
mipmaps.append(mipmap);
}
// ilDeleteImages(1, &imageID);
ilDeleteImages(1, &imageID);
}
DDSFile::DDSFile(const DDSFile &ddsFile) :

View File

@ -9,7 +9,7 @@
#include <QVector>
#include <QDebug>
#include <QImage>
//#include <IL/il.h>
#include <IL/il.h>
struct DDSPixelFormat {
quint32 size;

View File

@ -6,17 +6,17 @@ SOURCES += $$files($$PWD/*.cpp, true)
HEADERS += $$files($$PWD/*.h, true)
LIBS += \
#-L$$PWD/../../third_party/devil_sdk/lib/ -lDevIL \
#-L$$PWD/../../third_party/devil_sdk/lib/ -lILU \
#-L$$PWD/../../third_party/devil_sdk/lib/ -lILUT \
-L$$PWD/../../third_party/devil_sdk/lib/ -lDevIL \
-L$$PWD/../../third_party/devil_sdk/lib/ -lILU \
-L$$PWD/../../third_party/devil_sdk/lib/ -lILUT \
-L$$OUT_PWD/../libs/iwifile -liwifile
INCLUDEPATH += \
$$PWD/../iwifile/ \
#$$PWD/../../third_party/devil_sdk/include/
$$PWD/../../third_party/devil_sdk/include/
DEPENDPATH += \
$$PWD/../iwifile/ \
#$$PWD/../../third_party/devil_sdk/include/
$$PWD/../../third_party/devil_sdk/include/
DESTDIR = $$OUT_PWD/../

View File

@ -27,10 +27,10 @@
/*
* The following types are defined (if available):
*
* u8: quint32eger type, at least 8 bits
* u16: quint32eger type, at least 16 bits
* u32: quint32eger type, at least 32 bits
* u64: quint32eger type, at least 64 bits
* u8: unsigned integer type, at least 8 bits
* u16: unsigned integer type, at least 16 bits
* u32: unsigned integer type, at least 32 bits
* u64: unsigned integer type, at least 64 bits
*
* s8, s16, s32, s64 -> signed counterparts of u8, u16, u32, u64
*

View File

@ -87,7 +87,7 @@ void Encryption::UpdateIVTable(QByteArray &table, int index, const QByteArray &s
}
quint32 Encryption::ToUInt32(const QByteArray &data, int offset) {
// Converts 4 bytes (starting at offset) from data into a 32-bit quint32eger (little-endian)
// Converts 4 bytes (starting at offset) from data into a 32-bit unsigned integer (little-endian)
return ((static_cast<quint32>(static_cast<uchar>(data[offset])) ) |
(static_cast<quint32>(static_cast<uchar>(data[offset+1])) << 8 ) |
(static_cast<quint32>(static_cast<uchar>(data[offset+2])) << 16) |

View File

@ -59,7 +59,7 @@ void ECRYPT_encrypt_bytes(ECRYPT_ctx *x,const u8 *m,u8 *c,u32 bytes)
u32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15;
u8 *ctarget;
u8 tmp[64];
int i;
unsigned int i;
if (!bytes) return;

View File

@ -10,7 +10,7 @@ Still 100% Public Domain
Corrected a problem which generated improper hash values on 16 bit machines
Routine SHA1Update changed from
void SHA1Update(SHA1_CTX* context, unsigned char* data, quint32
void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned int
len)
to
void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned
@ -27,7 +27,7 @@ be guaranteed to generate the wrong hash (e.g. Test Vector #3, a million
"a"s).
I also changed the declaration of variables i & j in SHA1Update to
unsigned long from quint32 for the same reason.
unsigned long from unsigned int for the same reason.
These changes should make no difference to any 32 bit implementations since
an

View File

@ -90,7 +90,7 @@ bool FastFile_COD4_PS3::Load(const QByteArray aData) {
// Loop until EOF or invalid chunk
while (pos <= aData.size()) {
// Read 2-byte BIG-ENDIAN chunk size
quint32 chunkSize;
quint16 chunkSize;
QDataStream chunkStream(aData.mid(pos, 2));
chunkStream.setByteOrder(QDataStream::BigEndian);
chunkStream >> chunkSize;

View File

@ -90,7 +90,7 @@ bool FastFile_COD5_PS3::Load(const QByteArray aData) {
// Loop until EOF or invalid chunk
while (pos <= aData.size()) {
// Read 2-byte BIG-ENDIAN chunk size
quint32 chunkSize;
quint16 chunkSize;
QDataStream chunkStream(aData.mid(pos, 2));
chunkStream.setByteOrder(QDataStream::BigEndian);
chunkStream >> chunkSize;

View File

@ -30,9 +30,9 @@ struct IWIHeader {
struct IWIInfo {
quint8 Format;
quint8 Usage;
quint32 Width;
quint32 Height;
quint32 Depth;
quint16 Width;
quint16 Height;
quint16 Depth;
};
struct IWIMipmap {

View File

@ -13,11 +13,11 @@ void XAnimDeltaPartQuat::ParseData(QDataStream *aStream) {
}
}
quint32 XAnimDeltaPartQuat::GetSize() const {
quint16 XAnimDeltaPartQuat::GetSize() const {
return mSize;
}
void XAnimDeltaPartQuat::SetSize(quint32 size) {
void XAnimDeltaPartQuat::SetSize(quint16 size) {
mSize = size;
}

View File

@ -17,14 +17,14 @@ public:
void ParseData(QDataStream *aStream) override;
quint32 GetSize() const;
void SetSize(quint32 size);
quint16 GetSize() const;
void SetSize(quint16 size);
const XAnimDeltaPartQuatData& GetData() const;
void SetData(const XAnimDeltaPartQuatData& data);
private:
quint32 mSize = 0;
quint16 mSize = 0;
XAnimDeltaPartQuatData mData;
};

View File

@ -28,10 +28,10 @@ void XAnimIndices::Clear()
mIndex = 0;
}
quint32 XAnimIndices::GetIndex() const {
quint16 XAnimIndices::GetIndex() const {
return mIndex;
}
void XAnimIndices::SetIndex(quint32 index) {
void XAnimIndices::SetIndex(quint16 index) {
mIndex = index;
}

View File

@ -12,11 +12,11 @@ public:
void ParseData(QDataStream *aStream) override;
void Clear() override;
quint32 GetIndex() const;
void SetIndex(quint32 index);
quint16 GetIndex() const;
void SetIndex(quint16 index);
private:
quint32 mIndex = 0;
quint16 mIndex = 0;
};
#endif // XANIMINDICES_H

View File

@ -27,11 +27,11 @@ void XAnimNotifyInfo::Clear()
mTime = 0.0f;
}
quint32 XAnimNotifyInfo::GetName() const {
quint16 XAnimNotifyInfo::GetName() const {
return mName;
}
void XAnimNotifyInfo::SetName(quint32 name) {
void XAnimNotifyInfo::SetName(quint16 name) {
mName = name;
}

View File

@ -12,14 +12,14 @@ public:
void ParseData(QDataStream *aStream) override;
void Clear() override;
quint32 GetName() const;
void SetName(quint32 name);
quint16 GetName() const;
void SetName(quint16 name);
float GetTime() const;
void SetTime(float time);
private:
quint32 mName;
quint16 mName;
float mTime;
};

View File

@ -67,7 +67,7 @@ void XAnimParts::ParseData(QDataStream *aStream) {
>> mNotifyCount
>> mAssetType;
quint32 pad;
quint16 pad;
*aStream >> pad;
mPad = (pad != 0);

View File

@ -21,12 +21,12 @@ public:
private:
XString mName;
quint32 mDataByteCount = 0;
quint32 mDataShortCount = 0;
quint32 mDataIntCount = 0;
quint32 mRandomDataByteCount = 0;
quint32 mRandomDataIntCount = 0;
quint32 mNumFrames = 0;
quint16 mDataByteCount = 0;
quint16 mDataShortCount = 0;
quint16 mDataIntCount = 0;
quint16 mRandomDataByteCount = 0;
quint16 mRandomDataIntCount = 0;
quint16 mNumFrames = 0;
bool mIsLoop = false;
bool mIsDelta = false;
@ -37,13 +37,13 @@ private:
bool mPad = false;
quint32 mRandomDataShortCount = 0;
quint32 mIndexCount = 0;
quint16 mRandomDataShortCount = 0;
quint16 mIndexCount = 0;
float mFramerate = 0.0f;
float mFrequency = 0.0f;
quint32 mNames = 0;
quint16 mNames = 0;
quint8 mDataByte = 0;
qint16 mDataShort = 0;
int mDataInt = 0;

View File

@ -15,7 +15,7 @@ public:
void Clear() override;
private:
quint32 mSize;
quint16 mSize;
bool mIsSmallTrans;
XAnimPartTransData mData;
};

View File

@ -19,8 +19,6 @@
#include "xstringtable.h"
#include "xweapondef.h"
XAsset::
XAsset::XAsset()
: mPtr(0)
, mType(ASSET_TYPE_NONE)
@ -63,39 +61,14 @@ QString XAsset::GetName() const
return mName;
}
void XAsset::SetDebug(bool aDebug)
{
XAsset::mDebug = aDebug;
}
bool XAsset::IsDebug() const
{
return mDebug;
}
void XAsset::Clear()
{
if (mDebug)
{
qDebug() << QString("Clearing XAsset of type %1").arg(GetName());
}
mPtr = 0;
mType = ASSET_TYPE_NONE;
}
void XAsset::ParsePtr(QDataStream *aStream, bool aDataFlag) {
*aStream >> mPtr;
if (mDebug)
{
// Always treat as unsigned when displaying in hex
quint64 raw = static_cast<quint64>(static_cast<quint32>(mPtr));
QString hexPtr = QString("0x%1")
.arg(raw, 8, 16, QLatin1Char('0'))
.toUpper();
qDebug() << QString("[%1] Parsed %2 ptr %3 (%4)").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName()).arg(mPtr).arg(hexPtr);
}
if (aDataFlag && mPtr == -1)
{
@ -105,10 +78,6 @@ void XAsset::ParsePtr(QDataStream *aStream, bool aDataFlag) {
XAsset* XAsset::Create(XAssetType aAssetType)
{
if (mDebug)
{
qDebug() << QString("Creating XAsset with type %1").arg(XAssetTypeToString(aAssetType));
}
switch (aAssetType)
{
case ASSET_TYPE_XANIMPARTS:
@ -448,8 +417,6 @@ QString XAsset::XAssetTypeToString(XAssetType type) {
case ASSET_TYPE_CG_MEDIA_TABLE:
return "CgMediaTable";
default:
return "UnknownAsset";
return "";
}
}
bool XAsset::mDebug = true;

View File

@ -5,8 +5,6 @@
#include <QDataStream>
#include <QString>
#include <QDebug>
#include <QIODevice>
class XAsset
{
@ -23,9 +21,6 @@ public:
void SetName(QString aName);
QString GetName() const;
static void SetDebug(bool aDebug);
bool IsDebug() const;
virtual void Clear();
virtual void ParsePtr(QDataStream *aStream, bool aDataFlag = true);
virtual void ParseData(QDataStream *aStream) = 0;
@ -33,8 +28,6 @@ public:
static XAsset* Create(XAssetType aAssetType);
static QString XAssetTypeToString(XAssetType type);
static bool mDebug;
private:
qint32 mPtr;
XAssetType mType;

View File

@ -20,8 +20,6 @@ XAssetList::XAssetList(ZoneFile* aZoneFile)
, mAssetHeaders()
, mZoneFile(aZoneFile)
{
SetType(ASSET_TYPE_ASSETLIST);
SetName("Asset List");
}
XAssetList::~XAssetList()
@ -31,10 +29,7 @@ XAssetList::~XAssetList()
void XAssetList::ParseData(QDataStream *aStream) {
// Parse string list
if (IsDebug())
{
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
}
qDebug() << aStream->device()->pos();
mStringList.ParsePtr(aStream);
// Parse asset count and assets
@ -42,11 +37,6 @@ void XAssetList::ParseData(QDataStream *aStream) {
*aStream
>> mAssetCount
>> assetsPtr;
if (IsDebug())
{
qDebug() << QString("[%1] mAssetCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mAssetCount);
qDebug() << QString("[%1] assetsPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(assetsPtr);
}
mStringList.ParseData(aStream);

View File

@ -1,53 +1,21 @@
#include "xaudiopacketaligned.h"
#include "xsoundfile.h"
XAudioPacketAligned::XAudioPacketAligned()
: XAsset()
, mBuffer()
, mBufferSize(0)
, mLoopCount(0)
, aXmaLoop()
, mContext()
XSoundFile::XSoundFile()
{
}
XAudioPacketAligned::~XAudioPacketAligned()
XSoundFile::~XSoundFile()
{
}
void XAudioPacketAligned::ParseData(QDataStream *aStream)
void XSoundFile::ParseData(QDataStream *aStream)
{
qint32 bufferPtr, contextPtr;
*aStream
>> bufferPtr
>> mBufferSize
>> mLoopCount;
for (int i = 0; i < 6; i++)
{
XAudioXmaLoopRegion loop;
loop.ParseData(aStream);
}
*aStream >> contextPtr;
if (bufferPtr)
{
aStream->readRawData(mBuffer.data(), mBufferSize);
}
if (contextPtr)
{
*aStream >> mContext;
}
}
void XAudioPacketAligned::Clear()
void XSoundFile::Clear()
{
mBuffer.clear();
mBufferSize = 0;
mLoopCount = 0;
aXmaLoop.clear();
mContext = '\0';
}

View File

@ -20,7 +20,7 @@ private:
quint32 mBufferSize;
quint32 mLoopCount;
QVector<XAudioXmaLoopRegion> aXmaLoop;
char mContext;
char* mContext;
};
#endif // XAUDIOPACKETALIGNED_H

View File

@ -1,9 +1,6 @@
#include "xaudioseektable.h"
XAudioSeekTable::XAudioSeekTable()
: XAsset()
, mSize(0)
, mData()
{
}
@ -15,19 +12,10 @@ XAudioSeekTable::~XAudioSeekTable()
void XAudioSeekTable::ParseData(QDataStream *aStream)
{
qint32 dataPtr;
*aStream
>> mSize
>> dataPtr;
if (dataPtr)
{
aStream->readRawData(mData.data(), 4 * mSize);
}
}
void XAudioSeekTable::Clear()
{
mSize = 0;
mData.clear();
}

View File

@ -15,7 +15,7 @@ public:
virtual void Clear() override;
private:
quint32 mSize;
int mSize;
QByteArray mData;
};

View File

@ -1,11 +1,6 @@
#include "xaudiosound.h"
XAudioSound::XAudioSound()
: XAsset()
, mPacket()
, mFormat()
, mXmaDataInfo()
, mSeekTable()
{
}
@ -17,16 +12,10 @@ XAudioSound::~XAudioSound()
void XAudioSound::ParseData(QDataStream *aStream)
{
mPacket.ParseData(aStream);
mFormat.ParseData(aStream);
mXmaDataInfo.ParseData(aStream);
mSeekTable.ParseData(aStream);
}
void XAudioSound::Clear()
{
mPacket.Clear();
mFormat.Clear();
mXmaDataInfo.Clear();
mSeekTable.Clear();
}

View File

@ -17,10 +17,10 @@ public:
virtual void Clear() override;
private:
XAudioPacketAligned mPacket;
XAudioSourceFormat mFormat;
XAudioXmaDataInfo mXmaDataInfo;
XAudioSeekTable mSeekTable;
XAudioPacketAligned* mPacket;
XAudioSourceFormat* mFormat;
XAudioXmaDataInfo* mXmaDataInfo;
XAudioSeekTable *mSeekTable;
};
#endif // XAUDIOSOUND_H

View File

@ -13,7 +13,7 @@ public:
virtual void Clear() override;
private:
quint32 mSampleRate;
unsigned int mSampleRate;
quint8 mChannelCount;
quint8 mDecodeBufferSize;
};

View File

@ -13,8 +13,8 @@ public:
virtual void Clear() override;
private:
quint32 mLoopStart;
quint32 mLoopEnd;
unsigned int mLoopStart;
unsigned int mLoopEnd;
quint8 mLoopSubframeEnd;
quint8 mLoopSubframeSkip;
};

View File

@ -15,7 +15,7 @@ public:
virtual void Clear() override;
private:
quint32 mSurfId;
quint16 mSurfId;
};
#endif // XBMODELDRAWINFO_H

View File

@ -19,7 +19,7 @@ private:
QVector3D mMins;
int mContents;
QVector3D mMaxs;
quint32 mNumSides;
unsigned int mNumSides;
QVector<XCBrushSide> mSides;
QVector<QVector3D> mAxialMaterialNum;
quint8 *mBaseAdjacentSide;

View File

@ -12,11 +12,6 @@ XCardMemory::~XCardMemory()
}
quint32 XCardMemory::GetPlatform() const
{
return mPlatform;
}
void XCardMemory::ParseData(QDataStream *aStream)
{
*aStream >> mPlatform;

View File

@ -9,13 +9,11 @@ public:
XCardMemory();
~XCardMemory();
quint32 GetPlatform() const;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:
quint32 mPlatform;
int mPlatform;
};
#endif // XCARDMEMORY_H

View File

@ -2,6 +2,7 @@
XCBrushSide::XCBrushSide()
: XAsset()
, mPlanePtr(0)
, mPlane()
, mMaterialNum(0)
, mFirstAdjacentSideOffset(0)
@ -17,24 +18,13 @@ XCBrushSide::~XCBrushSide()
void XCBrushSide::ParseData(QDataStream *aStream)
{
mPlane.ParsePtr(aStream, false);
*aStream
>> mMaterialNum
>> mFirstAdjacentSideOffset
>> mEdgeCount;
aStream->skipRawData(1);
if (mPlane.GetPtr() == -1)
{
mPlane.ParseData(aStream);
}
}
void XCBrushSide::Clear()
{
mPlane.Clear();
mPlanePtr = 0;
mPlane = XCPlane();
mMaterialNum = 0;
mFirstAdjacentSideOffset = 0;
mEdgeCount = 0;

View File

@ -14,6 +14,7 @@ public:
virtual void Clear() override;
private:
qint32 mPlanePtr;
XCPlane mPlane;
uint mMaterialNum;
qint16 mFirstAdjacentSideOffset;

View File

@ -28,24 +28,22 @@ void XCLeaf::ParseData(QDataStream *aStream) {
>> mMaxs[2]
>> mLeafBrushNode
>> mCluster;
aStream->skipRawData(2);
}
}
quint32 XCLeaf::GetFirstCollAabbIndex() const {
quint16 XCLeaf::GetFirstCollAabbIndex() const {
return mFirstCollAabbIndex;
}
void XCLeaf::SetFirstCollAabbIndex(quint32 index) {
void XCLeaf::SetFirstCollAabbIndex(quint16 index) {
mFirstCollAabbIndex = index;
}
quint32 XCLeaf::GetCollAabbCount() const {
quint16 XCLeaf::GetCollAabbCount() const {
return mCollAabbCount;
}
void XCLeaf::SetCollAabbCount(quint32 count) {
void XCLeaf::SetCollAabbCount(quint16 count) {
mCollAabbCount = count;
}

View File

@ -12,11 +12,11 @@ public:
void ParseData(QDataStream *aStream) override;
quint32 GetFirstCollAabbIndex() const;
void SetFirstCollAabbIndex(quint32 index);
quint16 GetFirstCollAabbIndex() const;
void SetFirstCollAabbIndex(quint16 index);
quint32 GetCollAabbCount() const;
void SetCollAabbCount(quint32 count);
quint16 GetCollAabbCount() const;
void SetCollAabbCount(quint16 count);
int GetBrushContents() const;
void SetBrushContents(int contents);
@ -37,8 +37,8 @@ public:
void SetCluster(qint16 cluster);
private:
quint32 mFirstCollAabbIndex;
quint32 mCollAabbCount;
quint16 mFirstCollAabbIndex;
quint16 mCollAabbCount;
int mBrushContents;
int mTerrainContents;
QVector<float> mMins;

View File

@ -27,5 +27,5 @@ void XCLeafBrushNodeChildren::Clear()
{
mDist = 0.0f;
mRange = 0.0f;
mChildOffset = QVector<quint32>();
mChildOffset = QVector<quint16>();
}

View File

@ -17,7 +17,7 @@ public:
private:
float mDist;
float mRange;
QVector<quint32> mChildOffset;
QVector<quint16> mChildOffset;
};
#endif // XCLEAFBRUSHNODECHILDREN_H

View File

@ -13,7 +13,7 @@ public:
void Clear() override;
private:
QVector<quint32> mBrushes;
QVector<quint16> mBrushes;
};
#endif // XCLEAFBRUSHNODELEAF_H

View File

@ -1,58 +1,7 @@
#include "xclipmap.h"
XClipMap::XClipMap()
: XAsset()
, mName()
, mIsInUse(false)
, mPlaneCount(0)
, mPlanes()
, mNumStaticModels(0)
, mStaticModelList()
, mNumMaterials(0)
, mMaterials()
, mNumBrushSides(0)
, mBrushsides()
, mNumBrushEdges(0)
, mBrushEdges()
, mNumNodes(0)
, mNodes()
, mNumLeafs(0)
, mLeafs()
, mLeafBrushNodesCount(0)
, mLeafBrushNodes()
, mNumLeafBrushes(0)
, mLeafBrushes()
, mNumLeafSurfaces(0)
, mLeafSurfaces()
, mVertCount(0)
, mVerts()
, mTriCount(0)
, mTriIndices()
, mTriEdgeIsWalkable()
, mBorderCount(0)
, mBorders()
, mPartitionCount(0)
, mPartitions()
, mAabbTreeCount(0)
, mAabbTrees()
, mNumSubModels(0)
, mCModels()
, mNumBrushes(0)
, mBrushes()
, mNumClusters(0)
, mClusterBytes(0)
, mVisibility()
, mVised(0)
, mMapEnts()
, mBoxBrush()
, mBoxModel()
, mDynEntCounts(0)
, mDynEntDefList(2)
, mDynEntPoseList(2)
, mDynEntClientList(2)
, mDynEntCollList(2)
, mChecksum(0)
{
: XAsset() {
SetType(ASSET_TYPE_CLIPMAP);
SetName("ClipMap");
}
@ -62,201 +11,12 @@ XClipMap::~XClipMap()
}
void XClipMap::ParseData(QDataStream *aStream)
{
if (GetPtr() == -1)
{
mName.ParsePtr(aStream, false);
void XClipMap::ParseData(QDataStream *aStream) {
mName = XString::ParseCustom(aStream);
qint32 planePtr, staticModelPtr, materialsPtr, brushSidesPtr,
brushEdgesPtr, nodesPtr, leafsPtr, leafsBrushNodesPtr,
leafBrushesPtr, leafSurfacesPtr, vertPtr1, vertPtr2, vertPtr3,
triIndicesPtr, triEdgeWalkablePtr, bordersPtr, partitionsPtr, aabbTreesPtr,
cModelsPtr;
*aStream
>> mIsInUse
>> mPlaneCount
>> planePtr
>> mNumStaticModels
>> staticModelPtr
>> mNumMaterials
>> materialsPtr
>> mNumBrushSides
>> brushSidesPtr
>> mNumBrushEdges
>> brushEdgesPtr
>> mNumNodes
>> nodesPtr
>> mNumLeafs
>> leafsPtr
>> mLeafBrushNodesCount
>> leafsBrushNodesPtr
>> mNumLeafBrushes
>> leafBrushesPtr
>> mNumLeafSurfaces
>> leafSurfacesPtr
>> mVertCount
>> vertPtr1
>> vertPtr2
>> vertPtr3
>> mTriCount
>> triIndicesPtr
>> triEdgeWalkablePtr
>> mBorderCount
>> bordersPtr
>> mPartitionCount
>> partitionsPtr
>> mAabbTreeCount
>> aabbTreesPtr
>> mNumSubModels
>> cModelsPtr
>> mNumBrushes;
*aStream >> mChecksum;
aStream->skipRawData(2);
qint32 brushesPtr, visibilityPtr, mapEntsPtr, boxBrushPtr;
*aStream
>> brushesPtr
>> mNumClusters
>> mClusterBytes
>> visibilityPtr
>> mVised
>> mapEntsPtr
>> boxBrushPtr;
mBoxModel.ParseData(aStream);
quint16 dynEntCount;
*aStream >> dynEntCount;
mDynEntCounts.append(dynEntCount);
*aStream >> dynEntCount;
mDynEntCounts.append(dynEntCount);
mDynEntDefList[0].ParsePtr(aStream, false);
mDynEntDefList[0].ParsePtr(aStream, false);
mDynEntPoseList[0].ParsePtr(aStream, false);
mDynEntPoseList[0].ParsePtr(aStream, false);
mDynEntClientList[0].ParsePtr(aStream, false);
mDynEntClientList[0].ParsePtr(aStream, false);
mDynEntCollList[0].ParsePtr(aStream, false);
mDynEntCollList[0].ParsePtr(aStream, false);
*aStream >> mChecksum;
if (planePtr)
{
for (int i = 0; i < mPlaneCount; i++)
{
XCPlane newCPlane;
newCPlane.ParseData(aStream);
mPlanes.append(newCPlane);
}
}
if (staticModelPtr)
{
for (int i = 0; i < mNumStaticModels; i++)
{
XCStaticModel newModel;
newModel.ParseData(aStream);
mStaticModelList.append(newModel);
}
}
if (materialsPtr)
{
for (int i = 0; i < mNumMaterials; i++)
{
XDMaterial newDMaterial;
newDMaterial.ParseData(aStream);
mMaterials.append(newDMaterial);
}
}
if (brushSidesPtr)
{
for (int i = 0; i < mNumBrushSides; i++)
{
XCBrushSide newBrushSide;
newBrushSide.ParseData(aStream);
mBrushsides.append(newBrushSide);
}
}
if (brushEdgesPtr)
{
for (int i = 0; i < mNumBrushEdges; i++)
{
quint8 newBrushEdge;
*aStream >> newBrushEdge;
mBrushEdges.append(newBrushEdge);
}
}
if (nodesPtr)
{
for (int i = 0; i < mNumNodes; i++)
{
XCNode newNode;
newNode.ParseData(aStream);
mNodes.append(newNode);
}
}
if (leafsPtr)
{
for (int i = 0; i < mNumLeafs; i++)
{
XCLeaf newLeaf;
newLeaf.ParseData(aStream);
mLeafs.append(newLeaf);
}
}
if (leafBrushesPtr)
{
for (int i = 0; i < mNumLeafBrushes; i++)
{
quint32 newBrush;
*aStream >> newBrush;
mLeafBrushes.append(newBrush);
}
}
if (leafsBrushNodesPtr)
{
for (int i = 0; i < mNumLeafBrushes; i++)
{
XCLeafBrushNode newBrushNode;
newBrushNode.ParseData(aStream);
mLeafBrushNodes.append(newBrushNode);
}
}
mLeafbrushNodes()
mLeafsurfaces()
mVerts()
mTriIndices()
mTriEdgeIsWalkable()
mBorders()
mPartitions()
mAabbTrees()
mCodels()
mBrushes()
mVisibility()
mMapEnts()
mBoxBrush()
mBoxModel()
mDynEntCount(0)
mDynEntDefList()
mDynEntPoseList()
mDynEntClientList()
mDynEntCollList()
(0)
}
// We would parse arrays here, but we're using placeholders
}
void XClipMap::Clear()

View File

@ -29,45 +29,45 @@ public:
void Clear() override;
private:
XString mName;
QString mName;
quint32 mIsInUse;
bool mIsInUse;
int mPlaneCount;
QVector<XCPlane> mPlanes;
quint32 mNumStaticModels;
uint mNumStaticModels;
QVector<XCStaticModel> mStaticModelList;
quint32 mNumMaterials;
uint mNumMaterials;
QVector<XDMaterial> mMaterials;
quint32 mNumBrushSides;
uint mNumBrushSides;
QVector<XCBrushSide> mBrushsides;
quint32 mNumBrushEdges;
uint mNumBrushEdges;
QVector<quint8> mBrushEdges;
quint32 mNumNodes;
uint mNumNodes;
QVector<XCNode> mNodes;
quint32 mNumLeafs;
uint mNumLeafs;
QVector<XCLeaf> mLeafs;
quint32 mLeafBrushNodesCount;
QVector<XCLeafBrushNode> mLeafBrushNodes;
uint mLeafbrushNodesCount;
QVector<XCLeafBrushNode> mLeafbrushNodes;
quint32 mNumLeafBrushes;
QVector<quint32> mLeafBrushes;
uint mNumLeafBrushes;
QVector<quint16> mLeafbrushes;
quint32 mNumLeafSurfaces;
QVector<uint> mLeafSurfaces;
uint mNumLeafSurfaces;
QVector<uint> mLeafsurfaces;
quint32 mVertCount;
uint mVertCount;
QVector<float> mVerts;
int mTriCount;
QVector<quint32> mTriIndices;
QVector<quint16> mTriIndices;
QVector<quint8> mTriEdgeIsWalkable;
int mBorderCount;
@ -80,9 +80,9 @@ private:
QVector<XCollisionAabbTree> mAabbTrees;
uint mNumSubModels;
QVector<XCModel> mCModels;
QVector<XCModel> mCodels;
quint32 mNumBrushes;
quint16 mNumBrushes;
QVector<XCBrush> mBrushes;
int mNumClusters;
@ -92,14 +92,14 @@ private:
QVector<quint8> mVisibility;
int mVised;
QVector<XMapEnts> mMapEnts;
XCBrush mBoxBrush;
XCBrush *mBoxBrush;
XCModel mBoxModel;
QVector<quint32> mDynEntCounts;
QVector<XDynEntityDef> mDynEntDefList;
QVector<XDynEntityPose> mDynEntPoseList;
QVector<XDynEntityClient> mDynEntClientList;
QVector<XDynEntityColl> mDynEntCollList;
quint32 mChecksum;
quint16 mDynEntCount[2];
XDynEntityDef *mDynEntDefList[2];
XDynEntityPose *mDynEntPoseList[2];
XDynEntityClient *mDynEntClientList[2];
XDynEntityColl *mDynEntCollList[2];
uint mChecksum;
};
#endif // XCLIPMAP_H

View File

@ -2,32 +2,31 @@
XCNode::XCNode()
: XAsset()
, mPlane()
, mPlane(new XCPlane())
, mChildren()
{
}
XCNode::~XCNode()
{
delete mPlane;
}
void XCNode::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mPlane.ParsePtr(aStream);
// We would parse plane here, but we're using a placeholder
mPlane->ParseData(aStream);
// Parse children
*aStream
>> mChildren[0]
>> mChildren[1];
mPlane.ParseData(aStream);
}
}
void XCNode::Clear()
{
mPlane.Clear();
mPlane->Clear();
mChildren.clear();
}

View File

@ -14,7 +14,7 @@ public:
void Clear() override;
private:
XCPlane mPlane;
XCPlane* mPlane;
QVector<qint16> mChildren;
};

View File

@ -48,19 +48,19 @@ void XCollisionAabbTree::SetHalfSize(QVector3D aHalfSize) {
mHalfSize = aHalfSize;
}
quint32 XCollisionAabbTree::GetMaterialIndex() const {
quint16 XCollisionAabbTree::GetMaterialIndex() const {
return mMaterialIndex;
}
void XCollisionAabbTree::SetMaterialIndex(quint32 aIndex) {
void XCollisionAabbTree::SetMaterialIndex(quint16 aIndex) {
mMaterialIndex = aIndex;
}
quint32 XCollisionAabbTree::GetChildCount() const {
quint16 XCollisionAabbTree::GetChildCount() const {
return mChildCount;
}
void XCollisionAabbTree::SetChildCount(quint32 count) {
void XCollisionAabbTree::SetChildCount(quint16 count) {
mChildCount = count;
}

View File

@ -20,11 +20,11 @@ public:
QVector3D GetHalfSize() const;
void SetHalfSize(QVector3D aHalfSize);
quint32 GetMaterialIndex() const;
void SetMaterialIndex(quint32 aIndex);
quint16 GetMaterialIndex() const;
void SetMaterialIndex(quint16 aIndex);
quint32 GetChildCount() const;
void SetChildCount(quint32 aCount);
quint16 GetChildCount() const;
void SetChildCount(quint16 aCount);
XCollisionAabbTreeIndex& GetTreeIndex();
void SetTreeIndex(const XCollisionAabbTreeIndex& aTreeIndex);
@ -32,8 +32,8 @@ public:
private:
QVector3D mOrigin;
QVector3D mHalfSize;
quint32 mMaterialIndex = 0;
quint32 mChildCount = 0;
quint16 mMaterialIndex = 0;
quint16 mChildCount = 0;
XCollisionAabbTreeIndex mTreeIndex;
};

View File

@ -18,18 +18,7 @@ XCPlane::~XCPlane()
void XCPlane::ParseData(QDataStream *aStream)
{
if (GetPtr() == -1)
{
*aStream
>> mNormal[0]
>> mNormal[1]
>> mNormal[2]
>> mDist
>> mType
>> mSignbits
>> mPad[0]
>> mPad[1];
}
}
void XCPlane::Clear()

View File

@ -16,11 +16,9 @@ void XCStaticModel::ParseData(QDataStream *aStream) {
// Parse writable
mWritable.ParseData(aStream);
aStream->skipRawData(2);
// We would parse xmodel here, but we're using a placeholder
qint32 xModelPtr;
*aStream
>> xModelPtr
>> mOrigin[0]
>> mOrigin[1]
>> mOrigin[2];

View File

@ -16,7 +16,7 @@ public:
private:
XCStaticModelWritable mWritable;
XModel mModel;
const XModel* mModel;
QVector3D mOrigin;
QVector<QVector3D> mInvScaledAxis;
QVector3D mAbsmin;

View File

@ -17,11 +17,11 @@ void XCStaticModelWritable::ParseData(QDataStream *aStream) {
}
}
quint32 XCStaticModelWritable::GetNextModelInWorldSector() const {
quint16 XCStaticModelWritable::GetNextModelInWorldSector() const {
return mNextModelInWorldSector;
}
void XCStaticModelWritable::SetNextModelInWorldSector(quint32 nextModel) {
void XCStaticModelWritable::SetNextModelInWorldSector(quint16 nextModel) {
mNextModelInWorldSector = nextModel;
}

View File

@ -11,11 +11,11 @@ public:
void ParseData(QDataStream *aStream) override;
quint32 GetNextModelInWorldSector() const;
void SetNextModelInWorldSector(quint32 nextModel);
quint16 GetNextModelInWorldSector() const;
void SetNextModelInWorldSector(quint16 nextModel);
private:
quint32 mNextModelInWorldSector;
quint16 mNextModelInWorldSector;
};
#endif // XCSTATICMODELWRITABLE_H

View File

@ -15,7 +15,7 @@ public:
virtual void Clear() override;
private:
quint32 mMipFlush;
unsigned int mMipFlush;
XGpuTextureFetchConstant mFormat;
XD3DResource mResource;
};

View File

@ -13,12 +13,12 @@ public:
virtual void Clear() override;
private:
quint32 mCommon;
quint32 mReferenceCount;
quint32 mFence;
quint32 mReadFence;
quint32 mIdentifier;
quint32 mBaseFlush;
unsigned int mCommon;
unsigned int mReferenceCount;
unsigned int mFence;
unsigned int mReadFence;
unsigned int mIdentifier;
unsigned int mBaseFlush;
};

View File

@ -14,8 +14,8 @@ public:
private:
int mPhysObjId;
quint32 mFlags;
quint32 mLightingHandle;
quint16 mFlags;
quint16 mLightingHandle;
int mHealth;
};

View File

@ -15,8 +15,8 @@ public:
void Clear() override;
private:
quint32 mSector;
quint32 mNextEntInSector;
quint16 mSector;
quint16 mNextEntInSector;
QVector<float> mLinkMins;
QVector<float> mLinkMaxs;
};

View File

@ -29,8 +29,8 @@ private:
XGfxPlacement mPose;
qint32 mModelPtr;
XModel mModel;
quint32 mBrushModel;
quint32 mPhysicsBrushModel;
quint16 mBrushModel;
quint16 mPhysicsBrushModel;
qint32 mBestroyFxPtr;
XFxEffectDef mDestroyFx;
qint32 mDestroyPiecesPtr;

View File

@ -26,7 +26,7 @@ void XFxTrailDef::Clear()
mVertCount = 0;
mVerts = QVector<XFxTrailVertex>();
mIndCount = 0;
mIndices = QVector<quint32>();
mIndices = QVector<quint16>();
}
void XFxTrailDef::ParseData(QDataStream *aStream)

View File

@ -22,7 +22,7 @@ private:
int mVertCount;
QVector<XFxTrailVertex> mVerts;
int mIndCount;
QVector<quint32> mIndices;
QVector<quint16> mIndices;
};
#endif // XFXTRAILDEF_H

View File

@ -18,13 +18,13 @@ public:
private:
QVector3D mMins;
QVector3D mMaxs;
quint32 mChildCount;
quint32 mSurfaceCount;
quint32 mStartSurfIndex;
quint16 mChildCount;
quint16 mSurfaceCount;
quint16 mStartSurfIndex;
quint32 mModelIndexCount;
quint16 mModelIndexCount;
qint32 mModelIndexesPtr;
QVector<quint32> mModelIndexes;
QVector<quint16> mModelIndexes;
int mChildrenOffset;
};

View File

@ -14,7 +14,7 @@ public:
void SetColor(quint8 r, quint8 g, quint8 b, quint8 a);
private:
quint32 mPacked;
unsigned int mPacked;
quint8 mArray[4];
};

View File

@ -28,44 +28,7 @@ XGfxImage::~XGfxImage()
void XGfxImage::ParseData(QDataStream *aStream)
{
*aStream >> mMapType;
mTexture.ParseData(aStream);
*aStream >> mSemantic;
aStream->skipRawData(3);
mCardMemory.ParseData(aStream);
qint32 pixelsPtr;
*aStream
>> mWidth
>> mHeight
>> mDepth
>> mCategory
>> mDelayLoadPixels
>> pixelsPtr
>> mBaseSize
>> mStreamSlot
>> mStreaming;
aStream->skipRawData(1);
mName.ParsePtr(aStream);
int variableSkip = 5;
if (mDelayLoadPixels)
{
variableSkip = 2;
}
aStream->skipRawData(variableSkip);
if (pixelsPtr)
{
aStream->readRawData(mPixels.data(), mCardMemory.GetPlatform());
}
// TODO: This is wrong
mTexture.ParseData(aStream);
}
void XGfxImage::Clear()

View File

@ -5,7 +5,6 @@
#include "xcardmemory.h"
#include "xgfxtexture.h"
#include "xmaptype.h"
#include "xstring.h"
#include <QString>
#include <QVector>
@ -29,11 +28,11 @@ private:
quint16 mDepth;
quint8 mCategory;
bool mDelayLoadPixels;
QByteArray mPixels;
quint32 mBaseSize;
QVector<quint8> mPixels;
unsigned int mBaseSize;
quint16 mStreamSlot;
bool mStreaming;
XString mName;
QString mName;
};
#endif // XGFXIMAGE_H

View File

@ -20,17 +20,17 @@ public:
private:
bool mHasLightRegions;
quint32 mSunPrimaryLightIndex;
unsigned int mSunPrimaryLightIndex;
QVector3D mMins;
QVector3D mMaxs;
quint32 mRowAxis;
quint32 mColAxis;
quint16 *mRowDataStart;
quint32 mRawRowDataSize;
quint8 *mRawRowData;
quint32 mEntryCount;
unsigned int mRowAxis;
unsigned int mColAxis;
unsigned __int16 *mRowDataStart;
unsigned int mRawRowDataSize;
unsigned __int8 *mRawRowData;
unsigned int mEntryCount;
QVector<XGfxLightGridEntry> mEntries;
quint32 mColorCount;
unsigned int mColorCount;
QVector<XGfxLightGridColors> mColors;
};

View File

@ -15,7 +15,7 @@ public:
virtual void Clear() override;
virtual void ParseData(QDataStream *aStream) override;
quint32 colorsIndex;
quint16 colorsIndex;
quint8 primaryLightIndex;
quint8 needsTrace;
};

View File

@ -2,7 +2,9 @@
XGfxPixelShaderLoadDef::XGfxPixelShaderLoadDef()
: XAsset()
, mCachedPartPtr(0)
, mCachedPart()
, mPhysicalPartPtr(0)
, mPhysicalPart()
, mCachedPartSize(0)
, mPhysicalPartSize(0)
@ -15,39 +17,17 @@ XGfxPixelShaderLoadDef::~XGfxPixelShaderLoadDef()
}
quint16 XGfxPixelShaderLoadDef::GetPhysicalPartSize() const
void XGfxPixelShaderLoadDef::ParseData(QDataStream *aStream)
{
return mPhysicalPartSize;
}
quint16 XGfxPixelShaderLoadDef::GetCachedPartSize() const
{
return mCachedPartSize;
}
void XGfxPixelShaderLoadDef::Clear()
{
mCachedPartPtr = 0;
mCachedPart.clear();
mPhysicalPartPtr = 0;
mPhysicalPart.clear();
mCachedPartSize = 0;
mPhysicalPartSize = 0;
}
void XGfxPixelShaderLoadDef::ParseData(QDataStream *aStream)
{
qint32 cachedPartPtr, physicalPartPtr;
*aStream
>> cachedPartPtr
>> physicalPartPtr
>> mCachedPartSize
>> mPhysicalPartSize;
if (physicalPartPtr)
{
aStream->readRawData(mPhysicalPart.data(), mPhysicalPartSize);
}
if (cachedPartPtr)
{
aStream->readRawData(mCachedPart.data(), mCachedPartSize);
}
}

View File

@ -11,15 +11,14 @@ public:
explicit XGfxPixelShaderLoadDef();
~XGfxPixelShaderLoadDef();
quint16 GetPhysicalPartSize() const;
quint16 GetCachedPartSize() const;
void ParseData(QDataStream *aStream) override;
void Clear() override;
private:
QByteArray mCachedPart;
QByteArray mPhysicalPart;
quint16 mCachedPartPtr;
QVector<quint8> mCachedPart;
quint16 mPhysicalPartPtr;
QVector<quint8> mPhysicalPart;
quint16 mCachedPartSize;
quint16 mPhysicalPartSize;
};

View File

@ -17,7 +17,7 @@ public:
private:
XBModelDrawInfo mInfo;
quint32 mDynEntId;
quint16 mDynEntId;
};
#endif // XGFXSCENEDYNBRUSH_H

View File

@ -17,7 +17,7 @@ public:
private:
XModelDrawInfo mInfo;
quint32 mDynEntId;
quint16 mDynEntId;
};
#endif // XGFXSCENEDYNMODEL_H

View File

@ -15,12 +15,12 @@ public:
virtual void Clear() override;
private:
quint32 mSurfaceCount;
quint32 mModelCount;
quint16 mSurfaceCount;
quint16 mModelCount;
qint32 mSortedSurfIndexPtr;
QVector<quint32> mSortedSurfIndex;
QVector<quint16> mSortedSurfIndex;
qint32 mModelIndexPtr;
QVector<quint32> mModelIndex;
QVector<quint16> mModelIndex;
};
#endif // XGFXSHADOWGEOMETRY_H

View File

@ -22,7 +22,7 @@ private:
XModel *mModel;
quint8 mReflectionProbeIndex;
quint8 mPrimaryLightIndex;
quint32 mLightingHandle;
quint16 mLightingHandle;
quint8 mFlags;
};

View File

@ -7,7 +7,7 @@ XGfxVertexShaderLoadDef::XGfxVertexShaderLoadDef()
, mCachedPartSize(0)
, mPhysicalPartSize(0)
{
SetName("Vertex Shader Definition");
}
XGfxVertexShaderLoadDef::~XGfxVertexShaderLoadDef()
@ -25,10 +25,6 @@ void XGfxVertexShaderLoadDef::Clear()
void XGfxVertexShaderLoadDef::ParseData(QDataStream *aStream)
{
if (IsDebug())
{
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
}
qint32 cachedPartPtr, physicalPartPtr;
*aStream
>> cachedPartPtr
@ -36,28 +32,12 @@ void XGfxVertexShaderLoadDef::ParseData(QDataStream *aStream)
>> mCachedPartSize
>> mPhysicalPartSize;
if (IsDebug())
{
qDebug() << QString("[%1] cachedPartPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(cachedPartPtr);
qDebug() << QString("[%1] physicalPartPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(physicalPartPtr);
qDebug() << QString("[%1] mCachedPartSize = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mCachedPartSize);
qDebug() << QString("[%1] mPerPrimArgCount %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mPhysicalPartSize);
}
if (physicalPartPtr)
{
aStream->readRawData(mPhysicalPart.data(), mPhysicalPartSize);
if (IsDebug())
{
qDebug() << QString("[%1] mPhysicalPart = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mPhysicalPart);
}
}
if (cachedPartPtr)
{
aStream->readRawData(mCachedPart.data(), mCachedPartSize);
if (IsDebug())
{
qDebug() << QString("[%1] mCachedPart = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mCachedPart);
}
}
}

View File

@ -20,7 +20,7 @@ private:
qint32 aPlanesPtr;
QVector<XCPlane> aPlanes;
qint32 aNodesPtr;
QVector<quint32> aNodes;
QVector<quint16> aNodes;
qint32 aSceneEntCellBitsPtr;
QVector<uint> aSceneEntCellBits;
};

View File

@ -32,7 +32,7 @@ private:
QVector<quint8*> mSmodelVisData;
QVector<quint8*> mSurfaceVisData;
uint *mLodData;
quint32 *mSortedSurfIndex;
quint16 *mSortedSurfIndex;
QVector<XGfxStaticModelInst> *mModelInsts;
QVector<XGfxSurface> *mSurfaces;
QVector<XGfxCullGroup> *mCullGroups;

View File

@ -13,7 +13,7 @@ public:
void ParseData(QDataStream *aStream) override;
private:
quint32 mLetter;
quint16 mLetter;
char mX0;
char mY0;
quint8 mDx;

View File

@ -14,7 +14,7 @@ public:
private:
XGpuVertexRawRequest mRequest;
quint32 mDword[2];
unsigned int mDword[2];
};
#endif // XGPUVERTEXFETCHCONSTANT_H

View File

@ -15,15 +15,10 @@ XLoadedSound::~XLoadedSound()
void XLoadedSound::ParseData(QDataStream *aStream)
{
if (GetPtr() == -1)
{
mName.ParsePtr(aStream, false);
mSound.ParseData(aStream);
}
}
void XLoadedSound::Clear()
{
mName.Clear();
mSound.Clear();
}

View File

@ -15,8 +15,8 @@ public:
virtual void Clear() override;
private:
XString mName;
XAudioSound mSound;
XString* mName;
XAudioSound* mSound;
};
#endif // XLOADEDSOUND_H

View File

@ -1,27 +1,15 @@
#include "xmaterialargumentdef.h"
#include "xmaterialshaderargument.h"
XMaterialArgumentDef::XMaterialArgumentDef()
: XAsset()
, mLiteralConst(nullptr)
, mCodeConst()
, mCodeSampler(0)
, mParent(nullptr)
, mNameHash(0)
{
}
XMaterialArgumentDef::XMaterialArgumentDef(XMaterialShaderArgument &aParent)
: XAsset()
, mCodeSampler(0)
, mParent(&aParent)
{
}
XMaterialArgumentDef::~XMaterialArgumentDef()
{
}
void XMaterialArgumentDef::Clear()
{
@ -29,19 +17,5 @@ void XMaterialArgumentDef::Clear()
void XMaterialArgumentDef::ParseData(QDataStream *aStream)
{
if (!mParent)
{
return;
}
*aStream >> mCodeSampler;
if (mParent->GetType() == 1 || mParent->GetType() == 7)
{
if (mCodeSampler == -1)
{
// TODO: Figure out wtf this parses...
aStream->skipRawData(16);
}
}
}

View File

@ -2,22 +2,21 @@
#define XMATERIALARGUMENTDEF_H
#include "xasset.h"
class XMaterialShaderArgument;
#include "xmaterialargumentcodeconst.h"
class XMaterialArgumentDef : public XAsset
{
public:
explicit XMaterialArgumentDef();
XMaterialArgumentDef(XMaterialShaderArgument &aParent);
~XMaterialArgumentDef();
XMaterialArgumentDef();
virtual void Clear() override;
virtual void ParseData(QDataStream *aStream) override;
private:
qint32 mCodeSampler;
XMaterialShaderArgument* mParent;
const float *mLiteralConst;
XMaterialArgumentCodeConst mCodeConst;
unsigned int mCodeSampler;
unsigned int mNameHash;
};
#endif // XMATERIALARGUMENTDEF_H

View File

@ -15,7 +15,7 @@ public:
virtual void Clear() override;
private:
quint32 mNameHash;
unsigned int mNameHash;
QString mName;
QVector<float> mLiteral;
};

View File

@ -22,7 +22,7 @@ private:
quint8 mTextureAtlasRowCount;
quint8 mTextureAtlasColumnCount;
XGfxDrawSurf mDrawSurf;
quint32 mSurfaceTypeBits;
unsigned int mSurfaceTypeBits;
};
#endif // XMATERIALINFO_H

View File

@ -3,13 +3,10 @@
#include "xmaterialvertexshader.h"
#include "xmaterialpixelshader.h"
#include <QDebug>
#include <QIODevice>
XMaterialPass::XMaterialPass()
: XAsset()
, mVertexDecl()
, mVertexShaderArray(15)
, mVertexShaderArray()
, mVertexShader()
, mPixelShader()
, mPerPrimArgCount(0)
@ -19,7 +16,7 @@ XMaterialPass::XMaterialPass()
, mPrecompiledIndex(0)
, mArgs()
{
SetName("Material Pass");
}
void XMaterialPass::Clear()
@ -29,11 +26,6 @@ void XMaterialPass::Clear()
void XMaterialPass::ParseData(QDataStream *aStream)
{
if (IsDebug())
{
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
}
mVertexDecl.ParsePtr(aStream, false);
for (int i = 0; i < 15; i++)
{
@ -42,45 +34,20 @@ void XMaterialPass::ParseData(QDataStream *aStream)
mVertexShader.ParsePtr(aStream, false);
mPixelShader.ParsePtr(aStream, false);
qint32 argsPtr;
qint32 argPtr;
*aStream
>> mPerPrimArgCount
>> mPerObjArgCount
>> mStableArgCount
>> mCustomSamplerFlags
>> mPrecompiledIndex;
aStream->skipRawData(3);
*aStream >> argsPtr;
if (IsDebug())
{
qDebug() << QString("[%1] mPerPrimArgCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mPerPrimArgCount);
qDebug() << QString("[%1] mPerObjArgCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mPerObjArgCount);
qDebug() << QString("[%1] mStableArgCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mStableArgCount);
qDebug() << QString("[%1] mCustomSamplerFlags = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mCustomSamplerFlags);
qDebug() << QString("[%1] mPrecompiledIndex = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mPrecompiledIndex);
qDebug() << QString("[%1] argsPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(argsPtr);
}
>> mPrecompiledIndex
>> argPtr;
mVertexDecl.ParseData(aStream);
for (int i = 0; i < 15; i++)
{
mVertexShaderArray[i].ParseData(aStream);
}
mVertexShader.ParseData(aStream);
mPixelShader.ParseData(aStream);
if (argsPtr)
{
int argCount = mStableArgCount + mPerObjArgCount + mPerPrimArgCount;
for (int i = 0; i < argCount; i++)
{
XMaterialShaderArgument arg;
arg.ParseData(aStream);
mArgs.append(arg);
}
}
}

View File

@ -27,7 +27,7 @@ private:
int mStableArgCount;
int mCustomSamplerFlags;
int mPrecompiledIndex;
QVector<XMaterialShaderArgument> mArgs;
XMaterialShaderArgument mArgs;
};
#endif // XMATERIALPASS_H

View File

@ -2,7 +2,7 @@
XMaterialPixelShader::XMaterialPixelShader()
: XAsset()
, mName()
, mName("")
, mShaderProgram()
{
SetType(ASSET_TYPE_PIXELSHADER);
@ -16,15 +16,11 @@ XMaterialPixelShader::~XMaterialPixelShader()
void XMaterialPixelShader::Clear()
{
mName.Clear();
mName.clear();
mShaderProgram.Clear();
}
void XMaterialPixelShader::ParseData(QDataStream *aStream)
{
if (GetPtr() == -1)
{
mName.ParsePtr(aStream);
mShaderProgram.ParseData(aStream);
}
}

View File

@ -2,7 +2,6 @@
#define XMATERIALPIXERHSHADER_H
#include "xasset.h"
#include "xstring.h"
#include "xmaterialpixelshaderprogram.h"
class XMaterialPixelShader : public XAsset
@ -15,7 +14,7 @@ public:
void ParseData(QDataStream *aStream) override;
private:
XString mName;
QString mName;
XMaterialPixelShaderProgram mShaderProgram;
};

View File

@ -2,7 +2,7 @@
XMaterialPixelShaderProgram::XMaterialPixelShaderProgram()
: XAsset()
, mPixelShader()
, mPixelShader(nullptr)
, mLoadDef()
{
@ -10,26 +10,16 @@ XMaterialPixelShaderProgram::XMaterialPixelShaderProgram()
XMaterialPixelShaderProgram::~XMaterialPixelShaderProgram()
{
delete mPixelShader;
}
void XMaterialPixelShaderProgram::Clear()
{
mPixelShader.Clear();
mPixelShader->Clear();
mLoadDef.Clear();
}
void XMaterialPixelShaderProgram::ParseData(QDataStream *aStream)
{
mLoadDef.ParseData(aStream);
mPixelShader.ParseData(aStream);
if (mLoadDef.GetPhysicalPartSize())
{
//mPixelShader.
}
else
{
//mLoadDef
}
}

View File

@ -18,7 +18,7 @@ public:
void ParseData(QDataStream *aStream) override;
private:
XD3DPixelShader mPixelShader;
XD3DPixelShader *mPixelShader;
XGfxPixelShaderLoadDef mLoadDef;
};

View File

@ -6,31 +6,15 @@ XMaterialShaderArgument::XMaterialShaderArgument()
, mDest(0)
, mDef()
{
SetName("Material Shader Argument");
}
void XMaterialShaderArgument::Clear()
{
mType = 0;
mDest = 0;
mDef.Clear();
}
void XMaterialShaderArgument::ParseData(QDataStream *aStream)
{
*aStream
>> mType
>> mDest;
mDef.ParseData(aStream, mType);
}
quint16 XMaterialShaderArgument::GetType() const
{
return mType;
}
quint16 XMaterialShaderArgument::GetDest() const
{
return mDest;
}

View File

@ -12,12 +12,9 @@ public:
virtual void Clear() override;
virtual void ParseData(QDataStream *aStream) override;
quint16 GetType() const;
quint16 GetDest() const;
private:
quint16 mType;
quint16 mDest;
int mType;
int mDest;
XMaterialArgumentDef mDef;
};

View File

@ -1,4 +1,6 @@
#include "xmaterialtechnique.h"
#include "qdebug.h"
#include "qfiledevice.h"
XMaterialTechnique::XMaterialTechnique()
: XAsset()
@ -7,7 +9,7 @@ XMaterialTechnique::XMaterialTechnique()
, mPassCount(0)
, mPassArray()
{
SetName("Material Technique");
}
XMaterialTechnique::~XMaterialTechnique()
@ -17,23 +19,15 @@ XMaterialTechnique::~XMaterialTechnique()
void XMaterialTechnique::ParseData(QDataStream *aStream)
{
if (IsDebug())
{
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
}
mName.ParsePtr(aStream, false);
mName.ParsePtr(aStream);
qDebug() << aStream->device()->pos();
*aStream
>> mFlags
>> mPassCount;
if (IsDebug())
{
qDebug() << QString("[%1] mFlags = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mFlags);
qDebug() << QString("[%1] mPassCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mPassCount);
}
mPassArray = QVector<XMaterialPass>(mPassCount);
mPassArray = QVector<XMaterialPass>(mPassArray);
for (int i = 0; i < mPassCount; i++)
{

View File

@ -18,8 +18,8 @@ public:
private:
XString mName;
quint16 mFlags;
quint16 mPassCount;
int mFlags;
int mPassCount;
QVector<XMaterialPass> mPassArray;
};

Some files were not shown because too many files have changed in this diff Show More