2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 13:44:56 +00:00

HMDL support added

This commit is contained in:
Jack Andersen
2015-11-14 13:42:58 -10:00
parent 79cf5f12ca
commit bbc977cc79
5 changed files with 23 additions and 9 deletions

View File

@@ -53,7 +53,7 @@ struct SurfaceHeader_1_2 : BigDNA
Align<32> align;
static constexpr bool UseMatrixSkinning() {return false;}
constexpr atInt16 skinMatrixBankIdx() const {return -1;}
static constexpr atInt16 skinMatrixBankIdx() {return -1;}
};
struct SurfaceHeader_3 : BigDNA
@@ -1322,7 +1322,7 @@ bool WriteHMDLCMDL(const HECL::ProjectPath& outPath, const HECL::ProjectPath& in
head.aabbMin = mesh.aabbMin.val;
head.aabbMax = mesh.aabbMax.val;
head.matSetCount = mesh.materialSets.size();
head.secCount = head.matSetCount + 5 + mesh.surfaces.size();
head.secCount = head.matSetCount + 4 + mesh.surfaces.size();
head.secSizes.reserve(head.secCount);
/* Lengths of padding to insert while writing */
@@ -1484,6 +1484,9 @@ bool WriteHMDLCMDL(const HECL::ProjectPath& outPath, const HECL::ProjectPath& in
++padIt;
}
/* Ensure final surface's alignment writes zeros */
writer.seek(-1, Athena::Current);
writer.writeUByte(0);
writer.close();
return true;
}

View File

@@ -46,10 +46,7 @@ struct CMDL
(conn, rs, pakRouter, entry, dataSpec, loadRp);
conn.saveBlend();
#if 1
return true;
#endif
#if 0
/* Cook and re-extract test */
HECL::ProjectPath tempOut = outPath.getWithExtension(_S(".recook"), true);
HECL::BlenderConnection::DataStream ds = conn.beginData();
@@ -64,6 +61,16 @@ struct CMDL
DNACMDL::ReadCMDLToBlender<PAKRouter<PAKBridge>, MaterialSet, std::pair<CSKR*,CINF*>, DNACMDL::SurfaceHeader_1_2, 2>
(conn, reader, pakRouter, entry, dataSpec, loadRp);
return conn.saveBlend();
#elif 1
/* HMDL cook test */
HECL::ProjectPath tempOut = outPath.getWithExtension(_S(".recook"), true);
HECL::BlenderConnection::DataStream ds = conn.beginData();
DNACMDL::Mesh mesh = ds.compileMesh(HECL::TopologyTriStrips, 16);
ds.close();
DNACMDL::WriteHMDLCMDL<HMDLMaterialSet, DNACMDL::SurfaceHeader_1_2, 2>(tempOut, outPath, mesh);
#endif
return true;
}
static void Name(const SpecBase& dataSpec,

View File

@@ -1224,8 +1224,8 @@ HMDLMaterialSet::Material::Material(HECL::Frontend::Frontend& FE,
continue;
std::vector<atVec4f> gameArgs;
gameArgs.reserve(inst.getChildCount() - 1);
for (int i=1 ; i<inst.getChildCount() ; ++i)
gameArgs.reserve(sourceInst.getChildCount() - 1);
for (int i=1 ; i<sourceInst.getChildCount() ; ++i)
{
const HECL::Frontend::IR::Instruction& ci = sourceInst.getChildInst(heclIr, i);
gameArgs.push_back(ci.getImmVec());