diff --git a/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperMapEnts.cpp b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperMapEnts.cpp new file mode 100644 index 00000000..db019471 --- /dev/null +++ b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperMapEnts.cpp @@ -0,0 +1,24 @@ +#include "AssetDumperMapEnts.h" + +using namespace IW3; + +bool AssetDumperMapEnts::ShouldDump(XAssetInfo* asset) +{ + return true; +} + +bool AssetDumperMapEnts::CanDumpAsRaw() +{ + return true; +} + +std::string AssetDumperMapEnts::GetFileNameForAsset(Zone* zone, XAssetInfo* asset) +{ + return asset->m_name + ".ents"; +} + +void AssetDumperMapEnts::DumpRaw(AssetDumpingContext& context, XAssetInfo* asset, std::ostream& stream) +{ + const auto* mapEnts = asset->Asset(); + stream.write(mapEnts->entityString, mapEnts->numEntityChars); +} diff --git a/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperMapEnts.h b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperMapEnts.h new file mode 100644 index 00000000..8c38c37a --- /dev/null +++ b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperMapEnts.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Dumping/AbstractAssetDumper.h" +#include "Game/IW3/IW3.h" + +namespace IW3 +{ + class AssetDumperMapEnts final : public AbstractAssetDumper + { + protected: + bool ShouldDump(XAssetInfo* asset) override; + bool CanDumpAsRaw() override; + std::string GetFileNameForAsset(Zone* zone, XAssetInfo* asset) override; + void DumpRaw(AssetDumpingContext& context, XAssetInfo* asset, std::ostream& stream) override; + }; +} diff --git a/src/ObjWriting/Game/IW3/ZoneDumperIW3.cpp b/src/ObjWriting/Game/IW3/ZoneDumperIW3.cpp index 2ecac374..96de5b90 100644 --- a/src/ObjWriting/Game/IW3/ZoneDumperIW3.cpp +++ b/src/ObjWriting/Game/IW3/ZoneDumperIW3.cpp @@ -6,6 +6,7 @@ #include "AssetDumpers/AssetDumperGfxImage.h" #include "AssetDumpers/AssetDumperLoadedSound.h" #include "AssetDumpers/AssetDumperLocalizeEntry.h" +#include "AssetDumpers/AssetDumperMapEnts.h" #include "AssetDumpers/AssetDumperRawFile.h" #include "AssetDumpers/AssetDumperStringTable.h" #include "AssetDumpers/AssetDumperWeapon.h" @@ -41,7 +42,7 @@ bool ZoneDumper::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperComWorld, m_com_world) // DUMP_ASSET_POOL(AssetDumperGameWorldSp, m_game_world_sp) // DUMP_ASSET_POOL(AssetDumperGameWorldMp, m_game_world_mp) - // DUMP_ASSET_POOL(AssetDumperMapEnts, m_map_ents) + DUMP_ASSET_POOL(AssetDumperMapEnts, m_map_ents) // DUMP_ASSET_POOL(AssetDumperGfxWorld, m_gfx_world) // DUMP_ASSET_POOL(AssetDumperGfxLightDef, m_gfx_light_def) // DUMP_ASSET_POOL(AssetDumperFont_s, m_font)