diff options
author | Treeki <treeki@gmail.com> | 2014-06-03 05:55:54 +0200 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2014-06-03 05:55:54 +0200 |
commit | 7a9387269e3b123b1647cf59c78cc6c998a9a330 (patch) | |
tree | 7874647c497a6b6113f660ff27f6f79b7fc7d4aa /lyt | |
parent | be8b56a7f0a8f6ba5456a099b61d032fd8aa2f61 (diff) | |
download | LayoutStudio-7a9387269e3b123b1647cf59c78cc6c998a9a330.tar.gz LayoutStudio-7a9387269e3b123b1647cf59c78cc6c998a9a330.zip |
experimental 3DS support
Diffstat (limited to '')
-rw-r--r-- | lyt/binaryfile.cpp | 5 | ||||
-rw-r--r-- | lyt/binaryfilesection.cpp | 7 | ||||
-rw-r--r-- | lyt/common.h | 6 | ||||
-rw-r--r-- | lyt/directorypackage.cpp | 5 | ||||
-rw-r--r-- | lyt/directorypackage.h | 1 | ||||
-rw-r--r-- | lyt/materials/material.cpp | 10 | ||||
-rw-r--r-- | lyt/materials/material.h | 6 |
7 files changed, 27 insertions, 13 deletions
diff --git a/lyt/binaryfile.cpp b/lyt/binaryfile.cpp index 26ca8a0..b040bb6 100644 --- a/lyt/binaryfile.cpp +++ b/lyt/binaryfile.cpp @@ -28,14 +28,15 @@ LYTBinaryFile::LYTBinaryFile(QByteArray data) : magic(0), version(0) { QDataStream reader(data); InitDataStream(reader); - quint16 endian, firstSectionOffset, sectionCount; + quint16 endian, firstSectionOffset; + quint32 sectionCount; quint32 fileSize; reader >> this->magic.value; reader >> endian; + reader >> firstSectionOffset; reader >> this->version.value; reader >> fileSize; - reader >> firstSectionOffset; reader >> sectionCount; LYTBinaryFileSection section; diff --git a/lyt/binaryfilesection.cpp b/lyt/binaryfilesection.cpp index 5115cda..98286cd 100644 --- a/lyt/binaryfilesection.cpp +++ b/lyt/binaryfilesection.cpp @@ -39,7 +39,12 @@ void LYTBinaryFileSection::writeToDataStream(QDataStream &out) const { void LYTBinaryFileSection::readFromDataStream(QDataStream &in) { quint32 length; - in >> (quint32&)magic.value; + char a[4]; + in.readRawData(a, 4); + magic.str[0] = a[3]; + magic.str[1] = a[2]; + magic.str[2] = a[1]; + magic.str[3] = a[0]; in >> (quint32&)length; char *raw = new char[length - 8]; diff --git a/lyt/common.h b/lyt/common.h index a343c32..a79409a 100644 --- a/lyt/common.h +++ b/lyt/common.h @@ -30,10 +30,10 @@ union Magic { }; union Version { - char str[2]; - quint16 value; + char str[4]; + quint32 value; - Version(quint16 v) : value(v) { } + Version(quint32 v) : value(v) { } }; diff --git a/lyt/directorypackage.cpp b/lyt/directorypackage.cpp index 803cb80..2d1cb59 100644 --- a/lyt/directorypackage.cpp +++ b/lyt/directorypackage.cpp @@ -74,6 +74,11 @@ bool LYTDirectoryPackage::write(ItemType type, const QString &name, const QByteA return false; } +bool LYTDirectoryPackage::rename(ItemType type, const QString &from, const QString &to) { + // Not implemented + return false; +} + bool LYTDirectoryPackage::remove(ItemType type, const QString &name) { QDir search(m_path); diff --git a/lyt/directorypackage.h b/lyt/directorypackage.h index 0d6ea19..3573cd6 100644 --- a/lyt/directorypackage.h +++ b/lyt/directorypackage.h @@ -34,6 +34,7 @@ public: QStringList list(ItemType type) const; QByteArray get(ItemType type, const QString &name) const; bool write(ItemType type, const QString &name, const QByteArray &data); + bool rename(ItemType type, const QString &from, const QString &to); bool remove(ItemType type, const QString &name); bool needsExplicitSave() const { return false; } diff --git a/lyt/materials/material.cpp b/lyt/materials/material.cpp index a775553..877338d 100644 --- a/lyt/materials/material.cpp +++ b/lyt/materials/material.cpp @@ -94,7 +94,7 @@ void LYTMaterial::writeToDataStream(QDataStream &out) const { WriteFixedLengthASCII(out, name, 0x14); for (int i = 0; i < 3; i++) - WriteS10Color(this->colours[i], out); + WriteRGBA8Color(this->colours[i], out); for (int i = 0; i < 4; i++) WriteRGBA8Color(this->tevKColour[i], out); @@ -176,7 +176,7 @@ void LYTMaterial::readFromDataStream(QDataStream &in) { name = ReadFixedLengthASCII(in, 0x14); for (int i = 0; i < 3; i++) - ReadS10Color(this->colours[i], in); + ReadRGBA8Color(this->colours[i], in); for (int i = 0; i < 4; i++) ReadRGBA8Color(this->tevKColour[i], in); @@ -186,6 +186,8 @@ void LYTMaterial::readFromDataStream(QDataStream &in) { in >> (quint32&)resNumValue; LYTMaterialResourceNum resourceNum(resNumValue); + qDebug() << "[[ resNum : " << resNumValue << "]]"; + // this is really complicated -_- // first off: TexMap texMaps.clear(); @@ -208,7 +210,7 @@ void LYTMaterial::readFromDataStream(QDataStream &in) { this->readTexCoordGen(in); } - // ChanCtrl + /*// ChanCtrl if (resourceNum.hasChanCtrl()) { this->hasChanCtrl = true; this->chanCtrl.readFromDataStream(in); @@ -267,7 +269,7 @@ void LYTMaterial::readFromDataStream(QDataStream &in) { this->blendMode.readFromDataStream(in); } else { this->hasBlendMode = false; - } + }*/ } diff --git a/lyt/materials/material.h b/lyt/materials/material.h index a42a9d8..025b304 100644 --- a/lyt/materials/material.h +++ b/lyt/materials/material.h @@ -45,9 +45,9 @@ public: quint32 value() const { return m_value; } - int getTexMapNum() const { return BitExtract(m_value, 4, 28); } - int getTexSRTNum() const { return BitExtract(m_value, 4, 24); } - int getTexCoordGenNum() const { return BitExtract(m_value, 4, 20); } + int getTexMapNum() const { return BitExtract(m_value, 2, 30); } + int getTexSRTNum() const { return BitExtract(m_value, 2, 28); } + int getTexCoordGenNum() const { return BitExtract(m_value, 2, 26); } bool hasChanCtrl() const { return BitExtract(m_value, 1, 6); } bool hasMatCol() const { return BitExtract(m_value, 1, 4); } bool hasTevSwapTable() const { return BitExtract(m_value, 1, 19); } |