From dad6d087fd4dce68db60f8d0cde23d1b14a6ada8 Mon Sep 17 00:00:00 2001 From: louist103 Date: Fri, 28 Jan 2022 12:04:08 -0500 Subject: Re do the sketchy exporter --- OTRExporter/DisplayListExporter.cpp | 39 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/OTRExporter/DisplayListExporter.cpp b/OTRExporter/DisplayListExporter.cpp index 1042542..b30c9c1 100644 --- a/OTRExporter/DisplayListExporter.cpp +++ b/OTRExporter/DisplayListExporter.cpp @@ -677,29 +677,36 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina std::string fName = OTRExporter_DisplayList::GetPathToRes(res, vtxDecl->varName); - printf("Exporting VTX Data %s\n", fName.c_str()); + uint64_t hash = CRC64(fName.c_str()); word0 = hash >> 32; word1 = hash & 0xFFFFFFFF; - //if (!otrArchive->HasFile(fName)) + if (!otrArchive->HasFile(fName)) { + printf("Exporting VTX Data %s\n", fName.c_str()); // Write vertices to file MemoryStream* vtxStream = new MemoryStream(); BinaryWriter vtxWriter = BinaryWriter(vtxStream); size_t sz = dList->vertices[vtxDecl->address].size(); - + if (sz > 0) { auto start = std::chrono::steady_clock::now(); // God dammit this is so dumb auto split = StringHelper::Split(vtxDecl->text, "\n"); - - for (int i = 0; i < split.size(); i++) + size_t size = split.size(); + vtxWriter.Write((uint8_t)Endianess::Little); + vtxWriter.Write((uint32_t)Ship::ResourceType::Vertex); + vtxWriter.Write((uint32_t)Ship::Version::Deckard); + vtxWriter.Write((uint64_t)0xDEADBEEFDEADBEEF); // id + vtxWriter.Write((uint32_t)vtxDecl->arrayItemCnt); + + for (size_t i = 0; i < size; i++) { std::string line = split[i]; @@ -724,28 +731,6 @@ void OTRExporter_DisplayList::Save(ZResource* res, const fs::path& outPath, Bina int bp = 0; } } - - /*for (size_t i = 0; i < sz; i++) - { - auto v = dList->vertices[vtxDecl->address][i]; - - vtxWriter.Write(v.x); - vtxWriter.Write(v.y); - vtxWriter.Write(v.z); - vtxWriter.Write(v.flag); - vtxWriter.Write(v.s); - vtxWriter.Write(v.t); - vtxWriter.Write(v.r); - vtxWriter.Write(v.g); - vtxWriter.Write(v.b); - vtxWriter.Write(v.a); - }*/ - - //#ifdef _DEBUG - //if (otrotrArchive->HasFile(fName)) - //otrotrArchive->RemoveFile(fName); - //#endif - otrArchive->AddFile(fName, (uintptr_t)vtxStream->ToVector().data(), vtxWriter.GetBaseAddress()); auto end = std::chrono::steady_clock::now(); -- cgit v1.2.3